Index: Makefile =================================================================== --- Makefile (revision 313777) +++ Makefile (working copy) @@ -94,7 +94,8 @@ COMMON_SRCS+= s_copysignl.c s_fabsl.c s_llrintl.c s_lrintl.c s_modfl.c .if ${LDBL_PREC} != 53 # If long double != double use these; otherwise, we alias the double versions. -COMMON_SRCS+= e_acoshl.c e_acosl.c e_asinl.c e_atan2l.c e_atanhl.c \ +COMMON_SRCS+= catrigl.c \ + e_acoshl.c e_acosl.c e_asinl.c e_atan2l.c e_atanhl.c \ e_coshl.c e_fmodl.c e_hypotl.c \ e_lgammal.c e_lgammal_r.c \ e_remainderl.c e_sinhl.c e_sqrtl.c \ @@ -107,7 +108,7 @@ .endif # C99 complex functions -COMMON_SRCS+= catrig.c catrigf.c catrigl.c \ +COMMON_SRCS+= catrig.c catrigf.c \ s_ccosh.c s_ccoshf.c s_cexp.c s_cexpf.c \ s_cimag.c s_cimagf.c s_cimagl.c \ s_conj.c s_conjf.c s_conjl.c \ @@ -147,9 +149,12 @@ MLINKS+=atanh.3 atanhf.3 atanh.3 atanhl.3 MLINKS+=atan2.3 atan2f.3 atan2.3 atan2l.3 \ atan2.3 carg.3 atan2.3 cargf.3 atan2.3 cargl.3 -MLINKS+=cacos.3 cacosf.3 cacos.3 cacosh.3 cacos.3 cacoshf.3 \ - cacos.3 casin.3 cacos.3 casinf.3 cacos.3 casinh.3 cacos.3 casinhf.3 \ - cacos.3 catan.3 cacos.3 catanf.3 cacos.3 catanh.3 cacos.3 catanhf.3 +MLINKS+=cacos.3 cacosf.3 cacos.3 cacosl.3 \ + cacos.3 cacosh.3 cacos.3 cacoshf.3 cacos.3 cacoshl.3 \ + cacos.3 casin.3 cacos.3 casinf.3 cacos.3 casinl.3 \ + cacos.3 casinh.3 cacos.3 casinhf.3 cacos.3 casinhl.3 \ + cacos.3 catan.3 cacos.3 catanf.3 cacos.3 catanl.3 \ + cacos.3 catanh.3 cacos.3 catanhf.3 cacos.3 catanhl.3 MLINKS+=ccos.3 ccosf.3 ccos.3 csin.3 ccos.3 csinf.3 ccos.3 ctan.3 ccos.3 ctanf.3 MLINKS+=ccosh.3 ccoshf.3 ccosh.3 csinh.3 ccosh.3 csinhf.3 \ ccosh.3 ctanh.3 ccosh.3 ctanhf.3 Index: man/cacos.3 =================================================================== --- man/cacos.3 (revision 313777) +++ man/cacos.3 (working copy) @@ -24,23 +24,29 @@ .\" .\" $FreeBSD$ .\" -.Dd Jul 14, 2015 +.Dd February 15, 2017 .Dt CACOS 3 .Os .Sh NAME .Nm cacos , .Nm cacosf , +.Nm cacosl , .Nm cacosh , .Nm cacoshf , +.Nm cacoshl , .Nm casin , -.Nm casinf +.Nm casinf , +.Nm casinl , .Nm casinh , -.Nm casinhf -.Nm catan , -.Nm catanf +.Nm casinhf , +.Nm casinhl , +.Nm catan , +.Nm catanf , +.Nm catanl , .Nm catanh , -.Nm catanhf -.Nd complex arc trigonometric and hyperbolic functions +.Nm catanhf , +.Nm catanhl +.Nd complex inverse trigonometric and hyperbolic functions .Sh LIBRARY .Lb libm .Sh SYNOPSIS @@ -49,26 +55,39 @@ .Fn cacos "double complex z" .Ft float complex .Fn cacosf "float complex z" +.Ft long double complex +.Fn cacosl "long double complex z" .Ft double complex .Fn cacosh "double complex z" .Ft float complex .Fn cacoshf "float complex z" +.Ft long double complex +.Fn cacoshl "long double complex z" .Ft double complex .Fn casin "double complex z" .Ft float complex .Fn casinf "float complex z" +.Ft long double complex +.Fn casinl "long double complex z" .Ft double complex .Fn casinh "double complex z" .Ft float complex .Fn casinhf "float complex z" +.Ft long double complex +.Fn casinhl "long double complex z" .Ft double complex .Fn catan "double complex z" .Ft float complex .Fn catanf "float complex z" +.Ft long double complex +.Fn catanl "long double complex z" .Ft double complex .Fn catanh "double complex z" .Ft float complex .Fn catanhf "float complex z" +.Ft long double complex +.Fn catanhl "long double complex z" + .Sh DESCRIPTION The .Fn cacos , @@ -97,10 +116,23 @@ functions perform the same operations in .Fa float precision. +The +.Fn cacosl , +.Fn casinl , +.Fn catanl +.Fn cacoshl , +.Fn casinhl , +and +.Fn catanhl +functions perform the same operations in +.Fa long double +precision. + .Pp .ds Un \[cu] There is no universal convention for defining the principal values of -these functions. The following table gives the branch cuts, and the +these functions. +The following table gives the branch cuts, and the corresponding ranges for the return values, adopted by the C language. .Bl -column ".Sy Function" ".Sy (-\*(If*I, -I) \*(Un (I, \*(If*I)" ".Sy [-\*(Pi/2*I, \*(Pi/2*I]" .It Sy Function Ta Sy Branch Cut(s) Ta Sy Range Index: src/catrig.c =================================================================== --- src/catrig.c (revision 313777) +++ src/catrig.c (working copy) @@ -328,6 +328,10 @@ return (CMPLX(copysign(rx, x), copysign(ry, y))); } +#if (LDBL_MANT_DIG == 53) +__weak_reference(casinh, casinhl); +#endif + /* * casin(z) = reverse(casinh(reverse(z))) * where reverse(x + I*y) = y + I*x = I*conj(z). @@ -340,6 +344,10 @@ return (CMPLX(cimag(w), creal(w))); } +#if (LDBL_MANT_DIG == 53) +__weak_reference(casin, casinl); +#endif + /* * cacos(z) = PI/2 - casin(z) * but do the computation carefully so cacos(z) is accurate when z is @@ -422,6 +430,10 @@ return (CMPLX(rx, ry)); } +#if (LDBL_MANT_DIG == 53) +__weak_reference(cacos, cacosl); +#endif + /* * cacosh(z) = I*cacos(z) or -I*cacos(z) * where the sign is chosen so Re(cacosh(z)) >= 0. @@ -448,6 +460,10 @@ return (CMPLX(fabs(ry), copysign(rx, cimag(z)))); } +#if (LDBL_MANT_DIG == 53) +__weak_reference(cacosh, cacoshl); +#endif + /* * Optimized version of clog() for |z| finite and larger than ~RECIP_EPSILON. */ @@ -626,6 +642,10 @@ return (CMPLX(copysign(rx, x), copysign(ry, y))); } +#if (LDBL_MANT_DIG == 53) +__weak_reference(catanh, catanhl); +#endif + /* * catan(z) = reverse(catanh(reverse(z))) * where reverse(x + I*y) = y + I*x = I*conj(z). @@ -637,3 +657,7 @@ return (CMPLX(cimag(w), creal(w))); } + +#if (LDBL_MANT_DIG == 53) +__weak_reference(catan, catanl); +#endif