D issues are now
tracked on GitHub. This Bugzilla instance remains as a read-only archive.
Summary: |
regression: new unittest failure in std/math2.d, odd cosh() behavior |
Product: |
D
|
Reporter: |
Brad Roberts <braddr> |
Component: |
phobos | Assignee: |
Walter Bright <bugzilla> |
Status: |
RESOLVED
WORKSFORME
|
Severity: |
regression
|
Keywords: |
wrong-code |
Priority: |
P2
|
Version: |
D2 |
Hardware: |
x86 |
OS: |
Windows |
Attachments: |
stand alone test case
|
From std/math2.d:
616 real coth(real x)
617 {
618 return 1 / tanh(x);
619 }
620
621 unittest
622 {
623 assert(feq(coth(1), cosh(1) / sinh(1)));
624 }
This test fails with dmd 2.007 and doesn't with dmd 2.006 (using the 2.006 phobos code, 2.007's phobos needs dmd 2.007 to build, but there's no changes to the math code in phobos between 2.006 and 7).
My attempts to reduce the failure so far have been interesting. Adding printf's of each of the function results shows that adding a writeln for cosh is enough to make the error go away. One write of cosh(1) shows inf as the result. Two writes of cosh(1): first is inf, second is 1.54308.
I tried pulling the test code out to it's own tiny .d file and it doesn't fail. It always prints 1.54308 for cosh(1).
Comment 1
Brad Roberts
2008年03月08日 18:08:14 UTC
Created attachment 233 [details]
stand alone test case
I figured out how to cut this test case out of the full library into a single .d file. Change essentially _anything_ and the error goes away.
$ dmd -unittest bug1637.d && ./bug1637
Error: AssertError Failure bug1637.d(89)
Comment 2
Walter Bright
2008年08月28日 03:31:40 UTC
Irrelevant for D 2.0 which has dropped std.math2.
Works in D 1.0 1.034.