freebsd-dev/lib/msun/Symbol.map
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

321 lines
2.9 KiB
Plaintext

/*
* $FreeBSD$
*/
/* 7.0-CURRENT */
FBSD_1.0 {
__fe_dfl_env;
tgamma;
acos;
acosf;
acosh;
acoshf;
asin;
asinf;
atan2;
atan2f;
atanh;
atanhf;
cosh;
coshf;
exp;
expf;
fmod;
fmodf;
gamma;
gamma_r;
gammaf;
gammaf_r;
hypot;
hypotf;
j0;
y0;
j0f;
y0f;
j1;
y1;
j1f;
y1f;
jn;
yn;
jnf;
ynf;
lgamma;
lgamma_r;
lgammaf;
lgammaf_r;
log;
log10;
log10f;
logf;
pow;
powf;
remainder;
remainderf;
scalb;
scalbf;
sinh;
sinhf;
sqrt;
sqrtf;
asinh;
asinhf;
atan;
atanf;
cbrt;
cbrtf;
ceil;
ceilf;
ceill;
cimag;
cimagf;
cimagl;
conj;
conjf;
conjl;
copysign;
copysignf;
copysignl;
cos;
cosf;
creal;
crealf;
creall;
erf;
erfc;
erff;
erfcf;
exp2;
exp2f;
expm1;
expm1f;
fabs;
fabsf;
fabsl;
fdim;
fdimf;
fdiml;
finite;
finitef;
floor;
floorf;
floorl;
fma;
fmaf;
fmal;
fmax;
fmaxf;
fmaxl;
fmin;
fminf;
fminl;
frexp;
frexpf;
frexpl;
ilogb;
ilogbf;
ilogbl;
__isfinite;
__isfinitef;
__isfinitel;
isnanf;
__isnanl;
__isnormal;
__isnormalf;
__isnormall;
llrint;
llrintf;
llround;
llroundf;
llroundl;
log1p;
log1pf;
logb;
logbf;
lrint;
lrintf;
lround;
lroundf;
lroundl;
modff;
modfl;
nearbyint;
nearbyintf;
nextafter;
nexttoward;
nexttowardl;
nextafterl;
nextafterf;
nexttowardf;
remquo;
remquof;
rint;
rintf;
round;
roundf;
roundl;
scalbln;
scalblnf;
scalblnl;
scalbn;
scalbnl;
scalbnf;
ldexpf;
ldexpl;
__signbit;
__signbitf;
__signbitl;
signgam;
significand;
significandf;
sin;
sinf;
tan;
tanf;
tanh;
tanhf;
trunc;
truncf;
truncl;
cabs;
cabsf;
drem;
dremf;
};
/* First added in 8.0-CURRENT */
FBSD_1.1 {
carg;
cargf;
csqrt;
csqrtf;
logbl;
nan;
nanf;
nanl;
llrintl;
lrintl;
nearbyintl;
rintl;
exp2l;
sinl;
cosl;
tanl;
tgammaf;
sqrtl;
hypotl;
cabsl;
csqrtl;
remquol;
remainderl;
fmodl;
acosl;
asinl;
atan2l;
atanl;
cargl;
cproj;
cprojf;
cprojl;
};
/* First added in 9.0-CURRENT */
FBSD_1.2 {
__isnanf;
cbrtl;
cexp;
cexpf;
log2;
log2f;
};
/* First added in 10.0-CURRENT */
FBSD_1.3 {
feclearexcept;
fegetexceptflag;
fetestexcept;
fegetround;
fesetround;
fesetenv;
acoshl;
asinhl;
atanhl;
cacos;
cacosf;
cacosh;
cacoshf;
casin;
casinf;
casinh;
casinhf;
catan;
catanf;
catanh;
catanhf;
csin;
csinf;
csinh;
csinhf;
ccos;
ccosf;
ccosh;
ccoshf;
coshl;
ctan;
ctanf;
ctanh;
ctanhf;
erfcl;
erfl;
expl;
expm1l;
lgammal;
log10l;
log1pl;
log2l;
logl;
powl;
sinhl;
tanhl;
/* Implemented as weak aliases for imprecise versions */
tgammal;
};
/* First added in 11.0-CURRENT */
FBSD_1.4 {
lgammal_r;
};
/* First added in 12.0-CURRENT */
FBSD_1.5 {
cacoshl;
cacosl;
casinhl;
casinl;
catanl;
catanhl;
clog;
clogf;
clogl;
cpow;
cpowf;
cpowl;
sincos;
sincosf;
sincosl;
};
/* First added in 14.0-CURRENT */
FBSD_1.7 {
cexpl;
cospi;
cospif;
cospil;
sinpi;
sinpif;
sinpil;
tanpi;
tanpif;
tanpil;
};