From OpenBSD:
apparently my understanding of '{FLT,DBL,LDBL}_{MIN,MAX}_EXP' ahs been wrong and thus proven by many and there change it back to what it is meaning explained in http://www-ccs.ucsd.edu/c/float.html . also fix spmath to use it's own consts instead of (now) off by one float.h values thus to avoid any kind of binary changes. Fixes regress/lib/libc/ieeefp/nan
This commit is contained in:
parent
afe25e2049
commit
fd24e60b98
|
@ -1,6 +1,6 @@
|
|||
/* $NetBSD: dbl_float.h,v 1.2 2008/04/06 08:03:36 skrll Exp $ */
|
||||
/* $NetBSD: dbl_float.h,v 1.3 2009/01/27 11:49:54 skrll Exp $ */
|
||||
|
||||
/* $OpenBSD: dbl_float.h,v 1.5 2001/03/29 03:58:17 mickey Exp $ */
|
||||
/* $OpenBSD: dbl_float.h,v 1.10 2004/01/02 14:39:01 mickey Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright 1996 1995 by Open Software Foundation, Inc.
|
||||
|
@ -343,16 +343,16 @@
|
|||
Deposit_dexponent(dbl_value,(exponent op DBL_WRAP))
|
||||
|
||||
#define Dbl_setlargestpositive(dbl_valueA,dbl_valueB) \
|
||||
Dallp1(dbl_valueA) = ((DBL_MAX_EXP+DBL_BIAS) << (32-(1+DBL_EXP_LENGTH))) \
|
||||
Dallp1(dbl_valueA) = ((DBL_EMAX+DBL_BIAS) << (32-(1+DBL_EXP_LENGTH))) \
|
||||
| ((1<<(32-(1+DBL_EXP_LENGTH))) - 1 ); \
|
||||
Dallp2(dbl_valueB) = 0xFFFFFFFF
|
||||
#define Dbl_setlargestnegative(dbl_valueA,dbl_valueB) \
|
||||
Dallp1(dbl_valueA) = ((DBL_MAX_EXP+DBL_BIAS) << (32-(1+DBL_EXP_LENGTH))) \
|
||||
Dallp1(dbl_valueA) = ((DBL_EMAX+DBL_BIAS) << (32-(1+DBL_EXP_LENGTH))) \
|
||||
| ((1<<(32-(1+DBL_EXP_LENGTH))) - 1 ) | (1<<31); \
|
||||
Dallp2(dbl_valueB) = 0xFFFFFFFF
|
||||
#define Dbl_setlargest_exponentmantissa(dbl_valueA,dbl_valueB) \
|
||||
Deposit_dexponentmantissap1(dbl_valueA, \
|
||||
(((DBL_MAX_EXP+DBL_BIAS) << (32-(1+DBL_EXP_LENGTH))) \
|
||||
(((DBL_EMAX+DBL_BIAS) << (32-(1+DBL_EXP_LENGTH))) \
|
||||
| ((1<<(32-(1+DBL_EXP_LENGTH))) - 1 ))); \
|
||||
Dallp2(dbl_valueB) = 0xFFFFFFFF
|
||||
|
||||
|
@ -362,7 +362,7 @@
|
|||
Dallp2(dbl_valueB) = 0
|
||||
#define Dbl_setlargest(dbl_valueA,dbl_valueB,sign) \
|
||||
Dallp1(dbl_valueA) = (sign << 31) | \
|
||||
((DBL_MAX_EXP+DBL_BIAS) << (32-(1+DBL_EXP_LENGTH))) | \
|
||||
((DBL_EMAX+DBL_BIAS) << (32-(1+DBL_EXP_LENGTH))) | \
|
||||
((1 << (32-(1+DBL_EXP_LENGTH))) - 1 ); \
|
||||
Dallp2(dbl_valueB) = 0xFFFFFFFF
|
||||
|
||||
|
@ -454,11 +454,11 @@
|
|||
|
||||
/* Need to Initialize */
|
||||
#define Dbl_makequietnan(desta,destb) \
|
||||
Dallp1(desta) = ((DBL_MAX_EXP+DBL_BIAS)+1)<< (32-(1+DBL_EXP_LENGTH)) \
|
||||
Dallp1(desta) = ((DBL_EMAX+DBL_BIAS)+1)<< (32-(1+DBL_EXP_LENGTH)) \
|
||||
| (1<<(32-(1+DBL_EXP_LENGTH+2))); \
|
||||
Dallp2(destb) = 0
|
||||
#define Dbl_makesignalingnan(desta,destb) \
|
||||
Dallp1(desta) = ((DBL_MAX_EXP+DBL_BIAS)+1)<< (32-(1+DBL_EXP_LENGTH)) \
|
||||
Dallp1(desta) = ((DBL_EMAX+DBL_BIAS)+1)<< (32-(1+DBL_EXP_LENGTH)) \
|
||||
| (1<<(32-(1+DBL_EXP_LENGTH+1))); \
|
||||
Dallp2(destb) = 0
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* $NetBSD: float.h,v 1.3 2005/12/11 12:17:40 christos Exp $ */
|
||||
/* $NetBSD: float.h,v 1.4 2009/01/27 11:49:54 skrll Exp $ */
|
||||
|
||||
/* $OpenBSD: float.h,v 1.4 2001/03/29 03:58:18 mickey Exp $ */
|
||||
/* $OpenBSD: float.h,v 1.7 2004/01/02 14:39:01 mickey Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright 1996 1995 by Open Software Foundation, Inc.
|
||||
|
@ -333,25 +333,28 @@ typedef struct dint dbl_integer;
|
|||
* Define the different precisions' parameters.
|
||||
*/
|
||||
#define SGL_BITLENGTH 32
|
||||
#define SGL_EMAX 127
|
||||
#define SGL_BIAS 127
|
||||
#define SGL_WRAP 192
|
||||
#define SGL_INFINITY_EXPONENT (FLT_MAX_EXP+SGL_BIAS+1)
|
||||
#define SGL_INFINITY_EXPONENT (SGL_EMAX+SGL_BIAS+1)
|
||||
#define SGL_THRESHOLD 32
|
||||
#define SGL_EXP_LENGTH 8
|
||||
#define SGL_P 24
|
||||
|
||||
#define DBL_BITLENGTH 64
|
||||
#define DBL_EMAX 1023
|
||||
#define DBL_BIAS 1023
|
||||
#define DBL_WRAP 1536
|
||||
#define DBL_INFINITY_EXPONENT (DBL_MAX_EXP+DBL_BIAS+1)
|
||||
#define DBL_INFINITY_EXPONENT (DBL_EMAX+DBL_BIAS+1)
|
||||
#define DBL_THRESHOLD 64
|
||||
#define DBL_EXP_LENGTH 11
|
||||
#define DBL_P 53
|
||||
|
||||
#define QUAD_BITLENGTH 128
|
||||
#define QUAD_EMAX 16383
|
||||
#define QUAD_BIAS 16383
|
||||
#define QUAD_WRAP 24576
|
||||
#define QUAD_INFINITY_EXPONENT (LDBL_MAX_EXP+QUAD_BIAS+1)
|
||||
#define QUAD_INFINITY_EXPONENT (QUAD_EMAX+QUAD_BIAS+1)
|
||||
#define QUAD_P 113
|
||||
|
||||
/* Boolean Values etc. */
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* $NetBSD: sgl_float.h,v 1.2 2008/04/06 08:03:36 skrll Exp $ */
|
||||
/* $NetBSD: sgl_float.h,v 1.3 2009/01/27 11:49:54 skrll Exp $ */
|
||||
|
||||
/* $OpenBSD: sgl_float.h,v 1.5 2001/03/29 03:58:19 mickey Exp $ */
|
||||
/* $OpenBSD: sgl_float.h,v 1.10 2004/01/02 14:39:01 mickey Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright 1996 1995 by Open Software Foundation, Inc.
|
||||
|
@ -218,10 +218,10 @@
|
|||
Deposit_sexponent(sgl_value,(exponent op SGL_WRAP))
|
||||
|
||||
#define Sgl_setlargestpositive(sgl_value) \
|
||||
Sall(sgl_value) = ((FLT_MAX_EXP+SGL_BIAS) << (32-(1+SGL_EXP_LENGTH))) \
|
||||
Sall(sgl_value) = ((SGL_EMAX+SGL_BIAS) << (32-(1+SGL_EXP_LENGTH))) \
|
||||
| ((1<<(32-(1+SGL_EXP_LENGTH))) - 1)
|
||||
#define Sgl_setlargestnegative(sgl_value) \
|
||||
Sall(sgl_value) = ((FLT_MAX_EXP+SGL_BIAS) << (32-(1+SGL_EXP_LENGTH))) \
|
||||
Sall(sgl_value) = ((SGL_EMAX+SGL_BIAS) << (32-(1+SGL_EXP_LENGTH))) \
|
||||
| ((1<<(32-(1+SGL_EXP_LENGTH))) - 1 ) | (1<<31)
|
||||
|
||||
#define Sgl_setnegativeinfinity(sgl_value) \
|
||||
|
@ -229,11 +229,11 @@
|
|||
((1<<SGL_EXP_LENGTH) | SGL_INFINITY_EXPONENT) << (32-(1+SGL_EXP_LENGTH))
|
||||
#define Sgl_setlargest(sgl_value,sign) \
|
||||
Sall(sgl_value) = ((sign) << 31) | \
|
||||
(((FLT_MAX_EXP+SGL_BIAS) << (32-(1+SGL_EXP_LENGTH))) \
|
||||
(((SGL_EMAX+SGL_BIAS) << (32-(1+SGL_EXP_LENGTH))) \
|
||||
| ((1 << (32-(1+SGL_EXP_LENGTH))) - 1 ))
|
||||
#define Sgl_setlargest_exponentmantissa(sgl_value) \
|
||||
Sall(sgl_value) = (Sall(sgl_value) & (1<<31)) | \
|
||||
(((FLT_MAX_EXP+SGL_BIAS) << (32-(1+SGL_EXP_LENGTH))) \
|
||||
(((SGL_EMAX+SGL_BIAS) << (32-(1+SGL_EXP_LENGTH))) \
|
||||
| ((1 << (32-(1+SGL_EXP_LENGTH))) - 1 ))
|
||||
|
||||
/* The high bit is always zero so arithmetic or logical shifts will work. */
|
||||
|
@ -274,10 +274,10 @@
|
|||
|
||||
/* Need to Initialize */
|
||||
#define Sgl_makequietnan(dest) \
|
||||
Sall(dest) = ((FLT_MAX_EXP+SGL_BIAS)+1)<< (32-(1+SGL_EXP_LENGTH)) \
|
||||
Sall(dest) = ((SGL_EMAX+SGL_BIAS)+1)<< (32-(1+SGL_EXP_LENGTH)) \
|
||||
| (1<<(32-(1+SGL_EXP_LENGTH+2)))
|
||||
#define Sgl_makesignalingnan(dest) \
|
||||
Sall(dest) = ((FLT_MAX_EXP+SGL_BIAS)+1)<< (32-(1+SGL_EXP_LENGTH)) \
|
||||
Sall(dest) = ((SGL_EMAX+SGL_BIAS)+1)<< (32-(1+SGL_EXP_LENGTH)) \
|
||||
| (1<<(32-(1+SGL_EXP_LENGTH+1)))
|
||||
|
||||
#define Sgl_normalize(sgl_opnd,exponent) \
|
||||
|
|
Loading…
Reference in New Issue