Home | History | Annotate | Line # | Download | only in m4
      1  1.1.1.2  christos # math_h.m4 serial 125
      2  1.1.1.2  christos dnl Copyright (C) 2007-2022 Free Software Foundation, Inc.
      3      1.1  christos dnl This file is free software; the Free Software Foundation
      4      1.1  christos dnl gives unlimited permission to copy and/or distribute it,
      5      1.1  christos dnl with or without modifications, as long as this notice is preserved.
      6      1.1  christos 
      7  1.1.1.2  christos AC_DEFUN_ONCE([gl_MATH_H],
      8      1.1  christos [
      9      1.1  christos   AC_REQUIRE([gl_MATH_H_DEFAULTS])
     10      1.1  christos   gl_CHECK_NEXT_HEADERS([math.h])
     11      1.1  christos 
     12      1.1  christos   AC_CACHE_CHECK([whether NAN macro works], [gl_cv_header_math_nan_works],
     13  1.1.1.2  christos     [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <math.h>]],
     14      1.1  christos       [[/* Solaris 10 has a broken definition of NAN.  Other platforms
     15      1.1  christos         fail to provide NAN, or provide it only in C99 mode; this
     16      1.1  christos         test only needs to fail when NAN is provided but wrong.  */
     17      1.1  christos          float f = 1.0f;
     18      1.1  christos #ifdef NAN
     19      1.1  christos          f = NAN;
     20      1.1  christos #endif
     21      1.1  christos          return f == 0;]])],
     22      1.1  christos       [gl_cv_header_math_nan_works=yes],
     23      1.1  christos       [gl_cv_header_math_nan_works=no])])
     24      1.1  christos   if test $gl_cv_header_math_nan_works = no; then
     25      1.1  christos     REPLACE_NAN=1
     26      1.1  christos   fi
     27      1.1  christos   AC_CACHE_CHECK([whether HUGE_VAL works], [gl_cv_header_math_huge_val_works],
     28  1.1.1.2  christos     [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <math.h>]],
     29      1.1  christos       [[/* Solaris 10 has a broken definition of HUGE_VAL.  */
     30      1.1  christos          double d = HUGE_VAL;
     31      1.1  christos          return d == 0;]])],
     32      1.1  christos       [gl_cv_header_math_huge_val_works=yes],
     33      1.1  christos       [gl_cv_header_math_huge_val_works=no])])
     34      1.1  christos   if test $gl_cv_header_math_huge_val_works = no; then
     35      1.1  christos     REPLACE_HUGE_VAL=1
     36      1.1  christos   fi
     37      1.1  christos 
     38      1.1  christos   dnl Check for declarations of anything we want to poison if the
     39      1.1  christos   dnl corresponding gnulib module is not in use.
     40      1.1  christos   gl_WARN_ON_USE_PREPARE([[#include <math.h>]],
     41      1.1  christos     [acosf acosl asinf asinl atanf atanl
     42      1.1  christos      cbrt cbrtf cbrtl ceilf ceill copysign copysignf copysignl cosf cosl coshf
     43      1.1  christos      expf expl exp2 exp2f exp2l expm1 expm1f expm1l
     44      1.1  christos      fabsf fabsl floorf floorl fma fmaf fmal
     45      1.1  christos      fmod fmodf fmodl frexpf frexpl hypotf hypotl
     46      1.1  christos      ilogb ilogbf ilogbl
     47      1.1  christos      ldexpf ldexpl
     48      1.1  christos      log logf logl log10 log10f log10l log1p log1pf log1pl log2 log2f log2l
     49      1.1  christos      logb logbf logbl
     50      1.1  christos      modf modff modfl powf
     51      1.1  christos      remainder remainderf remainderl
     52      1.1  christos      rint rintf rintl round roundf roundl sinf sinl sinhf sqrtf sqrtl
     53      1.1  christos      tanf tanl tanhf trunc truncf truncl])
     54      1.1  christos ])
     55      1.1  christos 
     56  1.1.1.2  christos # gl_MATH_MODULE_INDICATOR([modulename])
     57  1.1.1.2  christos # sets the shell variable that indicates the presence of the given module
     58  1.1.1.2  christos # to a C preprocessor expression that will evaluate to 1.
     59  1.1.1.2  christos # This macro invocation must not occur in macros that are AC_REQUIREd.
     60      1.1  christos AC_DEFUN([gl_MATH_MODULE_INDICATOR],
     61      1.1  christos [
     62  1.1.1.2  christos   dnl Ensure to expand the default settings once only.
     63  1.1.1.2  christos   gl_MATH_H_REQUIRE_DEFAULTS
     64      1.1  christos   gl_MODULE_INDICATOR_SET_VARIABLE([$1])
     65      1.1  christos   dnl Define it also as a C macro, for the benefit of the unit tests.
     66      1.1  christos   gl_MODULE_INDICATOR_FOR_TESTS([$1])
     67      1.1  christos ])
     68      1.1  christos 
     69  1.1.1.2  christos # Initializes the default values for AC_SUBSTed shell variables.
     70  1.1.1.2  christos # This macro must not be AC_REQUIREd.  It must only be invoked, and only
     71  1.1.1.2  christos # outside of macros or in macros that are not AC_REQUIREd.
     72  1.1.1.2  christos AC_DEFUN([gl_MATH_H_REQUIRE_DEFAULTS],
     73  1.1.1.2  christos [
     74  1.1.1.2  christos   m4_defun(GL_MODULE_INDICATOR_PREFIX[_MATH_H_MODULE_INDICATOR_DEFAULTS], [
     75  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ACOSF])
     76  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ACOSL])
     77  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ASINF])
     78  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ASINL])
     79  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ATANF])
     80  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ATANL])
     81  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ATAN2F])
     82  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CBRT])
     83  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CBRTF])
     84  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CBRTL])
     85  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CEIL])
     86  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CEILF])
     87  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CEILL])
     88  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_COPYSIGN])
     89  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_COPYSIGNF])
     90  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_COPYSIGNL])
     91  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_COSF])
     92  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_COSL])
     93  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_COSHF])
     94  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXPF])
     95  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXPL])
     96  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXP2])
     97  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXP2F])
     98  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXP2L])
     99  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXPM1])
    100  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXPM1F])
    101  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXPM1L])
    102  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FABSF])
    103  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FABSL])
    104  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FLOOR])
    105  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FLOORF])
    106  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FLOORL])
    107  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FMA])
    108  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FMAF])
    109  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FMAL])
    110  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FMOD])
    111  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FMODF])
    112  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FMODL])
    113  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FREXPF])
    114  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FREXP])
    115  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FREXPL])
    116  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_HYPOT])
    117  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_HYPOTF])
    118  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_HYPOTL])
    119  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ILOGB])
    120  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ILOGBF])
    121  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ILOGBL])
    122  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISFINITE])
    123  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISINF])
    124  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISNAN])
    125  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISNANF])
    126  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISNAND])
    127  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISNANL])
    128  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LDEXPF])
    129  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LDEXPL])
    130  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG])
    131  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOGF])
    132  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOGL])
    133  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG10])
    134  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG10F])
    135  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG10L])
    136  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG1P])
    137  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG1PF])
    138  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG1PL])
    139  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG2])
    140  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG2F])
    141  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG2L])
    142  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOGB])
    143  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOGBF])
    144  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOGBL])
    145  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MODF])
    146  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MODFF])
    147  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MODFL])
    148  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_POWF])
    149  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REMAINDER])
    150  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REMAINDERF])
    151  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REMAINDERL])
    152  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RINT])
    153  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RINTF])
    154  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RINTL])
    155  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ROUND])
    156  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ROUNDF])
    157  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ROUNDL])
    158  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SIGNBIT])
    159  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SINF])
    160  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SINL])
    161  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SINHF])
    162  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SQRTF])
    163  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SQRTL])
    164  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TANF])
    165  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TANL])
    166  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TANHF])
    167  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TRUNC])
    168  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TRUNCF])
    169  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TRUNCL])
    170  1.1.1.2  christos     dnl Support Microsoft deprecated alias function names by default.
    171  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_J0], [1])
    172  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_J1], [1])
    173  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_JN], [1])
    174  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_Y0], [1])
    175  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_Y1], [1])
    176  1.1.1.2  christos     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_YN], [1])
    177  1.1.1.2  christos   ])
    178  1.1.1.2  christos   m4_require(GL_MODULE_INDICATOR_PREFIX[_MATH_H_MODULE_INDICATOR_DEFAULTS])
    179  1.1.1.2  christos   AC_REQUIRE([gl_MATH_H_DEFAULTS])
    180  1.1.1.2  christos ])
    181  1.1.1.2  christos 
    182      1.1  christos AC_DEFUN([gl_MATH_H_DEFAULTS],
    183      1.1  christos [
    184      1.1  christos   dnl Assume proper GNU behavior unless another module says otherwise.
    185  1.1.1.2  christos   HAVE_ACOSF=1;                     AC_SUBST([HAVE_ACOSF])
    186  1.1.1.2  christos   HAVE_ACOSL=1;                     AC_SUBST([HAVE_ACOSL])
    187  1.1.1.2  christos   HAVE_ASINF=1;                     AC_SUBST([HAVE_ASINF])
    188  1.1.1.2  christos   HAVE_ASINL=1;                     AC_SUBST([HAVE_ASINL])
    189  1.1.1.2  christos   HAVE_ATANF=1;                     AC_SUBST([HAVE_ATANF])
    190  1.1.1.2  christos   HAVE_ATANL=1;                     AC_SUBST([HAVE_ATANL])
    191  1.1.1.2  christos   HAVE_ATAN2F=1;                    AC_SUBST([HAVE_ATAN2F])
    192  1.1.1.2  christos   HAVE_CBRT=1;                      AC_SUBST([HAVE_CBRT])
    193  1.1.1.2  christos   HAVE_CBRTF=1;                     AC_SUBST([HAVE_CBRTF])
    194  1.1.1.2  christos   HAVE_CBRTL=1;                     AC_SUBST([HAVE_CBRTL])
    195  1.1.1.2  christos   HAVE_COPYSIGN=1;                  AC_SUBST([HAVE_COPYSIGN])
    196  1.1.1.2  christos   HAVE_COPYSIGNL=1;                 AC_SUBST([HAVE_COPYSIGNL])
    197  1.1.1.2  christos   HAVE_COSF=1;                      AC_SUBST([HAVE_COSF])
    198  1.1.1.2  christos   HAVE_COSL=1;                      AC_SUBST([HAVE_COSL])
    199  1.1.1.2  christos   HAVE_COSHF=1;                     AC_SUBST([HAVE_COSHF])
    200  1.1.1.2  christos   HAVE_EXPF=1;                      AC_SUBST([HAVE_EXPF])
    201  1.1.1.2  christos   HAVE_EXPL=1;                      AC_SUBST([HAVE_EXPL])
    202  1.1.1.2  christos   HAVE_EXPM1=1;                     AC_SUBST([HAVE_EXPM1])
    203  1.1.1.2  christos   HAVE_EXPM1F=1;                    AC_SUBST([HAVE_EXPM1F])
    204  1.1.1.2  christos   HAVE_FABSF=1;                     AC_SUBST([HAVE_FABSF])
    205  1.1.1.2  christos   HAVE_FABSL=1;                     AC_SUBST([HAVE_FABSL])
    206  1.1.1.2  christos   HAVE_FMA=1;                       AC_SUBST([HAVE_FMA])
    207  1.1.1.2  christos   HAVE_FMAF=1;                      AC_SUBST([HAVE_FMAF])
    208  1.1.1.2  christos   HAVE_FMAL=1;                      AC_SUBST([HAVE_FMAL])
    209  1.1.1.2  christos   HAVE_FMODF=1;                     AC_SUBST([HAVE_FMODF])
    210  1.1.1.2  christos   HAVE_FMODL=1;                     AC_SUBST([HAVE_FMODL])
    211  1.1.1.2  christos   HAVE_FREXPF=1;                    AC_SUBST([HAVE_FREXPF])
    212  1.1.1.2  christos   HAVE_HYPOTF=1;                    AC_SUBST([HAVE_HYPOTF])
    213  1.1.1.2  christos   HAVE_HYPOTL=1;                    AC_SUBST([HAVE_HYPOTL])
    214  1.1.1.2  christos   HAVE_ILOGB=1;                     AC_SUBST([HAVE_ILOGB])
    215  1.1.1.2  christos   HAVE_ILOGBF=1;                    AC_SUBST([HAVE_ILOGBF])
    216  1.1.1.2  christos   HAVE_ILOGBL=1;                    AC_SUBST([HAVE_ILOGBL])
    217  1.1.1.2  christos   HAVE_ISNANF=1;                    AC_SUBST([HAVE_ISNANF])
    218  1.1.1.2  christos   HAVE_ISNAND=1;                    AC_SUBST([HAVE_ISNAND])
    219  1.1.1.2  christos   HAVE_ISNANL=1;                    AC_SUBST([HAVE_ISNANL])
    220  1.1.1.2  christos   HAVE_LDEXPF=1;                    AC_SUBST([HAVE_LDEXPF])
    221  1.1.1.2  christos   HAVE_LOGF=1;                      AC_SUBST([HAVE_LOGF])
    222  1.1.1.2  christos   HAVE_LOGL=1;                      AC_SUBST([HAVE_LOGL])
    223  1.1.1.2  christos   HAVE_LOG10F=1;                    AC_SUBST([HAVE_LOG10F])
    224  1.1.1.2  christos   HAVE_LOG10L=1;                    AC_SUBST([HAVE_LOG10L])
    225  1.1.1.2  christos   HAVE_LOG1P=1;                     AC_SUBST([HAVE_LOG1P])
    226  1.1.1.2  christos   HAVE_LOG1PF=1;                    AC_SUBST([HAVE_LOG1PF])
    227  1.1.1.2  christos   HAVE_LOG1PL=1;                    AC_SUBST([HAVE_LOG1PL])
    228  1.1.1.2  christos   HAVE_LOGBF=1;                     AC_SUBST([HAVE_LOGBF])
    229  1.1.1.2  christos   HAVE_LOGBL=1;                     AC_SUBST([HAVE_LOGBL])
    230  1.1.1.2  christos   HAVE_MODFF=1;                     AC_SUBST([HAVE_MODFF])
    231  1.1.1.2  christos   HAVE_MODFL=1;                     AC_SUBST([HAVE_MODFL])
    232  1.1.1.2  christos   HAVE_POWF=1;                      AC_SUBST([HAVE_POWF])
    233  1.1.1.2  christos   HAVE_REMAINDER=1;                 AC_SUBST([HAVE_REMAINDER])
    234  1.1.1.2  christos   HAVE_REMAINDERF=1;                AC_SUBST([HAVE_REMAINDERF])
    235  1.1.1.2  christos   HAVE_RINT=1;                      AC_SUBST([HAVE_RINT])
    236  1.1.1.2  christos   HAVE_RINTL=1;                     AC_SUBST([HAVE_RINTL])
    237  1.1.1.2  christos   HAVE_SINF=1;                      AC_SUBST([HAVE_SINF])
    238  1.1.1.2  christos   HAVE_SINL=1;                      AC_SUBST([HAVE_SINL])
    239  1.1.1.2  christos   HAVE_SINHF=1;                     AC_SUBST([HAVE_SINHF])
    240  1.1.1.2  christos   HAVE_SQRTF=1;                     AC_SUBST([HAVE_SQRTF])
    241  1.1.1.2  christos   HAVE_SQRTL=1;                     AC_SUBST([HAVE_SQRTL])
    242  1.1.1.2  christos   HAVE_TANF=1;                      AC_SUBST([HAVE_TANF])
    243  1.1.1.2  christos   HAVE_TANL=1;                      AC_SUBST([HAVE_TANL])
    244  1.1.1.2  christos   HAVE_TANHF=1;                     AC_SUBST([HAVE_TANHF])
    245  1.1.1.2  christos   HAVE_DECL_ACOSL=1;                AC_SUBST([HAVE_DECL_ACOSL])
    246  1.1.1.2  christos   HAVE_DECL_ASINL=1;                AC_SUBST([HAVE_DECL_ASINL])
    247  1.1.1.2  christos   HAVE_DECL_ATANL=1;                AC_SUBST([HAVE_DECL_ATANL])
    248  1.1.1.2  christos   HAVE_DECL_CBRTF=1;                AC_SUBST([HAVE_DECL_CBRTF])
    249  1.1.1.2  christos   HAVE_DECL_CBRTL=1;                AC_SUBST([HAVE_DECL_CBRTL])
    250  1.1.1.2  christos   HAVE_DECL_CEILF=1;                AC_SUBST([HAVE_DECL_CEILF])
    251  1.1.1.2  christos   HAVE_DECL_CEILL=1;                AC_SUBST([HAVE_DECL_CEILL])
    252  1.1.1.2  christos   HAVE_DECL_COPYSIGNF=1;            AC_SUBST([HAVE_DECL_COPYSIGNF])
    253  1.1.1.2  christos   HAVE_DECL_COSL=1;                 AC_SUBST([HAVE_DECL_COSL])
    254  1.1.1.2  christos   HAVE_DECL_EXPL=1;                 AC_SUBST([HAVE_DECL_EXPL])
    255  1.1.1.2  christos   HAVE_DECL_EXP2=1;                 AC_SUBST([HAVE_DECL_EXP2])
    256  1.1.1.2  christos   HAVE_DECL_EXP2F=1;                AC_SUBST([HAVE_DECL_EXP2F])
    257  1.1.1.2  christos   HAVE_DECL_EXP2L=1;                AC_SUBST([HAVE_DECL_EXP2L])
    258  1.1.1.2  christos   HAVE_DECL_EXPM1L=1;               AC_SUBST([HAVE_DECL_EXPM1L])
    259  1.1.1.2  christos   HAVE_DECL_FLOORF=1;               AC_SUBST([HAVE_DECL_FLOORF])
    260  1.1.1.2  christos   HAVE_DECL_FLOORL=1;               AC_SUBST([HAVE_DECL_FLOORL])
    261  1.1.1.2  christos   HAVE_DECL_FREXPL=1;               AC_SUBST([HAVE_DECL_FREXPL])
    262  1.1.1.2  christos   HAVE_DECL_LDEXPL=1;               AC_SUBST([HAVE_DECL_LDEXPL])
    263  1.1.1.2  christos   HAVE_DECL_LOGL=1;                 AC_SUBST([HAVE_DECL_LOGL])
    264  1.1.1.2  christos   HAVE_DECL_LOG10L=1;               AC_SUBST([HAVE_DECL_LOG10L])
    265  1.1.1.2  christos   HAVE_DECL_LOG2=1;                 AC_SUBST([HAVE_DECL_LOG2])
    266  1.1.1.2  christos   HAVE_DECL_LOG2F=1;                AC_SUBST([HAVE_DECL_LOG2F])
    267  1.1.1.2  christos   HAVE_DECL_LOG2L=1;                AC_SUBST([HAVE_DECL_LOG2L])
    268  1.1.1.2  christos   HAVE_DECL_LOGB=1;                 AC_SUBST([HAVE_DECL_LOGB])
    269  1.1.1.2  christos   HAVE_DECL_REMAINDER=1;            AC_SUBST([HAVE_DECL_REMAINDER])
    270  1.1.1.2  christos   HAVE_DECL_REMAINDERL=1;           AC_SUBST([HAVE_DECL_REMAINDERL])
    271  1.1.1.2  christos   HAVE_DECL_RINTF=1;                AC_SUBST([HAVE_DECL_RINTF])
    272  1.1.1.2  christos   HAVE_DECL_ROUND=1;                AC_SUBST([HAVE_DECL_ROUND])
    273  1.1.1.2  christos   HAVE_DECL_ROUNDF=1;               AC_SUBST([HAVE_DECL_ROUNDF])
    274  1.1.1.2  christos   HAVE_DECL_ROUNDL=1;               AC_SUBST([HAVE_DECL_ROUNDL])
    275  1.1.1.2  christos   HAVE_DECL_SINL=1;                 AC_SUBST([HAVE_DECL_SINL])
    276  1.1.1.2  christos   HAVE_DECL_SQRTL=1;                AC_SUBST([HAVE_DECL_SQRTL])
    277  1.1.1.2  christos   HAVE_DECL_TANL=1;                 AC_SUBST([HAVE_DECL_TANL])
    278  1.1.1.2  christos   HAVE_DECL_TRUNC=1;                AC_SUBST([HAVE_DECL_TRUNC])
    279  1.1.1.2  christos   HAVE_DECL_TRUNCF=1;               AC_SUBST([HAVE_DECL_TRUNCF])
    280  1.1.1.2  christos   HAVE_DECL_TRUNCL=1;               AC_SUBST([HAVE_DECL_TRUNCL])
    281  1.1.1.2  christos   REPLACE_ACOSF=0;                  AC_SUBST([REPLACE_ACOSF])
    282  1.1.1.2  christos   REPLACE_ASINF=0;                  AC_SUBST([REPLACE_ASINF])
    283  1.1.1.2  christos   REPLACE_ATANF=0;                  AC_SUBST([REPLACE_ATANF])
    284  1.1.1.2  christos   REPLACE_ATAN2F=0;                 AC_SUBST([REPLACE_ATAN2F])
    285  1.1.1.2  christos   REPLACE_CBRTF=0;                  AC_SUBST([REPLACE_CBRTF])
    286  1.1.1.2  christos   REPLACE_CBRTL=0;                  AC_SUBST([REPLACE_CBRTL])
    287  1.1.1.2  christos   REPLACE_CEIL=0;                   AC_SUBST([REPLACE_CEIL])
    288  1.1.1.2  christos   REPLACE_CEILF=0;                  AC_SUBST([REPLACE_CEILF])
    289  1.1.1.2  christos   REPLACE_CEILL=0;                  AC_SUBST([REPLACE_CEILL])
    290  1.1.1.2  christos   REPLACE_COSF=0;                   AC_SUBST([REPLACE_COSF])
    291  1.1.1.2  christos   REPLACE_COSHF=0;                  AC_SUBST([REPLACE_COSHF])
    292  1.1.1.2  christos   REPLACE_EXPF=0;                   AC_SUBST([REPLACE_EXPF])
    293  1.1.1.2  christos   REPLACE_EXPL=0;                   AC_SUBST([REPLACE_EXPL])
    294  1.1.1.2  christos   REPLACE_EXPM1=0;                  AC_SUBST([REPLACE_EXPM1])
    295  1.1.1.2  christos   REPLACE_EXPM1F=0;                 AC_SUBST([REPLACE_EXPM1F])
    296  1.1.1.2  christos   REPLACE_EXPM1L=0;                 AC_SUBST([REPLACE_EXPM1L])
    297  1.1.1.2  christos   REPLACE_EXP2=0;                   AC_SUBST([REPLACE_EXP2])
    298  1.1.1.2  christos   REPLACE_EXP2L=0;                  AC_SUBST([REPLACE_EXP2L])
    299  1.1.1.2  christos   REPLACE_FABSL=0;                  AC_SUBST([REPLACE_FABSL])
    300  1.1.1.2  christos   REPLACE_FLOOR=0;                  AC_SUBST([REPLACE_FLOOR])
    301  1.1.1.2  christos   REPLACE_FLOORF=0;                 AC_SUBST([REPLACE_FLOORF])
    302  1.1.1.2  christos   REPLACE_FLOORL=0;                 AC_SUBST([REPLACE_FLOORL])
    303  1.1.1.2  christos   REPLACE_FMA=0;                    AC_SUBST([REPLACE_FMA])
    304  1.1.1.2  christos   REPLACE_FMAF=0;                   AC_SUBST([REPLACE_FMAF])
    305  1.1.1.2  christos   REPLACE_FMAL=0;                   AC_SUBST([REPLACE_FMAL])
    306  1.1.1.2  christos   REPLACE_FMOD=0;                   AC_SUBST([REPLACE_FMOD])
    307  1.1.1.2  christos   REPLACE_FMODF=0;                  AC_SUBST([REPLACE_FMODF])
    308  1.1.1.2  christos   REPLACE_FMODL=0;                  AC_SUBST([REPLACE_FMODL])
    309  1.1.1.2  christos   REPLACE_FREXPF=0;                 AC_SUBST([REPLACE_FREXPF])
    310  1.1.1.2  christos   REPLACE_FREXP=0;                  AC_SUBST([REPLACE_FREXP])
    311  1.1.1.2  christos   REPLACE_FREXPL=0;                 AC_SUBST([REPLACE_FREXPL])
    312  1.1.1.2  christos   REPLACE_HUGE_VAL=0;               AC_SUBST([REPLACE_HUGE_VAL])
    313  1.1.1.2  christos   REPLACE_HYPOT=0;                  AC_SUBST([REPLACE_HYPOT])
    314  1.1.1.2  christos   REPLACE_HYPOTF=0;                 AC_SUBST([REPLACE_HYPOTF])
    315  1.1.1.2  christos   REPLACE_HYPOTL=0;                 AC_SUBST([REPLACE_HYPOTL])
    316  1.1.1.2  christos   REPLACE_ILOGB=0;                  AC_SUBST([REPLACE_ILOGB])
    317  1.1.1.2  christos   REPLACE_ILOGBF=0;                 AC_SUBST([REPLACE_ILOGBF])
    318  1.1.1.2  christos   REPLACE_ILOGBL=0;                 AC_SUBST([REPLACE_ILOGBL])
    319  1.1.1.2  christos   REPLACE_ISFINITE=0;               AC_SUBST([REPLACE_ISFINITE])
    320  1.1.1.2  christos   REPLACE_ISINF=0;                  AC_SUBST([REPLACE_ISINF])
    321  1.1.1.2  christos   REPLACE_ISNAN=0;                  AC_SUBST([REPLACE_ISNAN])
    322  1.1.1.2  christos   REPLACE_LDEXPL=0;                 AC_SUBST([REPLACE_LDEXPL])
    323  1.1.1.2  christos   REPLACE_LOG=0;                    AC_SUBST([REPLACE_LOG])
    324  1.1.1.2  christos   REPLACE_LOGF=0;                   AC_SUBST([REPLACE_LOGF])
    325  1.1.1.2  christos   REPLACE_LOGL=0;                   AC_SUBST([REPLACE_LOGL])
    326  1.1.1.2  christos   REPLACE_LOG10=0;                  AC_SUBST([REPLACE_LOG10])
    327  1.1.1.2  christos   REPLACE_LOG10F=0;                 AC_SUBST([REPLACE_LOG10F])
    328  1.1.1.2  christos   REPLACE_LOG10L=0;                 AC_SUBST([REPLACE_LOG10L])
    329  1.1.1.2  christos   REPLACE_LOG1P=0;                  AC_SUBST([REPLACE_LOG1P])
    330  1.1.1.2  christos   REPLACE_LOG1PF=0;                 AC_SUBST([REPLACE_LOG1PF])
    331  1.1.1.2  christos   REPLACE_LOG1PL=0;                 AC_SUBST([REPLACE_LOG1PL])
    332  1.1.1.2  christos   REPLACE_LOG2=0;                   AC_SUBST([REPLACE_LOG2])
    333  1.1.1.2  christos   REPLACE_LOG2F=0;                  AC_SUBST([REPLACE_LOG2F])
    334  1.1.1.2  christos   REPLACE_LOG2L=0;                  AC_SUBST([REPLACE_LOG2L])
    335  1.1.1.2  christos   REPLACE_LOGB=0;                   AC_SUBST([REPLACE_LOGB])
    336  1.1.1.2  christos   REPLACE_LOGBF=0;                  AC_SUBST([REPLACE_LOGBF])
    337  1.1.1.2  christos   REPLACE_LOGBL=0;                  AC_SUBST([REPLACE_LOGBL])
    338  1.1.1.2  christos   REPLACE_MODF=0;                   AC_SUBST([REPLACE_MODF])
    339  1.1.1.2  christos   REPLACE_MODFF=0;                  AC_SUBST([REPLACE_MODFF])
    340  1.1.1.2  christos   REPLACE_MODFL=0;                  AC_SUBST([REPLACE_MODFL])
    341  1.1.1.2  christos   REPLACE_NAN=0;                    AC_SUBST([REPLACE_NAN])
    342  1.1.1.2  christos   REPLACE_REMAINDER=0;              AC_SUBST([REPLACE_REMAINDER])
    343  1.1.1.2  christos   REPLACE_REMAINDERF=0;             AC_SUBST([REPLACE_REMAINDERF])
    344  1.1.1.2  christos   REPLACE_REMAINDERL=0;             AC_SUBST([REPLACE_REMAINDERL])
    345  1.1.1.2  christos   REPLACE_RINTL=0;                  AC_SUBST([REPLACE_RINTL])
    346  1.1.1.2  christos   REPLACE_ROUND=0;                  AC_SUBST([REPLACE_ROUND])
    347  1.1.1.2  christos   REPLACE_ROUNDF=0;                 AC_SUBST([REPLACE_ROUNDF])
    348  1.1.1.2  christos   REPLACE_ROUNDL=0;                 AC_SUBST([REPLACE_ROUNDL])
    349  1.1.1.2  christos   REPLACE_SIGNBIT=0;                AC_SUBST([REPLACE_SIGNBIT])
    350  1.1.1.2  christos   REPLACE_SIGNBIT_USING_BUILTINS=0; AC_SUBST([REPLACE_SIGNBIT_USING_BUILTINS])
    351  1.1.1.2  christos   REPLACE_SINF=0;                   AC_SUBST([REPLACE_SINF])
    352  1.1.1.2  christos   REPLACE_SINHF=0;                  AC_SUBST([REPLACE_SINHF])
    353  1.1.1.2  christos   REPLACE_SQRTF=0;                  AC_SUBST([REPLACE_SQRTF])
    354  1.1.1.2  christos   REPLACE_SQRTL=0;                  AC_SUBST([REPLACE_SQRTL])
    355  1.1.1.2  christos   REPLACE_TANF=0;                   AC_SUBST([REPLACE_TANF])
    356  1.1.1.2  christos   REPLACE_TANHF=0;                  AC_SUBST([REPLACE_TANHF])
    357  1.1.1.2  christos   REPLACE_TRUNC=0;                  AC_SUBST([REPLACE_TRUNC])
    358  1.1.1.2  christos   REPLACE_TRUNCF=0;                 AC_SUBST([REPLACE_TRUNCF])
    359  1.1.1.2  christos   REPLACE_TRUNCL=0;                 AC_SUBST([REPLACE_TRUNCL])
    360      1.1  christos ])
    361      1.1  christos 
    362      1.1  christos # gl_LONG_DOUBLE_VS_DOUBLE
    363      1.1  christos # determines whether 'long double' and 'double' have the same representation.
    364      1.1  christos # Sets variable HAVE_SAME_LONG_DOUBLE_AS_DOUBLE to 0 or 1, and defines
    365      1.1  christos # HAVE_SAME_LONG_DOUBLE_AS_DOUBLE accordingly.
    366      1.1  christos # The currently known platforms where this is the case are:
    367      1.1  christos # Linux/HPPA, Minix 3.1.8, AIX 5, AIX 6 and 7 with xlc, MSVC 9.
    368      1.1  christos AC_DEFUN([gl_LONG_DOUBLE_VS_DOUBLE],
    369      1.1  christos [
    370      1.1  christos   AC_CACHE_CHECK([whether long double and double are the same],
    371      1.1  christos     [gl_cv_long_double_equals_double],
    372      1.1  christos     [AC_COMPILE_IFELSE(
    373      1.1  christos        [AC_LANG_PROGRAM([[#include <float.h>]],
    374      1.1  christos           [[typedef int check[sizeof (long double) == sizeof (double)
    375      1.1  christos                               && LDBL_MANT_DIG == DBL_MANT_DIG
    376      1.1  christos                               && LDBL_MAX_EXP == DBL_MAX_EXP
    377      1.1  christos                               && LDBL_MIN_EXP == DBL_MIN_EXP
    378      1.1  christos                               ? 1 : -1];
    379      1.1  christos           ]])],
    380      1.1  christos        [gl_cv_long_double_equals_double=yes],
    381      1.1  christos        [gl_cv_long_double_equals_double=no])
    382      1.1  christos     ])
    383      1.1  christos   if test $gl_cv_long_double_equals_double = yes; then
    384      1.1  christos     AC_DEFINE([HAVE_SAME_LONG_DOUBLE_AS_DOUBLE], [1],
    385      1.1  christos       [Define to 1 if 'long double' and 'double' have the same representation.])
    386      1.1  christos     HAVE_SAME_LONG_DOUBLE_AS_DOUBLE=1
    387      1.1  christos   else
    388      1.1  christos     HAVE_SAME_LONG_DOUBLE_AS_DOUBLE=0
    389      1.1  christos   fi
    390      1.1  christos   AC_SUBST([HAVE_SAME_LONG_DOUBLE_AS_DOUBLE])
    391      1.1  christos ])
    392