[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gcl-devel] rtest8.mac test failure
From: |
Camm Maguire |
Subject: |
[Gcl-devel] rtest8.mac test failure |
Date: |
Mon, 30 Jun 2014 18:55:07 -0400 |
Greetings! When compiling some functions that were previously
interpreted under gcl, I have one small test failure on 32bit intel
only:
ev (e7, alfa=2, vita=1); (of rtest8.mac)
returns
[0.052961027786557, 4.8572257327350623E-17, 50, 0]
insead of
[0.052961027786557, 5.551115123125785E-17, 50, 0]
This is solely due to the loss of one bit of precision in res24 of
slatec::dqc25s when the optimized compile is done in 64 bits instead of
the 80 that are specially available on the x87 fpu:
0.5391596517903231 (80 bits) vs 0.539159651790323 (64 bits)
(%i6) :lisp (integer-decode-float 0.5391596517903231)
4856318413792211
-53
1
(%i6) :lisp (integer-decode-float 0.539159651790323)
4856318413792210
-53
1
(%i6)
The mul-add in 64bits appears in C as
V40=
(double)(V40)+(double)((double)(((V29))->lfa.lfa_self[(long)((long)0)+((long)(V31)-((long)1))])*
(double)(((V26))->lfa.lfa_self[(long)(V27)+((long)(V31)-((long)1))]));
vs.
{double V253=
lf(fLrow_major_aref((V29),(long)((long)0)+((long)(V31)-((long)1))));
{double V254=
lf(fLrow_major_aref((V26),(long)(V27)+((long)(V31)-((long)1))));
V40= (double)(V40)+(double)((double)(/* INLINE-ARGS */V253)*(double)(/*
INLINE-ARGS */V254));}}
I don't really think this is a GCL bug, yet I've constructed the debian
package build to fail on any test failure. Is there a way I can set the
floating point tolerance higher here to let this result through?
Take care,
--
Camm Maguire address@hidden
==========================================================================
"The earth is but one country, and mankind its citizens." -- Baha'u'llah
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gcl-devel] rtest8.mac test failure,
Camm Maguire <=