Thread overview | |||||
---|---|---|---|---|---|
|
April 06, 2012 [Issue 7836] New: NaNs inside associative array don't use normal FP equality | ||||
---|---|---|---|---|
| ||||
http://d.puremagic.com/issues/show_bug.cgi?id=7836 Summary: NaNs inside associative array don't use normal FP equality Product: D Version: D2 Platform: x86 OS/Version: Windows Status: NEW Keywords: wrong-code Severity: normal Priority: P2 Component: druntime AssignedTo: nobody@puremagic.com ReportedBy: bearophile_hugs@eml.cc --- Comment #0 from bearophile_hugs@eml.cc 2012-04-05 17:45:03 PDT --- I don't know if this is a bug, or if here D/DMD is working as designed. I am not sure. This code shows that floating point NaNs are not tested with == inside associative arrays (because NaNs != NaNs): import std.stdio: writeln; void main() { int[double] aa; aa[double.nan] = 1; writeln(aa); aa[double.nan] = 2; writeln(aa); } Output DMD 2.059beta: [nan:1] [nan:2] Python uses == to compare dict (associative array) keys, so NaNs can't overwrite each other: >>> a = {} >>> a[float("nan")] = 1 >>> a {nan: 1} >>> a[float("nan")] = 2 >>> a {nan: 1, nan: 2} So maybe DMD has to act as Python in this case. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
April 14, 2012 [Issue 7836] NaNs inside associative array don't use normal FP equality | ||||
---|---|---|---|---|
| ||||
Posted in reply to bearophile_hugs@eml.cc | http://d.puremagic.com/issues/show_bug.cgi?id=7836 hsteoh@quickfur.ath.cx changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |hsteoh@quickfur.ath.cx --- Comment #1 from hsteoh@quickfur.ath.cx 2012-04-14 07:28:41 PDT --- This is an AA implementation bug. Internally, AA's use bitwise comparison, which is wrong in many cases. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
July 09, 2013 [Issue 7836] NaNs inside associative array don't use normal FP equality | ||||
---|---|---|---|---|
| ||||
Posted in reply to bearophile_hugs@eml.cc | http://d.puremagic.com/issues/show_bug.cgi?id=7836 hsteoh@quickfur.ath.cx changed: What |Removed |Added ---------------------------------------------------------------------------- OS/Version|Windows |All --- Comment #2 from hsteoh@quickfur.ath.cx 2013-07-08 19:57:27 PDT --- Actually, this bug has nothing to do with AA's. The problem is that double's typeinfo.equals and typeinfo.compare does not respect NaNs: import std.stdio: writeln; void main() { double x = double.nan, y = double.nan; writeln(x == y); // prints false (OK) writeln(typeid(double).equals(&x, &y)); // prints true (WRONG) writeln(typeid(double).compare(&x, &y)); // prints 0 (WRONG) } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
Copyright © 1999-2021 by the D Language Foundation