freebsd-dev/lib/msun/ld80
Steve Kargl 046e2d5db1 Implementations of cexpl()
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
2021-11-05 13:51:42 +02:00
..
e_lgammal_r.c
e_powl.c Recommit r336497: Fix powl, cpow, cpowf, and cpowl imports from OpenBSD 2018-07-20 18:27:30 +00:00
e_rem_pio2l.h Centralize the complications for special efficient rounding to integers. 2018-07-20 12:42:24 +00:00
invtrig.c lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
invtrig.h lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
k_cosl.c
k_cospil.h [LIBM] implementations of sinpi[fl], cospi[fl], and tanpi[fl] 2021-10-26 02:50:20 +03:00
k_expl.h Apply fix for ld80 and ld128 submitted by Steve Kargl: 2020-09-20 05:28:31 +00:00
k_sinl.c
k_sinpil.h [LIBM] implementations of sinpi[fl], cospi[fl], and tanpi[fl] 2021-10-26 02:50:20 +03:00
k_tanl.c
s_cexpl.c Implementations of cexpl() 2021-11-05 13:51:42 +02:00
s_cospil.c [LIBM] implementations of sinpi[fl], cospi[fl], and tanpi[fl] 2021-10-26 02:50:20 +03:00
s_erfl.c
s_exp2l.c lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
s_expl.c Centralize the complications for special efficient rounding to integers. 2018-07-20 12:42:24 +00:00
s_logl.c lib/msun: Fix x86 GCC6 build after 221622ec0c 2021-03-12 18:44:44 +00:00
s_nanl.c lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
s_sinpil.c [LIBM] implementations of sinpi[fl], cospi[fl], and tanpi[fl] 2021-10-26 02:50:20 +03:00
s_tanpil.c [LIBM] implementations of sinpi[fl], cospi[fl], and tanpi[fl] 2021-10-26 02:50:20 +03:00