From: Bruno Haible Date: Sat, 3 Nov 2007 15:35:53 +0000 (+0100) Subject: New module 'frexp-nolibm'. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=70cc6595b54a72b9b852c325ffa8d2b0952e9da5;p=pspp New module 'frexp-nolibm'. --- diff --git a/ChangeLog b/ChangeLog index 6c965e4108..c83dca1ec1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-11-03 Bruno Haible + + * modules/frexp-nolibm: New file. + * m4/frexp.m4 (gl_FUNC_FREXP_NO_LIBM): New macro. + 2007-11-03 Bruno Haible * lib/vasnprintf.c (VASNPRINTF): Don't assume that snprintf's return diff --git a/m4/frexp.m4 b/m4/frexp.m4 index 8e93322352..524f6d5ca7 100644 --- a/m4/frexp.m4 +++ b/m4/frexp.m4 @@ -1,4 +1,4 @@ -# frexp.m4 serial 3 +# 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,6 +56,37 @@ AC_DEFUN([gl_FUNC_FREXP], 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 + 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], diff --git a/modules/frexp-nolibm b/modules/frexp-nolibm new file mode 100644 index 0000000000..8026d76b79 --- /dev/null +++ b/modules/frexp-nolibm @@ -0,0 +1,26 @@ +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: + + +License: +LGPL + +Maintainer: +Bruno Haible, Paolo Bonzini +