mirror of
https://github.com/byteworksinc/ORCA-C.git
synced 2024-09-29 17:55:38 +00:00
These had been the values appropriate for double, not accounting for the fact that long double is now the 80-bit extended type. The integer LDBL_* values have now all been updated to be correct, as has LDBL_EPSILON. LDBL_MAX and LDBL_MIN are still not correct, because ORCA/C internally processes floating-point constants in the double format, and so the correct values would get rounded to INF and 0, respectively. Note that the SANE 80-bit extended format is almost like the x87 80-bit extended format used for long double on many modern systems, but not entirely. The difference is that SANE allows the biased exponent field of an extended value (either normalized or denormalized) to be 0, yielding an effective exponent of 0-16383 = -16383. x87 uses an effective exponent of -16382 in these cases (which it considers to be pseudo-denormalized or denormalized), yielding values that are twice as large as the SANE values. This difference causes LDBL_MIN_EXP to be different, and would also cause LDBL_MIN to be different if it could be represented correctly.
57 lines
1.3 KiB
C
57 lines
1.3 KiB
C
/****************************************************************
|
|
*
|
|
* float.h - limits on the size of real numbers
|
|
*
|
|
* October 1989
|
|
* Mike Westerfield
|
|
*
|
|
* Copyright 1989
|
|
* Byte Works, Inc.
|
|
*
|
|
****************************************************************/
|
|
|
|
#ifndef __float__
|
|
#define __float__
|
|
|
|
#define FLT_ROUNDS 1
|
|
|
|
#define FLT_RADIX 2
|
|
|
|
#define FLT_MANT_DIG 24
|
|
#define DBL_MANT_DIG 53
|
|
#define LDBL_MANT_DIG 64
|
|
|
|
#define FLT_DIG 6
|
|
#define DBL_DIG 15
|
|
#define LDBL_DIG 18
|
|
|
|
#define FLT_MIN_EXP -125
|
|
#define DBL_MIN_EXP -1021
|
|
#define LDBL_MIN_EXP -16382
|
|
|
|
#define FLT_MIN_10_EXP -37
|
|
#define DBL_MIN_10_EXP -307
|
|
#define LDBL_MIN_10_EXP -4931
|
|
|
|
#define FLT_MAX_EXP 128
|
|
#define DBL_MAX_EXP 1024
|
|
#define LDBL_MAX_EXP 16384
|
|
|
|
#define FLT_MAX_10_EXP 38
|
|
#define DBL_MAX_10_EXP 308
|
|
#define LDBL_MAX_10_EXP 4932
|
|
|
|
#define FLT_MAX 3.40282347E+38F
|
|
#define DBL_MAX 1.7976931348623157E+308
|
|
#define LDBL_MAX 1.7976931348623157E+308 /* wrong; really ~1.19E+4932 */
|
|
|
|
#define FLT_EPSILON 1.19209290E-07F
|
|
#define DBL_EPSILON 2.2204460492503131E-16
|
|
#define LDBL_EPSILON 1.0842021724855044E-19
|
|
|
|
#define FLT_MIN 1.17549435E-38F
|
|
#define DBL_MIN 2.2250738585072014E-308
|
|
#define LDBL_MIN 2.2250738585072014E-308 /* wrong; really ~1.68E-4932 */
|
|
|
|
#endif
|