| Age | Commit message (Collapse) | Author |
|
|
|
and not under hardware virtualization such as qemu -accel nvmm.
|
|
|
|
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.
|
|
not of function we didn't test (sin).
no need to print 17 digits for a float.
from Riastradh.
|
|
binary80 arithmetic and never rounded to binary32 at the end, so it
appeared farther from the correctly rounded result in binary32 than expected.
Force binary32 using volatile float.
PR lib/54232: lib/libm/t_cos:cosf_angles regression on i386
From Riastradh.
|
|
(paranoia prior to a libm change)
|
|
The given data is for double, so use DBL_EPSILON and don't expect better
results.
|
|
|
|
floating point exceptions - but some (actually all currently know ones)
do not implement sending traps when these exceptions are raised.
Pointed out by Peter Maydell.
|
|
exceptions - so apply the arm handling for aarch64 as well.
|
|
|
|
|
|
The x87 hardware uses a bad approximation to pi for argument
reduction, and consequently yields bad answers for inputs near pi or
pi/2.
Tweak one tanf test whose doubly rounded output is a little too far
from the correct answer on the doubly rounded input.
|
|
- Fix up last few digits of a lot of known-answer tests.
Confirmed with GNU mpfr to 200 bits of precision and cross-checked
with whatever libm Ubuntu ships with.
- Test relative error, not absolute error.
- Set bounds in terms of *_EPSILON, not magic numbers.
*_EPSILON is twice the largest relative error of a correctly
rounded operation, and equal to the largest relative error of an
operation with up to 1ulp error.
Most of the operations we're testing are not correctly rounded, but
they ought to be no more than 1ulp away. For the few cases where
that's not a priori clear (like comparing cbrt and pow(x, 1/3)),
use twice *_EPSILON to allow some leeway.
- Write the success condition positively as error <= eps.
This comes out false if the result is a NaN, meaning failure. In
contrast, if we write error > eps for the _failure_ condition, then
if the result is a NaN, it will also come out false, but meaning
success, which is not what we want.
- Fix the trigonometric test cases near bad spots.
sin(pi - d) for nonzero d is not zero; it is d + O(d^3). pi is not
a floating-point number, so these results should be approximately
the nonzero error of our approximation to pi. Likewise with
cos(pi/2 - d) and tan(pi + d).
(Yes, I know the sin _function_ is ill-conditioned near pi so you
shouldn't pass approximate inputs near there, but that's separate
from whether a sin _implementation_ gives an answer that is wrong
by quintillions of ulps.)
Since on x86 (i386 and amd64 alike) we currently use x87 hardware
trigonometric instructions, which are bad, these are marked xfail
on x86 for now until we switch to software implementations (coming
soon to a repository near you).
- Use %.8g, %.17g, %.35g to print float, double, long double in failures.
This should be enough to identify the problematic outputs and/or
reproduce the computation, even if long double is binary128 with
115 bits of precision.
If there are any new libm test failures after this, tell me what
architecture you're on and send me the atf output and I'll try to
figure it out.
|
|
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.
|
|
Make sure that cabsl (aka __c99_cabsl) is usable from C++.
|
|
also add missing closing paren
|
|
powerpc seems to return FE_INVALID | FE_VXSOFT rather than just FE_INVALID.
XXX need extra careful reading of standards
|
|
(So we can include fenv.h, and then not use it - we ifdef vax out
for OS-portability reasons.)
|
|
Second part of PR bin/51834.
ifdef out vax to avoid netbsd-specific macros.
|
|
|
|
Better diagnostic messages
More familiar test for 'even number'
|
|
Now I see it's down to the choice of -mfp-trap-mode (n works, su/sui/u don't)
|
|
fixes build. sorry, built tested an older version for 32bit.
|
|
This assert fires with -mieee, but not without it.
|
|
|
|
|
|
corner cases are tested, and the test cases are little more than a
verification that the functions are present in the implementation.
|
|
which has a separate #if section here) should have nearbyint().
|
|
nearbyint() is not included in libm on all platforms.
|
|
the existing lrint() test.
|
|
so the error message makes sense.
|
|
isinf works for float as well, and is more portable.
from Ngie Cooper in PR bin/51838
|
|
|
|
|
|
|
|
|
|
should fix vax build (it doesn't have fenv.h)
|
|
should fix arm build
|
|
It doesn't fail on amd64.
|
|
|
|
|
|
|
|
|
|
ldexp(2.0, INT_MAX) should be HUGE_VAL, not 0
|
|
application of the function
this doesn't introduce new failures on amd64
|
|
|
|
|
|
|