MathGroup Archive 2009

[Date Index] [Thread Index] [Author Index]

Search the Archive

floating point comparison

  • To: mathgroup at smc.vnet.net
  • Subject: [mg95220] floating point comparison
  • From: "Bert Aerts (rm X)" <bert.aertsX at advalvas.beX>
  • Date: Sun, 11 Jan 2009 06:37:13 -0500 (EST)

In the code shown below, the result of iterFixedPointList[Cos,0.0] in 94
iterations is equal to FixedPointList[Cos,0.0]. The while loop comparison
happens as newV - oldV != 0.0. However if the comparison is written as
newV != oldV, then the there are only 82 iterations and the result is not
the final one. Why are these 2 comparisons not equal?

Remark: machine precision numbers are best shown in 16 digits precision:
Global Mathematica definition in Edit / Preferences : Appearance /
Numbers / Formatting / Displayed Precision = 16 in Mathematica 7.0.0 x86_64
on Linux

Clear[iterFixedPointList];
iterFixedPointList[function_, initValue_] := 
 Module[{i, oldV, newV, listV},
  i = 1;
  oldV = initValue;
  newV = function[initValue];
  listV = {oldV, newV};
  While[newV - oldV != 0.0,
   i++;
   oldV = newV;
   newV = function[newV];
   listV = Append[listV, newV];
   (*
    Appending newV here already before it is tested
   makes that the last 2 values in listV will be equal
   *)
   ];
  Print["Number of iterations is ", i];
  listV
  ]




  • Prev by Date: Need to calculate daily risk free rate from Fed data
  • Next by Date: Experimental Mathematics -- The Journal
  • Previous by thread: Re: Need to calculate daily risk free rate from Fed data
  • Next by thread: Re: floating point comparison