http://d.puremagic.com/issues/show_bug.cgi?id=3632



--- Comment #14 from Don <clugd...@yahoo.com.au> 2011-06-28 01:08:25 PDT ---
(In reply to comment #10)
> (In reply to comment #9)
> > (In reply to comment #8)
> > > This is intended. All nans are regarded as the same (even signalling and
> > > non-signalling).
> > So we have to use std.math.isIdentical() to tell apart floating point 
> > values on
> > the base of the their bit patterns.
> 
> Do you have any need for this?

I use it all the time, mainly for distinguishing between +0.0 and -0.0

But I think this has perhaps not been understood in this discussion: bitwise
compare doesn't just affect NaN, it also means that +0.0 !is -0.0.

There definitely seems value in changing 'is' so that 'A is A' is true for any
A. Note that any user-defined type can define == to always return false, so it
isn't true that 'A is B' implies 'A==B', so we don't lose consistency in that
way.

But it's reasonable to argue that '+0.0 is -0.0' should return true, and if you
do that, then 'NaN is NaN' should also return true, regardless of the payload.

> > Related: I think almost no one uses the NaN payloads because (beside being a
> > niche need) almost no language gives easy and explicit support to manage 
> > those
> > payloads (while in std.math there are functions like getNaNPayload).
> 
> I've been around numerics for 35 years now, and I've never seen a use for NaN
> payloads. I've never seen anyone even propose a use. Until then, I suspect
> supporting such would just cause problems.

NaN payloads were used extensively in Apple's SANE, to distinguish different
error types. Eg,

http://doc.4d.com/4D-Language-Reference-11.6/Error-Codes/SANE-NaN-Errors-1-255.300-206143.en.html

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------

Reply via email to