aboutsummaryrefslogtreecommitdiff
path: root/include/math.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/math.h')
-rw-r--r--include/math.h106
1 files changed, 57 insertions, 49 deletions
diff --git a/include/math.h b/include/math.h
index 214b80e2c839..c0d1dddcb075 100644
--- a/include/math.h
+++ b/include/math.h
@@ -72,61 +72,69 @@
#include <sys/cdefs.h>
+/*
+ * Most of these functions have the side effect of setting errno, except
+ * in the (broken) BSD libm, so they not declared as __pure2.
+ */
__BEGIN_DECLS
-__pure double acos __P((double));
-__pure double asin __P((double));
-__pure double atan __P((double));
-__pure double atan2 __P((double, double));
-__pure double ceil __P((double));
-__pure double cos __P((double));
-__pure double cosh __P((double));
-__pure double exp __P((double));
-__pure double fabs __P((double));
-__pure double floor __P((double));
-__pure double fmod __P((double, double));
- double frexp __P((double, int *));
-__pure double ldexp __P((double, int));
-__pure double log __P((double));
-__pure double log10 __P((double));
- double modf __P((double, double *));
-__pure double pow __P((double, double));
-__pure double sin __P((double));
-__pure double sinh __P((double));
-__pure double sqrt __P((double));
-__pure double tan __P((double));
-__pure double tanh __P((double));
+double acos __P((double));
+double asin __P((double));
+double atan __P((double));
+double atan2 __P((double, double));
+double ceil __P((double));
+double cos __P((double));
+double cosh __P((double));
+double exp __P((double));
+double fabs __P((double));
+double floor __P((double));
+double fmod __P((double, double));
+double frexp __P((double, int *)); /* fundamentally !__pure2 */
+double ldexp __P((double, int));
+double log __P((double));
+double log10 __P((double));
+double modf __P((double, double *)); /* fundamentally !__pure2 */
+double pow __P((double, double));
+double sin __P((double));
+double sinh __P((double));
+double sqrt __P((double));
+double tan __P((double));
+double tanh __P((double));
+/*
+ * These functions are non-ANSI so they can be "right". The ones that
+ * don't set errno in [lib]msun are declared as __pure2.
+ */
#if !defined(_ANSI_SOURCE) && !defined(_POSIX_SOURCE)
-__pure double acosh __P((double));
-__pure double asinh __P((double));
-__pure double atanh __P((double));
- double cabs(); /* we can't describe cabs()'s argument properly */
-__pure double cbrt __P((double));
-__pure double copysign __P((double, double));
-__pure double drem __P((double, double));
-__pure double erf __P((double));
-__pure double erfc __P((double));
-__pure double expm1 __P((double));
-__pure int finite __P((double));
-__pure double hypot __P((double, double));
+double acosh __P((double));
+double asinh __P((double));
+double atanh __P((double));
+double cabs(); /* we can't describe cabs()'s argument properly */
+double cbrt __P((double)) __pure2;
+double copysign __P((double, double)) __pure2;
+double drem __P((double, double));
+double erf __P((double));
+double erfc __P((double)) __pure2;
+double expm1 __P((double)) __pure2;
+int finite __P((double)) __pure2;
+double hypot __P((double, double));
#if defined(vax) || defined(tahoe)
-__pure double infnan __P((int));
+double infnan __P((int));
#endif
-__pure int isinf __P((double));
-__pure int isnan __P((double));
-__pure double j0 __P((double));
-__pure double j1 __P((double));
-__pure double jn __P((int, double));
-__pure double lgamma __P((double));
-__pure double log1p __P((double));
-__pure double logb __P((double));
-__pure double rint __P((double));
-__pure double scalb __P((double, int));
-__pure double y0 __P((double));
-__pure double y1 __P((double));
-__pure double yn __P((int, double));
+int isinf __P((double)) __pure2;
+int isnan __P((double)) __pure2;
+double j0 __P((double));
+double j1 __P((double));
+double jn __P((int, double));
+double lgamma __P((double));
+double log1p __P((double)) __pure2;
+double logb __P((double)) __pure2;
+double rint __P((double)) __pure2;
+double scalb __P((double, int));
+double y0 __P((double));
+double y1 __P((double));
+double yn __P((int, double));
#endif
__END_DECLS
-#endif /* _MATH_H_ */
+#endif /* !_MATH_H_ */