Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
alexbevi
GitHub Repository: alexbevi/BizHawk
Path: blob/master/waterbox/libc/internals/_PDCLIB_float.h
2 views
1
/* PDCLib internal floating point logic <_PDCLIB_float.h>
2
3
This file is part of the Public Domain C Library (PDCLib).
4
Permission is granted to use, modify, and / or redistribute at will.
5
*/
6
7
#ifndef __PDCLIB_PDCLIB_FLOAT_H
8
#define __PDCLIB_PDCLIB_FLOAT_H __PDCLIB_PDCLIB_FLOAT_H
9
10
#include "_PDCLIB_aux.h"
11
12
/* IEEE 754 single precision */
13
#define _PDCLIB_FP_SINGLE_MIN 1.17549435082228750797e-38
14
#define _PDCLIB_FP_SINGLE_EPSILON 1.19209289550781250000e-7
15
#define _PDCLIB_FP_SINGLE_HAS_DENORM 1
16
#define _PDCLIB_FP_SINGLE_MIN_EXP -125
17
#define _PDCLIB_FP_SINGLE_MANT_DIG 24
18
#define _PDCLIB_FP_SINGLE_RADIX 2
19
#define _PDCLIB_FP_SINGLE_HAS_QUIET_NAN 1
20
#define _PDCLIB_FP_SINGLE_MAX_10_EXP 38
21
#define _PDCLIB_FP_SINGLE_HAS_INFINITY 1
22
#define _PDCLIB_FP_SINGLE_DIG 6
23
#define _PDCLIB_FP_SINGLE_MAX_EXP 128
24
#define _PDCLIB_FP_SINGLE_DENORM_MIN 1.40129846432481707092e-45
25
#define _PDCLIB_FP_SINGLE_MAX 3.40282346638528859812e+38
26
#define _PDCLIB_FP_SINGLE_MIN_10_EXP -37
27
28
/* IEEE 754 double precision */
29
#define _PDCLIB_FP_DOUBLE_MIN_EXP -1021
30
#define _PDCLIB_FP_DOUBLE_DENORM_MIN 4.94065645841246544177e-324
31
#define _PDCLIB_FP_DOUBLE_MIN_10_EXP -307
32
#define _PDCLIB_FP_DOUBLE_DIG 15
33
#define _PDCLIB_FP_DOUBLE_MAX 1.79769313486231570815e+308
34
#define _PDCLIB_FP_DOUBLE_HAS_INFINITY 1
35
#define _PDCLIB_FP_DOUBLE_MAX_EXP 1024
36
#define _PDCLIB_FP_DOUBLE_MIN 2.22507385850720138309e-308
37
#define _PDCLIB_FP_DOUBLE_HAS_DENORM 1
38
#define _PDCLIB_FP_DOUBLE_HAS_QUIET_NAN 1
39
#define _PDCLIB_FP_DOUBLE_MANT_DIG 53
40
#define _PDCLIB_FP_DOUBLE_EPSILON 2.22044604925031308085e-16
41
#define _PDCLIB_FP_DOUBLE_MAX_10_EXP 308
42
43
/* IEEE 754 80-bit extended precision */
44
#define _PDCLIB_FP_EXTENDED_MAX 1.18973149535723176502e+4932
45
#define _PDCLIB_FP_EXTENDED_MAX_EXP 16384
46
#define _PDCLIB_FP_EXTENDED_HAS_INFINITY 1
47
#define _PDCLIB_FP_EXTENDED_MIN 3.36210314311209350626e-4932
48
#define _PDCLIB_FP_EXTENDED_HAS_QUIET_NAN 1
49
#define _PDCLIB_FP_EXTENDED_HAS_DENORM 1
50
#define _PDCLIB_FP_EXTENDED_EPSILON 1.08420217248550443401e-19
51
#define _PDCLIB_FP_EXTENDED_MANT_DIG 64
52
#define _PDCLIB_FP_EXTENDED_MIN_EXP (-16381)
53
#define _PDCLIB_FP_EXTENDED_MAX_10_EXP 4932
54
#define _PDCLIB_FP_EXTENDED_DENORM_MIN 3.64519953188247460253e-4951
55
#define _PDCLIB_FP_EXTENDED_MIN_10_EXP (-4931)
56
#define _PDCLIB_FP_EXTENDED_DIG 18
57
58
/* TODO: IEEE754 quadruple precision (_PDCLIB_FP_QUADRUPLE_*) and
59
"double-double" math
60
*/
61
62
#define _PDCLIB_FLT_RADIX _PDCLIB_concat( _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_FLOAT_TYPE, _RADIX ), f )
63
#define _PDCLIB_FLT_MANT_DIG _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_FLOAT_TYPE, _MANT_DIG )
64
#define _PDCLIB_FLT_DIG _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_FLOAT_TYPE, _DIG )
65
#define _PDCLIB_FLT_EPSILON _PDCLIB_concat( _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_FLOAT_TYPE, _EPSILON ), f )
66
#define _PDCLIB_FLT_MIN_EXP _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_FLOAT_TYPE, _MIN_EXP )
67
#define _PDCLIB_FLT_MIN _PDCLIB_concat( _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_FLOAT_TYPE, _MIN ), f )
68
#define _PDCLIB_FLT_MIN_10_EXP _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_FLOAT_TYPE, _MIN_10_EXP )
69
#define _PDCLIB_FLT_MAX_EXP _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_FLOAT_TYPE, _MAX_EXP )
70
#define _PDCLIB_FLT_MAX _PDCLIB_concat( _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_FLOAT_TYPE, _MAX ), f )
71
#define _PDCLIB_FLT_MAX_10_EXP _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_FLOAT_TYPE, _MAX_10_EXP )
72
73
#define _PDCLIB_DBL_RADIX _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_DOUBLE_TYPE, _RADIX )
74
#define _PDCLIB_DBL_MANT_DIG _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_DOUBLE_TYPE, _MANT_DIG )
75
#define _PDCLIB_DBL_DIG _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_DOUBLE_TYPE, _DIG )
76
#define _PDCLIB_DBL_EPSILON _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_DOUBLE_TYPE, _EPSILON )
77
#define _PDCLIB_DBL_MIN_EXP _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_DOUBLE_TYPE, _MIN_EXP )
78
#define _PDCLIB_DBL_MIN _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_DOUBLE_TYPE, _MIN )
79
#define _PDCLIB_DBL_MIN_10_EXP _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_DOUBLE_TYPE, _MIN_10_EXP )
80
#define _PDCLIB_DBL_MAX_EXP _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_DOUBLE_TYPE, _MAX_EXP )
81
#define _PDCLIB_DBL_MAX _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_DOUBLE_TYPE, _MAX )
82
#define _PDCLIB_DBL_MAX_10_EXP _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_DOUBLE_TYPE, _MAX_10_EXP )
83
84
#define _PDCLIB_LDBL_RADIX _PDCLIB_concat( _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_LDOUBLE_TYPE, _RADIX ), l )
85
#define _PDCLIB_LDBL_MANT_DIG _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_LDOUBLE_TYPE, _MANT_DIG )
86
#define _PDCLIB_LDBL_DIG _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_LDOUBLE_TYPE, _DIG )
87
#define _PDCLIB_LDBL_EPSILON _PDCLIB_concat( _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_LDOUBLE_TYPE, _EPSILON ), l )
88
#define _PDCLIB_LDBL_MIN_EXP _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_LDOUBLE_TYPE, _MIN_EXP )
89
#define _PDCLIB_LDBL_MIN _PDCLIB_concat( _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_LDOUBLE_TYPE, _MIN ), l )
90
#define _PDCLIB_LDBL_MIN_10_EXP _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_LDOUBLE_TYPE, _MIN_10_EXP )
91
#define _PDCLIB_LDBL_MAX_EXP _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_LDOUBLE_TYPE, _MAX_EXP )
92
#define _PDCLIB_LDBL_MAX _PDCLIB_concat( _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_LDOUBLE_TYPE, _MAX ), l )
93
#define _PDCLIB_LDBL_MAX_10_EXP _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_LDOUBLE_TYPE, _MAX_10_EXP )
94
95
#endif
96
97