Module Name: src Committed By: martin Date: Wed Oct 2 12:46:13 UTC 2024
Modified Files: src/distrib/sets/lists/debug [netbsd-10]: mi src/distrib/sets/lists/tests [netbsd-10]: mi src/lib/libm/src [netbsd-10]: s_remquo.c src/tests/lib/libm [netbsd-10]: Makefile Added Files: src/tests/lib/libm [netbsd-10]: t_remquo.c Log Message: Pull up following revision(s) (requested by gdt in ticket #912): distrib/sets/lists/debug/mi: revision 1.449 lib/libm/src/s_remquo.c: revision 1.3 lib/libm/src/s_remquo.c: revision 1.4 distrib/sets/lists/tests/mi: revision 1.1339 tests/lib/libm/t_remquo.c: revision 1.1 tests/lib/libm/t_remquo.c: revision 1.2 tests/lib/libm/Makefile: revision 1.51 tests: Add test for remquo This test currently fails, because remquo has bugs. (A bugfix will be committed soon.) Test vectors derived from results from code by Charles Karney in GeodesicLib/proj, and manually inspected. t_remquo: Work around missing remquo(3) for vax Part of PR port-vax/57881 libm/remquo: Fix bug where wrong quotient was returned Fix taken from FreeBSD: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=166463 https://cgit.freebsd.org/src/commit/lib/msun/src/s_remquo.c?id=1cbd288942b08217e99bf889e0967895d53af00c FreeBSD commit message: Fix a bug in remquo{,f,l}, in which the quotient didn't always have the correct sign when the remainder was 0. Fix a separate bug in remquo alone, in which the remainder and quotient were both off by a bit in certain cases involving subnormal remainders. The bugs affected all platforms except amd64 and i386, on which the routines are implemented in assembly. (On NetBSD, this bug manifests on amd64.) libm/remquo: Fix bug where remquo returned wrong sign of quo ISO C requires that quo be congruent to the quotient mod 2^k and have a particular sign. The current code can return 0 when it should be negative. Because the code chooses k=31 (for the requirement of congruence modulo 2^k), the only value available (in ILP32 or LP64) that is negative and congruent to 0 is 0x80000000. In the specific case of wanting "-0", return 0x80000000. Resolves t_remquo test failure. To generate a diff of this commit: cvs rdiff -u -r1.394.2.9 -r1.394.2.10 src/distrib/sets/lists/debug/mi cvs rdiff -u -r1.1238.2.11 -r1.1238.2.12 src/distrib/sets/lists/tests/mi cvs rdiff -u -r1.1 -r1.1.56.1 src/lib/libm/src/s_remquo.c cvs rdiff -u -r1.48 -r1.48.2.1 src/tests/lib/libm/Makefile cvs rdiff -u -r0 -r1.2.2.2 src/tests/lib/libm/t_remquo.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.