xref: /plan9-contrib/riscv/include/ape/float.h (revision ce95e1b3727b9cb1c223ffbed69aff21a8ced255)
1*ce95e1b3SDavid du Colombier #ifndef __FLOAT
2*ce95e1b3SDavid du Colombier #define __FLOAT
3*ce95e1b3SDavid du Colombier /* IEEE, default rounding */
4*ce95e1b3SDavid du Colombier 
5*ce95e1b3SDavid du Colombier #define FLT_ROUNDS	1
6*ce95e1b3SDavid du Colombier #define FLT_RADIX	2
7*ce95e1b3SDavid du Colombier 
8*ce95e1b3SDavid du Colombier #define FLT_DIG		6
9*ce95e1b3SDavid du Colombier #define FLT_EPSILON	1.19209290e-07
10*ce95e1b3SDavid du Colombier #define FLT_MANT_DIG	24
11*ce95e1b3SDavid du Colombier #define FLT_MAX		3.40282347e+38
12*ce95e1b3SDavid du Colombier #define FLT_MAX_10_EXP	38
13*ce95e1b3SDavid du Colombier #define FLT_MAX_EXP	128
14*ce95e1b3SDavid du Colombier #define FLT_MIN		1.17549435e-38
15*ce95e1b3SDavid du Colombier #define FLT_MIN_10_EXP	-37
16*ce95e1b3SDavid du Colombier #define FLT_MIN_EXP	-125
17*ce95e1b3SDavid du Colombier 
18*ce95e1b3SDavid du Colombier #define DBL_DIG		15
19*ce95e1b3SDavid du Colombier #define DBL_EPSILON	2.2204460492503131e-16
20*ce95e1b3SDavid du Colombier #define DBL_MANT_DIG	53
21*ce95e1b3SDavid du Colombier #define DBL_MAX		1.797693134862315708145e+308
22*ce95e1b3SDavid du Colombier #define DBL_MAX_10_EXP	308
23*ce95e1b3SDavid du Colombier #define DBL_MAX_EXP	1024
24*ce95e1b3SDavid du Colombier #define DBL_MIN		2.225073858507201383090233e-308
25*ce95e1b3SDavid du Colombier #define DBL_MIN_10_EXP	-307
26*ce95e1b3SDavid du Colombier #define DBL_MIN_EXP	-1021
27*ce95e1b3SDavid du Colombier #define LDBL_MANT_DIG	DBL_MANT_DIG
28*ce95e1b3SDavid du Colombier #define LDBL_EPSILON	DBL_EPSILON
29*ce95e1b3SDavid du Colombier #define LDBL_DIG	DBL_DIG
30*ce95e1b3SDavid du Colombier #define LDBL_MIN_EXP	DBL_MIN_EXP
31*ce95e1b3SDavid du Colombier #define LDBL_MIN	DBL_MIN
32*ce95e1b3SDavid du Colombier #define LDBL_MIN_10_EXP	DBL_MIN_10_EXP
33*ce95e1b3SDavid du Colombier #define LDBL_MAX_EXP	DBL_MAX_EXP
34*ce95e1b3SDavid du Colombier #define LDBL_MAX	DBL_MAX
35*ce95e1b3SDavid du Colombier #define LDBL_MAX_10_EXP	DBL_MAX_10_EXP
36*ce95e1b3SDavid du Colombier 
37*ce95e1b3SDavid du Colombier typedef 	union FPdbleword FPdbleword;
38*ce95e1b3SDavid du Colombier union FPdbleword
39*ce95e1b3SDavid du Colombier {
40*ce95e1b3SDavid du Colombier 	double	x;
41*ce95e1b3SDavid du Colombier 	struct {	/* big endian */
42*ce95e1b3SDavid du Colombier 		long lo;
43*ce95e1b3SDavid du Colombier 		long hi;
44*ce95e1b3SDavid du Colombier 	};
45*ce95e1b3SDavid du Colombier };
46*ce95e1b3SDavid du Colombier 
47*ce95e1b3SDavid du Colombier #ifdef _RESEARCH_SOURCE
48*ce95e1b3SDavid du Colombier /* define stuff needed for floating conversion */
49*ce95e1b3SDavid du Colombier #define IEEE_8087	1
50*ce95e1b3SDavid du Colombier #define Sudden_Underflow 1
51*ce95e1b3SDavid du Colombier #endif
52*ce95e1b3SDavid du Colombier #ifdef _PLAN9_SOURCE
53*ce95e1b3SDavid du Colombier /* FCR */
54*ce95e1b3SDavid du Colombier #define	FPINEX	0
55*ce95e1b3SDavid du Colombier #define	FPUNFL	0
56*ce95e1b3SDavid du Colombier #define	FPOVFL	0
57*ce95e1b3SDavid du Colombier #define	FPZDIV	0
58*ce95e1b3SDavid du Colombier #define	FPINVAL	0
59*ce95e1b3SDavid du Colombier #define	FPRNR	(0<<5)
60*ce95e1b3SDavid du Colombier #define	FPRZ	(1<<5)
61*ce95e1b3SDavid du Colombier #define	FPRPINF	(3<<5)
62*ce95e1b3SDavid du Colombier #define	FPRNINF	(2<<5)
63*ce95e1b3SDavid du Colombier #define	FPRMASK	(15<<5)
64*ce95e1b3SDavid du Colombier #define	FPPEXT	0
65*ce95e1b3SDavid du Colombier #define	FPPSGL	0
66*ce95e1b3SDavid du Colombier #define	FPPDBL	0
67*ce95e1b3SDavid du Colombier #define	FPPMASK	0
68*ce95e1b3SDavid du Colombier /* FSR */
69*ce95e1b3SDavid du Colombier #define	FPAINEX	(1<<0)
70*ce95e1b3SDavid du Colombier #define	FPAOVFL	(1<<2)
71*ce95e1b3SDavid du Colombier #define	FPAUNFL	(1<<1)
72*ce95e1b3SDavid du Colombier #define	FPAZDIV	(1<<3)
73*ce95e1b3SDavid du Colombier #define	FPAINVAL	(1<<4)
74*ce95e1b3SDavid du Colombier #endif
75*ce95e1b3SDavid du Colombier #endif /* __FLOAT */
76