Module Name: src Committed By: martin Date: Sun Oct 13 15:09:58 UTC 2024
Modified Files: src/distrib/sets/lists/debug [netbsd-9]: mi src/distrib/sets/lists/tests [netbsd-9]: mi src/lib/libm/src [netbsd-9]: s_nexttoward.c src/tests/lib/libm [netbsd-9]: Makefile Added Files: src/tests/lib/libm [netbsd-9]: t_next.c Log Message: Pull up following revision(s) (requested by riastradh in ticket #963): tests/lib/libm/Makefile: revision 1.49 distrib/sets/lists/tests/mi: revision 1.1315 tests/lib/libm/t_next.c: revision 1.1 tests/lib/libm/t_next.c: revision 1.2 distrib/sets/lists/debug/mi: revision 1.435 tests/lib/libm/t_next.c: revision 1.3 tests/lib/libm/t_next.c: revision 1.4 tests/lib/libm/t_next.c: revision 1.5 tests/lib/libm/t_next.c: revision 1.6 lib/libm/src/s_nexttoward.c: revision 1.3 (all via patch) tests/lib/libm: Test nextafter/nexttoward and variants. The tests are fairly trivial but should work without any conditionals about floating-point formats. tests/lib/libm/t_next: Disable this test on VAX. But leave a replacement xfail test that fails unconditionally, to leave a reminder in the tests of PR 57881: vax libm is missing various symbols. tests/lib/libm/t_next: Fix stub on VAX. Tested building the wrong tree, oops. tests/lib/libm/t_next: Expand substantially. This covers many more potential problem areas -- and includes a new xfail test for PR lib/58236: nexttoward(3) is broken on subnormals. tests/lib/libm/t_next: nexttoward works if it's just nextafter. It's broken on platforms where long double and double aren't the same and nexttoward isn't an alias for nextafter. nexttoward(3): Fix high-word test on small positive subnormals. By this point in the logic, x can't be zero, so it's either positive or negative. The high word hx, however, can be zero, when x is a small positive subnormal. This means x is a small positive subnormal, so if x > y we are computing nextDown, and if x < y we are computing nextUp. hx is a (signed 32-bit) integer, not a double floating-point number, so it's a little silly to compare hx > 0.0. But that on its own isn't enough to trigger the bug because all signed 32-bit integers can be represented by double on all NetBSD architectures. PR lib/58236 To generate a diff of this commit: cvs rdiff -u -r1.285.2.9 -r1.285.2.10 src/distrib/sets/lists/debug/mi cvs rdiff -u -r1.818.2.7 -r1.818.2.8 src/distrib/sets/lists/tests/mi cvs rdiff -u -r1.2 -r1.2.28.1 src/lib/libm/src/s_nexttoward.c cvs rdiff -u -r1.46 -r1.46.2.1 src/tests/lib/libm/Makefile cvs rdiff -u -r0 -r1.7.6.2 src/tests/lib/libm/t_next.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.