Subversion Repositories shark

Rev

Details | Last modification | View Log | RSS feed

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