home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / gnu / glibc-1.06 / math / math.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-05-14  |  9.8 KB  |  285 lines

  1. /* Copyright (C) 1991, 1992, 1993 Free Software Foundation, Inc.
  2. This file is part of the GNU C Library.
  3.  
  4. The GNU C Library is free software; you can redistribute it and/or
  5. modify it under the terms of the GNU Library General Public License as
  6. published by the Free Software Foundation; either version 2 of the
  7. License, or (at your option) any later version.
  8.  
  9. The GNU C Library is distributed in the hope that it will be useful,
  10. but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  12. Library General Public License for more details.
  13.  
  14. You should have received a copy of the GNU Library General Public
  15. License along with the GNU C Library; see the file COPYING.LIB.  If
  16. not, write to the, 1992 Free Software Foundation, Inc., 675 Mass Ave,
  17. Cambridge, MA 02139, USA.  */
  18.  
  19. /*
  20.  *    ANSI Standard: 4.5 MATHEMATICS    <math.h>
  21.  */
  22.  
  23. #ifndef    _MATH_H
  24.  
  25. #define    _MATH_H    1
  26. #include <features.h>
  27.  
  28. __BEGIN_DECLS
  29.  
  30. #define    __need_Emath
  31. #include <errno.h>
  32.  
  33. /* Get machine-dependent HUGE_VAL value (returned on overflow).  */
  34. #include <huge_val.h>
  35.  
  36. /* Get machine-dependent NAN value (returned for some domain errors).  */
  37. #ifdef     __USE_GNU
  38. #include <nan.h>
  39. #endif
  40.  
  41.  
  42. #ifndef    __CONSTVALUE
  43. #ifdef    __GNUC__
  44. /* The `const' keyword tells GCC that a function's return value is
  45.    based solely on its arguments, and there are no side-effects.  */
  46. #define    __CONSTVALUE    __const
  47. #else
  48. #define    __CONSTVALUE
  49. #endif /* GCC.  */
  50. #endif /* __CONSTVALUE not defined.  */
  51.  
  52.  
  53. /* Trigonometric functions.  */
  54.  
  55. /* Arc cosine of X.  */
  56. extern __CONSTVALUE double acos __P ((double __x));
  57. /* Arc sine of X.  */
  58. extern __CONSTVALUE double asin __P ((double __x));
  59. /* Arc tangent of X.  */
  60. extern __CONSTVALUE double atan __P ((double __x));
  61. /* Arc tangent of Y/X.  */
  62. extern __CONSTVALUE double atan2 __P ((double __y, double __x));
  63.  
  64. /* Cosine of X.  */
  65. extern __CONSTVALUE double cos __P ((double __x));
  66. /* Sine of X.  */
  67. extern __CONSTVALUE double sin __P ((double __x));
  68. /* Tangent of X.  */
  69. extern __CONSTVALUE double tan __P ((double __x));
  70.  
  71.  
  72. /* Hyperbolic functions.  */
  73.  
  74. /* Hyperbolic cosine of X.  */
  75. extern __CONSTVALUE double cosh __P ((double __x));
  76. /* Hyperbolic sine of X.  */
  77. extern __CONSTVALUE double sinh __P ((double __x));
  78. /* Hyperbolic tangent of X.  */
  79. extern __CONSTVALUE double tanh __P ((double __x));
  80.  
  81. #ifdef    __USE_MISC
  82. /* Hyperbolic arc cosine of X.  */
  83. extern __CONSTVALUE double acosh __P ((double __x));
  84. /* Hyperbolic arc sine of X.  */
  85. extern __CONSTVALUE double asinh __P ((double __x));
  86. /* Hyperbolic arc tangent of X.  */
  87. extern __CONSTVALUE double atanh __P ((double __x));
  88. #endif
  89.  
  90. /* Exponential and logarithmic functions.  */
  91.  
  92. /* Exponentional function of X.  */
  93. extern __CONSTVALUE double exp __P ((double __x));
  94.  
  95. /* Break VALUE into a normalized fraction and an integral power of 2.  */
  96. extern double frexp __P ((double __value, int *__exp));
  97.  
  98. /* X times (two to the EXP power).  */
  99. extern __CONSTVALUE double ldexp __P ((double __x, int __exp));
  100.  
  101. /* Natural logarithm of X.  */
  102. extern __CONSTVALUE double log __P ((double __x));
  103.  
  104. /* Base-ten logarithm of X.  */
  105. extern __CONSTVALUE double log10 __P ((double __x));
  106.  
  107. #ifdef    __USE_MISC
  108. /* Return exp(X) - 1.  */
  109. extern __CONSTVALUE double __expm1 __P ((double __x));
  110. extern __CONSTVALUE double expm1 __P ((double __x));
  111.  
  112. /* Return log(1 + X).  */
  113. extern __CONSTVALUE double log1p __P ((double __x));
  114. #endif
  115.  
  116. /* Break VALUE into integral and fractional parts.  */
  117. extern double modf __P ((double __value, double *__iptr));
  118.  
  119.  
  120. /* Power functions.  */
  121.  
  122. /* Return X to the Y power.  */
  123. extern __CONSTVALUE double pow __P ((double __x, double __y));
  124.  
  125. /* Return the square root of X.  */
  126. extern __CONSTVALUE double sqrt __P ((double __x));
  127.  
  128. #ifdef    __USE_MISC
  129. /* Return the cube root of X.  */
  130. extern __CONSTVALUE double cbrt __P ((double __x));
  131. #endif
  132.  
  133.  
  134. /* Nearest integer, absolute value, and remainder functions.  */
  135.  
  136. /* Smallest integral value not less than X.  */
  137. extern __CONSTVALUE double ceil __P ((double __x));
  138.  
  139. /* Absolute value of X.  */
  140. extern __CONSTVALUE double fabs __P ((double __x));
  141.  
  142. /* Largest integer not greater than X.  */
  143. extern __CONSTVALUE double floor __P ((double __x));
  144.  
  145. /* Floating-point modulo remainder of X/Y.  */
  146. extern __CONSTVALUE double fmod __P ((double __x, double __y));
  147.  
  148.  
  149. /* Return 0 if VALUE is finite or NaN, +1 if it
  150.    is +Infinity, -1 if it is -Infinity.  */
  151. extern __CONSTVALUE int __isinf __P ((double __value));
  152.  
  153. /* Return nonzero if VALUE is not a number.  */
  154. extern __CONSTVALUE int __isnan __P ((double __value));
  155.  
  156. /* Return nonzero if VALUE is finite and not NaN.  */
  157. extern __CONSTVALUE int __finite __P ((double __value));
  158. #ifdef    __OPTIMIZE__
  159. #define    __finite(value)    (!__isinf(value))
  160. #endif
  161.  
  162. /* Deal with an infinite or NaN result.
  163.    If ERROR is ERANGE, result is +Inf;
  164.    if ERROR is - ERANGE, result is -Inf;
  165.    otherwise result is NaN.
  166.    This will set `errno' to either ERANGE or EDOM,
  167.    and may return an infinity or NaN, or may do something else.  */
  168. extern double __infnan __P ((int __error));
  169.  
  170. /* Return X with its signed changed to Y's.  */
  171. extern __CONSTVALUE double __copysign __P ((double __x, double __y));
  172.  
  173. /* Return X times (2 to the Nth power).  */
  174. extern __CONSTVALUE double __scalb __P ((double __x, int __n));
  175.  
  176. #ifdef    __OPTIMIZE__
  177. #define    __scalb(x, n)    ldexp ((x), (n))
  178. #endif
  179.  
  180. /* Return the remainder of X/Y.  */
  181. extern __CONSTVALUE double __drem __P ((double __x, double __y));
  182.  
  183. /* Return the base 2 signed integral exponent of X.  */
  184. extern __CONSTVALUE double __logb __P ((double __x));
  185.  
  186. #ifdef    __USE_MISC
  187.  
  188. /* Return the integer nearest X in the direction of the
  189.    prevailing rounding mode.  */
  190. extern __CONSTVALUE double __rint __P ((double __x));
  191. extern __CONSTVALUE double rint __P ((double __x));
  192.  
  193. /* Return `sqrt(X*X + Y*Y)'.  */
  194. extern __CONSTVALUE double hypot __P ((double __x, double __y));
  195.  
  196. struct __cabs_complex
  197. {
  198.   double __x, __y;
  199. };
  200.  
  201. /* Return `sqrt(X*X + Y*Y)'.  */
  202. extern __CONSTVALUE double cabs __P ((struct __cabs_complex));
  203.  
  204. extern __CONSTVALUE int isinf __P ((double __value));
  205. extern __CONSTVALUE int isnan __P ((double __value));
  206. extern __CONSTVALUE int finite __P ((double __value));
  207. extern __CONSTVALUE double infnan __P ((int __error));
  208. extern __CONSTVALUE double copysign __P ((double __x, double __y));
  209. extern __CONSTVALUE double scalb __P ((double __x, int __n));
  210. extern __CONSTVALUE double drem __P ((double __x, double __y));
  211. extern __CONSTVALUE double logb __P ((double __x));
  212.  
  213. #ifdef    __OPTIMIZE__
  214. #define    isinf(value)    __isinf(value)
  215. #define    isnan(value)    __isnan(value)
  216. #define    infnan(error)    __infnan(error)
  217. #define    finite(value)    __finite(value)
  218. #define    copysign(x, y)    __copysign((x), (y))
  219. #define    scalb(x, n)    __scalb((x), (n))
  220. #define    drem(x, y)    __drem((x), (y))
  221. #define    logb(x)        __logb(x)
  222. #endif /* Optimizing.  */
  223.  
  224. #endif /* Use misc.  */
  225.  
  226.  
  227. #if 0
  228. /* The "Future Library Directions" section of the
  229.    ANSI Standard reserves these as `float' and
  230.    `long double' versions of the above functions.  */
  231.  
  232. extern __CONSTVALUE float acosf __P ((float __x));
  233. extern __CONSTVALUE float asinf __P ((float __x));
  234. extern __CONSTVALUE float atanf __P ((float __x));
  235. extern __CONSTVALUE float atan2f __P ((float __y, float __x));
  236. extern __CONSTVALUE float cosf __P ((float __x));
  237. extern __CONSTVALUE float sinf __P ((float __x));
  238. extern __CONSTVALUE float tanf __P ((float __x));
  239. extern __CONSTVALUE float coshf __P ((float __x));
  240. extern __CONSTVALUE float sinhf __P ((float __x));
  241. extern __CONSTVALUE float tanhf __P ((float __x));
  242. extern __CONSTVALUE float expf __P ((float __x));
  243. extern float frexpf __P ((float __value, int *__exp));
  244. extern __CONSTVALUE float ldexpf __P ((float __x, int __exp));
  245. extern __CONSTVALUE float logf __P ((float __x));
  246. extern __CONSTVALUE float log10f __P ((float __x));
  247. extern float modff __P ((float __value, float *__iptr));
  248. extern __CONSTVALUE float powf __P ((float __x, float __y));
  249. extern __CONSTVALUE float sqrtf __P ((float __x));
  250. extern __CONSTVALUE float ceilf __P ((float __x));
  251. extern __CONSTVALUE float fabsf __P ((float __x));
  252. extern __CONSTVALUE float floorf __P ((float __x));
  253. extern __CONSTVALUE float fmodf __P ((float __x, float __y));
  254.  
  255. extern __CONSTVALUE __long_double_t acosl __P ((__long_double_t __x));
  256. extern __CONSTVALUE __long_double_t asinl __P ((__long_double_t __x));
  257. extern __CONSTVALUE __long_double_t atanl __P ((__long_double_t __x));
  258. extern __CONSTVALUE __long_double_t atan2l __P ((__long_double_t __y, __long_double_t __x));
  259. extern __CONSTVALUE __long_double_t cosl __P ((__long_double_t __x));
  260. extern __CONSTVALUE __long_double_t sinl __P ((__long_double_t __x));
  261. extern __CONSTVALUE __long_double_t tanl __P ((__long_double_t __x));
  262. extern __CONSTVALUE __long_double_t coshl __P ((__long_double_t __x));
  263. extern __CONSTVALUE __long_double_t sinhl __P ((__long_double_t __x));
  264. extern __CONSTVALUE __long_double_t tanhl __P ((__long_double_t __x));
  265. extern __CONSTVALUE __long_double_t expl __P ((__long_double_t __x));
  266. extern __long_double_t frexpl __P ((__long_double_t __value, int *__exp));
  267. extern __CONSTVALUE __long_double_t ldexpl __P ((__long_double_t __x, int __exp));
  268. extern __CONSTVALUE __long_double_t logl __P ((__long_double_t __x));
  269. extern __CONSTVALUE __long_double_t log10l __P ((__long_double_t __x));
  270. extern __long_double_t modfl __P ((__long_double_t __value, __long_double_t * __ip));
  271. extern __CONSTVALUE __long_double_t powl __P ((__long_double_t __x, __long_double_t __y));
  272. extern __CONSTVALUE __long_double_t sqrtl __P ((__long_double_t __x));
  273. extern __CONSTVALUE __long_double_t ceill __P ((__long_double_t __x));
  274. extern __CONSTVALUE __long_double_t fabsl __P ((__long_double_t __x));
  275. extern __CONSTVALUE __long_double_t floorl __P ((__long_double_t __x));
  276. extern __CONSTVALUE __long_double_t fmodl __P ((__long_double_t __x, __long_double_t __y));
  277. #endif /* 0 */
  278.  
  279. /* Get machine-dependent inline versions (if there are any).  */
  280. #include <__math.h>
  281.  
  282. __END_DECLS
  283.  
  284. #endif /* math.h  */
  285.