Home | History | Annotate | Download | only in libm
History log of /src/tests/lib/libm/Makefile
RevisionDateAuthorComments
 1.54  16-Sep-2025  nat Revert to previous as requested by Rin.

As I found out the hack only applies to libc/softfloat which has issues on
m68k.

The hack should not have been applied to all m68k configurations.
 1.53  11-Sep-2025  nat Opps...Fix build.
 1.52  11-Sep-2025  nat Fix segfaults of libm tests noticable on m68k.

Also document it in doc/HACKS.
 1.51  19-Sep-2024  gdt 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.
 1.50  09-Sep-2024  riastradh math.h: Add math_errhandling, MATH_ERRNO, MATH_ERREXCEPT.

XXX Should maybe put a __math_errhandling in machine/math.h, but only
VAX uses MATH_ERRNO and that's not likely to change any time soon, so
this will serve for now with less churn.

PR standards/56234: missing C99 frobs in <math.h>
 1.49  05-May-2024  riastradh branches: 1.49.2;
tests/lib/libm: Test nextafter/nexttoward and variants.

The tests are fairly trivial but should work without any conditionals
about floating-point formats.
 1.48  27-Aug-2022  christos branches: 1.48.2;
Add sincos{,f,l} from FreeBSD
 1.47  21-Jun-2020  lukem fix build of t_cabsl from t_cabsl.cxx

t_cabsl source is in t_cabsl.cxx not t_cabsl.cc - the latter
is what bsd.tests.mk defaults to.

This only broke after my commit of share/mk/bsd.dep.mk rev 1.85
but I don't know why it didn't cause a problem previously.
 1.46  26-Apr-2019  maya branches: 1.46.2;
Add a test case for signbit.
(paranoia prior to a libm change)
 1.45  07-Nov-2018  riastradh Build libm tests with -fno-builtin.

This way they test libm, not whatever the compiler does.

We should _also_ have automatic integration tests for what the
compiler does, as a separate thing.
 1.44  20-Jun-2018  maya branches: 1.44.2;
Add test case for PR lib/50646.

Make sure that cabsl (aka __c99_cabsl) is usable from C++.
 1.43  04-Jun-2018  maya Blindly add __TEST_FENV in the hope of fixing the vax build.

(So we can include fenv.h, and then not use it - we ifdef vax out
for OS-portability reasons.)
 1.42  20-Dec-2016  maya branches: 1.42.12;
