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