From: Bruno Haible Date: Sat, 19 May 2007 20:21:41 +0000 (+0000) Subject: New module 'float'. X-Git-Tag: cvs-readonly~375 X-Git-Url: http://erislabs.org.uk/gitweb/?a=commitdiff_plain;h=71f9eb575a47dac697e2e161d026da473db6addf;p=gnulib.git New module 'float'. --- diff --git a/ChangeLog b/ChangeLog index b36cd2ba6..167b46812 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2007-05-19 Bruno Haible + + * 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 * lib/utimens.c (gl_futimens): Rename from futimens, diff --git a/doc/headers/float.texi b/doc/headers/float.texi index 4b26dc308..72a2afc81 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 000000000..78abba7ee --- /dev/null +++ b/lib/float_.h @@ -0,0 +1,59 @@ +/* A correct . + + 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 +#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 000000000..36a07dcb1 --- /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 000000000..9dce2b4d6 --- /dev/null +++ b/modules/float @@ -0,0 +1,36 @@ +Description: +A correct . + +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 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: + + +License: +LGPL + +Maintainer: +all diff --git a/modules/isnanl b/modules/isnanl index 86907afd8..026981f27 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 1b753a567..9250fef0e 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 d9c1b13b3..892eea441 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 c50c4c757..c23550e1b 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 10c1840b0..57ba15456 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 ce40449a8..0a5aabc3a 100644 --- a/modules/vasnprintf +++ b/modules/vasnprintf @@ -21,6 +21,7 @@ m4/vasnprintf.m4 Depends-on: alloca-opt +float stdint xsize