Random[Real,{0,1},$MachinePrecision] isn't MachineNumber[] ???!!

*To*: mathgroup at christensen.cybernetics.net*Subject*: [mg884] Random[Real,{0,1},$MachinePrecision] isn't MachineNumber[] ???!!*From*: pehowland at taz.dra.hmg.gb (Paul E. Howland)*Date*: Fri, 28 Apr 1995 00:41:45 -0400*Organization*: Defence Research Agency

I've experienced the following problem with Mathematica V2.2.4 for OSF/1. I'm writing a package, and want to be able to pass the desired precision as an option. This will be used, amongst other things, to generate a Random[] number of the desired precision. If the machine's own precision is being used I want to use a Compile[]'ed function on the random number, otherwise I want to use a pure Function[]. When I generate a random number, with machine precision, as below In[1] := Random[Real,{0,1},$MachinePrecision] Out[1] := 0.3739679783533225 and then apply a Compile[]'ed function to it, Compile[] complains with CompiledFunction::cfr: Argument `1` at position 1 should be a machine sized real number. Indeed, if I ask In[2] := MachineNumberQ[%1] Out[2] := False !@@?!##$% If using $MachinePrecision with Random[] doesn't give me a MachinePrecision number, what does?! However, if I use: In[3] := N[Random[Real,{0,1}],$MachinePrecision] Out[3] := 0.98857067609012 In[4] := MachineNumberQ[%] Out[4] := True Note that In[1] gives me a number with 16 digits after the decimal, and In[3] gives me a number with 14 digits after the decimal. However, the Precision[] of both is claimed to be 16, and $MachinePrecision is also claimed to be 16. I'm confused! Paul Howland Long Range Ground Radar Systems DRA Malvern UK