Btw it is the right behavior, and logical, maybe a mistype?
In your example it won't even use abs error.

On Wed, 20 Oct 2010 13:32:06 +0300, Lars T. Kyllingstad <[email protected]> wrote:

(This message was originally meant for the Phobos mailing list, but for
some reason I am currently unable to send messages to it*.  Anyway, it's
probably worth making others aware of this as well.)

In my code, and in unittests in particular, I use std.math.approxEqual()
a lot to check the results of various computations.  If I expect my
result to be correct to within ten significant digits, say, I'd write

  assert (approxEqual(result, expected, 1e-10));

Since results often span several orders of magnitude, I usually don't
care about the absolute error, so I just leave it unspecified.  So far,
so good, right?

NO!

I just discovered today that the default value for approxEqual's default
absolute tolerance is 1e-5, and not zero as one would expect.  This
means that the following, quite unexpectedly, succeeds:

  assert (approxEqual(1e-10, 1e-20, 0.1));

This seems completely illogical to me, and I think it should be fixed
ASAP.  Any objections?


Changing it to zero turned up fifteen failing unittests in SciD. :(

-Lars


* Regarding the mailing list problem, Thunderbird is giving me the
following message:

  RCPT TO <[email protected]> failed:
  <[email protected]>: Recipient address rejected:
  User unknown in relay recipient table

Are anyone else on the lists seeing this, or is the problem with my mail
server?


--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/

Reply via email to