+
+dnl Test whether remainderl() works.
+dnl It produces completely wrong values on OpenBSD 5.1/SPARC.
+AC_DEFUN([gl_FUNC_REMAINDERL_WORKS],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CACHE_CHECK([whether remainderl works], [gl_cv_func_remainderl_works],
+ [
+ AC_RUN_IFELSE(
+ [AC_LANG_SOURCE([[
+#ifndef __NO_MATH_INLINES
+# define __NO_MATH_INLINES 1 /* for glibc */
+#endif
+#include <math.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+long double remainderl (long double, long double);
+volatile long double x;
+volatile long double y;
+long double z;
+int main ()
+{
+ /* This test fails on OpenBSD 5.1/SPARC. */
+ x = 9.245907126L;
+ y = 3.141592654L;
+ z = remainderl (x, y);
+ if (z >= 0.0L)
+ return 1;
+ return 0;
+}
+]])],
+ [gl_cv_func_remainderl_works=yes],
+ [gl_cv_func_remainderl_works=no],
+ [case "$host_os" in
+ openbsd*) gl_cv_func_remainderl_works="guessing no";;
+ *) gl_cv_func_remainderl_works="guessing yes";;
+ esac
+ ])
+ ])
+])