test/math/*: unbreak
commit1631ebd26712b2f5f41285c8cada819bebed294c
authorDenys Vlasenko <vda.linux@googlemail.com>
Sat, 30 Oct 2010 17:40:35 +0000 (30 19:40 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Sat, 30 Oct 2010 17:40:35 +0000 (30 19:40 +0200)
treecc14510e63524957e0b8e5d0ace59aea2ea34855
parent69c3616ade8e268708ef24e5b091f94f2ffe08d4
test/math/*: unbreak

test/math was not running at all, presume it has bit rotted:

It was trying to run libm-test.c as if it is a binary.

It was looking for libm-test-ulps (file with allowed
errors in lower bits) in arch-specific dirs which do not exist
in uclibc, as a result wrong file (libm-test.inc) was used instead.

Test failure was not showing the error result, user had to
fish it out from some .out files.

I added libm-test-ulps-ARCH files from recent glibc,
this filtered out a lot of false positives.
For example, cosf(M_PI_6l * 4.0) ideally should be -0.5,
we are getting -0.50000005047356477217, and this isn't
a failure (the difference is one lowest bit of mantissa).

"make check UCLIBC_ONLY=1 VERBOSE=1" still fails,
but not as catastrophically as before.

For the record, the failure occurs on the stage where we check
32-bit float functions, these tests fail:

Failure: Test: modf (NaN, &x) == NaN
Failure: Test: ilogb (NaN) == FP_ILOGBNAN plus exceptions allowed
Failure: Test: scalb (2.0, 0.5) == NaN plus invalid exception
Failure: Test: scalb (3.0, -2.5) == NaN plus invalid exception
Failure: Test: scalb (0, NaN) == NaN
Failure: Test: scalb (1, NaN) == NaN
Failure: Test: scalb (0, inf) == NaN plus invalid exception
Failure: Test: scalb (-0, inf) == NaN plus invalid exception
Failure: Test: scalb (1, inf) == inf
Failure: Test: scalb (-1, inf) == -inf
Failure: Test: scalb (inf, -inf) == NaN plus invalid exception
Failure: Test: scalb (-inf, -inf) == NaN plus invalid exception
Failure: Test: scalb (1, NaN) == NaN
Failure: Test: scalb (0, NaN) == NaN
Failure: Test: scalb (inf, NaN) == NaN
Failure: Test: pow (1, NaN) == 1
Failure: Test: pow (1, inf) == 1
Failure: Test: pow (-1, inf) == 1
Failure: Test: pow (1, -inf) == 1
Failure: Test: pow (-1, -inf) == 1
Failure: Test: rint (0.5) == 0.0
Failure: Test: rint (1.5) == 2.0
Failure: Test: rint (2.5) == 2.0
Failure: Test: rint (3.5) == 4.0
Failure: Test: rint (4.5) == 4.0
Failure: Test: rint (-0.5) == -0.0
Failure: Test: rint (-1.5) == -2.0
Failure: Test: rint (-2.5) == -2.0
Failure: Test: rint (-3.5) == -4.0
Failure: Test: rint (-4.5) == -4.0

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
12 files changed:
test/Test.mak
test/math/Makefile.in
test/math/libm-test-ulps-generic [new file with mode: 0644]
test/math/libm-test-ulps-i386 [new file with mode: 0644]
test/math/libm-test-ulps-ia64 [new file with mode: 0644]
test/math/libm-test-ulps-powerpc [new file with mode: 0644]
test/math/libm-test-ulps-s390 [new file with mode: 0644]
test/math/libm-test-ulps-sh4 [new file with mode: 0644]
test/math/libm-test-ulps-sparc32 [new file with mode: 0644]
test/math/libm-test-ulps-sparc64 [new file with mode: 0644]
test/math/libm-test-ulps-x86_64 [new file with mode: 0644]
test/math/libm-test.inc