freebsd-dev/lib/msun/ld128
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 msun: Fix some old typos. 2018-12-31 15:43:06 +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
invtrig.h
k_cosl.c cosl(): fix polynomial approximation coefficients for ld128 version 2021-11-02 10:54:10 +02:00
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 sinpi[fl] etc: Fix the ld128 implementations 2021-11-01 04:38:19 +02:00
s_erfl.c
s_exp2l.c
s_expl.c Remove sparc64 specific parts of libm and fix comments 2020-02-26 18:55:03 +00:00
s_logl.c lib/msun: Avoid FE_INEXACT for x86 log2l/log10l 2021-03-08 09:39:32 +00:00
s_nanl.c
s_sinpil.c sinpi[fl] etc: Fix the ld128 implementations 2021-11-01 04:38:19 +02:00
s_tanpil.c sinpi[fl] etc: Fix the ld128 implementations 2021-11-01 04:38:19 +02:00