math.h
上传用户:poi891205
上传日期:2013-07-15
资源大小:9745k
文件大小:8k
源码类别:

DVD

开发平台:

C/C++

  1. /* math.h -- Definitions for the math floating point package.  */
  2. #ifndef  _MATH_H_
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. #define  _MATH_H_
  7. #include <sys/reent.h>
  8. #include <machine/ieeefp.h>
  9. #include "_ansi.h"
  10. #ifndef HUGE_VAL
  11. /* Define HUGE_VAL as infinity, unless HUGE_VAL is already defined
  12.    (which might have been done by something like math-68881.h).  */
  13. union __dmath
  14. {
  15.   __uint32_t i[2];
  16.   double d;
  17. };
  18. extern const union __dmath __infinity;
  19. #define HUGE_VAL (__infinity.d)
  20. #endif /* ! defined (HUGE_VAL) */
  21. /* Reentrant ANSI C functions.  */
  22. #ifndef __math_68881
  23. extern double atan _PARAMS((double));
  24. extern double cos _PARAMS((double));
  25. extern double sin _PARAMS((double));
  26. extern double tan _PARAMS((double));
  27. extern double tanh _PARAMS((double));
  28. extern double frexp _PARAMS((double, int *));
  29. extern double modf _PARAMS((double, double *));
  30. extern double ceil _PARAMS((double));
  31. extern double fabs _PARAMS((double));
  32. extern double floor _PARAMS((double));
  33. #endif /* ! defined (__math_68881) */
  34. /* Non reentrant ANSI C functions.  */
  35. #ifndef _REENT_ONLY
  36. #ifndef __math_6881
  37. extern double acos _PARAMS((double));
  38. extern double asin _PARAMS((double));
  39. extern double atan2 _PARAMS((double, double));
  40. extern double cosh _PARAMS((double));
  41. extern double sinh _PARAMS((double));
  42. extern double exp _PARAMS((double));
  43. extern double ldexp _PARAMS((double, int));
  44. extern double log _PARAMS((double));
  45. extern double log10 _PARAMS((double));
  46. extern double pow _PARAMS((double, double));
  47. extern double sqrt _PARAMS((double));
  48. extern double fmod _PARAMS((double, double));
  49. #endif /* ! defined (__math_68881) */
  50. #endif /* ! defined (_REENT_ONLY) */
  51. #ifndef _STRICT_ANSI
  52. /* Non ANSI double precision functions.  */
  53. extern double infinity _PARAMS((void));
  54. extern double nan _PARAMS((void));
  55. extern int isnan _PARAMS((double));
  56. extern int isinf _PARAMS((double));
  57. extern int finite _PARAMS((double));
  58. extern double copysign _PARAMS((double, double));
  59. extern int ilogb _PARAMS((double));
  60. extern double asinh _PARAMS((double));
  61. extern double cbrt _PARAMS((double));
  62. extern double nextafter _PARAMS((double, double));
  63. extern double rint _PARAMS((double));
  64. extern double scalbn _PARAMS((double, int));
  65. #ifndef __math_68881
  66. extern double log1p _PARAMS((double));
  67. extern double expm1 _PARAMS((double));
  68. #endif /* ! defined (__math_68881) */
  69. #ifndef _REENT_ONLY
  70. extern double acosh _PARAMS((double));
  71. extern double atanh _PARAMS((double));
  72. extern double remainder _PARAMS((double, double));
  73. extern double gamma _PARAMS((double));
  74. extern double gamma_r _PARAMS((double, int *));
  75. extern double lgamma _PARAMS((double));
  76. extern double lgamma_r _PARAMS((double, int *));
  77. extern double erf _PARAMS((double));
  78. extern double erfc _PARAMS((double));
  79. extern double y0 _PARAMS((double));
  80. extern double y1 _PARAMS((double));
  81. extern double yn _PARAMS((int, double));
  82. extern double j0 _PARAMS((double));
  83. extern double j1 _PARAMS((double));
  84. extern double jn _PARAMS((int, double));
  85. #define log2(x) (log (x) / M_LOG2_E)
  86. #ifndef __math_68881
  87. extern double hypot _PARAMS((double, double));
  88. #endif
  89. extern double cabs();
  90. extern double drem _PARAMS((double, double));
  91. #endif /* ! defined (_REENT_ONLY) */
  92. /* Single precision versions of ANSI functions.  */
  93. extern float atanf _PARAMS((float));
  94. extern float cosf _PARAMS((float));
  95. extern float sinf _PARAMS((float));
  96. extern float tanf _PARAMS((float));
  97. extern float tanhf _PARAMS((float));
  98. extern float frexpf _PARAMS((float, int *));
  99. extern float modff _PARAMS((float, float *));
  100. extern float ceilf _PARAMS((float));
  101. extern float fabsf _PARAMS((float));
  102. extern float floorf _PARAMS((float));
  103. #ifndef _REENT_ONLY
  104. extern float acosf _PARAMS((float));
  105. extern float asinf _PARAMS((float));
  106. extern float atan2f _PARAMS((float, float));
  107. extern float coshf _PARAMS((float));
  108. extern float sinhf _PARAMS((float));
  109. extern float expf _PARAMS((float));
  110. extern float ldexpf _PARAMS((float, int));
  111. extern float logf _PARAMS((float));
  112. extern float log10f _PARAMS((float));
  113. extern float powf _PARAMS((float, float));
  114. extern float sqrtf _PARAMS((float));
  115. extern float fmodf _PARAMS((float, float));
  116. #endif /* ! defined (_REENT_ONLY) */
  117. /* Other single precision functions.  */
  118. extern float infinityf _PARAMS((void));
  119. extern float nanf _PARAMS((void));
  120. extern int isnanf _PARAMS((float));
  121. extern int isinff _PARAMS((float));
  122. extern int finitef _PARAMS((float));
  123. extern float copysignf _PARAMS((float, float));
  124. extern int ilogbf _PARAMS((float));
  125. extern float asinhf _PARAMS((float));
  126. extern float cbrtf _PARAMS((float));
  127. extern float nextafterf _PARAMS((float, float));
  128. extern float rintf _PARAMS((float));
  129. extern float scalbnf _PARAMS((float, int));
  130. extern float log1pf _PARAMS((float));
  131. extern float expm1f _PARAMS((float));
  132. #ifndef _REENT_ONLY
  133. extern float acoshf _PARAMS((float));
  134. extern float atanhf _PARAMS((float));
  135. extern float remainderf _PARAMS((float, float));
  136. extern float gammaf _PARAMS((float));
  137. extern float gammaf_r _PARAMS((float, int *));
  138. extern float lgammaf _PARAMS((float));
  139. extern float lgammaf_r _PARAMS((float, int *));
  140. extern float erff _PARAMS((float));
  141. extern float erfcf _PARAMS((float));
  142. extern float y0f _PARAMS((float));
  143. extern float y1f _PARAMS((float));
  144. extern float ynf _PARAMS((int, float));
  145. extern float j0f _PARAMS((float));
  146. extern float j1f _PARAMS((float));
  147. extern float jnf _PARAMS((int, float));
  148. #define log2f(x) (logf (x) / (float) M_LOG2_E)
  149. extern float hypotf _PARAMS((float, float));
  150. extern float cabsf();
  151. extern float dremf _PARAMS((float, float));
  152. #endif /* ! defined (_REENT_ONLY) */
  153. /* The gamma functions use a global variable, signgam.  */
  154. extern int signgam;
  155. /* The exception structure passed to the matherr routine.  */
  156. #ifdef __cplusplus
  157. struct __exception 
  158. #else
  159. struct exception 
  160. #endif
  161. {
  162.   int type;
  163.   char *name;
  164.   double arg1;
  165.   double arg2;
  166.   double retval;
  167.   int err;
  168. };
  169. #ifdef __cplusplus
  170. extern int matherr _PARAMS((struct __exception *e));
  171. #else
  172. extern int matherr _PARAMS((struct exception *e));
  173. #endif
  174. /* Values for the type field of struct exception.  */
  175. #define DOMAIN 1
  176. #define SING 2
  177. #define OVERFLOW 3
  178. #define UNDERFLOW 4
  179. #define TLOSS 5
  180. #define PLOSS 6
  181. /* Useful constants.  */
  182. #define M_E 2.7182818284590452354
  183. #define M_LOG2E 1.4426950408889634074
  184. #define M_LOG10E 0.43429448190325182765
  185. #define M_LN2 0.69314718055994530942
  186. #define M_LN10 2.30258509299404568402
  187. #define M_PI 3.14159265358979323846
  188. #define M_TWOPI         (M_PI * 2.0)
  189. #define M_PI_2 1.57079632679489661923
  190. #define M_PI_4 0.78539816339744830962
  191. #define M_3PI_4 2.3561944901923448370E0
  192. #define M_SQRTPI        1.77245385090551602792981
  193. #define M_1_PI 0.31830988618379067154
  194. #define M_2_PI 0.63661977236758134308
  195. #define M_2_SQRTPI 1.12837916709551257390
  196. #define M_SQRT2 1.41421356237309504880
  197. #define M_SQRT1_2 0.70710678118654752440
  198. #define M_LN2LO         1.9082149292705877000E-10
  199. #define M_LN2HI         6.9314718036912381649E-1
  200. #define M_SQRT3    1.73205080756887719000
  201. #define M_IVLN10        0.43429448190325182765 /* 1 / log(10) */
  202. #define M_LOG2_E        0.693147180559945309417
  203. #define M_INVLN2        1.4426950408889633870E0  /* 1 / log(2) */
  204. /* Global control over fdlibm error handling.  */
  205. enum __fdlibm_version
  206. {
  207.   __fdlibm_ieee = -1,
  208.   __fdlibm_svid,
  209.   __fdlibm_xopen,
  210.   __fdlibm_posix
  211. };
  212. #define _LIB_VERSION_TYPE enum __fdlibm_version
  213. #define _LIB_VERSION __fdlib_version
  214. extern _LIB_VERSION_TYPE _LIB_VERSION;
  215. #define _IEEE_  __fdlibm_ieee
  216. #define _SVID_  __fdlibm_svid
  217. #define _XOPEN_ __fdlibm_xopen
  218. #define _POSIX_ __fdlibm_posix
  219. #endif /* ! defined (_STRICT_ANSI) */
  220. #ifdef __cplusplus
  221. }
  222. #endif
  223. #endif /* _MATH_H_ */