minix/include/math.h
Kees van Reeuwijk a34d34bc1f Add a set of declarations to math.h. Since we don't actually have
implementations for these functions, we lean on GNU builtin functions
for using them, so these declarations are also conditional on using
a GNU compiler.
2010-03-09 22:05:20 +00:00

102 lines
3.7 KiB
C

/* The <math.h> header contains prototypes for mathematical functions. */
#ifndef _MATH_H
#define _MATH_H
#ifndef _ANSI_H
#include <ansi.h>
#endif
#define INFINITY (__infinity())
#define NAN (__qnan())
#define HUGE_VAL INFINITY
/* Function Prototypes. */
_PROTOTYPE( double __infinity, (void) );
_PROTOTYPE( double __qnan, (void) );
_PROTOTYPE( double acos, (double _x) );
_PROTOTYPE( double asin, (double _x) );
_PROTOTYPE( double atan, (double _x) );
_PROTOTYPE( double atan2, (double _y, double _x) );
_PROTOTYPE( double ceil, (double _x) );
_PROTOTYPE( double cos, (double _x) );
_PROTOTYPE( double cosh, (double _x) );
_PROTOTYPE( double exp, (double _x) );
_PROTOTYPE( double fabs, (double _x) );
_PROTOTYPE( float fabsf, (float _x) );
_PROTOTYPE( double floor, (double _x) );
_PROTOTYPE( double fmod, (double _x, double _y) );
_PROTOTYPE( double frexp, (double _x, int *_exp) );
_PROTOTYPE( double ldexp, (double _x, int _exp) );
_PROTOTYPE( double log, (double _x) );
_PROTOTYPE( double log10, (double _x) );
_PROTOTYPE( double modf, (double _x, double *_iptr) );
_PROTOTYPE( double pow, (double _x, double _y) );
_PROTOTYPE( double rint, (double _x) );
_PROTOTYPE( double scalbn, (double _x, int _exp) );
_PROTOTYPE( float scalbnf, (float _x, int _exp) );
_PROTOTYPE( double scalbln, (double _x, long _exp) );
_PROTOTYPE( float scalblnf, (float _x, long _exp) );
_PROTOTYPE( double sin, (double _x) );
_PROTOTYPE( double sinh, (double _x) );
_PROTOTYPE( double sqrt, (double _x) );
_PROTOTYPE( double tan, (double _x) );
_PROTOTYPE( double tanh, (double _x) );
_PROTOTYPE( double hypot, (double _x, double _y) );
#ifdef _POSIX_SOURCE /* STD-C? */
#include <mathconst.h>
#define FP_INFINITE 1
#define FP_NAN 2
#define FP_NORMAL 3
#define FP_SUBNORMAL 4
#define FP_ZERO 5
_PROTOTYPE( int fpclassify, (double x) );
_PROTOTYPE( int isfinite, (double x) );
_PROTOTYPE( int isinf, (double x) );
_PROTOTYPE( int isnan, (double x) );
_PROTOTYPE( int isnormal, (double x) );
_PROTOTYPE( int signbit, (double x) );
_PROTOTYPE( int isgreater, (double x, double y) );
_PROTOTYPE( int isgreaterequal, (double x, double y) );
_PROTOTYPE( int isless, (double x, double y) );
_PROTOTYPE( int islessequal, (double x, double y) );
_PROTOTYPE( int islessgreater, (double x, double y) );
_PROTOTYPE( int isunordered, (double x, double y) );
_PROTOTYPE( double nearbyint, (double x) );
_PROTOTYPE( double remainder, (double x, double y) );
_PROTOTYPE( double trunc, (double x) );
#endif
/* The following definitions are not implemented in the ACK math lib.
* We allow them in the GNU compiler because they are builtins there.
*/
#ifdef __GNUC__
_PROTOTYPE( float powf, (float, float) );
_PROTOTYPE( float fmodf, (float, float) );
_PROTOTYPE( double erf, (double) );
_PROTOTYPE( double erfc, (double) );
_PROTOTYPE( double gamma, (double) );
_PROTOTYPE( double j0, (double) );
_PROTOTYPE( double j1, (double) );
_PROTOTYPE( double jn, (int, double) );
_PROTOTYPE( double lgamma, (double) );
_PROTOTYPE( double y0, (double) );
_PROTOTYPE( double y1, (double) );
_PROTOTYPE( double yn, (int, double) );
_PROTOTYPE( double acosh, (double) );
_PROTOTYPE( double asinh, (double) );
_PROTOTYPE( double atanh, (double) );
_PROTOTYPE( double cbrt, (double) );
_PROTOTYPE( double expm1, (double) );
_PROTOTYPE( int ilogb, (double) );
_PROTOTYPE( double log1p, (double) );
_PROTOTYPE( double logb, (double) );
_PROTOTYPE( double nextafter, (double, double) );
_PROTOTYPE( double scalb, (double, double) );
#endif
#endif /* _MATH_H */