float.impure.test fails on OpenBSD
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
SBCL |
Fix Released
|
Low
|
Unassigned |
Bug Description
I compiled the git checkout of sbcl and run the tests.
It reported that the float.impure.test fails.
$ ./run-sbcl.sh --version
(running SBCL from: /home/zmyrgel/
SBCL 1.1.5.0-8f78db1
$ uname -a
OpenBSD mandrake.
$ ./run-sbcl.sh
(running SBCL from: /home/zmyrgel/
This is SBCL 1.1.5.0-8f78db1, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://
SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses. See the CREDITS and COPYING files in the
distribution for more information.
* *features*
(:QUICKLISP :SB-BSD-
:ALIEN-CALLBACKS :ANSI-CL :BSD :C-STACK-
:COMPARE-
:GENCGC :IEEE-FLOATING-
:MEMORY-
:OS-PROVIDES-
:OS-PROVIDES-
:SB-DOC :SB-EVAL :SB-LDB :SB-PACKAGE-LOCKS :SB-SOURCE-
:SB-UNICODE :SBCL :STACK-
:STACK-
:STACK-
*
$ sh run-tests.sh float.impure.lisp
/running tests on '/home/
; file: /home/zmyrgel/
; in: DEFMACRO WITH-TEST
; (LET ((TEST-
; (TEST-UTIL::THREADS (GENSYM "THREADS")))
; `(PROGN
; (TEST-UTIL:
; (COND
; ((TEST-
; (TEST-UTIL:
; "Test broken on this platform"))
; ((TEST-
; (TEST-UTIL:
; "Test disabled for this combination of platform and features"))
; (T
; (LET #
; #)))))
;
; caught STYLE-WARNING:
; The variable THREADS is defined but never used.
;
; compilation unit finished
; caught 1 STYLE-WARNING condition
// Running pure tests (#<FUNCTION RUN-TESTS:
// Running pure tests (#<FUNCTION RUN-TESTS:
// Running impure tests (#<FUNCTION RUN-TESTS:
; file: /home/zmyrgel/
; in: DEFMACRO WITH-TEST
; (LET ((TEST-
; (TEST-UTIL::THREADS (GENSYM "THREADS")))
; `(PROGN
; (TEST-UTIL:
; (COND
; ((TEST-
; (TEST-UTIL:
; "Test broken on this platform"))
; ((TEST-
; (TEST-UTIL:
; "Test disabled for this combination of platform and features"))
; (T
; (LET #
; #)))))
; ; caught STYLE-WARNING:
; The variable THREADS is defined but never used.
;
; compilation unit finished
; caught 1 STYLE-WARNING condition
// Running /home/zmyrgel/
::: SKIPPED-DISABLED (:RANGE-REDUCTION :X87)
Test disabled for this combination of platform and features
::: Running (:RANGE-REDUCTION :PRECISE-PI)
::: UNEXPECTED-FAILURE (:RANGE-REDUCTION :PRECISE-PI)
due to #<SIMPLE-ERROR "Inaccurate result for ~a: expected ~a, got ~a"
"Inaccurate result for (SIN
// Running impure tests (#<FUNCTION RUN-TESTS:
// Running impure tests (#<FUNCTION RUN-TESTS:
Finished running tests.
Status:
Failure: float.impure.lisp / (RANGE-REDUCTION PRECISE-PI)
(1 tests skipped for this combination of platform and features)
test failed, expected 104 return code, got 1
$
Changed in sbcl: | |
status: | New → Triaged |
importance: | Undecided → Low |
Changed in sbcl: | |
status: | Triaged → Incomplete |
Changed in sbcl: | |
status: | Incomplete → Fix Released |
zmyrgel, thanks for running the tests and for the report!
It seems your system's math library implements the trigonometric functions using the x87 FPU instructions instead of SSE, at least the result for (SIN 4.6116860184273 88d18) you get is the one that one gets on a 32-bit x86 SBCL, which uses x87. As your system is x86-64 this is surprising (to me - I haven't seen a 64-bit system using x87 yet).
Could you please verify that your system gets the correct results as x87 would calculate them, as follows:
In the file tests/float. impure. lisp activate the test ":range-reduction :x87" and deactivate the test ":range-reduction :precise-pi", for example by exchanging the ":skipped-on" clauses between the two tests, then run "sh run-tests.sh float.impure.lisp" again and report the result. Thanks!