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

D issues are now tracked on GitHub. This Bugzilla instance remains as a read-only archive.
Issue 1637 - regression: new unittest failure in std/math2.d, odd cosh() behavior
Summary: regression: new unittest failure in std/math2.d, odd cosh() behavior
Status: RESOLVED WORKSFORME
Alias: None
Product: D
Classification: Unclassified
Component: phobos (show other issues)
Version: D2
Hardware: x86 Windows
: P2 regression
Assignee: Walter Bright
URL:
Keywords: wrong-code
Depends on:
Blocks:
Reported: 2007年11月04日 01:45 UTC by Brad Roberts
Modified: 2015年06月09日 01:14 UTC (History)
0 users

See Also:


Attachments
stand alone test case (2.33 KB, text/plain)
2008年03月08日 18:08 UTC, Brad Roberts
Details
Add an attachment (proposed patch, testcase, etc.)

Note You need to log in before you can comment on or make changes to this issue.
Description Brad Roberts 2007年11月04日 01:45:19 UTC
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.


AltStyle によって変換されたページ (->オリジナル) /