bug-gnulib
[Top][All Lists]
Advanced

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

new module 'frexp-nolibm'


From: Bruno Haible
Subject: new module 'frexp-nolibm'
Date: Sat, 3 Nov 2007 16:35:32 +0100
User-agent: KMail/1.5.4

For the next patch to the *printf facilities, it is necessary to have a frexp()
function that does not require linking with libm. This module provides it.

2007-11-03  Bruno Haible  <address@hidden>

        * modules/frexp-nolibm: New file.
        * m4/frexp.m4 (gl_FUNC_FREXP_NO_LIBM): New macro.

=========================== modules/frexp-nolibm =============================
Description:
frexp() function: split a double into its constituents, without requiring libm.

Files:
lib/frexp.c
m4/frexp.m4

Depends-on:
math
isnan-nolibm

configure.ac:
gl_FUNC_FREXP_NO_LIBM
gl_MATH_MODULE_INDICATOR([frexp])

Makefile.am:

Include:
<math.h>

License:
LGPL

Maintainer:
Bruno Haible, Paolo Bonzini

=============================================================================
*** m4/frexp.m4.orig    2007-11-03 16:32:30.000000000 +0100
--- m4/frexp.m4 2007-11-03 05:16:32.000000000 +0100
***************
*** 1,4 ****
! # frexp.m4 serial 3
  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,
--- 1,4 ----
! # frexp.m4 serial 4
  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,
***************
*** 56,61 ****
--- 56,92 ----
    AC_SUBST([FREXP_LIBM])
  ])
  
+ AC_DEFUN([gl_FUNC_FREXP_NO_LIBM],
+ [
+   AC_REQUIRE([gl_MATH_H_DEFAULTS])
+   AC_CACHE_CHECK([whether frexp() can be used without linking with libm],
+     [gl_cv_func_frexp_no_libm],
+     [
+       AC_TRY_LINK([#include <math.h>
+                    double x;],
+                   [int e; return frexp (x, &e) > 0;],
+         [gl_cv_func_frexp_no_libm=yes],
+         [gl_cv_func_frexp_no_libm=no])
+     ])
+   if test $gl_cv_func_frexp_no_libm = yes; then
+     gl_FUNC_FREXP_WORKS
+     case "$gl_cv_func_frexp_works" in
+       *yes) gl_func_frexp_no_libm=yes ;;
+       *)    gl_func_frexp_no_libm=no; REPLACE_FREXP=1 ;;
+     esac
+   else
+     gl_func_frexp_no_libm=no
+     dnl Set REPLACE_FREXP here because the system may have frexp in libm.
+     REPLACE_FREXP=1
+   fi
+   if test $gl_func_frexp_no_libm = yes; then
+     AC_DEFINE([HAVE_FREXP_IN_LIBC], 1,
+       [Define if the frexp() function is available in libc.])
+   else
+     AC_LIBOBJ([frexp])
+   fi
+ ])
+ 
  dnl Test whether frexp() works also on denormalized numbers (this fails e.g. 
on
  dnl NetBSD 3.0) and on infinite numbers (this fails e.g. on IRIX 6.5).
  AC_DEFUN([gl_FUNC_FREXP_WORKS],





reply via email to

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