std.math.approxEqual, 'maxRelDiff' parameter?

js.mdnq js_adddot+mdng at gmail.com
Sun Dec 16 00:53:17 PST 2012


On Saturday, 15 December 2012 at 19:01:23 UTC, ref2401 wrote:
> What does means 'maxRelDiff' parameter?
> I looked at the source code of this method and I still didn't 
> get it.
>
> return fabs((lhs - rhs) / rhs) <= maxRelDiff
> || maxAbsDiff != 0 && fabs(lhs - rhs) <= maxAbsDiff;
>
> In what cases can I use this parameter?


basically floating point types are not accuracy. Is 0.000001 = 
0.00000000000000000000000000000001?

It all depends! floating point calculations can accumulate 
rounding errors which result in comparisons that should be valid 
are not.

Hence, it is not technically correct to compare two floating 
point types. Hence, the calculation above simply compares how 
close the two are and accepts them as == if they are within some 
distance of each other.



More information about the Digitalmars-d-learn mailing list