Thread overview
[phobos] phobos commit, revision 2202
Nov 28, 2010
dsource.org
Nov 28, 2010
David Simcha
Nov 28, 2010
Dmitry Olshansky
November 28, 2010
phobos commit, revision 2202


user: Don Clugston

msg:
Increase tolerance of this test, now that we know that failure is caused by a small imprecision in AMD's microcode.

http://www.dsource.org/projects/phobos/changeset/2202

November 28, 2010
This still doesn't pass on my AMD box.  I guess the error is being caused indirectly somehow, allowing the magnitude of the error to increase.  Anyhow, it fails on line 810 in std.math.internal.gammafunction, which is:

assert(feqrel(betaIncompleteInv(0x1.ff1275ae5b939bcap-41, 4.6713e18, 0.0813601), 0x1.f97749d90c7adba8p-63L)>=real.mant_dig - 1);

For me, on my AMD box,

feqrel(betaIncompleteInv(0x1.ff1275ae5b939bcap-41, 4.6713e18, 0.0813601), 0x1.f97749d90c7adba8p-63L) == 25

If I change the assert to this level of leniency, then all unit tests pass.  I don't understand the codebase and what that line is meant to test well enough, though, to know whether it's reasonable to make the unit test that lenient.

On 11/28/2010 3:11 PM, dsource.org wrote:
> phobos commit, revision 2202
>
>
> user: Don Clugston
>
> msg:
> Increase tolerance of this test, now that we know that failure is caused by a small imprecision in AMD's microcode.
>
> http://www.dsource.org/projects/phobos/changeset/2202
>
> _______________________________________________
> phobos mailing list
> phobos at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/phobos
>

November 29, 2010
I can confirm, it still fails  on my AMD.
The problem maybe is that while fyl2x error is of the order of the last
bit, the whole calculation got an error of some greater magnitude.

> This still doesn't pass on my AMD box.  I guess the error is being caused indirectly somehow, allowing the magnitude of the error to increase.  Anyhow, it fails on line 810 in std.math.internal.gammafunction, which is:
>
> assert(feqrel(betaIncompleteInv(0x1.ff1275ae5b939bcap-41, 4.6713e18, 0.0813601), 0x1.f97749d90c7adba8p-63L)>=real.mant_dig - 1);
>
> For me, on my AMD box,
>
> feqrel(betaIncompleteInv(0x1.ff1275ae5b939bcap-41, 4.6713e18, 0.0813601), 0x1.f97749d90c7adba8p-63L) == 25
>
> If I change the assert to this level of leniency, then all unit tests pass.  I don't understand the codebase and what that line is meant to test well enough, though, to know whether it's reasonable to make the unit test that lenient.
>
> On 11/28/2010 3:11 PM, dsource.org wrote:
>> phobos commit, revision 2202
>>
>>
>> user: Don Clugston
>>
>> msg:
>> Increase tolerance of this test, now that we know that failure is
>> caused by a small imprecision in AMD's microcode.
>>
>> http://www.dsource.org/projects/phobos/changeset/2202
>>
>> _______________________________________________
>> phobos mailing list
>> phobos at puremagic.com
>> http://lists.puremagic.com/mailman/listinfo/phobos
>>
>
> _______________________________________________
> phobos mailing list
> phobos at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/phobos