home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 4 / DATAFILE_PDCD4.iso / unix / riscbsd / sources / src_tgz / src_tgz~ / src / include / math.h < prev    next >
C/C++ Source or Header  |  1995-10-13  |  8KB  |  275 lines

  1. /*    $NetBSD: math.h,v 1.10 1994/10/26 00:56:05 cgd Exp $    */
  2.  
  3. /*
  4.  * ====================================================
  5.  * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
  6.  *
  7.  * Developed at SunPro, a Sun Microsystems, Inc. business.
  8.  * Permission to use, copy, modify, and distribute this
  9.  * software is freely granted, provided that this notice 
  10.  * is preserved.
  11.  * ====================================================
  12.  */
  13.  
  14. /*
  15.  * @(#)fdlibm.h 5.1 93/09/24
  16.  */
  17.  
  18. #ifndef _MATH_H_
  19. #define _MATH_H_
  20.  
  21. /*
  22.  * ANSI/POSIX
  23.  */
  24. extern char __infinity[];
  25. #define HUGE_VAL    (*(double *) __infinity)
  26.  
  27. /*
  28.  * XOPEN/SVID
  29.  */
  30. #if !defined(_ANSI_SOURCE) && !defined(_POSIX_SOURCE)
  31. #define    M_E        2.7182818284590452354    /* e */
  32. #define    M_LOG2E        1.4426950408889634074    /* log 2e */
  33. #define    M_LOG10E    0.43429448190325182765    /* log 10e */
  34. #define    M_LN2        0.69314718055994530942    /* log e2 */
  35. #define    M_LN10        2.30258509299404568402    /* log e10 */
  36. #define    M_PI        3.14159265358979323846    /* pi */
  37. #define    M_PI_2        1.57079632679489661923    /* pi/2 */
  38. #define    M_PI_4        0.78539816339744830962    /* pi/4 */
  39. #define    M_1_PI        0.31830988618379067154    /* 1/pi */
  40. #define    M_2_PI        0.63661977236758134308    /* 2/pi */
  41. #define    M_2_SQRTPI    1.12837916709551257390    /* 2/sqrt(pi) */
  42. #define    M_SQRT2        1.41421356237309504880    /* sqrt(2) */
  43. #define    M_SQRT1_2    0.70710678118654752440    /* 1/sqrt(2) */
  44.  
  45. #define    MAXFLOAT    ((float)3.40282346638528860e+38)
  46. extern int signgam;
  47.  
  48. #if !defined(_XOPEN_SOURCE)
  49. enum fdversion {fdlibm_ieee = -1, fdlibm_svid, fdlibm_xopen, fdlibm_posix};
  50.  
  51. #define _LIB_VERSION_TYPE enum fdversion
  52. #define _LIB_VERSION _fdlib_version  
  53.  
  54. /* if global variable _LIB_VERSION is not desirable, one may 
  55.  * change the following to be a constant by: 
  56.  *    #define _LIB_VERSION_TYPE const enum version
  57.  * In that case, after one initializes the value _LIB_VERSION (see
  58.  * s_lib_version.c) during compile time, it cannot be modified
  59.  * in the middle of a program
  60.  */ 
  61. extern  _LIB_VERSION_TYPE  _LIB_VERSION;
  62.  
  63. #define _IEEE_  fdlibm_ieee
  64. #define _SVID_  fdlibm_svid
  65. #define _XOPEN_ fdlibm_xopen
  66. #define _POSIX_ fdlibm_posix
  67.  
  68. struct exception {
  69.     int type;
  70.     char *name;
  71.     double arg1;
  72.     double arg2;
  73.     double retval;
  74. };
  75.  
  76. #define    HUGE        MAXFLOAT
  77.  
  78. /* 
  79.  * set X_TLOSS = pi*2**52, which is possibly defined in <values.h>
  80.  * (one may replace the following line by "#include <values.h>")
  81.  */
  82.  
  83. #define X_TLOSS        1.41484755040568800000e+16 
  84.  
  85. #define    DOMAIN        1
  86. #define    SING        2
  87. #define    OVERFLOW    3
  88. #define    UNDERFLOW    4
  89. #define    TLOSS        5
  90. #define    PLOSS        6
  91.  
  92. #endif /* !_XOPEN_SOURCE */
  93. #endif /* !_ANSI_SOURCE && !_POSIX_SOURCE */
  94.  
  95.  
  96. #include <sys/cdefs.h>
  97. __BEGIN_DECLS
  98. /*
  99.  * ANSI/POSIX
  100.  */
  101. extern double acos __P((double));
  102. extern double asin __P((double));
  103. extern double atan __P((double));
  104. extern double atan2 __P((double, double));
  105. extern double cos __P((double));
  106. extern double sin __P((double));
  107. extern double tan __P((double));
  108.  
  109. extern double cosh __P((double));
  110. extern double sinh __P((double));
  111. extern double tanh __P((double));
  112.  
  113. extern double exp __P((double));
  114. extern double frexp __P((double, int *));
  115. extern double ldexp __P((double, int));
  116. extern double log __P((double));
  117. extern double log10 __P((double));
  118. extern double modf __P((double, double *));
  119.  
  120. extern double pow __P((double, double));
  121. extern double sqrt __P((double));
  122.  
  123. extern double ceil __P((double));
  124. extern double fabs __P((double));
  125. extern double floor __P((double));
  126. extern double fmod __P((double, double));
  127.  
  128. #if !defined(_ANSI_SOURCE) && !defined(_POSIX_SOURCE)
  129. extern double erf __P((double));
  130. extern double erfc __P((double));
  131. extern double gamma __P((double));
  132. extern double hypot __P((double, double));
  133. extern int isinf __P((double));
  134. extern int isnan __P((double));
  135. extern int finite __P((double));
  136. extern double j0 __P((double));
  137. extern double j1 __P((double));
  138. extern double jn __P((int, double));
  139. extern double lgamma __P((double));
  140. extern double y0 __P((double));
  141. extern double y1 __P((double));
  142. extern double yn __P((int, double));
  143.  
  144. #if !defined(_XOPEN_SOURCE)
  145. extern double acosh __P((double));
  146. extern double asinh __P((double));
  147. extern double atanh __P((double));
  148. extern double cbrt __P((double));
  149. extern double logb __P((double));
  150. extern double nextafter __P((double, double));
  151. extern double remainder __P((double, double));
  152. extern double scalb __P((double, double));
  153.  
  154. extern int matherr __P((struct exception *));
  155.  
  156. /*
  157.  * IEEE Test Vector
  158.  */
  159. extern double significand __P((double));
  160.  
  161. /*
  162.  * Functions callable from C, intended to support IEEE arithmetic.
  163.  */
  164. extern double copysign __P((double, double));
  165. extern int ilogb __P((double));
  166. extern double rint __P((double));
  167. extern double scalbn __P((double, int));
  168.  
  169. /*
  170.  * BSD math library entry points
  171.  */
  172. extern double cabs();
  173. extern double drem __P((double, double));
  174. extern double expm1 __P((double));
  175. extern double log1p __P((double));
  176.  
  177. /*
  178.  * Reentrant version of gamma & lgamma; passes signgam back by reference
  179.  * as the second argument; user must allocate space for signgam.
  180.  */
  181. #ifdef _REENTRANT
  182. extern double gamma_r __P((double, int *));
  183. extern double lgamma_r __P((double, int *));
  184. #endif /* _REENTRANT */
  185.  
  186.  
  187. /* float versions of ANSI/POSIX functions */
  188. extern float acosf __P((float));
  189. extern float asinf __P((float));
  190. extern float atanf __P((float));
  191. extern float atan2f __P((float, float));
  192. extern float cosf __P((float));
  193. extern float sinf __P((float));
  194. extern float tanf __P((float));
  195.  
  196. extern float coshf __P((float));
  197. extern float sinhf __P((float));
  198. extern float tanhf __P((float));
  199.  
  200. extern float expf __P((float));
  201. extern float frexpf __P((float, int *));
  202. extern float ldexpf __P((float, int));
  203. extern float logf __P((float));
  204. extern float log10f __P((float));
  205. extern float modff __P((float, float *));
  206.  
  207. extern float powf __P((float, float));
  208. extern float sqrtf __P((float));
  209.  
  210. extern float ceilf __P((float));
  211. extern float fabsf __P((float));
  212. extern float floorf __P((float));
  213. extern float fmodf __P((float, float));
  214.  
  215. extern float erff __P((float));
  216. extern float erfcf __P((float));
  217. extern float gammaf __P((float));
  218. extern float hypotf __P((float, float));
  219. extern int isnanf __P((float));
  220. extern int finitef __P((float));
  221. extern float j0f __P((float));
  222. extern float j1f __P((float));
  223. extern float jnf __P((int, float));
  224. extern float lgammaf __P((float));
  225. extern float y0f __P((float));
  226. extern float y1f __P((float));
  227. extern float ynf __P((int, float));
  228.  
  229. extern float acoshf __P((float));
  230. extern float asinhf __P((float));
  231. extern float atanhf __P((float));
  232. extern float cbrtf __P((float));
  233. extern float logbf __P((float));
  234. extern float nextafterf __P((float, float));
  235. extern float remainderf __P((float, float));
  236. extern float scalbf __P((float, float));
  237.  
  238. /*
  239.  * float version of IEEE Test Vector
  240.  */
  241. extern float significandf __P((float));
  242.  
  243. /*
  244.  * Float versions of functions callable from C, intended to support
  245.  * IEEE arithmetic.
  246.  */
  247. extern float copysignf __P((float, float));
  248. extern int ilogbf __P((float));
  249. extern float rintf __P((float));
  250. extern float scalbnf __P((float, int));
  251.  
  252. /*
  253.  * float versions of BSD math library entry points
  254.  */
  255. extern float cabsf ();
  256. extern float dremf __P((float, float));
  257. extern float expm1f __P((float));
  258. extern float log1pf __P((float));
  259.  
  260. /*
  261.  * Float versions of reentrant version of gamma & lgamma; passes
  262.  * signgam back by reference as the second argument; user must
  263.  * allocate space for signgam.
  264.  */
  265. #ifdef _REENTRANT
  266. extern float gammaf_r __P((float, int *));
  267. extern float lgammaf_r __P((float, int *));
  268. #endif    /* _REENTRANT */
  269.  
  270. #endif /* !_XOPEN_SOURCE */
  271. #endif /* !_ANSI_SOURCE && !_POSIX_SOURCE */
  272. __END_DECLS
  273.  
  274. #endif /* _MATH_H_ */
  275.