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