Bug 1637 – regression: new unittest failure in std/math2.d, odd cosh() behavior

Status
RESOLVED
Resolution
WORKSFORME
Severity
regression
Priority
P2
Component
phobos
Product
D
Version
D2
Platform
x86
OS
Windows
Creation time
2007-11-04T01:45:00Z
Last change time
2015-06-09T01:14:22Z
Keywords
wrong-code
Assigned to
bugzilla
Creator
braddr

Attachments

IDFilenameSummaryContent-TypeSize
233bug1637.dstand alone test casetext/plain2388

Comments

Comment #0 by braddr — 2007-11-04T01:45:19Z
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 by braddr — 2008-03-08T18:08:14Z
Created attachment 233 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 by bugzilla — 2008-08-28T03:31:40Z
Irrelevant for D 2.0 which has dropped std.math2. Works in D 1.0 1.034.