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

Click here to go back to the directory listing.
Click here to download this file.
last modified: 2001-01-31 15:09:06