xref: /inferno-os/include/mathi.h (revision 048b3b32a4beb538add2bbb2e9401a24d05e8db6)
1*37da2899SCharles.Forsyth /*
2*37da2899SCharles.Forsyth  * floating point control and status register masks
3*37da2899SCharles.Forsyth  */
4*37da2899SCharles.Forsyth enum
5*37da2899SCharles.Forsyth {
6*37da2899SCharles.Forsyth 	INVAL		= 0x0001,
7*37da2899SCharles.Forsyth 	ZDIV		= 0x0002,
8*37da2899SCharles.Forsyth 	OVFL		= 0x0004,
9*37da2899SCharles.Forsyth 	UNFL		= 0x0008,
10*37da2899SCharles.Forsyth 	INEX		= 0x0010,
11*37da2899SCharles.Forsyth 	RND_NR		= 0x0000,
12*37da2899SCharles.Forsyth 	RND_NINF	= 0x0100,
13*37da2899SCharles.Forsyth 	RND_PINF	= 0x0200,
14*37da2899SCharles.Forsyth 	RND_Z		= 0x0300,
15*37da2899SCharles.Forsyth 	RND_MASK	= 0x0300
16*37da2899SCharles.Forsyth };
17*37da2899SCharles.Forsyth 
18*37da2899SCharles.Forsyth extern	double	ipow10(int);
19*37da2899SCharles.Forsyth extern	void	FPinit(void);
20*37da2899SCharles.Forsyth extern	double	dot(int, double*, double*);
21*37da2899SCharles.Forsyth extern	ulong	FPcontrol(ulong, ulong);
22*37da2899SCharles.Forsyth extern	ulong	FPstatus(ulong, ulong);
23*37da2899SCharles.Forsyth extern	void	gemm(int, int, int, int, int, double,
24*37da2899SCharles.Forsyth 			double*, int, double*, int, double, double*, int);
25*37da2899SCharles.Forsyth extern	ulong	getFPstatus(void);
26*37da2899SCharles.Forsyth extern	ulong	getFPcontrol(void);
27*37da2899SCharles.Forsyth extern	char*	g_fmt(char *, double, int);
28*37da2899SCharles.Forsyth extern	int	iamax(int, double*);
29*37da2899SCharles.Forsyth extern	double	fdim(double, double);
30*37da2899SCharles.Forsyth extern	double	fmax(double, double);
31*37da2899SCharles.Forsyth extern	double	fmin(double, double);
32*37da2899SCharles.Forsyth extern	double	norm2(int, double*);
33*37da2899SCharles.Forsyth extern	double	norm1(int, double*);
34*37da2899SCharles.Forsyth extern	double	strtod(const char *, char **);
35*37da2899SCharles.Forsyth 
36*37da2899SCharles.Forsyth /* fdlibm */
37*37da2899SCharles.Forsyth extern double __ieee754_acos(double);
38*37da2899SCharles.Forsyth extern double __ieee754_acosh(double);
39*37da2899SCharles.Forsyth extern double __ieee754_asin(double);
40*37da2899SCharles.Forsyth extern double asinh(double);
41*37da2899SCharles.Forsyth extern double atan(double);
42*37da2899SCharles.Forsyth extern double __ieee754_atan2(double, double);
43*37da2899SCharles.Forsyth extern double __ieee754_atanh(double);
44*37da2899SCharles.Forsyth extern double cbrt(double);
45*37da2899SCharles.Forsyth extern double ceil(double);
46*37da2899SCharles.Forsyth extern double copysign(double, double);
47*37da2899SCharles.Forsyth extern double cos(double);
48*37da2899SCharles.Forsyth extern double __ieee754_cosh(double);
49*37da2899SCharles.Forsyth extern double erf(double);
50*37da2899SCharles.Forsyth extern double erfc(double);
51*37da2899SCharles.Forsyth extern double __ieee754_exp(double);
52*37da2899SCharles.Forsyth extern double expm1(double);
53*37da2899SCharles.Forsyth extern double fabs(double);
54*37da2899SCharles.Forsyth extern int finite(double);
55*37da2899SCharles.Forsyth extern double floor(double);
56*37da2899SCharles.Forsyth extern double __ieee754_fmod(double, double);
57*37da2899SCharles.Forsyth extern double __ieee754_hypot(double, double);
58*37da2899SCharles.Forsyth extern int ilogb(double);
59*37da2899SCharles.Forsyth extern double __ieee754_j0(double);
60*37da2899SCharles.Forsyth extern double __ieee754_j1(double);
61*37da2899SCharles.Forsyth extern double __ieee754_jn(int, double);
62*37da2899SCharles.Forsyth extern double __ieee754_lgamma_r(double,int*);
63*37da2899SCharles.Forsyth extern double __ieee754_log(double);
64*37da2899SCharles.Forsyth extern double __ieee754_log10(double);
65*37da2899SCharles.Forsyth extern double log1p(double);
66*37da2899SCharles.Forsyth extern double logb(double);
67*37da2899SCharles.Forsyth extern double modf(double, double *);
68*37da2899SCharles.Forsyth extern double nextafter(double, double);
69*37da2899SCharles.Forsyth extern double __ieee754_pow(double, double);
70*37da2899SCharles.Forsyth extern double __ieee754_remainder(double, double);
71*37da2899SCharles.Forsyth extern double rint(double);
72*37da2899SCharles.Forsyth extern double scalbn(double, int);
73*37da2899SCharles.Forsyth extern double sin(double);
74*37da2899SCharles.Forsyth extern double __ieee754_sinh(double);
75*37da2899SCharles.Forsyth extern double __ieee754_sqrt(double);
76*37da2899SCharles.Forsyth extern double tan(double);
77*37da2899SCharles.Forsyth extern double tanh(double);
78*37da2899SCharles.Forsyth extern double __ieee754_y0(double);
79*37da2899SCharles.Forsyth extern double __ieee754_y1(double);
80*37da2899SCharles.Forsyth extern double __ieee754_yn(int, double);
81