summaryrefslogtreecommitdiff
path: root/sys/arch
diff options
context:
space:
mode:
authorMartynas Venckus <martynas@cvs.openbsd.org>2008-09-07 20:36:11 +0000
committerMartynas Venckus <martynas@cvs.openbsd.org>2008-09-07 20:36:11 +0000
commit319618ea76ca9de5c1e1b02bff3bddbdf5c46dc7 (patch)
tree402fb699f6a3a45a23dce26a3952cfee3d992421 /sys/arch
parent6e9298963b5a9bb500e3f8308cd681b32638fb31 (diff)
- replace dtoa w/ David's gdtoa, version 2008-03-15
- provide proper dtoa locks - use the real strtof implementation - add strtold, __hdtoa, __hldtoa - add %a/%A support - don't lose precision in printf, don't round to double anymore - implement extended-precision versions of libc functions: fpclassify, isnan, isinf, signbit, isnormal, isfinite, now that the ieee.h is fixed - separate vax versions of strtof, and __hdtoa - add complex math support. added functions: cacos, casin, catan, ccos, csin, ctan, cacosh, casinh, catanh, ccosh, csinh, ctanh, cexp, clog, cabs, cpow, csqrt, carg, cimag, conj, cproj, creal, cacosf, casinf, catanf, ccosf, csinf, ctanf, cacoshf, casinhf, catanhf, ccoshf, csinhf, ctanhf, cexpf, clogf, cabsf, cpowf, csqrtf, cargf, cimagf, conjf, cprojf, crealf - add fdim, fmax, fmin - add log2. (adapted implementation e_log.c. could be more acruate & faster, but it's good enough for now) - remove wrappers & cruft in libm, supposed to work-around mistakes in SVID, etc.; use ieee versions. fixes issues in python 2.6 for djm@ - make _digittoint static - proper definitions for i386, and amd64 in ieee.h - sh, powerpc don't really have extended-precision - add missing definitions for mips64 (quad), m{6,8}k (96-bit) float.h for LDBL_* - merge lead to frac for m{6,8}k, for gdtoa to work properly - add FRAC*BITS & EXT_TO_ARRAY32 definitions in ieee.h, for hdtoa&ldtoa to use - add EXT_IMPLICIT_NBIT definition, which indicates implicit normalization bit - add regression tests for libc: fpclassify and printf - arith.h & gd_qnan.h definitions - update ieee.h: hppa doesn't have quad-precision, hppa64 does - add missing prototypes to gdtoaimp - on 64-bit platforms make sure gdtoa doesn't use a long when it really wants an int - etc., what i may have forgotten... - bump libm major, due to removed&changed symbols - no libc bump, since this is riding on djm's libc major crank from a day ago discussed with / requested by / testing theo, sthen@, djm@, jsg@, merdely@, jsing@, tedu@, brad@, jakemsr@, and others. looks good to millert@ parts of the diff ok kettenis@ this commit does not include: - man page changes
Diffstat (limited to 'sys/arch')
-rw-r--r--sys/arch/alpha/include/ieee.h4
-rw-r--r--sys/arch/amd64/include/ieee.h19
-rw-r--r--sys/arch/arm/include/ieee.h10
-rw-r--r--sys/arch/hppa/include/ieee.h19
-rw-r--r--sys/arch/hppa64/include/ieee.h17
-rw-r--r--sys/arch/i386/include/ieee.h18
-rw-r--r--sys/arch/m68k/include/float.h28
-rw-r--r--sys/arch/m68k/include/ieee.h14
-rw-r--r--sys/arch/m88k/include/float.h28
-rw-r--r--sys/arch/m88k/include/ieee.h14
-rw-r--r--sys/arch/mips64/include/float.h28
-rw-r--r--sys/arch/mips64/include/ieee.h17
-rw-r--r--sys/arch/powerpc/include/ieee.h19
-rw-r--r--sys/arch/sh/include/ieee.h19
-rw-r--r--sys/arch/sparc/include/ieee.h17
-rw-r--r--sys/arch/sparc64/include/ieee.h17
16 files changed, 176 insertions, 112 deletions
diff --git a/sys/arch/alpha/include/ieee.h b/sys/arch/alpha/include/ieee.h
index e5ed1da001d..0fbbe82482f 100644
--- a/sys/arch/alpha/include/ieee.h
+++ b/sys/arch/alpha/include/ieee.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: ieee.h,v 1.4 2003/06/02 23:27:43 millert Exp $ */
+/* $OpenBSD: ieee.h,v 1.5 2008/09/07 20:36:06 martynas Exp $ */
/* $NetBSD: ieee.h,v 1.1 1995/02/13 23:07:40 cgd Exp $ */
/*
@@ -81,6 +81,8 @@
#define SNG_FRACBITS 23
#define DBL_EXPBITS 11
+#define DBL_FRACHBITS 20
+#define DBL_FRACLBITS 32
#define DBL_FRACBITS 52
struct ieee_single {
diff --git a/sys/arch/amd64/include/ieee.h b/sys/arch/amd64/include/ieee.h
index 5a34355d223..74856b20ebf 100644
--- a/sys/arch/amd64/include/ieee.h
+++ b/sys/arch/amd64/include/ieee.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: ieee.h,v 1.1 2004/01/28 01:39:39 mickey Exp $ */
+/* $OpenBSD: ieee.h,v 1.2 2008/09/07 20:36:06 martynas Exp $ */
/* $NetBSD: ieee.h,v 1.1 1996/09/30 16:34:25 ws Exp $ */
/*
@@ -79,10 +79,19 @@
#define SNG_FRACBITS 23
#define DBL_EXPBITS 11
+#define DBL_FRACHBITS 20
+#define DBL_FRACLBITS 32
#define DBL_FRACBITS 52
#define EXT_EXPBITS 15
-#define EXT_FRACBITS 112
+#define EXT_FRACHBITS 32
+#define EXT_FRACLBITS 32
+#define EXT_FRACBITS 64
+
+#define EXT_TO_ARRAY32(p, a) do { \
+ (a)[0] = (uint32_t)(p)->ext_fracl; \
+ (a)[1] = (uint32_t)(p)->ext_frach; \
+} while(0)
struct ieee_single {
u_int sng_frac:23;
@@ -99,11 +108,11 @@ struct ieee_double {
struct ieee_ext {
u_int ext_fracl;
- u_int ext_fraclm;
- u_int ext_frachm;
- u_int ext_frach:16;
+ u_int ext_frach;
u_int ext_exp:15;
u_int ext_sign:1;
+ u_int ext_padl:16;
+ u_int ext_padh;
};
/*
diff --git a/sys/arch/arm/include/ieee.h b/sys/arch/arm/include/ieee.h
index fb3620bde41..c0ef9ca2fbd 100644
--- a/sys/arch/arm/include/ieee.h
+++ b/sys/arch/arm/include/ieee.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: ieee.h,v 1.2 2008/07/24 17:36:52 deraadt Exp $ */
+/* $OpenBSD: ieee.h,v 1.3 2008/09/07 20:36:06 martynas Exp $ */
/* $NetBSD: ieee.h,v 1.2 2001/02/21 17:43:50 bjh21 Exp $ */
/*
@@ -92,13 +92,21 @@
#define SNG_FRACBITS 23
#define DBL_EXPBITS 11
+#define DBL_FRACHBITS 20
+#define DBL_FRACLBITS 32
#define DBL_FRACBITS 52
#ifndef __VFP_FP__
#define E80_EXPBITS 15
+#define E80_FRACHBITS 31
+#define E80_FRACLBITS 32
#define E80_FRACBITS 64
#define EXT_EXPBITS 15
+#define EXT_FRACHBITS 16
+#define EXT_FRACHMBITS 32
+#define EXT_FRACLMBITS 32
+#define EXT_FRACLBITS 32
#define EXT_FRACBITS 112
#endif
diff --git a/sys/arch/hppa/include/ieee.h b/sys/arch/hppa/include/ieee.h
index d908f10c698..d9d263abe37 100644
--- a/sys/arch/hppa/include/ieee.h
+++ b/sys/arch/hppa/include/ieee.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: ieee.h,v 1.2 2003/06/02 23:27:46 millert Exp $ */
+/* $OpenBSD: ieee.h,v 1.3 2008/09/07 20:36:06 martynas Exp $ */
/*
* Copyright (c) 1992, 1993
@@ -78,6 +78,8 @@
#define SNG_FRACBITS 23
#define DBL_EXPBITS 11
+#define DBL_FRACHBITS 20
+#define DBL_FRACLBITS 32
#define DBL_FRACBITS 52
#ifdef notyet
@@ -85,9 +87,6 @@
#define E80_FRACBITS 64
#endif
-#define EXT_EXPBITS 15
-#define EXT_FRACBITS 112
-
struct ieee_single {
u_int sng_sign:1;
u_int sng_exp:8;
@@ -101,15 +100,6 @@ struct ieee_double {
u_int dbl_fracl;
};
-struct ieee_ext {
- u_int ext_sign:1;
- u_int ext_exp:15;
- u_int ext_frach:16;
- u_int ext_frachm;
- u_int ext_fraclm;
- u_int ext_fracl;
-};
-
/*
* Floats whose exponent is in [1..INFNAN) (of whatever type) are
* `normal'. Floats whose exponent is INFNAN are either Inf or NaN.
@@ -121,12 +111,10 @@ struct ieee_ext {
*/
#define SNG_EXP_INFNAN 255
#define DBL_EXP_INFNAN 2047
-#define EXT_EXP_INFNAN 32767
#if 0
#define SNG_QUIETNAN (1 << 22)
#define DBL_QUIETNAN (1 << 19)
-#define EXT_QUIETNAN (1 << 15)
#endif
/*
@@ -134,4 +122,3 @@ struct ieee_ext {
*/
#define SNG_EXP_BIAS 127
#define DBL_EXP_BIAS 1023
-#define EXT_EXP_BIAS 16383
diff --git a/sys/arch/hppa64/include/ieee.h b/sys/arch/hppa64/include/ieee.h
index dfd8044fd80..f61c962b11a 100644
--- a/sys/arch/hppa64/include/ieee.h
+++ b/sys/arch/hppa64/include/ieee.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: ieee.h,v 1.1 2005/04/01 10:40:48 mickey Exp $ */
+/* $OpenBSD: ieee.h,v 1.2 2008/09/07 20:36:06 martynas Exp $ */
/*
* Copyright (c) 1992, 1993
@@ -78,6 +78,8 @@
#define SNG_FRACBITS 23
#define DBL_EXPBITS 11
+#define DBL_FRACHBITS 20
+#define DBL_FRACLBITS 32
#define DBL_FRACBITS 52
#ifdef notyet
@@ -86,8 +88,21 @@
#endif
#define EXT_EXPBITS 15
+#define EXT_FRACHBITS 16
+#define EXT_FRACHMBITS 32
+#define EXT_FRACLMBITS 32
+#define EXT_FRACLBITS 32
#define EXT_FRACBITS 112
+#define EXT_IMPLICIT_NBIT
+
+#define EXT_TO_ARRAY32(p, a) do { \
+ (a)[0] = (uint32_t)(p)->ext_fracl; \
+ (a)[1] = (uint32_t)(p)->ext_fraclm; \
+ (a)[2] = (uint32_t)(p)->ext_frachm; \
+ (a)[3] = (uint32_t)(p)->ext_frach; \
+} while(0)
+
struct ieee_single {
u_int sng_sign:1;
u_int sng_exp:8;
diff --git a/sys/arch/i386/include/ieee.h b/sys/arch/i386/include/ieee.h
index 55b3703277c..865fcb9eec6 100644
--- a/sys/arch/i386/include/ieee.h
+++ b/sys/arch/i386/include/ieee.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: ieee.h,v 1.2 2003/06/02 23:27:47 millert Exp $ */
+/* $OpenBSD: ieee.h,v 1.3 2008/09/07 20:36:06 martynas Exp $ */
/* $NetBSD: ieee.h,v 1.1 1996/09/30 16:34:25 ws Exp $ */
/*
@@ -79,10 +79,19 @@
#define SNG_FRACBITS 23
#define DBL_EXPBITS 11
+#define DBL_FRACHBITS 20
+#define DBL_FRACLBITS 32
#define DBL_FRACBITS 52
#define EXT_EXPBITS 15
-#define EXT_FRACBITS 112
+#define EXT_FRACHBITS 32
+#define EXT_FRACLBITS 32
+#define EXT_FRACBITS 64
+
+#define EXT_TO_ARRAY32(p, a) do { \
+ (a)[0] = (uint32_t)(p)->ext_fracl; \
+ (a)[1] = (uint32_t)(p)->ext_frach; \
+} while(0)
struct ieee_single {
u_int sng_frac:23;
@@ -99,11 +108,10 @@ struct ieee_double {
struct ieee_ext {
u_int ext_fracl;
- u_int ext_fraclm;
- u_int ext_frachm;
- u_int ext_frach:16;
+ u_int ext_frach;
u_int ext_exp:15;
u_int ext_sign:1;
+ u_int ext_pad:16;
};
/*
diff --git a/sys/arch/m68k/include/float.h b/sys/arch/m68k/include/float.h
index cf252b96b1b..954e5733512 100644
--- a/sys/arch/m68k/include/float.h
+++ b/sys/arch/m68k/include/float.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: float.h,v 1.6 2008/07/21 20:50:54 martynas Exp $ */
+/* $OpenBSD: float.h,v 1.7 2008/09/07 20:36:06 martynas Exp $ */
/* $NetBSD: float.h,v 1.10 1995/06/20 20:45:41 jtc Exp $ */
/*
@@ -48,9 +48,9 @@ __END_DECLS
#define FLT_MANT_DIG 24 /* p */
#define FLT_EPSILON 1.19209290E-07F /* b**(1-p) */
#define FLT_DIG 6 /* floor((p-1)*log10(b))+(b == 10) */
-#define FLT_MIN_EXP -125 /* emin */
+#define FLT_MIN_EXP (-125) /* emin */
#define FLT_MIN 1.17549435E-38F /* b**(emin-1) */
-#define FLT_MIN_10_EXP -37 /* ceil(log10(b**(emin-1))) */
+#define FLT_MIN_10_EXP (-37) /* ceil(log10(b**(emin-1))) */
#define FLT_MAX_EXP 128 /* emax */
#define FLT_MAX 3.40282347E+38F /* (1-b**(-p))*b**emax */
#define FLT_MAX_10_EXP 38 /* floor(log10((1-b**(-p))*b**emax)) */
@@ -58,21 +58,21 @@ __END_DECLS
#define DBL_MANT_DIG 53
#define DBL_EPSILON 2.2204460492503131E-16
#define DBL_DIG 15
-#define DBL_MIN_EXP -1021
+#define DBL_MIN_EXP (-1021)
#define DBL_MIN 2.2250738585072014E-308
-#define DBL_MIN_10_EXP -307
+#define DBL_MIN_10_EXP (-307)
#define DBL_MAX_EXP 1024
#define DBL_MAX 1.7976931348623157E+308
#define DBL_MAX_10_EXP 308
-#define LDBL_MANT_DIG DBL_MANT_DIG
-#define LDBL_EPSILON DBL_EPSILON
-#define LDBL_DIG DBL_DIG
-#define LDBL_MIN_EXP DBL_MIN_EXP
-#define LDBL_MIN DBL_MIN
-#define LDBL_MIN_10_EXP DBL_MIN_10_EXP
-#define LDBL_MAX_EXP DBL_MAX_EXP
-#define LDBL_MAX DBL_MAX
-#define LDBL_MAX_10_EXP DBL_MAX_10_EXP
+#define LDBL_MANT_DIG 64
+#define LDBL_EPSILON 1.08420217248550443401e-19L
+#define LDBL_DIG 18
+#define LDBL_MIN_EXP (-16381)
+#define LDBL_MIN 3.36210314311209350626e-4932L
+#define LDBL_MIN_10_EXP (-4931)
+#define LDBL_MAX_EXP 16384
+#define LDBL_MAX 1.18973149535723176502e+4932L
+#define LDBL_MAX_10_EXP 4932
#endif /* !_M68K_FLOAT_H_ */
diff --git a/sys/arch/m68k/include/ieee.h b/sys/arch/m68k/include/ieee.h
index 05f903c2286..3ed9aad9885 100644
--- a/sys/arch/m68k/include/ieee.h
+++ b/sys/arch/m68k/include/ieee.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: ieee.h,v 1.3 2006/01/16 22:05:59 miod Exp $ */
+/* $OpenBSD: ieee.h,v 1.4 2008/09/07 20:36:06 martynas Exp $ */
/* $NetBSD: ieee.h,v 1.2 1994/11/20 20:53:10 deraadt Exp $ */
/*
@@ -79,11 +79,20 @@
#define SNG_FRACBITS 23
#define DBL_EXPBITS 11
+#define DBL_FRACHBITS 20
+#define DBL_FRACLBITS 32
#define DBL_FRACBITS 52
#define EXT_EXPBITS 15
+#define EXT_FRACHBITS 32
+#define EXT_FRACLBITS 32
#define EXT_FRACBITS 64
+#define EXT_TO_ARRAY32(p, a) do { \
+ (a)[0] = (uint32_t)(p)->ext_fracl; \
+ (a)[1] = (uint32_t)(p)->ext_frach; \
+} while(0)
+
struct ieee_single {
u_int sng_sign:1;
u_int sng_exp:8;
@@ -101,8 +110,7 @@ struct ieee_ext {
u_int ext_sign:1;
u_int ext_exp:15;
u_int ext_zero:16;
- u_int ext_int:1;
- u_int ext_frach:31;
+ u_int ext_frach;
u_int ext_fracl;
};
diff --git a/sys/arch/m88k/include/float.h b/sys/arch/m88k/include/float.h
index e6c0d7f3240..8e46928dafb 100644
--- a/sys/arch/m88k/include/float.h
+++ b/sys/arch/m88k/include/float.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: float.h,v 1.2 2008/07/21 20:50:54 martynas Exp $ */
+/* $OpenBSD: float.h,v 1.3 2008/09/07 20:36:06 martynas Exp $ */
/*
* Copyright (c) 1989 Regents of the University of California.
@@ -47,9 +47,9 @@ __END_DECLS
#define FLT_MANT_DIG 24 /* p */
#define FLT_EPSILON 1.19209290E-07F /* b**(1-p) */
#define FLT_DIG 6 /* floor((p-1)*log10(b))+(b == 10) */
-#define FLT_MIN_EXP -125 /* emin */
+#define FLT_MIN_EXP (-125) /* emin */
#define FLT_MIN 1.17549435E-38F /* b**(emin-1) */
-#define FLT_MIN_10_EXP -37 /* ceil(log10(b**(emin-1))) */
+#define FLT_MIN_10_EXP (-37) /* ceil(log10(b**(emin-1))) */
#define FLT_MAX_EXP 128 /* emax */
#define FLT_MAX 3.40282347E+38F /* (1-b**(-p))*b**emax */
#define FLT_MAX_10_EXP 38 /* floor(log10((1-b**(-p))*b**emax)) */
@@ -57,21 +57,21 @@ __END_DECLS
#define DBL_MANT_DIG 53
#define DBL_EPSILON 2.2204460492503131E-16
#define DBL_DIG 15
-#define DBL_MIN_EXP -1021
+#define DBL_MIN_EXP (-1021)
#define DBL_MIN 2.2250738585072014E-308
-#define DBL_MIN_10_EXP -307
+#define DBL_MIN_10_EXP (-307)
#define DBL_MAX_EXP 1024
#define DBL_MAX 1.7976931348623157E+308
#define DBL_MAX_10_EXP 308
-#define LDBL_MANT_DIG DBL_MANT_DIG
-#define LDBL_EPSILON DBL_EPSILON
-#define LDBL_DIG DBL_DIG
-#define LDBL_MIN_EXP DBL_MIN_EXP
-#define LDBL_MIN DBL_MIN
-#define LDBL_MIN_10_EXP DBL_MIN_10_EXP
-#define LDBL_MAX_EXP DBL_MAX_EXP
-#define LDBL_MAX DBL_MAX
-#define LDBL_MAX_10_EXP DBL_MAX_10_EXP
+#define LDBL_MANT_DIG 64
+#define LDBL_EPSILON 1.08420217248550443401e-19L
+#define LDBL_DIG 18
+#define LDBL_MIN_EXP (-16381)
+#define LDBL_MIN 3.36210314311209350626e-4932L
+#define LDBL_MIN_10_EXP (-4931)
+#define LDBL_MAX_EXP 16384
+#define LDBL_MAX 1.18973149535723176502e+4932L
+#define LDBL_MAX_10_EXP 4932
#endif /* __M88K_FLOAT_H__ */
diff --git a/sys/arch/m88k/include/ieee.h b/sys/arch/m88k/include/ieee.h
index a849c33906e..d68677c46aa 100644
--- a/sys/arch/m88k/include/ieee.h
+++ b/sys/arch/m88k/include/ieee.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: ieee.h,v 1.2 2006/05/04 19:28:43 miod Exp $ */
+/* $OpenBSD: ieee.h,v 1.3 2008/09/07 20:36:06 martynas Exp $ */
/*
* Copyright (c) 1992, 1993
* The Regents of the University of California. All rights reserved.
@@ -77,11 +77,20 @@
#define SNG_FRACBITS 23
#define DBL_EXPBITS 11
+#define DBL_FRACHBITS 20
+#define DBL_FRACLBITS 32
#define DBL_FRACBITS 52
#define EXT_EXPBITS 15
+#define EXT_FRACHBITS 32
+#define EXT_FRACLBITS 32
#define EXT_FRACBITS 64
+#define EXT_TO_ARRAY32(p, a) do { \
+ (a)[0] = (uint32_t)(p)->ext_fracl; \
+ (a)[1] = (uint32_t)(p)->ext_frach; \
+} while(0)
+
struct ieee_single {
u_int sng_sign:1;
u_int sng_exp:8;
@@ -98,8 +107,7 @@ struct ieee_double {
struct ieee_ext {
u_int ext_sign:1;
u_int ext_exp:15;
- u_int ext_lead:1;
- u_int ext_frach:31;
+ u_int ext_frach;
u_int ext_fracl;
};
diff --git a/sys/arch/mips64/include/float.h b/sys/arch/mips64/include/float.h
index f3fe1b0ed1e..dcb397c28e9 100644
--- a/sys/arch/mips64/include/float.h
+++ b/sys/arch/mips64/include/float.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: float.h,v 1.4 2008/07/21 20:50:54 martynas Exp $ */
+/* $OpenBSD: float.h,v 1.5 2008/09/07 20:36:06 martynas Exp $ */
/*
* Copyright (c) 1989, 1993
@@ -47,9 +47,9 @@ __END_DECLS
#define FLT_MANT_DIG 24 /* p */
#define FLT_EPSILON 1.19209290E-07F /* b**(1-p) */
#define FLT_DIG 6 /* floor((p-1)*log10(b))+(b == 10) */
-#define FLT_MIN_EXP -125 /* emin */
+#define FLT_MIN_EXP (-125) /* emin */
#define FLT_MIN 1.17549435E-38F /* b**(emin-1) */
-#define FLT_MIN_10_EXP -37 /* ceil(log10(b**(emin-1))) */
+#define FLT_MIN_10_EXP (-37) /* ceil(log10(b**(emin-1))) */
#define FLT_MAX_EXP 128 /* emax */
#define FLT_MAX 3.40282347E+38F /* (1-b**(-p))*b**emax */
#define FLT_MAX_10_EXP 38 /* floor(log10((1-b**(-p))*b**emax)) */
@@ -57,21 +57,21 @@ __END_DECLS
#define DBL_MANT_DIG 53
#define DBL_EPSILON 2.2204460492503131E-16
#define DBL_DIG 15
-#define DBL_MIN_EXP -1021
+#define DBL_MIN_EXP (-1021)
#define DBL_MIN 2.225073858507201E-308
-#define DBL_MIN_10_EXP -307
+#define DBL_MIN_10_EXP (-307)
#define DBL_MAX_EXP 1024
#define DBL_MAX 1.797693134862316E+308
#define DBL_MAX_10_EXP 308
-#define LDBL_MANT_DIG DBL_MANT_DIG
-#define LDBL_EPSILON DBL_EPSILON
-#define LDBL_DIG DBL_DIG
-#define LDBL_MIN_EXP DBL_MIN_EXP
-#define LDBL_MIN DBL_MIN
-#define LDBL_MIN_10_EXP DBL_MIN_10_EXP
-#define LDBL_MAX_EXP DBL_MAX_EXP
-#define LDBL_MAX DBL_MAX
-#define LDBL_MAX_10_EXP DBL_MAX_10_EXP
+#define LDBL_MANT_DIG 113
+#define LDBL_EPSILON 1.92592994438723585305597794258492732e-34L
+#define LDBL_DIG 33
+#define LDBL_MIN_EXP (-16381)
+#define LDBL_MIN 3.36210314311209350626267781732175260e-4932L
+#define LDBL_MIN_10_EXP (-4931)
+#define LDBL_MAX_EXP 16384
+#define LDBL_MAX 1.18973149535723176508575932662800702e+4932L
+#define LDBL_MAX_10_EXP 4932
#endif /* !_MIPS_FLOAT_H_ */
diff --git a/sys/arch/mips64/include/ieee.h b/sys/arch/mips64/include/ieee.h
index 28b7d8b21d0..a683ec5bc45 100644
--- a/sys/arch/mips64/include/ieee.h
+++ b/sys/arch/mips64/include/ieee.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: ieee.h,v 1.2 2005/08/07 07:29:44 miod Exp $ */
+/* $OpenBSD: ieee.h,v 1.3 2008/09/07 20:36:07 martynas Exp $ */
/*
* Copyright (c) 1992, 1993
@@ -78,11 +78,26 @@
#define SNG_FRACBITS 23
#define DBL_EXPBITS 11
+#define DBL_FRACHBITS 20
+#define DBL_FRACLBITS 32
#define DBL_FRACBITS 52
#define EXT_EXPBITS 15
+#define EXT_FRACHBITS 16
+#define EXT_FRACHMBITS 32
+#define EXT_FRACLMBITS 32
+#define EXT_FRACLBITS 32
#define EXT_FRACBITS 112
+#define EXT_IMPLICIT_NBIT
+
+#define EXT_TO_ARRAY32(p, a) do { \
+ (a)[0] = (uint32_t)(p)->ext_fracl; \
+ (a)[1] = (uint32_t)(p)->ext_fraclm; \
+ (a)[2] = (uint32_t)(p)->ext_frachm; \
+ (a)[3] = (uint32_t)(p)->ext_frach; \
+} while(0)
+
struct ieee_single {
u_int sng_sign:1;
u_int sng_exp:8;
diff --git a/sys/arch/powerpc/include/ieee.h b/sys/arch/powerpc/include/ieee.h
index ffa6bf97811..de0b4f76b05 100644
--- a/sys/arch/powerpc/include/ieee.h
+++ b/sys/arch/powerpc/include/ieee.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: ieee.h,v 1.4 2003/06/02 23:27:53 millert Exp $ */
+/* $OpenBSD: ieee.h,v 1.5 2008/09/07 20:36:07 martynas Exp $ */
/*
* Copyright (c) 1992, 1993
@@ -78,11 +78,10 @@
#define SNG_FRACBITS 23
#define DBL_EXPBITS 11
+#define DBL_FRACHBITS 20
+#define DBL_FRACLBITS 32
#define DBL_FRACBITS 52
-#define EXT_EXPBITS 15
-#define EXT_FRACBITS 112
-
struct ieee_single {
u_int sng_sign:1;
u_int sng_exp:8;
@@ -96,15 +95,6 @@ struct ieee_double {
u_int dbl_fracl;
};
-struct ieee_ext {
- u_int ext_sign:1;
- u_int ext_exp:15;
- u_int ext_frach:16;
- u_int ext_frachm;
- u_int ext_fraclm;
- u_int ext_fracl;
-};
-
/*
* Floats whose exponent is in [1..INFNAN) (of whatever type) are
* `normal'. Floats whose exponent is INFNAN are either Inf or NaN.
@@ -116,12 +106,10 @@ struct ieee_ext {
*/
#define SNG_EXP_INFNAN 255
#define DBL_EXP_INFNAN 2047
-#define EXT_EXP_INFNAN 32767
#if 0
#define SNG_QUIETNAN (1 << 22)
#define DBL_QUIETNAN (1 << 19)
-#define EXT_QUIETNAN (1 << 15)
#endif
/*
@@ -129,4 +117,3 @@ struct ieee_ext {
*/
#define SNG_EXP_BIAS 127
#define DBL_EXP_BIAS 1023
-#define EXT_EXP_BIAS 16383
diff --git a/sys/arch/sh/include/ieee.h b/sys/arch/sh/include/ieee.h
index 7646f85edfc..5de8eec3cf8 100644
--- a/sys/arch/sh/include/ieee.h
+++ b/sys/arch/sh/include/ieee.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: ieee.h,v 1.2 2006/11/10 20:29:36 otto Exp $ */
+/* $OpenBSD: ieee.h,v 1.3 2008/09/07 20:36:07 martynas Exp $ */
/*
* Copyright (c) 1992, 1993
@@ -78,11 +78,10 @@
#define SNG_FRACBITS 23
#define DBL_EXPBITS 11
+#define DBL_FRACHBITS 20
+#define DBL_FRACLBITS 32
#define DBL_FRACBITS 52
-#define EXT_EXPBITS 15
-#define EXT_FRACBITS 112
-
struct ieee_single {
u_int sng_frac:23;
u_int sng_exp:8;
@@ -96,15 +95,6 @@ struct ieee_double {
u_int dbl_sign:1;
};
-struct ieee_ext {
- u_int ext_sign:1;
- u_int ext_exp:15;
- u_int ext_frach:16;
- u_int ext_frachm;
- u_int ext_fraclm;
- u_int ext_fracl;
-};
-
/*
* Floats whose exponent is in [1..INFNAN) (of whatever type) are
* `normal'. Floats whose exponent is INFNAN are either Inf or NaN.
@@ -116,12 +106,10 @@ struct ieee_ext {
*/
#define SNG_EXP_INFNAN 255
#define DBL_EXP_INFNAN 2047
-#define EXT_EXP_INFNAN 32767
#if 0
#define SNG_QUIETNAN (1 << 22)
#define DBL_QUIETNAN (1 << 19)
-#define EXT_QUIETNAN (1 << 15)
#endif
/*
@@ -129,4 +117,3 @@ struct ieee_ext {
*/
#define SNG_EXP_BIAS 127
#define DBL_EXP_BIAS 1023
-#define EXT_EXP_BIAS 16383
diff --git a/sys/arch/sparc/include/ieee.h b/sys/arch/sparc/include/ieee.h
index a66c9cc6f8c..31010a01238 100644
--- a/sys/arch/sparc/include/ieee.h
+++ b/sys/arch/sparc/include/ieee.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: ieee.h,v 1.3 2003/06/02 23:27:54 millert Exp $ */
+/* $OpenBSD: ieee.h,v 1.4 2008/09/07 20:36:07 martynas Exp $ */
/* $NetBSD: ieee.h,v 1.2 1994/11/20 20:53:10 deraadt Exp $ */
/*
@@ -79,6 +79,8 @@
#define SNG_FRACBITS 23
#define DBL_EXPBITS 11
+#define DBL_FRACHBITS 20
+#define DBL_FRACLBITS 32
#define DBL_FRACBITS 52
#ifdef notyet
@@ -87,8 +89,21 @@
#endif
#define EXT_EXPBITS 15
+#define EXT_FRACHBITS 16
+#define EXT_FRACHMBITS 32
+#define EXT_FRACLMBITS 32
+#define EXT_FRACLBITS 32
#define EXT_FRACBITS 112
+#define EXT_IMPLICIT_NBIT
+
+#define EXT_TO_ARRAY32(p, a) do { \
+ (a)[0] = (uint32_t)(p)->ext_fracl; \
+ (a)[1] = (uint32_t)(p)->ext_fraclm; \
+ (a)[2] = (uint32_t)(p)->ext_frachm; \
+ (a)[3] = (uint32_t)(p)->ext_frach; \
+} while(0)
+
struct ieee_single {
u_int sng_sign:1;
u_int sng_exp:8;
diff --git a/sys/arch/sparc64/include/ieee.h b/sys/arch/sparc64/include/ieee.h
index 8b60c991853..5c4b39e0d7e 100644
--- a/sys/arch/sparc64/include/ieee.h
+++ b/sys/arch/sparc64/include/ieee.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: ieee.h,v 1.2 2003/06/02 23:27:56 millert Exp $ */
+/* $OpenBSD: ieee.h,v 1.3 2008/09/07 20:36:07 martynas Exp $ */
/* $NetBSD: ieee.h,v 1.1.1.1 1998/06/20 04:58:51 eeh Exp $ */
/*
@@ -79,6 +79,8 @@
#define SNG_FRACBITS 23
#define DBL_EXPBITS 11
+#define DBL_FRACHBITS 20
+#define DBL_FRACLBITS 32
#define DBL_FRACBITS 52
#ifdef notyet
@@ -87,8 +89,21 @@
#endif
#define EXT_EXPBITS 15
+#define EXT_FRACHBITS 16
+#define EXT_FRACHMBITS 32
+#define EXT_FRACLMBITS 32
+#define EXT_FRACLBITS 32
#define EXT_FRACBITS 112
+#define EXT_IMPLICIT_NBIT
+
+#define EXT_TO_ARRAY32(p, a) do { \
+ (a)[0] = (uint32_t)(p)->ext_fracl; \
+ (a)[1] = (uint32_t)(p)->ext_fraclm; \
+ (a)[2] = (uint32_t)(p)->ext_frachm; \
+ (a)[3] = (uint32_t)(p)->ext_frach; \
+} while(0)
+
struct ieee_single {
u_int sng_sign:1;
u_int sng_exp:8;