summaryrefslogtreecommitdiff
path: root/math/mathcalls.h
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>1996-03-05 21:41:30 +0000
committerRoland McGrath <roland@gnu.org>1996-03-05 21:41:30 +0000
commitf7eac6eb504f4baf13dbb4d26717942df050ebe6 (patch)
tree95ff129c06c7f6f246a5e2bfa489ba6382659d19 /math/mathcalls.h
parent1521668f2afae1dc2ef5d7ffaeb84353b36874dd (diff)
Mon Mar 4 20:54:40 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* Makeconfig ($(common-objpfx)config.make): Depend on config.h.in. Mon Mar 4 17:35:09 1996 Roland McGrath <roland@charlie-brown.gnu.ai.mit.edu> * hurd/catch-signal.c (hurd_safe_memmove): New function. (hurd_safe_copyin, hurd_safe_copyout): New functions. * hurd/hurd/sigpreempt.h: Declare them. Sun Mar 3 08:43:44 1996 Roland McGrath <roland@charlie-brown.gnu.ai.mit.edu> Replace math code with fdlibm from Sun as modified for netbsd by JT Conklin and Ian Taylor, including x86 FPU support. * sysdeps/libm-ieee754, sysdeps/libm-i387: New directories. * math/math_private.h: New file. * sysdeps/i386/fpu/Implies: New file. * sysdeps/ieee754/Implies: New file. * math/machine/asm.h, math/machine/endian.h: New files. * math/Makefile, math/math.h: Rewritten. * mathcalls.h, math/mathcalls.h: New file, broken out of math.h. * math/finite.c: File removed. * sysdeps/generic/Makefile [$(subdir)=math]: Frobnication removed. * math/test-math.c: Include errno.h and string.h. * sysdeps/unix/bsd/dirstream.h: File removed. * sysdeps/unix/bsd/readdir.c: File removed.
Diffstat (limited to 'math/mathcalls.h')
-rw-r--r--math/mathcalls.h232
1 files changed, 232 insertions, 0 deletions
diff --git a/math/mathcalls.h b/math/mathcalls.h
new file mode 100644
index 0000000000..656352ec2c
--- /dev/null
+++ b/math/mathcalls.h
@@ -0,0 +1,232 @@
+/* Prototype declarations for math functions; helper file for <math.h>.
+Copyright (C) 1996 Free Software Foundation, Inc.
+This file is part of the GNU C Library.
+
+The GNU C Library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public License as
+published by the Free Software Foundation; either version 2 of the
+License, or (at your option) any later version.
+
+The GNU C Library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with the GNU C Library; see the file COPYING.LIB. If
+not, write to the Free Software Foundation, Inc., 675 Mass Ave,
+Cambridge, MA 02139, USA. */
+
+/* NOTE: Because of the special way this file is used by <math.h>, this
+ file must NOT be protected from multiple inclusion as header files
+ usually are.
+
+ This file provides prototype declarations for the math functions.
+ Most functions are declared using the macro:
+
+ __MATHCALL (NAME,[_r], (ARGS...));
+
+ This means there is a function `NAME' returning `double' and a function
+ `NAMEf' returning `float'. Each place `_Mdouble_' appears in the
+ prototype, that is actually `double' in the prototype for `NAME' and
+ `float' in the prototype for `NAMEf'. Reentrant variant functions are
+ called `NAME_r' and `NAMEf_r'.
+
+ Functions returning other types like `int' are declared using the macro:
+
+ __MATHDECL (TYPE, NAME,[_r], (ARGS...));
+
+ This is just like __MATHCALL but for a function returning `TYPE'
+ instead of `_Mdouble_'. In all of these cases, there is still
+ both a `NAME' and a `NAMEf' that takes `float' arguments. */
+
+#ifndef _MATH_H
+ #error "Never include mathcalls.h directly; include <math.h> instead."
+#endif
+
+
+/* Trigonometric functions. */
+
+/* Arc cosine of X. */
+__MATHCALL (acos,, (_Mdouble_ __x));
+/* Arc sine of X. */
+__MATHCALL (asin,, (_Mdouble_ __x));
+/* Arc tangent of X. */
+__MATHCALL (atan,, (_Mdouble_ __x));
+/* Arc tangent of Y/X. */
+__MATHCALL (atan2,, (_Mdouble_ __y, _Mdouble_ __x));
+
+/* Cosine of X. */
+__MATHCALL (cos,, (_Mdouble_ __x));
+/* Sine of X. */
+__MATHCALL (sin,, (_Mdouble_ __x));
+/* Tangent of X. */
+__MATHCALL (tan,, (_Mdouble_ __x));
+
+
+/* Hyperbolic functions. */
+
+/* Hyperbolic cosine of X. */
+__MATHCALL (cosh,, (_Mdouble_ __x));
+/* Hyperbolic sine of X. */
+__MATHCALL (sinh,, (_Mdouble_ __x));
+/* Hyperbolic tangent of X. */
+__MATHCALL (tanh,, (_Mdouble_ __x));
+
+#ifdef __USE_MISC
+/* Hyperbolic arc cosine of X. */
+__MATHCALL (acosh,, (_Mdouble_ __x));
+/* Hyperbolic arc sine of X. */
+__MATHCALL (asinh,, (_Mdouble_ __x));
+/* Hyperbolic arc tangent of X. */
+__MATHCALL (atanh,, (_Mdouble_ __x));
+#endif
+
+/* Exponential and logarithmic functions. */
+
+/* Exponentional function of X. */
+__MATHCALL (exp,, (_Mdouble_ __x));
+
+/* Break VALUE into a normalized fraction and an integral power of 2. */
+__MATHCALL (frexp,, (_Mdouble_ __value, int *__exp));
+
+/* X times (two to the EXP power). */
+__MATHCALL (ldexp,, (_Mdouble_ __x, int __exp));
+
+/* Natural logarithm of X. */
+__MATHCALL (log,, (_Mdouble_ __x));
+
+/* Base-ten logarithm of X. */
+__MATHCALL (log10,, (_Mdouble_ __x));
+
+#ifdef __USE_MISC
+/* Return exp(X) - 1. */
+__MATHCALL (expm1,, (_Mdouble_ __x));
+
+/* Return log(1 + X). */
+__MATHCALL (log1p,, (_Mdouble_ __x));
+#endif
+
+/* Break VALUE into integral and fractional parts. */
+__MATHCALL (modf,, (_Mdouble_ __value, _Mdouble_ *__iptr));
+
+
+/* Power functions. */
+
+/* Return X to the Y power. */
+__MATHCALL (pow,, (_Mdouble_ __x, _Mdouble_ __y));
+
+/* Return the square root of X. */
+__MATHCALL (sqrt,, (_Mdouble_ __x));
+
+#ifdef __USE_MISC
+/* Return the cube root of X. */
+__MATHCALL (cbrt,, (_Mdouble_ __x));
+#endif
+
+
+/* Nearest integer, absolute value, and remainder functions. */
+
+/* Smallest integral value not less than X. */
+__MATHCALL (ceil,, (_Mdouble_ __x));
+
+/* Absolute value of X. */
+__MATHCALL (fabs,, (_Mdouble_ __x));
+
+/* Largest integer not greater than X. */
+__MATHCALL (floor,, (_Mdouble_ __x));
+
+/* Floating-point modulo remainder of X/Y. */
+__MATHCALL (fmod,, (_Mdouble_ __x, _Mdouble_ __y));
+
+
+#ifdef __USE_MISC
+
+/* Return 0 if VALUE is finite or NaN, +1 if it
+ is +Infinity, -1 if it is -Infinity. */
+__MATHDECL (int, isinf,, (_Mdouble_ __value));
+
+/* Return nonzero if VALUE is not a number. */
+__MATHDECL (int, isnan,, (_Mdouble_ __value));
+
+/* Return nonzero if VALUE is finite and not NaN. */
+__MATHDECL (int, finite,, (_Mdouble_ __value));
+
+/* Deal with an infinite or NaN result.
+ If ERROR is ERANGE, result is +Inf;
+ if ERROR is - ERANGE, result is -Inf;
+ otherwise result is NaN.
+ This will set `errno' to either ERANGE or EDOM,
+ and may return an infinity or NaN, or may do something else. */
+__MATHCALL (infnan,, (int __error));
+
+/* Return X with its signed changed to Y's. */
+__MATHCALL (copysign,, (_Mdouble_ __x, _Mdouble_ __y));
+
+/* Return X times (2 to the Nth power). */
+__MATHCALL (scalb,, (_Mdouble_ __x, _Mdouble_ __n));
+
+/* Return X times (2 to the Nth power). */
+__MATHCALL (scalbn,, (_Mdouble_ __x, int __n));
+
+/* Return the remainder of X/Y. */
+__MATHCALL (drem,, (_Mdouble_ __x, _Mdouble_ __y));
+
+/* Return the base 2 signed integral exponent of X. */
+__MATHCALL (logb,, (_Mdouble_ __x));
+
+/* Return the integer nearest X in the direction of the
+ prevailing rounding mode. */
+__MATHCALL (rint,, (_Mdouble_ __x));
+
+/* Return `sqrt(X*X + Y*Y)'. */
+__MATHCALL (hypot,, (_Mdouble_ __x, _Mdouble_ __y));
+
+struct __MATH_PRECNAME(__cabs_complex,)
+{
+ _Mdouble_ x, y;
+};
+
+/* Return `sqrt(X*X + Y*Y)'. */
+__MATHCALL (cabs,, (struct __MATH_PRECNAME(__cabs_complex,)));
+
+
+/* Return X + epsilon if X < Y, X - epsilon if X > Y. */
+__MATHCALL (nextafter,, (_Mdouble_ __x, _Mdouble_ __y));
+
+/* Return the remainder of integer divison X / Y with infinite precision. */
+__MATHCALL (remainder,, (_Mdouble_ __x, _Mdouble_ __y));
+
+/* Return the binary exponent of X, which must be nonzero. */
+__MATHDECL (int, ilogb,, (_Mdouble_ __x));
+
+/* Return the fractional part of X after dividing out `ilogb (X)'. */
+__MATHCALL (significand,, (_Mdouble_ __x));
+
+
+
+/* Error, gamma, and Bessel functions. */
+__MATHCALL (erf,, (_Mdouble_));
+__MATHCALL (erfc,, (_Mdouble_));
+__MATHCALL (gamma,, (_Mdouble_));
+__MATHCALL (j0,, (_Mdouble_));
+__MATHCALL (j1,, (_Mdouble_));
+__MATHCALL (jn,, (int, _Mdouble_));
+__MATHCALL (lgamma,, (_Mdouble_));
+__MATHCALL (y0,, (_Mdouble_));
+__MATHCALL (y1,, (_Mdouble_));
+__MATHCALL (yn,, (int, _Mdouble_));
+
+/* This variable is used by `gamma' and `lgamma'. */
+extern int signgam;
+
+#ifdef __USE_REENTRANT
+
+/* Reentrant versions of gamma and lgamma. Those functions use the global
+ variable `signgam'. The reentrant versions instead take a pointer and
+ store the value through it. */
+__MATHCALL (gamma,_r, (_Mdouble_, int *));
+__MATHCALL (lgamma,_r, (_Mdouble_, int *));
+#endif
+
+#endif /* Use misc. */