mirror of
https://github.com/opnsense/src.git
synced 2026-04-07 10:25:46 -04:00
The change implements cexpl() for both ld80 and ld128 architectures.
Testing was done on x86_64 and aarch64 systems.
Along the way sincos[fl]() use an optimization that reduces the argument
to being done one rather than twice. This optimization actually pointed
to a bug in the ld128 version of sincosl(), which is now fixed. In
addition, the minmax polynomial coefficients for sincosl() have been
updated.
A concise log of the file-by-file changes follows.
* include/complex.h:
. Add a prototype for cexpl().
* lib/msun/Makefile:
. Add s_cexpl.c to the build.
. Setup a link for cexpl.3 to cexp.3.
* lib/msun/Symbol.map:
. Expose cexpl symbol in libm shared library.
* lib/msun/ld128/s_cexpl.c:
* Implementation of cexpl() for 128-bit long double architectures.
Tested on an aarch64 system.
* lib/msun/ld80/s_cexpl.c:
* Implementation of cexpl() for Intel 80-bit long double.
* lib/msun/man/cexp.3:
. Document cexpl().
* lib/msun/man/complex.3:
. Add a BUGS section about cpow[fl].
* lib/msun/src/s_cexp.c:
. Include float.h for weak references on 53-bit long double targets.
. Use sincos() to reduce argument reduction cost.
* lib/msun/src/s_cexpf.c:
. Use sincosf() to reduce argument reduction cost.
* lib/msun/src/k_sincosl.h:
. Catch up with the new minmax polynomial coefficients for the kernel for
the 128-bit cosl() implementation.
. BUG FIX: *cs was used where *sn should have been. This means that sinl()
was no computed correctly when iy != 0.
* lib/msun/src/s_cosl.c:
. Include fpmath.h to get access to IEEEl2bits.
. Replace M_PI_4 with pio4, a 64-bit or 113-bit approximation for pi / 4.
PR: 216862
MFC after: 1 week
|
||
|---|---|---|
| .. | ||
| acos.3 | ||
| acosh.3 | ||
| asin.3 | ||
| asinh.3 | ||
| atan.3 | ||
| atan2.3 | ||
| atanh.3 | ||
| cacos.3 | ||
| ccos.3 | ||
| ccosh.3 | ||
| ceil.3 | ||
| cexp.3 | ||
| cimag.3 | ||
| clog.3 | ||
| complex.3 | ||
| copysign.3 | ||
| cos.3 | ||
| cosh.3 | ||
| cospi.3 | ||
| cpow.3 | ||
| csqrt.3 | ||
| erf.3 | ||
| exp.3 | ||
| fabs.3 | ||
| fdim.3 | ||
| feclearexcept.3 | ||
| feenableexcept.3 | ||
| fegetenv.3 | ||
| fegetround.3 | ||
| fenv.3 | ||
| floor.3 | ||
| fma.3 | ||
| fmax.3 | ||
| fmod.3 | ||
| hypot.3 | ||
| ieee.3 | ||
| ieee_test.3 | ||
| ilogb.3 | ||
| j0.3 | ||
| lgamma.3 | ||
| log.3 | ||
| lrint.3 | ||
| lround.3 | ||
| math.3 | ||
| nan.3 | ||
| nextafter.3 | ||
| remainder.3 | ||
| rint.3 | ||
| round.3 | ||
| scalbn.3 | ||
| signbit.3 | ||
| sin.3 | ||
| sincos.3 | ||
| sinh.3 | ||
| sinpi.3 | ||
| sqrt.3 | ||
| tan.3 | ||
| tanh.3 | ||
| tanpi.3 | ||
| trunc.3 | ||