xref: /minix3/include/math.h (revision 58a2b0008e28f606a7f7f5faaeaba4faac57a1ea)
1 /* The <math.h> header contains prototypes for mathematical functions. */
2 
3 #ifndef _MATH_H
4 #define _MATH_H
5 
6 #ifndef _MINIX_ANSI_H
7 #include <minix/ansi.h>
8 #endif
9 
10 #define INFINITY	(__infinity())
11 #define NAN		(__qnan())
12 #define HUGE_VAL	INFINITY
13 
14 /* Function Prototypes. */
15 _PROTOTYPE( double __infinity,	(void)					);
16 _PROTOTYPE( double __qnan,	(void)					);
17 
18 _PROTOTYPE( double acos,  (double _x)					);
19 _PROTOTYPE( double asin,  (double _x)					);
20 _PROTOTYPE( double atan,  (double _x)					);
21 _PROTOTYPE( double atan2, (double _y, double _x)			);
22 _PROTOTYPE( double ceil,  (double _x)					);
23 _PROTOTYPE( double cos,   (double _x)					);
24 _PROTOTYPE( double cosh,  (double _x)					);
25 _PROTOTYPE( double exp,   (double _x)					);
26 _PROTOTYPE( double fabs,  (double _x)					);
27 _PROTOTYPE( float fabsf, (float _x)					);
28 _PROTOTYPE( double floor, (double _x)					);
29 _PROTOTYPE( double fmod,  (double _x, double _y)			);
30 _PROTOTYPE( double frexp, (double _x, int *_exp)			);
31 _PROTOTYPE( double ldexp, (double _x, int _exp)				);
32 _PROTOTYPE( double log,   (double _x)					);
33 _PROTOTYPE( double log10, (double _x)					);
34 _PROTOTYPE( double modf,  (double _x, double *_iptr)			);
35 _PROTOTYPE( double pow,   (double _x, double _y)			);
36 _PROTOTYPE( double rint,  (double _x)					);
37 _PROTOTYPE( double scalbn, (double _x, int _exp)			);
38 _PROTOTYPE( float scalbnf, (float _x, int _exp)				);
39 _PROTOTYPE( double scalbln, (double _x, long _exp)			);
40 _PROTOTYPE( float scalblnf, (float _x, long _exp)			);
41 _PROTOTYPE( double sin,   (double _x)					);
42 _PROTOTYPE( double sinh,  (double _x)					);
43 _PROTOTYPE( double sqrt,  (double _x)					);
44 _PROTOTYPE( double tan,   (double _x)					);
45 _PROTOTYPE( double tanh,  (double _x)					);
46 _PROTOTYPE( double hypot, (double _x, double _y)			);
47 
48 #ifdef _POSIX_SOURCE	/* STD-C? */
49 #include <mathconst.h>
50 
51 #define FP_INFINITE  1
52 #define FP_NAN       2
53 #define FP_NORMAL    3
54 #define FP_SUBNORMAL 4
55 #define FP_ZERO      5
56 
57 _PROTOTYPE( int fpclassify,     (double x)				);
58 _PROTOTYPE( int isfinite,       (double x)				);
59 _PROTOTYPE( int isinf,          (double x)				);
60 _PROTOTYPE( int isnan,          (double x)				);
61 _PROTOTYPE( int isnormal,       (double x)				);
62 _PROTOTYPE( int signbit,        (double x)				);
63 _PROTOTYPE( int isgreater,      (double x, double y)	);
64 _PROTOTYPE( int isgreaterequal, (double x, double y)	);
65 _PROTOTYPE( int isless,         (double x, double y)	);
66 _PROTOTYPE( int islessequal,    (double x, double y)	);
67 _PROTOTYPE( int islessgreater,  (double x, double y)	);
68 _PROTOTYPE( int isunordered,    (double x, double y)	);
69 _PROTOTYPE( double nearbyint,   (double x)		);
70 _PROTOTYPE( double remainder,   (double x, double y)	);
71 _PROTOTYPE( double trunc,       (double x)		);
72 #endif
73 
74 /* The following definitions are not implemented in the ACK math lib.
75  * We allow them in the GNU compiler because they are builtins there.
76  */
77 #ifdef __GNUC__
78 #ifndef __cplusplus
79 _PROTOTYPE( float powf,		(float, float)		);
80 _PROTOTYPE( float fmodf,	(float, float)		);
81 _PROTOTYPE( double erf,		(double)		);
82 _PROTOTYPE( double erfc,	(double)		);
83 _PROTOTYPE( double gamma,	(double)		);
84 _PROTOTYPE( double j0,		(double)		);
85 _PROTOTYPE( double j1,		(double)		);
86 _PROTOTYPE( double jn,		(int, double)		);
87 _PROTOTYPE( double lgamma,	(double)		);
88 _PROTOTYPE( double y0,		(double)		);
89 _PROTOTYPE( double y1,		(double)		);
90 _PROTOTYPE( double yn,		(int, double)		);
91 _PROTOTYPE( double acosh,	(double)		);
92 _PROTOTYPE( double asinh,	(double)		);
93 _PROTOTYPE( double atanh,	(double)		);
94 _PROTOTYPE( double cbrt,	(double)		);
95 _PROTOTYPE( double expm1,	(double)		);
96 _PROTOTYPE( int    ilogb,	(double)		);
97 _PROTOTYPE( double log1p,	(double)		);
98 _PROTOTYPE( double logb,	(double)		);
99 _PROTOTYPE( double nextafter,	(double, double)	);
100 _PROTOTYPE( double scalb,	(double, double)	);
101 #endif
102 #endif
103 
104 #endif /* _MATH_H */
105