[Cuis-dev] testing Float results
Martin McClure
martin at hand2mouse.com
Mon Jun 3 20:46:43 PDT 2024
Hi Mark,
Welcome to the list -- good to see you diving into Cuis!
As Andres says, there are messages to do this kind of test on Floats.
I find myself compelled, however, to warn about using such
"approximately equal" tests when inappropriate. I recently discovered
this kind of usage in an ancient test framework, and it was allowing
tests to pass that should not have. Those tests are being replaced with
equality tests.
As I commented to a co-worker just this morning, accepting as correct a
Float result that is one ULP different from the correct Float is really
no different than accepting 5 as a correct answer to 2 + 2.
There are, of course, times when figuring out the exact rounding
expected in a sequence of floating-point operations is impractical, and
accepting a certain amount of cumulative error is OK. Floats are often
used in applications where accuracy is only required to some specific
precision, but it's also good to keep in mind that each Float precisely
represents one value, and each operation on a Float has only one correct
answer.
Regards,
-Martin
On 6/3/24 19:49, Andres Valloud via Cuis-dev wrote:
> Look at Float>>isWithin:floatsFrom:, and see also Float>>ulp.
>
> On 6/3/24 4:36 PM, Mark Volkmann via Cuis-dev wrote:
>> Is there a function that tests whether two Float values are "close"
>> (within some delta)?
>> I can write it, but I thought that might be provided.
>> I looked at all the methods in the Float class, but didn't find one
>> like that.
>>
>> --
>> R. Mark Volkmann
>> Object Computing, Inc.
>>
More information about the Cuis-dev
mailing list