[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Help-gsl] problem with selftest.c on x86 32-bit

From: Elena Ivanova
Subject: [Help-gsl] problem with selftest.c on x86 32-bit
Date: Fri, 29 May 2015 15:56:20 +0300
User-agent: Mozilla/5.0 (X11; Linux i686; rv:17.0) Gecko/20130803 Thunderbird/17.0.8

Dear Sir/Madam,
Could you help me with the selftest.c (see the attached file).
I've  received different results on sparc and intel for 32-b

Running the GSL self test suite I am seeing the following error when running
on x86 32-bit:

make[3]: Entering directory `$(@D)/linalg'
FAIL:   LQ_update m(5,3) [88]
FAIL: LQ Rank-1 Update [97]
FAIL: test
1 of 1 test failed

The same test works just fine on 32-bit SPARC:

make[3]: Entering directory `$(@D)/linalg'
Completed [233845/233845]
PASS: test
1 test passed

The test failed with the following results:

   Expected: 0                         1
   Got     : 6.82121026329696178e-13   1.00000000000056843

i.e. an absolute error in the case of 0 expected is ~ 6.8e-13 (instead of ~2.5e-13); /2 * 512.0 * 2.2204460492503131e-16 a relative error in the case of 1 expected is ~ 5.7e-13 (instead of ~2.5e-13); /2 * 512.0 * 2.2204460492503131e-16

The implementation in the cases of sparc and intel is different, because of the different assembler code for sparc and intel.
Rounding also can be different.
Therefore, the absolute or relative error of the Strassen algorithm can be different on different platforms.
The question is, which max value of error is acceptable.
I do not understand, why the barrier value is chosen

2 * 512.0 *  2.2204460492503131e-16

2.2204460492503131e-16  is a machine eps for double.
Why 2 * 512.0 * eps?
Maybe, this is too strong condition?
The calculating error should depend on the size of source matrices.
Could you explain this to me?

Thsnk you and best wishes,
Elena Ivanova.

Attachment: selftest.c
Description: Text Data

reply via email to

[Prev in Thread] Current Thread [Next in Thread]