define __TEST_FENV in the makefile for t_fe_round
should fix vax build (it doesn't have fenv.h)
 1.41  19-Dec-2016  maya add test for fesetround/fegetround that uses lrint (and tests it a bunch).
It doesn't fail on amd64.
 1.40  31-Aug-2016  maya Add failing test for casinh
 1.39  23-Aug-2016  christos portability fixes
 1.38  22-Aug-2016  maya add failing test for PR lib/51427
ilogb(INFINITY)=-INT_MAX, it should be INT_MAX

while here, test raised exceptions, other values.

XXX some platforms don't have exceptions
 1.37  24-Jan-2016  gson branches: 1.37.2;
Add some tests of hypot() and hypotf()
 1.36  22-Dec-2015  christos add __TEST_FENV
 1.35  22-Dec-2015  christos put have fenv stuff elsewhere.
 1.34  22-Dec-2015  martin Sync list of fenv enabled architectures again (PR 48633), this time for mips
addition.
 1.33  21-Dec-2015  martin While PR 48633 is not properly fixed, keep the additional lists of
fenv-enabled architectures in sync.
 1.32  20-Jan-2015  snj Remove stale comment about ARM fenv support.
 1.31  03-Jan-2015  gson Mark the lib/libm/t_fmod test as an expected failure under QEMU,
with a reference to PR misc/44767.
 1.30  27-Dec-2014  martin Enable fenv.h on arm again
 1.29  27-Dec-2014  martin fenv(3) support for hppa
 1.28  22-Dec-2014  martin Disabel fenv tests for arm, the implementation is incomplete.
 1.27  21-Dec-2014  martin Add a test program for basic fenv.h rounding mode/exception mask testing.
 1.26  10-Aug-2014  martin branches: 1.26.2;
Use the same condition for HAVE_FENV
 1.25  16-Jun-2014  joerg Add modfl(3). From FreeBSD.
 1.24  18-May-2014  martin Re-enable alpha IEEE compiler options
 1.23  05-May-2014  martin Comment out the ieee fp flags for alpha for now - something (tm) is not
working right, see PR port-alpha/48782.
 1.22  28-Apr-2014  martin Tune COPTS for alpha
 1.21  03-Mar-2014  martin branches: 1.21.2;
Define HAVE_FENV_H on architectures that support it.
What a mess, we need a central place for this!
 1.20  12-Nov-2013  joerg Initial version of fmodl from FreeBSD.
Basic test case for the fmod family.
 1.19  11-Nov-2013  joerg NetBSD 6.99.26: Switch i386 and amd64 to the x87 default control word
as initial value for new processes. This means that long double
computations get the expected 63bit mantissa. Binaries tagged as
compiled for 6.99.25 and older get the old value.

Add a simple test case to ensure that double and long double computation
are working correctly.
 1.18  13-Apr-2012  njoly branches: 1.18.2;
Do not re-add -mieee option on alpha, it's already set by default.
 1.17  16-Oct-2011  jruoho branches: 1.17.2;
Remove 't_rint' as it was committed accidentally.
 1.16  16-Oct-2011  jruoho As couple of checks fails on i386/qemu, reduce tolerance.
 1.15  16-Oct-2011  jruoho Add t_sqrt and t_cbrt.
 1.14  16-Oct-2011  jruoho Basic IEEE tests for the hyperbolic sine and cosine.
 1.13  18-Sep-2011  jruoho IEEE checks for the exponential family.
 1.12  17-Sep-2011  jruoho IEEE checks for the arcus functions.
 1.11  17-Sep-2011  jruoho Few tests for the error functions.
 1.10  17-Sep-2011  jruoho IEEE corner case tests for the pow(3) family (incl. PR lib/45372).
 1.9  14-Sep-2011  jruoho Some tests for sine, cosine, and tangent.
 1.8  12-Sep-2011  jruoho Merge 't_floor' to 't_ceil', and simplify.
 1.7  12-Sep-2011  jruoho Start systematic testing of libm(3) by first evaluating the corner cases
(NaN, +0.0, -0.0, +Inf, -Inf) for the ldexp(3) and scalbn(3) families.
 1.6  11-Apr-2011  martin Try to generate infinite values in all available floating point formats
on the FPU and check isinf() and fpclassify() results. This is
different from the libc internal consistency checks testing PR
lib/33262.
 1.5  10-Apr-2011  jruoho Add a test case for PR lib/41931 reported by he@. It was verified that these
fail on NetBSD 5.99.48 amd64 but pass on amd64 Linux (glibc 2.7).
 1.4  08-Apr-2011  jruoho Move the round(3) checks from 't_libm' to their own 't_round'
for consistency. Add -Wfloat-equal and fix comparisons.
 1.3  06-Apr-2011  jruoho A test case for PR lib/44057.
 1.2  24-Mar-2011  jruoho Add dummy test cases for ceil(3) and floor(3). It is expected that at least
one of these will fail on guest x86_64 NetBSD under Qemu. Thanks to pgoyette@
for checking the broken floor(16.999999...) = 17.
 1.1  20-Dec-2010  pgoyette Move the only regress/lib/libm test to the new atf format
 1.17.2.2  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.17.2.1  17-Apr-2012  yamt sync with head
 1.18.2.1  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.21.2.1  10-Aug-2014  tls Rebase.
 1.26.2.2  20-Jan-2015  snj Pull up following revision(s) (requested by martin in ticket #416):
distrib/sets/lists/comp/md.hppa: revision 1.3
include/fenv.h: revision 1.13 via patch
lib/libm/Makefile: revision 1.168
lib/libm/arch/hppa/fenv.c: revisions 1.1, 1.2
sys/arch/hppa/include/Makefile: revision 1.12
sys/arch/hppa/include/fenv.h: revisions 1.1, 1.2
sys/arch/hppa/include/ieeefp.h: revisions 1.5-1.7
tests/lib/libm/Makefile: revision 1.29 via patch
fenv(3) support for hppa
--
use unsigned over uint32_t so that this file works without stdint.h
being included before hand.
fixes mknative-gcc problems, and likely others.
--
Properly separate fenv.h and ieeefp.h by moving all fenv defines
over to the former.
Now that they are decoupled, make rounding modes match the hardware bits.
--
Simplify, now that rounding mode defines match the hardware bits.
 1.26.2.1  12-Jan-2015  snj Pull up following revision(s) (requested by gson in ticket #413):
tests/lib/libm/Makefile: revision 1.31
tests/lib/libm/t_fmod.c: revision 1.3
Mark the lib/libm/t_fmod test as an expected failure under QEMU,
with a reference to PR misc/44767.
 1.37.2.1  07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.42.12.2  26-Nov-2018  pgoyette Sync with HEAD, resolve a couple of conflicts
 1.42.12.1  25-Jun-2018  pgoyette Sync with HEAD
 1.44.2.1  10-Jun-2019  christos Sync with HEAD
 1.46.2.1  13-Oct-2024  martin 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
 1.48.2.3  13-Oct-2024  martin 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

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
 1.48.2.2  11-Oct-2024  martin Pull up following revision(s) (requested by riastradh in ticket #950):

include/math.h: revision 1.71
include/math.h: revision 1.72
distrib/sets/lists/debug/mi: revision 1.448
tests/lib/libm/t_errhandling.c: revision 1.1
tests/lib/libm/t_errhandling.c: revision 1.2
tests/lib/libm/t_errhandling.c: revision 1.3
distrib/sets/lists/tests/mi: revision 1.1337
tests/lib/libm/Makefile: revision 1.50

math.h: Define FP_FAST_FMA, FP_FAST_FMAF, FP_FAST_FMAL.

These are not strictly necessary to define, really, so we haven't
exactly been nonconformant. But they tell programs when they can
enable fast paths by using the fma(3) family of functions.

PR standards/56234: missing C99 frobs in <math.h>

math.h: Add math_errhandling, MATH_ERRNO, MATH_ERREXCEPT.
XXX Should maybe put a __math_errhandling in machine/math.h, but only
VAX uses MATH_ERRNO and that's not likely to change any time soon, so
this will serve for now with less churn.
PR standards/56234: missing C99 frobs in <math.h>

math.h: Add missing file for math_errhandling test.
PR standards/56234: missing C99 frobs in <math.h>

Add __TEST_FENV define to fix vax build

libm/t_errhandling.c: Put __TEST_FENV before any #includes.

This pattern avoids any potential problem with transitive inclusions
of fenv.h. (No change here because nothing else this file includes
transitively pulls in fenv.h, but being in the habit of doing it this
way avoids a class of problems.)

PR standards/56234: missing C99 frobs in <math.h>
 1.48.2.1  02-Oct-2024  martin 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.
 1.49.2.1  02-Aug-2025  perseant Sync with HEAD

RSS XML Feed