OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [newlib-1.10.0/] [newlib/] [libc/] [include/] [math.h] - Blame information for rev 1773

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1005 ivang
/* 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
#endif /* ! defined (__STRICT_ANSI__) */
118
 
119
#if !defined(__STRICT_ANSI__) || defined(__cplusplus)
120
 
121
/* Single precision versions of ANSI functions.  */
122
 
123
extern float atanf _PARAMS((float));
124
extern float cosf _PARAMS((float));
125
extern float sinf _PARAMS((float));
126
extern float tanf _PARAMS((float));
127
extern float tanhf _PARAMS((float));
128
extern float frexpf _PARAMS((float, int *));
129
extern float modff _PARAMS((float, float *));
130
extern float ceilf _PARAMS((float));
131
extern float fabsf _PARAMS((float));
132
extern float floorf _PARAMS((float));
133
 
134
#ifndef _REENT_ONLY
135
extern float acosf _PARAMS((float));
136
extern float asinf _PARAMS((float));
137
extern float atan2f _PARAMS((float, float));
138
extern float coshf _PARAMS((float));
139
extern float sinhf _PARAMS((float));
140
extern float expf _PARAMS((float));
141
extern float ldexpf _PARAMS((float, int));
142
extern float logf _PARAMS((float));
143
extern float log10f _PARAMS((float));
144
extern float powf _PARAMS((float, float));
145
extern float sqrtf _PARAMS((float));
146
extern float fmodf _PARAMS((float, float));
147
#endif /* ! defined (_REENT_ONLY) */
148
 
149
#endif /* !defined(__STRICT_ANSI__) || defined(__cplusplus) */
150
 
151
#ifndef __STRICT_ANSI__
152
 
153
/* Other single precision functions.  */
154
 
155
extern float infinityf _PARAMS((void));
156
extern float nanf _PARAMS((void));
157
extern int isnanf _PARAMS((float));
158
extern int isinff _PARAMS((float));
159
extern int finitef _PARAMS((float));
160
extern float copysignf _PARAMS((float, float));
161
extern int ilogbf _PARAMS((float));
162
 
163
extern float asinhf _PARAMS((float));
164
extern float cbrtf _PARAMS((float));
165
extern float nextafterf _PARAMS((float, float));
166
extern float rintf _PARAMS((float));
167
extern float scalbnf _PARAMS((float, int));
168
extern float log1pf _PARAMS((float));
169
extern float expm1f _PARAMS((float));
170
 
171
#ifndef _REENT_ONLY
172
extern float acoshf _PARAMS((float));
173
extern float atanhf _PARAMS((float));
174
extern float remainderf _PARAMS((float, float));
175
extern float gammaf _PARAMS((float));
176
extern float gammaf_r _PARAMS((float, int *));
177
extern float lgammaf _PARAMS((float));
178
extern float lgammaf_r _PARAMS((float, int *));
179
extern float erff _PARAMS((float));
180
extern float erfcf _PARAMS((float));
181
extern float y0f _PARAMS((float));
182
extern float y1f _PARAMS((float));
183
extern float ynf _PARAMS((int, float));
184
extern float j0f _PARAMS((float));
185
extern float j1f _PARAMS((float));
186
extern float jnf _PARAMS((int, float));
187
#define log2f(x) (logf (x) / (float) M_LOG2_E)
188
extern float hypotf _PARAMS((float, float));
189
 
190
extern float cabsf();
191
extern float dremf _PARAMS((float, float));
192
 
193
#endif /* ! defined (_REENT_ONLY) */
194
 
195
/* The gamma functions use a global variable, signgam.  */
196
#ifndef _REENT_ONLY
197
#define signgam (*__signgam())
198
extern int *__signgam _PARAMS((void));
199
#endif /* ! defined (_REENT_ONLY) */
200
 
201
#define __signgam_r(ptr) ((ptr)->_new._reent._gamma_signgam)
202
 
203
/* The exception structure passed to the matherr routine.  */
204
 
205
#ifdef __cplusplus
206
struct __exception
207
#else
208
struct exception
209
#endif
210
{
211
  int type;
212
  char *name;
213
  double arg1;
214
  double arg2;
215
  double retval;
216
  int err;
217
};
218
 
219
#ifdef __cplusplus
220
extern int matherr _PARAMS((struct __exception *e));
221
#else
222
extern int matherr _PARAMS((struct exception *e));
223
#endif
224
 
225
/* Values for the type field of struct exception.  */
226
 
227
#define DOMAIN 1
228
#define SING 2
229
#define OVERFLOW 3
230
#define UNDERFLOW 4
231
#define TLOSS 5
232
#define PLOSS 6
233
 
234
/* Useful constants.  */
235
 
236
#define M_E             2.7182818284590452354
237
#define M_LOG2E         1.4426950408889634074
238
#define M_LOG10E        0.43429448190325182765
239
#define M_LN2           0.69314718055994530942
240
#define M_LN10          2.30258509299404568402
241
#define M_PI            3.14159265358979323846
242
#define M_TWOPI         (M_PI * 2.0)
243
#define M_PI_2          1.57079632679489661923
244
#define M_PI_4          0.78539816339744830962
245
#define M_3PI_4         2.3561944901923448370E0
246
#define M_SQRTPI        1.77245385090551602792981
247
#define M_1_PI          0.31830988618379067154
248
#define M_2_PI          0.63661977236758134308
249
#define M_2_SQRTPI      1.12837916709551257390
250
#define M_SQRT2         1.41421356237309504880
251
#define M_SQRT1_2       0.70710678118654752440
252
#define M_LN2LO         1.9082149292705877000E-10
253
#define M_LN2HI         6.9314718036912381649E-1
254
#define M_SQRT3         1.73205080756887719000
255
#define M_IVLN10        0.43429448190325182765 /* 1 / log(10) */
256
#define M_LOG2_E        0.693147180559945309417
257
#define M_INVLN2        1.4426950408889633870E0  /* 1 / log(2) */
258
 
259
/* Global control over fdlibm error handling.  */
260
 
261
enum __fdlibm_version
262
{
263
  __fdlibm_ieee = -1,
264
  __fdlibm_svid,
265
  __fdlibm_xopen,
266
  __fdlibm_posix
267
};
268
 
269
#define _LIB_VERSION_TYPE enum __fdlibm_version
270
#define _LIB_VERSION __fdlib_version
271
 
272
extern __IMPORT _CONST _LIB_VERSION_TYPE _LIB_VERSION;
273
 
274
#define _IEEE_  __fdlibm_ieee
275
#define _SVID_  __fdlibm_svid
276
#define _XOPEN_ __fdlibm_xopen
277
#define _POSIX_ __fdlibm_posix
278
 
279
#endif /* ! defined (__STRICT_ANSI__) */
280
 
281
#ifdef __FAST_MATH__
282
#include <machine/fastmath.h>
283
#endif
284
 
285
#ifdef __cplusplus
286
}
287
#endif
288
#endif /* _MATH_H_ */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.