changeset 8843:dd750f34c273

New module 'float'.
author Bruno Haible <bruno@clisp.org>
date Sat, 19 May 2007 20:21:41 +0000
parents 7605663b153e
children 3b533f98ba19
files ChangeLog doc/headers/float.texi lib/float_.h m4/float_h.m4 modules/float modules/isnanl modules/isnanl-nolibm modules/mathl modules/printf-frexpl modules/signbit modules/vasnprintf
diffstat 11 files changed, 140 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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,
--- 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:
new file mode 100644
--- /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 */
new file mode 100644
--- /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])
+])
new file mode 100644
--- /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
--- a/modules/isnanl
+++ b/modules/isnanl
@@ -9,6 +9,7 @@
 m4/isnanl.m4
 
 Depends-on:
+float
 fpieee
 
 configure.ac:
--- a/modules/isnanl-nolibm
+++ b/modules/isnanl-nolibm
@@ -9,6 +9,7 @@
 m4/isnanl.m4
 
 Depends-on:
+float
 fpieee
 
 configure.ac:
--- a/modules/mathl
+++ b/modules/mathl
@@ -19,6 +19,7 @@
 m4/mathl.m4
 
 Depends-on:
+float
 math
 frexpl
 isnanl
--- a/modules/printf-frexpl
+++ b/modules/printf-frexpl
@@ -11,6 +11,7 @@
 m4/ldexpl.m4
 
 Depends-on:
+float
 math
 fpucw
 
--- a/modules/signbit
+++ b/modules/signbit
@@ -9,6 +9,7 @@
 m4/signbit.m4
 
 Depends-on:
+float
 math
 isnanf-nolibm
 isnan-nolibm
--- a/modules/vasnprintf
+++ b/modules/vasnprintf
@@ -21,6 +21,7 @@
 
 Depends-on:
 alloca-opt
+float
 stdint
 xsize