bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

new module 'float'


From: Bruno Haible
Subject: new module 'float'
Date: Sat, 19 May 2007 22:21:49 +0200
User-agent: KMail/1.5.4

<float.h> exists on all systems. But on BeOS the LDBL_* macros are wrong,
which causes gnulib's isnanl() to consider some finite values as being NaN,
which in turn breaks the *printf routines.

This works around it.

2007-05-19  Bruno Haible  <address@hidden>

        * 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.

============================ lib/float_.h ==============================
/* 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 */
============================ m4/float_h.m4 =============================
# 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])
])
============================ modules/float =============================
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 address@hidden $@
        { 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; \
        } > address@hidden
        mv address@hidden $@
MOSTLYCLEANFILES += float.h float.h-t

Include:
<float.h>

License:
LGPL

Maintainer:
all
========================================================================
*** modules/isnanl      6 Apr 2007 14:36:56 -0000       1.5
--- modules/isnanl      19 May 2007 20:19:40 -0000
***************
*** 9,14 ****
--- 9,15 ----
  m4/isnanl.m4
  
  Depends-on:
+ float
  fpieee
  
  configure.ac:
*** modules/isnanl-nolibm       6 Apr 2007 14:36:56 -0000       1.6
--- modules/isnanl-nolibm       19 May 2007 20:19:40 -0000
***************
*** 9,14 ****
--- 9,15 ----
  m4/isnanl.m4
  
  Depends-on:
+ float
  fpieee
  
  configure.ac:
*** modules/mathl       30 Mar 2007 00:13:24 -0000      1.9
--- modules/mathl       19 May 2007 20:19:40 -0000
***************
*** 19,24 ****
--- 19,25 ----
  m4/mathl.m4
  
  Depends-on:
+ float
  math
  frexpl
  isnanl
*** modules/printf-frexpl       18 May 2007 17:27:31 -0000      1.8
--- modules/printf-frexpl       19 May 2007 20:19:40 -0000
***************
*** 11,16 ****
--- 11,17 ----
  m4/ldexpl.m4
  
  Depends-on:
+ float
  math
  fpucw
  
*** modules/signbit     6 Apr 2007 20:55:44 -0000       1.1
--- modules/signbit     19 May 2007 20:19:41 -0000
***************
*** 9,14 ****
--- 9,15 ----
  m4/signbit.m4
  
  Depends-on:
+ float
  math
  isnanf-nolibm
  isnan-nolibm
*** modules/vasnprintf  18 May 2007 18:26:03 -0000      1.16
--- modules/vasnprintf  19 May 2007 20:19:41 -0000
***************
*** 21,26 ****
--- 21,27 ----
  
  Depends-on:
  alloca-opt
+ float
  stdint
  xsize
  





reply via email to

[Prev in Thread] Current Thread [Next in Thread]