# How to evaluate expression completely?

In MMA 13.2, if we run

Quantity[1, 1/"DegreesCelsius"]


it automatically throw a message But if we run

unit = 1/"DegreesCelsius";
Quantity[1, unit]


it gives result without message. It seems that MMA does not evaluate completely in this case. If we evaluate the output, then it will throw message.

I want to know if there is a function like completeEvaluate, so that completeEvaluate@Quantity[1, unit] will throw a message.

I believe that what you are observing is a bug in Quantity. 'Quantity[1, "DegreesCelsius"^(-1)]' is not processed the same way as 'Quantity[1, 1/"DegreesCelsius"]'.

In:= Quantity[1, "DegreesCelsius"^(-1)] // InputForm

Out//InputForm=
Quantity[1, "DegreesCelsius"^(-1)]

In:= Quantity[1, 1/"DegreesCelsius"] // InputForm

During evaluation of In:= Quantity::ctunit: Compound unit given with absolute 1/(DegreesCelsius); converting to Kelvins.

Out//InputForm=
Quantity[5483/20, "Kelvins"^(-1)]

• Thank you so much for your observation. I think there is chaos in temperature quantity manipulation as described in mathematica.stackexchange.com/q/287389/4742 . Now you add one more example. Jul 9 at 3:34
• But anyway, this does not solve my problem : ) Jul 9 at 3:35
• It's really not at all chaotic. The only unfortunate thing is that prior to implementing the *Differrence units Mathematica tried to do something sensible with the input instead of rejecting it as unsafe. While @GlennWelch's answer seems to demonstrate a bug, that's not really the core of your problem. To fix your problem, use the units that are appropriate for the semantics you are trying to formalize. Jul 9 at 15:22