When thinking on the workaround for this LogLogPlot
bug suggested by halirutan I noticed that CompiledFunction
actually can return machine numbers smaller than $MinMachineNumber
. Consider:
f = Compile[{{t, _Real}}, Exp[-9 t^2]];
num = f[8.872]
num < $MinMachineNumber
MachineNumberQ[num]
MachineNumberQ[num2 = ToExpression[ToString[num, StandardForm]]]
2.191864698767832`*^-308
True
True
False
As you see, num
is smaller than $MinMachineNumber
BUT MachineNumberQ
returns True
. Conversion of this number into String
and backward returns arbitrary-precision number.
Moreover, CompiledFunction
accepts such numbers and works with them correctly:
f2 = Compile[{{x, _Real}}, Sqrt@x];
f2[num]
1.480494747970364`*^-154
How this behavior could be explained? Does it mean that CompiledFunction
actually CAN work with arbitrary-precision numbers?
P.S. I use Mathematica 8.0.4 under Windows 7 x64.