[Bug 216858] C11 conformance: catanhl() is missing
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Wed Feb 15 18:57:59 UTC 2017
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=216858
--- Comment #5 from sgk at troutmask.apl.washington.edu ---
* Makefile:
. Fix build on mips.
. Add MLINKS for the long double inverse trignometric and
hyperbolic functions
* man/cacos.3:
. Document cacosl, cacoshl, casinl, casinhl, catanl, catanhl
* src/catrig.c:
. Use weak references for LDBL_MANT_DIG == 53 targets.
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
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the freebsd-standards
mailing list