Path: blob/master/waterbox/libc/internals/_PDCLIB_float.h
2 views
/* PDCLib internal floating point logic <_PDCLIB_float.h>12This file is part of the Public Domain C Library (PDCLib).3Permission is granted to use, modify, and / or redistribute at will.4*/56#ifndef __PDCLIB_PDCLIB_FLOAT_H7#define __PDCLIB_PDCLIB_FLOAT_H __PDCLIB_PDCLIB_FLOAT_H89#include "_PDCLIB_aux.h"1011/* IEEE 754 single precision */12#define _PDCLIB_FP_SINGLE_MIN 1.17549435082228750797e-3813#define _PDCLIB_FP_SINGLE_EPSILON 1.19209289550781250000e-714#define _PDCLIB_FP_SINGLE_HAS_DENORM 115#define _PDCLIB_FP_SINGLE_MIN_EXP -12516#define _PDCLIB_FP_SINGLE_MANT_DIG 2417#define _PDCLIB_FP_SINGLE_RADIX 218#define _PDCLIB_FP_SINGLE_HAS_QUIET_NAN 119#define _PDCLIB_FP_SINGLE_MAX_10_EXP 3820#define _PDCLIB_FP_SINGLE_HAS_INFINITY 121#define _PDCLIB_FP_SINGLE_DIG 622#define _PDCLIB_FP_SINGLE_MAX_EXP 12823#define _PDCLIB_FP_SINGLE_DENORM_MIN 1.40129846432481707092e-4524#define _PDCLIB_FP_SINGLE_MAX 3.40282346638528859812e+3825#define _PDCLIB_FP_SINGLE_MIN_10_EXP -372627/* IEEE 754 double precision */28#define _PDCLIB_FP_DOUBLE_MIN_EXP -102129#define _PDCLIB_FP_DOUBLE_DENORM_MIN 4.94065645841246544177e-32430#define _PDCLIB_FP_DOUBLE_MIN_10_EXP -30731#define _PDCLIB_FP_DOUBLE_DIG 1532#define _PDCLIB_FP_DOUBLE_MAX 1.79769313486231570815e+30833#define _PDCLIB_FP_DOUBLE_HAS_INFINITY 134#define _PDCLIB_FP_DOUBLE_MAX_EXP 102435#define _PDCLIB_FP_DOUBLE_MIN 2.22507385850720138309e-30836#define _PDCLIB_FP_DOUBLE_HAS_DENORM 137#define _PDCLIB_FP_DOUBLE_HAS_QUIET_NAN 138#define _PDCLIB_FP_DOUBLE_MANT_DIG 5339#define _PDCLIB_FP_DOUBLE_EPSILON 2.22044604925031308085e-1640#define _PDCLIB_FP_DOUBLE_MAX_10_EXP 3084142/* IEEE 754 80-bit extended precision */43#define _PDCLIB_FP_EXTENDED_MAX 1.18973149535723176502e+493244#define _PDCLIB_FP_EXTENDED_MAX_EXP 1638445#define _PDCLIB_FP_EXTENDED_HAS_INFINITY 146#define _PDCLIB_FP_EXTENDED_MIN 3.36210314311209350626e-493247#define _PDCLIB_FP_EXTENDED_HAS_QUIET_NAN 148#define _PDCLIB_FP_EXTENDED_HAS_DENORM 149#define _PDCLIB_FP_EXTENDED_EPSILON 1.08420217248550443401e-1950#define _PDCLIB_FP_EXTENDED_MANT_DIG 6451#define _PDCLIB_FP_EXTENDED_MIN_EXP (-16381)52#define _PDCLIB_FP_EXTENDED_MAX_10_EXP 493253#define _PDCLIB_FP_EXTENDED_DENORM_MIN 3.64519953188247460253e-495154#define _PDCLIB_FP_EXTENDED_MIN_10_EXP (-4931)55#define _PDCLIB_FP_EXTENDED_DIG 185657/* TODO: IEEE754 quadruple precision (_PDCLIB_FP_QUADRUPLE_*) and58"double-double" math59*/6061#define _PDCLIB_FLT_RADIX _PDCLIB_concat( _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_FLOAT_TYPE, _RADIX ), f )62#define _PDCLIB_FLT_MANT_DIG _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_FLOAT_TYPE, _MANT_DIG )63#define _PDCLIB_FLT_DIG _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_FLOAT_TYPE, _DIG )64#define _PDCLIB_FLT_EPSILON _PDCLIB_concat( _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_FLOAT_TYPE, _EPSILON ), f )65#define _PDCLIB_FLT_MIN_EXP _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_FLOAT_TYPE, _MIN_EXP )66#define _PDCLIB_FLT_MIN _PDCLIB_concat( _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_FLOAT_TYPE, _MIN ), f )67#define _PDCLIB_FLT_MIN_10_EXP _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_FLOAT_TYPE, _MIN_10_EXP )68#define _PDCLIB_FLT_MAX_EXP _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_FLOAT_TYPE, _MAX_EXP )69#define _PDCLIB_FLT_MAX _PDCLIB_concat( _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_FLOAT_TYPE, _MAX ), f )70#define _PDCLIB_FLT_MAX_10_EXP _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_FLOAT_TYPE, _MAX_10_EXP )7172#define _PDCLIB_DBL_RADIX _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_DOUBLE_TYPE, _RADIX )73#define _PDCLIB_DBL_MANT_DIG _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_DOUBLE_TYPE, _MANT_DIG )74#define _PDCLIB_DBL_DIG _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_DOUBLE_TYPE, _DIG )75#define _PDCLIB_DBL_EPSILON _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_DOUBLE_TYPE, _EPSILON )76#define _PDCLIB_DBL_MIN_EXP _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_DOUBLE_TYPE, _MIN_EXP )77#define _PDCLIB_DBL_MIN _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_DOUBLE_TYPE, _MIN )78#define _PDCLIB_DBL_MIN_10_EXP _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_DOUBLE_TYPE, _MIN_10_EXP )79#define _PDCLIB_DBL_MAX_EXP _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_DOUBLE_TYPE, _MAX_EXP )80#define _PDCLIB_DBL_MAX _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_DOUBLE_TYPE, _MAX )81#define _PDCLIB_DBL_MAX_10_EXP _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_DOUBLE_TYPE, _MAX_10_EXP )8283#define _PDCLIB_LDBL_RADIX _PDCLIB_concat( _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_LDOUBLE_TYPE, _RADIX ), l )84#define _PDCLIB_LDBL_MANT_DIG _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_LDOUBLE_TYPE, _MANT_DIG )85#define _PDCLIB_LDBL_DIG _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_LDOUBLE_TYPE, _DIG )86#define _PDCLIB_LDBL_EPSILON _PDCLIB_concat( _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_LDOUBLE_TYPE, _EPSILON ), l )87#define _PDCLIB_LDBL_MIN_EXP _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_LDOUBLE_TYPE, _MIN_EXP )88#define _PDCLIB_LDBL_MIN _PDCLIB_concat( _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_LDOUBLE_TYPE, _MIN ), l )89#define _PDCLIB_LDBL_MIN_10_EXP _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_LDOUBLE_TYPE, _MIN_10_EXP )90#define _PDCLIB_LDBL_MAX_EXP _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_LDOUBLE_TYPE, _MAX_EXP )91#define _PDCLIB_LDBL_MAX _PDCLIB_concat( _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_LDOUBLE_TYPE, _MAX ), l )92#define _PDCLIB_LDBL_MAX_10_EXP _PDCLIB_concat3( _PDCLIB_FP_, _PDCLIB_LDOUBLE_TYPE, _MAX_10_EXP )9394#endif959697