math_h.m4 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. # math_h.m4 serial 21
  2. dnl Copyright (C) 2007-2010 Free Software Foundation, Inc.
  3. dnl This file is free software; the Free Software Foundation
  4. dnl gives unlimited permission to copy and/or distribute it,
  5. dnl with or without modifications, as long as this notice is preserved.
  6. AC_DEFUN([gl_MATH_H],
  7. [
  8. AC_REQUIRE([gl_MATH_H_DEFAULTS])
  9. gl_CHECK_NEXT_HEADERS([math.h])
  10. AC_REQUIRE([AC_C_INLINE])
  11. AC_CACHE_CHECK([whether NAN macro works], [gl_cv_header_math_nan_works],
  12. [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <math.h>]],
  13. [[/* Solaris 10 has a broken definition of NAN. Other platforms
  14. fail to provide NAN, or provide it only in C99 mode; this
  15. test only needs to fail when NAN is provided but wrong. */
  16. float f = 1.0f;
  17. #ifdef NAN
  18. f = NAN;
  19. #endif
  20. return f == 0;]])],
  21. [gl_cv_header_math_nan_works=yes],
  22. [gl_cv_header_math_nan_works=no])])
  23. if test $gl_cv_header_math_nan_works = no; then
  24. REPLACE_NAN=1
  25. fi
  26. AC_CACHE_CHECK([whether HUGE_VAL works], [gl_cv_header_math_huge_val_works],
  27. [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <math.h>]],
  28. [[/* Solaris 10 has a broken definition of HUGE_VAL. */
  29. double d = HUGE_VAL;
  30. return d == 0;]])],
  31. [gl_cv_header_math_huge_val_works=yes],
  32. [gl_cv_header_math_huge_val_works=no])])
  33. if test $gl_cv_header_math_huge_val_works = no; then
  34. REPLACE_HUGE_VAL=1
  35. fi
  36. dnl Check for declarations of anything we want to poison if the
  37. dnl corresponding gnulib module is not in use.
  38. gl_WARN_ON_USE_PREPARE([[#include <math.h>
  39. ]], [acosl asinl atanl ceilf ceill cosl expl floorf floorl frexpl
  40. ldexpl logb logl round roundf roundl sinl sqrtl tanl trunc truncf truncl])
  41. ])
  42. AC_DEFUN([gl_MATH_MODULE_INDICATOR],
  43. [
  44. dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
  45. AC_REQUIRE([gl_MATH_H_DEFAULTS])
  46. gl_MODULE_INDICATOR_SET_VARIABLE([$1])
  47. dnl Define it also as a C macro, for the benefit of the unit tests.
  48. gl_MODULE_INDICATOR_FOR_TESTS([$1])
  49. ])
  50. AC_DEFUN([gl_MATH_H_DEFAULTS],
  51. [
  52. GNULIB_ACOSL=0; AC_SUBST([GNULIB_ACOSL])
  53. GNULIB_ASINL=0; AC_SUBST([GNULIB_ASINL])
  54. GNULIB_ATANL=0; AC_SUBST([GNULIB_ATANL])
  55. GNULIB_CEILF=0; AC_SUBST([GNULIB_CEILF])
  56. GNULIB_CEILL=0; AC_SUBST([GNULIB_CEILL])
  57. GNULIB_COSL=0; AC_SUBST([GNULIB_COSL])
  58. GNULIB_EXPL=0; AC_SUBST([GNULIB_EXPL])
  59. GNULIB_FLOORF=0; AC_SUBST([GNULIB_FLOORF])
  60. GNULIB_FLOORL=0; AC_SUBST([GNULIB_FLOORL])
  61. GNULIB_FREXP=0; AC_SUBST([GNULIB_FREXP])
  62. GNULIB_FREXPL=0; AC_SUBST([GNULIB_FREXPL])
  63. GNULIB_ISFINITE=0; AC_SUBST([GNULIB_ISFINITE])
  64. GNULIB_ISINF=0; AC_SUBST([GNULIB_ISINF])
  65. GNULIB_ISNAN=0; AC_SUBST([GNULIB_ISNAN])
  66. GNULIB_ISNANF=0; AC_SUBST([GNULIB_ISNANF])
  67. GNULIB_ISNAND=0; AC_SUBST([GNULIB_ISNAND])
  68. GNULIB_ISNANL=0; AC_SUBST([GNULIB_ISNANL])
  69. GNULIB_LDEXPL=0; AC_SUBST([GNULIB_LDEXPL])
  70. GNULIB_LOGB=0; AC_SUBST([GNULIB_LOGB])
  71. GNULIB_LOGL=0; AC_SUBST([GNULIB_LOGL])
  72. GNULIB_ROUND=0; AC_SUBST([GNULIB_ROUND])
  73. GNULIB_ROUNDF=0; AC_SUBST([GNULIB_ROUNDF])
  74. GNULIB_ROUNDL=0; AC_SUBST([GNULIB_ROUNDL])
  75. GNULIB_SIGNBIT=0; AC_SUBST([GNULIB_SIGNBIT])
  76. GNULIB_SINL=0; AC_SUBST([GNULIB_SINL])
  77. GNULIB_SQRTL=0; AC_SUBST([GNULIB_SQRTL])
  78. GNULIB_TANL=0; AC_SUBST([GNULIB_TANL])
  79. GNULIB_TRUNC=0; AC_SUBST([GNULIB_TRUNC])
  80. GNULIB_TRUNCF=0; AC_SUBST([GNULIB_TRUNCF])
  81. GNULIB_TRUNCL=0; AC_SUBST([GNULIB_TRUNCL])
  82. dnl Assume proper GNU behavior unless another module says otherwise.
  83. HAVE_ACOSL=1; AC_SUBST([HAVE_ACOSL])
  84. HAVE_ASINL=1; AC_SUBST([HAVE_ASINL])
  85. HAVE_ATANL=1; AC_SUBST([HAVE_ATANL])
  86. HAVE_COSL=1; AC_SUBST([HAVE_COSL])
  87. HAVE_EXPL=1; AC_SUBST([HAVE_EXPL])
  88. HAVE_ISNANF=1; AC_SUBST([HAVE_ISNANF])
  89. HAVE_ISNAND=1; AC_SUBST([HAVE_ISNAND])
  90. HAVE_ISNANL=1; AC_SUBST([HAVE_ISNANL])
  91. HAVE_LOGL=1; AC_SUBST([HAVE_LOGL])
  92. HAVE_SINL=1; AC_SUBST([HAVE_SINL])
  93. HAVE_SQRTL=1; AC_SUBST([HAVE_SQRTL])
  94. HAVE_TANL=1; AC_SUBST([HAVE_TANL])
  95. HAVE_DECL_ACOSL=1; AC_SUBST([HAVE_DECL_ACOSL])
  96. HAVE_DECL_ASINL=1; AC_SUBST([HAVE_DECL_ASINL])
  97. HAVE_DECL_ATANL=1; AC_SUBST([HAVE_DECL_ATANL])
  98. HAVE_DECL_CEILF=1; AC_SUBST([HAVE_DECL_CEILF])
  99. HAVE_DECL_CEILL=1; AC_SUBST([HAVE_DECL_CEILL])
  100. HAVE_DECL_COSL=1; AC_SUBST([HAVE_DECL_COSL])
  101. HAVE_DECL_EXPL=1; AC_SUBST([HAVE_DECL_EXPL])
  102. HAVE_DECL_FLOORF=1; AC_SUBST([HAVE_DECL_FLOORF])
  103. HAVE_DECL_FLOORL=1; AC_SUBST([HAVE_DECL_FLOORL])
  104. HAVE_DECL_FREXPL=1; AC_SUBST([HAVE_DECL_FREXPL])
  105. HAVE_DECL_LDEXPL=1; AC_SUBST([HAVE_DECL_LDEXPL])
  106. HAVE_DECL_LOGB=1; AC_SUBST([HAVE_DECL_LOGB])
  107. HAVE_DECL_LOGL=1; AC_SUBST([HAVE_DECL_LOGL])
  108. HAVE_DECL_ROUND=1; AC_SUBST([HAVE_DECL_ROUND])
  109. HAVE_DECL_ROUNDF=1; AC_SUBST([HAVE_DECL_ROUNDF])
  110. HAVE_DECL_ROUNDL=1; AC_SUBST([HAVE_DECL_ROUNDL])
  111. HAVE_DECL_SINL=1; AC_SUBST([HAVE_DECL_SINL])
  112. HAVE_DECL_SQRTL=1; AC_SUBST([HAVE_DECL_SQRTL])
  113. HAVE_DECL_TANL=1; AC_SUBST([HAVE_DECL_TANL])
  114. HAVE_DECL_TRUNC=1; AC_SUBST([HAVE_DECL_TRUNC])
  115. HAVE_DECL_TRUNCF=1; AC_SUBST([HAVE_DECL_TRUNCF])
  116. HAVE_DECL_TRUNCL=1; AC_SUBST([HAVE_DECL_TRUNCL])
  117. REPLACE_CEILF=0; AC_SUBST([REPLACE_CEILF])
  118. REPLACE_CEILL=0; AC_SUBST([REPLACE_CEILL])
  119. REPLACE_FLOORF=0; AC_SUBST([REPLACE_FLOORF])
  120. REPLACE_FLOORL=0; AC_SUBST([REPLACE_FLOORL])
  121. REPLACE_FREXP=0; AC_SUBST([REPLACE_FREXP])
  122. REPLACE_FREXPL=0; AC_SUBST([REPLACE_FREXPL])
  123. REPLACE_HUGE_VAL=0; AC_SUBST([REPLACE_HUGE_VAL])
  124. REPLACE_ISFINITE=0; AC_SUBST([REPLACE_ISFINITE])
  125. REPLACE_ISINF=0; AC_SUBST([REPLACE_ISINF])
  126. REPLACE_ISNAN=0; AC_SUBST([REPLACE_ISNAN])
  127. REPLACE_LDEXPL=0; AC_SUBST([REPLACE_LDEXPL])
  128. REPLACE_NAN=0; AC_SUBST([REPLACE_NAN])
  129. REPLACE_ROUND=0; AC_SUBST([REPLACE_ROUND])
  130. REPLACE_ROUNDF=0; AC_SUBST([REPLACE_ROUNDF])
  131. REPLACE_ROUNDL=0; AC_SUBST([REPLACE_ROUNDL])
  132. REPLACE_SIGNBIT=0; AC_SUBST([REPLACE_SIGNBIT])
  133. REPLACE_SIGNBIT_USING_GCC=0; AC_SUBST([REPLACE_SIGNBIT_USING_GCC])
  134. REPLACE_TRUNCL=0; AC_SUBST([REPLACE_TRUNCL])
  135. ])