summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruno Haible <bruno@clisp.org>2007-05-19 20:21:41 +0000
committerBruno Haible <bruno@clisp.org>2007-05-19 20:21:41 +0000
commit71f9eb575a47dac697e2e161d026da473db6addf (patch)
treead4bc606340072405871decbbbbfe3d2940fc5f3
parent4228bc8a5ec1846f6a12c81a46e3dd864e027196 (diff)
downloadgnulib-71f9eb575a47dac697e2e161d026da473db6addf.tar.gz
New module 'float'.
-rw-r--r--ChangeLog13
-rw-r--r--doc/headers/float.texi6
-rw-r--r--lib/float_.h59
-rw-r--r--m4/float_h.m421
-rw-r--r--modules/float36
-rw-r--r--modules/isnanl1
-rw-r--r--modules/isnanl-nolibm1
-rw-r--r--modules/mathl1
-rw-r--r--modules/printf-frexpl1
-rw-r--r--modules/signbit1
-rw-r--r--modules/vasnprintf1
11 files changed, 140 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index b36cd2ba69..167b468126 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2007-05-19 Bruno Haible <bruno@clisp.org>
+
+ * lib/float_.h: New file.
+ * m4/float_h.m4: New file.
+ * modules/float: New file.
+ * modules/isnanl (Dependencies): Add float.
+ * modules/isnanl-nolibm (Dependencies): Likewise.
+ * modules/mathl (Dependencies): Likewise.
+ * modules/printf-frexpl (Dependencies): Likewise.
+ * modules/signbit (Dependencies): Likewise.
+ * modules/vasnprintf (Dependencies): Likewise.
+ * doc/headers/float.texi: Update.
+
2007-05-19 Jim Meyering <jim@meyering.net>
* lib/utimens.c (gl_futimens): Rename from futimens,
diff --git a/doc/headers/float.texi b/doc/headers/float.texi
index 4b26dc3081..72a2afc81e 100644
--- a/doc/headers/float.texi
+++ b/doc/headers/float.texi
@@ -3,10 +3,14 @@
POSIX specification: @url{http://www.opengroup.org/susv3xbd/float.h.html}
-Gnulib module: ---
+Gnulib module: float
Portability problems fixed by Gnulib:
@itemize
+@item
+The values of @code{LDBL_*} macros are incorrect on some platforms:
+On BeOS, they are the same as the values of the @code{DBL_*} macros, although
+@samp{long double} is a larger type than @samp{double}.
@end itemize
Portability problems not fixed by Gnulib:
diff --git a/lib/float_.h b/lib/float_.h
new file mode 100644
index 0000000000..78abba7eeb
--- /dev/null
+++ b/lib/float_.h
@@ -0,0 +1,59 @@
+/* A correct <float.h>.
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _GL_FLOAT_H
+#define _GL_FLOAT_H
+
+#if @HAVE_INCLUDE_NEXT@
+# include_next <float.h>
+#else
+# include @ABSOLUTE_FLOAT_H@
+#endif
+
+/* 'long double' properties. */
+#if defined __i386__ && defined __BEOS__
+/* Number of mantissa units, in base FLT_RADIX. */
+# undef LDBL_MANT_DIG
+# define LDBL_MANT_DIG 64
+/* Number of decimal digits that sufficient for representing a number. */
+# undef LDBL_DIG
+# define LDBL_DIG 18
+/* x-1 where x is the smallest representable number > 1. */
+# undef LDBL_EPSILON
+# define LDBL_EPSILON 1.0842021724855044340E-19L
+/* Minimum e such that FLT_RADIX^(e-1) is a normalized number. */
+# undef LDBL_MIN_EXP
+# define LDBL_MIN_EXP (-16381)
+/* Maximum e such that FLT_RADIX^(e-1) is a representable finite number. */
+# undef LDBL_MAX_EXP
+# define LDBL_MAX_EXP 16384
+/* Minimum positive normalized number. */
+# undef LDBL_MIN
+# define LDBL_MIN 3.3621031431120935063E-4932L
+/* Maximum representable finite number. */
+# undef LDBL_MAX
+# define LDBL_MAX 1.1897314953572317650E+4932L
+/* Minimum e such that 10^e is in the range of normalized numbers. */
+# undef LDBL_MIN_10_EXP
+# define LDBL_MIN_10_EXP (-4931)
+/* Maximum e such that 10^e is in the range of representable finite numbers. */
+# undef LDBL_MAX_10_EXP
+# define LDBL_MAX_10_EXP 4932
+#endif
+
+#endif /* _GL_FLOAT_H */
diff --git a/m4/float_h.m4 b/m4/float_h.m4
new file mode 100644
index 0000000000..36a07dcb1c
--- /dev/null
+++ b/m4/float_h.m4
@@ -0,0 +1,21 @@
+# float_h.m4 serial 1
+dnl Copyright (C) 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FLOAT_H],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ FLOAT_H=
+ case "$host_os" in
+ beos*)
+ FLOAT_H=float.h
+ gl_ABSOLUTE_HEADER([float.h])
+ ABSOLUTE_FLOAT_H=\"$gl_cv_absolute_float_h\"
+ AC_SUBST([ABSOLUTE_FLOAT_H])
+ ;;
+ esac
+ AC_SUBST([FLOAT_H])
+])
diff --git a/modules/float b/modules/float
new file mode 100644
index 0000000000..9dce2b4d6f
--- /dev/null
+++ b/modules/float
@@ -0,0 +1,36 @@
+Description:
+A correct <float.h>.
+
+Files:
+lib/float_.h
+m4/float_h.m4
+
+Depends-on:
+absolute-header
+
+configure.ac:
+gl_FLOAT_H
+
+Makefile.am:
+BUILT_SOURCES += $(FLOAT_H)
+
+# We need the following in order to create <float.h> when the system
+# doesn't have one that works with the given compiler.
+float.h: float_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''ABSOLUTE_FLOAT_H''@|$(ABSOLUTE_FLOAT_H)|g' \
+ -e 's/@''HAVE_INCLUDE_NEXT''@/$(HAVE_INCLUDE_NEXT)/g' \
+ < $(srcdir)/float_.h; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += float.h float.h-t
+
+Include:
+<float.h>
+
+License:
+LGPL
+
+Maintainer:
+all
diff --git a/modules/isnanl b/modules/isnanl
index 86907afd83..026981f274 100644
--- a/modules/isnanl
+++ b/modules/isnanl
@@ -9,6 +9,7 @@ lib/float+.h
m4/isnanl.m4
Depends-on:
+float
fpieee
configure.ac:
diff --git a/modules/isnanl-nolibm b/modules/isnanl-nolibm
index 1b753a567d..9250fef0ea 100644
--- a/modules/isnanl-nolibm
+++ b/modules/isnanl-nolibm
@@ -9,6 +9,7 @@ lib/float+.h
m4/isnanl.m4
Depends-on:
+float
fpieee
configure.ac:
diff --git a/modules/mathl b/modules/mathl
index d9c1b13b3b..892eea4417 100644
--- a/modules/mathl
+++ b/modules/mathl
@@ -19,6 +19,7 @@ lib/trigl.h
m4/mathl.m4
Depends-on:
+float
math
frexpl
isnanl
diff --git a/modules/printf-frexpl b/modules/printf-frexpl
index c50c4c7578..c23550e1b6 100644
--- a/modules/printf-frexpl
+++ b/modules/printf-frexpl
@@ -11,6 +11,7 @@ m4/frexpl.m4
m4/ldexpl.m4
Depends-on:
+float
math
fpucw
diff --git a/modules/signbit b/modules/signbit
index 10c1840b0a..57ba154563 100644
--- a/modules/signbit
+++ b/modules/signbit
@@ -9,6 +9,7 @@ lib/float+.h
m4/signbit.m4
Depends-on:
+float
math
isnanf-nolibm
isnan-nolibm
diff --git a/modules/vasnprintf b/modules/vasnprintf
index ce40449a84..0a5aabc3af 100644
--- a/modules/vasnprintf
+++ b/modules/vasnprintf
@@ -21,6 +21,7 @@ m4/vasnprintf.m4
Depends-on:
alloca-opt
+float
stdint
xsize