Mercurial > hg > octave-shane > gnulib-hg
diff m4/remainderf.m4 @ 16413:3a9564d7a3a5
New module 'remainderf'.
* lib/math.in.h (remainderf): New declaration.
* lib/remainderf.c: New file.
* m4/remainderf.m4: New file.
* modules/remainderf: New file.
* m4/math_h.m4 (gl_MATH_H): Test whether remainderf is declared.
(gl_MATH_H_DEFAULTS): Initialize GNULIB_REMAINDERF, HAVE_REMAINDERF.
* modules/math (Makefile.am): Substitute GNULIB_REMAINDERF,
HAVE_REMAINDERF.
* doc/posix-functions/remainderf.texi: Mention the new module.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Sat, 25 Feb 2012 19:41:33 +0100 |
parents | |
children | e04c5a489c44 |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/m4/remainderf.m4 @@ -0,0 +1,61 @@ +# remainderf.m4 serial 1 +dnl Copyright (C) 2012 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_FUNC_REMAINDERF], +[ + AC_REQUIRE([gl_MATH_H_DEFAULTS]) + AC_REQUIRE([gl_FUNC_REMAINDER]) + + dnl Test whether remainderf() exists. Assume that remainderf(), if it exists, is + dnl defined in the same library as remainder(). + save_LIBS="$LIBS" + LIBS="$LIBS $REMAINDER_LIBM" + AC_CACHE_CHECK([for remainderf], + [gl_cv_func_remainderf], + [ + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#ifndef __NO_MATH_INLINES + # define __NO_MATH_INLINES 1 /* for glibc */ + #endif + #include <math.h> + float (*funcptr) (float, float) = remainderf; + float x; + float y;]], + [[return funcptr (x, y) > 1 + || remainderf (x, y) > 1;]])], + [gl_cv_func_remainderf=yes], + [gl_cv_func_remainderf=no]) + ]) + LIBS="$save_LIBS" + if test $gl_cv_func_remainderf = yes; then + REMAINDERF_LIBM="$REMAINDER_LIBM" + else + HAVE_REMAINDERF=0 + dnl Find libraries needed to link lib/remainderf.c. + if test $gl_cv_func_remainder_no_libm = yes \ + || test $gl_cv_func_remainder_in_libm = yes; then + AC_DEFINE([HAVE_REMAINDER], [1], + [Define to 1 if the remainder() function is available in libc or libm.]) + REMAINDERF_LIBM="$REMAINDER_LIBM" + else + AC_REQUIRE([gl_FUNC_ROUNDF]) + AC_REQUIRE([gl_FUNC_FMAF]) + REMAINDERF_LIBM= + dnl Append $ROUNDF_LIBM to REMAINDERF_LIBM, avoiding gratuitous duplicates. + case " $REMAINDERF_LIBM " in + *" $ROUNDF_LIBM "*) ;; + *) REMAINDERF_LIBM="$REMAINDERF_LIBM $ROUNDF_LIBM" ;; + esac + dnl Append $FMAF_LIBM to REMAINDERF_LIBM, avoiding gratuitous duplicates. + case " $REMAINDERF_LIBM " in + *" $FMAF_LIBM "*) ;; + *) REMAINDERF_LIBM="$REMAINDERF_LIBM $FMAF_LIBM" ;; + esac + fi + fi + AC_SUBST([REMAINDERF_LIBM]) +])