math.in.h revision 05436638acc7c010349a69c3395f1a57c642dc62
1/* A GNU-like <math.h>. 2 3 Copyright (C) 2002-2003, 2007-2012 Free Software Foundation, Inc. 4 5 This program is free software: you can redistribute it and/or modify 6 it under the terms of the GNU General Public License as published by 7 the Free Software Foundation; either version 3 of the License, or 8 (at your option) any later version. 9 10 This program is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU General Public License for more details. 14 15 You should have received a copy of the GNU General Public License 16 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 17 18#ifndef _@GUARD_PREFIX@_MATH_H 19 20#if __GNUC__ >= 3 21@PRAGMA_SYSTEM_HEADER@ 22#endif 23@PRAGMA_COLUMNS@ 24 25/* The include_next requires a split double-inclusion guard. */ 26#@INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ @NEXT_AS_FIRST_DIRECTIVE_MATH_H@ 27 28#ifndef _@GUARD_PREFIX@_MATH_H 29#define _@GUARD_PREFIX@_MATH_H 30 31_GL_INLINE_HEADER_BEGIN 32#ifndef _GL_MATH_INLINE 33# define _GL_MATH_INLINE _GL_INLINE 34#endif 35 36/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ 37 38/* The definition of _GL_ARG_NONNULL is copied here. */ 39 40/* The definition of _GL_WARN_ON_USE is copied here. */ 41 42#ifdef __cplusplus 43/* Helper macros to define type-generic function FUNC as overloaded functions, 44 rather than as macros like in C. POSIX declares these with an argument of 45 real-floating (that is, one of float, double, or long double). */ 46# define _GL_MATH_CXX_REAL_FLOATING_DECL_1(func) \ 47static inline int \ 48_gl_cxx_ ## func ## f (float f) \ 49{ \ 50 return func (f); \ 51} \ 52static inline int \ 53_gl_cxx_ ## func ## d (double d) \ 54{ \ 55 return func (d); \ 56} \ 57static inline int \ 58_gl_cxx_ ## func ## l (long double l) \ 59{ \ 60 return func (l); \ 61} 62# define _GL_MATH_CXX_REAL_FLOATING_DECL_2(func) \ 63inline int \ 64func (float f) \ 65{ \ 66 return _gl_cxx_ ## func ## f (f); \ 67} \ 68inline int \ 69func (double d) \ 70{ \ 71 return _gl_cxx_ ## func ## d (d); \ 72} \ 73inline int \ 74func (long double l) \ 75{ \ 76 return _gl_cxx_ ## func ## l (l); \ 77} 78#endif 79 80/* Helper macros to define a portability warning for the 81 classification macro FUNC called with VALUE. POSIX declares the 82 classification macros with an argument of real-floating (that is, 83 one of float, double, or long double). */ 84#define _GL_WARN_REAL_FLOATING_DECL(func) \ 85_GL_MATH_INLINE int \ 86rpl_ ## func ## f (float f) \ 87{ \ 88 return func (f); \ 89} \ 90_GL_MATH_INLINE int \ 91rpl_ ## func ## d (double d) \ 92{ \ 93 return func (d); \ 94} \ 95_GL_MATH_INLINE int \ 96rpl_ ## func ## l (long double l) \ 97{ \ 98 return func (l); \ 99} \ 100_GL_WARN_ON_USE (rpl_ ## func ## f, #func " is unportable - " \ 101 "use gnulib module " #func " for portability"); \ 102_GL_WARN_ON_USE (rpl_ ## func ## d, #func " is unportable - " \ 103 "use gnulib module " #func " for portability"); \ 104_GL_WARN_ON_USE (rpl_ ## func ## l, #func " is unportable - " \ 105 "use gnulib module " #func " for portability") 106#define _GL_WARN_REAL_FLOATING_IMPL(func, value) \ 107 (sizeof (value) == sizeof (float) ? rpl_ ## func ## f (value) \ 108 : sizeof (value) == sizeof (double) ? rpl_ ## func ## d (value) \ 109 : rpl_ ## func ## l (value)) 110 111 112#if @REPLACE_ITOLD@ 113/* Pull in a function that fixes the 'int' to 'long double' conversion 114 of glibc 2.7. */ 115_GL_EXTERN_C void _Qp_itoq (long double *, int); 116static void (*_gl_math_fix_itold) (long double *, int) = _Qp_itoq; 117#endif 118 119 120/* POSIX allows platforms that don't support NAN. But all major 121 machines in the past 15 years have supported something close to 122 IEEE NaN, so we define this unconditionally. We also must define 123 it on platforms like Solaris 10, where NAN is present but defined 124 as a function pointer rather than a floating point constant. */ 125#if !defined NAN || @REPLACE_NAN@ 126# if !GNULIB_defined_NAN 127# undef NAN 128 /* The Compaq (ex-DEC) C 6.4 compiler and the Microsoft MSVC 9 compiler 129 choke on the expression 0.0 / 0.0. */ 130# if defined __DECC || defined _MSC_VER 131_GL_MATH_INLINE float 132_NaN () 133{ 134 static float zero = 0.0f; 135 return zero / zero; 136} 137# define NAN (_NaN()) 138# else 139# define NAN (0.0f / 0.0f) 140# endif 141# define GNULIB_defined_NAN 1 142# endif 143#endif 144 145/* Solaris 10 defines HUGE_VAL, but as a function pointer rather 146 than a floating point constant. */ 147#if @REPLACE_HUGE_VAL@ 148# undef HUGE_VALF 149# define HUGE_VALF (1.0f / 0.0f) 150# undef HUGE_VAL 151# define HUGE_VAL (1.0 / 0.0) 152# undef HUGE_VALL 153# define HUGE_VALL (1.0L / 0.0L) 154#endif 155 156/* HUGE_VALF is a 'float' Infinity. */ 157#ifndef HUGE_VALF 158# if defined _MSC_VER 159/* The Microsoft MSVC 9 compiler chokes on the expression 1.0f / 0.0f. */ 160# define HUGE_VALF (1e25f * 1e25f) 161# else 162# define HUGE_VALF (1.0f / 0.0f) 163# endif 164#endif 165 166/* HUGE_VAL is a 'double' Infinity. */ 167#ifndef HUGE_VAL 168# if defined _MSC_VER 169/* The Microsoft MSVC 9 compiler chokes on the expression 1.0 / 0.0. */ 170# define HUGE_VAL (1e250 * 1e250) 171# else 172# define HUGE_VAL (1.0 / 0.0) 173# endif 174#endif 175 176/* HUGE_VALL is a 'long double' Infinity. */ 177#ifndef HUGE_VALL 178# if defined _MSC_VER 179/* The Microsoft MSVC 9 compiler chokes on the expression 1.0L / 0.0L. */ 180# define HUGE_VALL (1e250L * 1e250L) 181# else 182# define HUGE_VALL (1.0L / 0.0L) 183# endif 184#endif 185 186 187/* Ensure FP_ILOGB0 and FP_ILOGBNAN are defined. */ 188#if !(defined FP_ILOGB0 && defined FP_ILOGBNAN) 189# if defined __NetBSD__ || defined __sgi 190 /* NetBSD, IRIX 6.5: match what ilogb() does */ 191# define FP_ILOGB0 (- 2147483647 - 1) /* INT_MIN */ 192# define FP_ILOGBNAN (- 2147483647 - 1) /* INT_MIN */ 193# elif defined _AIX 194 /* AIX 5.1: match what ilogb() does in AIX >= 5.2 */ 195# define FP_ILOGB0 (- 2147483647 - 1) /* INT_MIN */ 196# define FP_ILOGBNAN 2147483647 /* INT_MAX */ 197# elif defined __sun 198 /* Solaris 9: match what ilogb() does */ 199# define FP_ILOGB0 (- 2147483647) /* - INT_MAX */ 200# define FP_ILOGBNAN 2147483647 /* INT_MAX */ 201# else 202 /* Gnulib defined values. */ 203# define FP_ILOGB0 (- 2147483647) /* - INT_MAX */ 204# define FP_ILOGBNAN (- 2147483647 - 1) /* INT_MIN */ 205# endif 206#endif 207 208 209#if @GNULIB_ACOSF@ 210# if !@HAVE_ACOSF@ 211# undef acosf 212_GL_FUNCDECL_SYS (acosf, float, (float x)); 213# endif 214_GL_CXXALIAS_SYS (acosf, float, (float x)); 215_GL_CXXALIASWARN (acosf); 216#elif defined GNULIB_POSIXCHECK 217# undef acosf 218# if HAVE_RAW_DECL_ACOSF 219_GL_WARN_ON_USE (acosf, "acosf is unportable - " 220 "use gnulib module acosf for portability"); 221# endif 222#endif 223 224#if @GNULIB_ACOSL@ 225# if !@HAVE_ACOSL@ || !@HAVE_DECL_ACOSL@ 226# undef acosl 227_GL_FUNCDECL_SYS (acosl, long double, (long double x)); 228# endif 229_GL_CXXALIAS_SYS (acosl, long double, (long double x)); 230_GL_CXXALIASWARN (acosl); 231#elif defined GNULIB_POSIXCHECK 232# undef acosl 233# if HAVE_RAW_DECL_ACOSL 234_GL_WARN_ON_USE (acosl, "acosl is unportable - " 235 "use gnulib module acosl for portability"); 236# endif 237#endif 238 239 240#if @GNULIB_ASINF@ 241# if !@HAVE_ASINF@ 242# undef asinf 243_GL_FUNCDECL_SYS (asinf, float, (float x)); 244# endif 245_GL_CXXALIAS_SYS (asinf, float, (float x)); 246_GL_CXXALIASWARN (asinf); 247#elif defined GNULIB_POSIXCHECK 248# undef asinf 249# if HAVE_RAW_DECL_ASINF 250_GL_WARN_ON_USE (asinf, "asinf is unportable - " 251 "use gnulib module asinf for portability"); 252# endif 253#endif 254 255#if @GNULIB_ASINL@ 256# if !@HAVE_ASINL@ || !@HAVE_DECL_ASINL@ 257# undef asinl 258_GL_FUNCDECL_SYS (asinl, long double, (long double x)); 259# endif 260_GL_CXXALIAS_SYS (asinl, long double, (long double x)); 261_GL_CXXALIASWARN (asinl); 262#elif defined GNULIB_POSIXCHECK 263# undef asinl 264# if HAVE_RAW_DECL_ASINL 265_GL_WARN_ON_USE (asinl, "asinl is unportable - " 266 "use gnulib module asinl for portability"); 267# endif 268#endif 269 270 271#if @GNULIB_ATANF@ 272# if !@HAVE_ATANF@ 273# undef atanf 274_GL_FUNCDECL_SYS (atanf, float, (float x)); 275# endif 276_GL_CXXALIAS_SYS (atanf, float, (float x)); 277_GL_CXXALIASWARN (atanf); 278#elif defined GNULIB_POSIXCHECK 279# undef atanf 280# if HAVE_RAW_DECL_ATANF 281_GL_WARN_ON_USE (atanf, "atanf is unportable - " 282 "use gnulib module atanf for portability"); 283# endif 284#endif 285 286#if @GNULIB_ATANL@ 287# if !@HAVE_ATANL@ || !@HAVE_DECL_ATANL@ 288# undef atanl 289_GL_FUNCDECL_SYS (atanl, long double, (long double x)); 290# endif 291_GL_CXXALIAS_SYS (atanl, long double, (long double x)); 292_GL_CXXALIASWARN (atanl); 293#elif defined GNULIB_POSIXCHECK 294# undef atanl 295# if HAVE_RAW_DECL_ATANL 296_GL_WARN_ON_USE (atanl, "atanl is unportable - " 297 "use gnulib module atanl for portability"); 298# endif 299#endif 300 301 302#if @GNULIB_ATAN2F@ 303# if !@HAVE_ATAN2F@ 304# undef atan2f 305_GL_FUNCDECL_SYS (atan2f, float, (float y, float x)); 306# endif 307_GL_CXXALIAS_SYS (atan2f, float, (float y, float x)); 308_GL_CXXALIASWARN (atan2f); 309#elif defined GNULIB_POSIXCHECK 310# undef atan2f 311# if HAVE_RAW_DECL_ATAN2F 312_GL_WARN_ON_USE (atan2f, "atan2f is unportable - " 313 "use gnulib module atan2f for portability"); 314# endif 315#endif 316 317 318#if @GNULIB_CBRTF@ 319# if @REPLACE_CBRTF@ 320# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 321# undef cbrtf 322# define cbrtf rpl_cbrtf 323# endif 324_GL_FUNCDECL_RPL (cbrtf, float, (float x)); 325_GL_CXXALIAS_RPL (cbrtf, float, (float x)); 326# else 327# if !@HAVE_DECL_CBRTF@ 328_GL_FUNCDECL_SYS (cbrtf, float, (float x)); 329# endif 330_GL_CXXALIAS_SYS (cbrtf, float, (float x)); 331# endif 332_GL_CXXALIASWARN (cbrtf); 333#elif defined GNULIB_POSIXCHECK 334# undef cbrtf 335# if HAVE_RAW_DECL_CBRTF 336_GL_WARN_ON_USE (cbrtf, "cbrtf is unportable - " 337 "use gnulib module cbrtf for portability"); 338# endif 339#endif 340 341#if @GNULIB_CBRT@ 342# if !@HAVE_CBRT@ 343_GL_FUNCDECL_SYS (cbrt, double, (double x)); 344# endif 345_GL_CXXALIAS_SYS (cbrt, double, (double x)); 346_GL_CXXALIASWARN (cbrt); 347#elif defined GNULIB_POSIXCHECK 348# undef cbrt 349# if HAVE_RAW_DECL_CBRT 350_GL_WARN_ON_USE (cbrt, "cbrt is unportable - " 351 "use gnulib module cbrt for portability"); 352# endif 353#endif 354 355#if @GNULIB_CBRTL@ 356# if @REPLACE_CBRTL@ 357# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 358# undef cbrtl 359# define cbrtl rpl_cbrtl 360# endif 361_GL_FUNCDECL_RPL (cbrtl, long double, (long double x)); 362_GL_CXXALIAS_RPL (cbrtl, long double, (long double x)); 363# else 364# if !@HAVE_DECL_CBRTL@ 365_GL_FUNCDECL_SYS (cbrtl, long double, (long double x)); 366# endif 367_GL_CXXALIAS_SYS (cbrtl, long double, (long double x)); 368# endif 369_GL_CXXALIASWARN (cbrtl); 370#elif defined GNULIB_POSIXCHECK 371# undef cbrtl 372# if HAVE_RAW_DECL_CBRTL 373_GL_WARN_ON_USE (cbrtl, "cbrtl is unportable - " 374 "use gnulib module cbrtl for portability"); 375# endif 376#endif 377 378 379#if @GNULIB_CEILF@ 380# if @REPLACE_CEILF@ 381# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 382# undef ceilf 383# define ceilf rpl_ceilf 384# endif 385_GL_FUNCDECL_RPL (ceilf, float, (float x)); 386_GL_CXXALIAS_RPL (ceilf, float, (float x)); 387# else 388# if !@HAVE_DECL_CEILF@ 389# undef ceilf 390_GL_FUNCDECL_SYS (ceilf, float, (float x)); 391# endif 392_GL_CXXALIAS_SYS (ceilf, float, (float x)); 393# endif 394_GL_CXXALIASWARN (ceilf); 395#elif defined GNULIB_POSIXCHECK 396# undef ceilf 397# if HAVE_RAW_DECL_CEILF 398_GL_WARN_ON_USE (ceilf, "ceilf is unportable - " 399 "use gnulib module ceilf for portability"); 400# endif 401#endif 402 403#if @GNULIB_CEIL@ 404# if @REPLACE_CEIL@ 405# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 406# define ceil rpl_ceil 407# endif 408_GL_FUNCDECL_RPL (ceil, double, (double x)); 409_GL_CXXALIAS_RPL (ceil, double, (double x)); 410# else 411_GL_CXXALIAS_SYS (ceil, double, (double x)); 412# endif 413_GL_CXXALIASWARN (ceil); 414#endif 415 416#if @GNULIB_CEILL@ 417# if @REPLACE_CEILL@ 418# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 419# undef ceill 420# define ceill rpl_ceill 421# endif 422_GL_FUNCDECL_RPL (ceill, long double, (long double x)); 423_GL_CXXALIAS_RPL (ceill, long double, (long double x)); 424# else 425# if !@HAVE_DECL_CEILL@ 426# undef ceill 427_GL_FUNCDECL_SYS (ceill, long double, (long double x)); 428# endif 429_GL_CXXALIAS_SYS (ceill, long double, (long double x)); 430# endif 431_GL_CXXALIASWARN (ceill); 432#elif defined GNULIB_POSIXCHECK 433# undef ceill 434# if HAVE_RAW_DECL_CEILL 435_GL_WARN_ON_USE (ceill, "ceill is unportable - " 436 "use gnulib module ceill for portability"); 437# endif 438#endif 439 440 441#if @GNULIB_COPYSIGNF@ 442# if !@HAVE_DECL_COPYSIGNF@ 443_GL_FUNCDECL_SYS (copysignf, float, (float x, float y)); 444# endif 445_GL_CXXALIAS_SYS (copysignf, float, (float x, float y)); 446_GL_CXXALIASWARN (copysignf); 447#elif defined GNULIB_POSIXCHECK 448# undef copysignf 449# if HAVE_RAW_DECL_COPYSIGNF 450_GL_WARN_ON_USE (copysignf, "copysignf is unportable - " 451 "use gnulib module copysignf for portability"); 452# endif 453#endif 454 455#if @GNULIB_COPYSIGN@ 456# if !@HAVE_COPYSIGN@ 457_GL_FUNCDECL_SYS (copysign, double, (double x, double y)); 458# endif 459_GL_CXXALIAS_SYS (copysign, double, (double x, double y)); 460_GL_CXXALIASWARN (copysign); 461#elif defined GNULIB_POSIXCHECK 462# undef copysign 463# if HAVE_RAW_DECL_COPYSIGN 464_GL_WARN_ON_USE (copysign, "copysign is unportable - " 465 "use gnulib module copysign for portability"); 466# endif 467#endif 468 469#if @GNULIB_COPYSIGNL@ 470# if !@HAVE_COPYSIGNL@ 471_GL_FUNCDECL_SYS (copysignl, long double, (long double x, long double y)); 472# endif 473_GL_CXXALIAS_SYS (copysignl, long double, (long double x, long double y)); 474_GL_CXXALIASWARN (copysignl); 475#elif defined GNULIB_POSIXCHECK 476# undef copysignl 477# if HAVE_RAW_DECL_COPYSIGNL 478_GL_WARN_ON_USE (copysign, "copysignl is unportable - " 479 "use gnulib module copysignl for portability"); 480# endif 481#endif 482 483 484#if @GNULIB_COSF@ 485# if !@HAVE_COSF@ 486# undef cosf 487_GL_FUNCDECL_SYS (cosf, float, (float x)); 488# endif 489_GL_CXXALIAS_SYS (cosf, float, (float x)); 490_GL_CXXALIASWARN (cosf); 491#elif defined GNULIB_POSIXCHECK 492# undef cosf 493# if HAVE_RAW_DECL_COSF 494_GL_WARN_ON_USE (cosf, "cosf is unportable - " 495 "use gnulib module cosf for portability"); 496# endif 497#endif 498 499#if @GNULIB_COSL@ 500# if !@HAVE_COSL@ || !@HAVE_DECL_COSL@ 501# undef cosl 502_GL_FUNCDECL_SYS (cosl, long double, (long double x)); 503# endif 504_GL_CXXALIAS_SYS (cosl, long double, (long double x)); 505_GL_CXXALIASWARN (cosl); 506#elif defined GNULIB_POSIXCHECK 507# undef cosl 508# if HAVE_RAW_DECL_COSL 509_GL_WARN_ON_USE (cosl, "cosl is unportable - " 510 "use gnulib module cosl for portability"); 511# endif 512#endif 513 514 515#if @GNULIB_COSHF@ 516# if !@HAVE_COSHF@ 517# undef coshf 518_GL_FUNCDECL_SYS (coshf, float, (float x)); 519# endif 520_GL_CXXALIAS_SYS (coshf, float, (float x)); 521_GL_CXXALIASWARN (coshf); 522#elif defined GNULIB_POSIXCHECK 523# undef coshf 524# if HAVE_RAW_DECL_COSHF 525_GL_WARN_ON_USE (coshf, "coshf is unportable - " 526 "use gnulib module coshf for portability"); 527# endif 528#endif 529 530 531#if @GNULIB_EXPF@ 532# if !@HAVE_EXPF@ 533# undef expf 534_GL_FUNCDECL_SYS (expf, float, (float x)); 535# endif 536_GL_CXXALIAS_SYS (expf, float, (float x)); 537_GL_CXXALIASWARN (expf); 538#elif defined GNULIB_POSIXCHECK 539# undef expf 540# if HAVE_RAW_DECL_EXPF 541_GL_WARN_ON_USE (expf, "expf is unportable - " 542 "use gnulib module expf for portability"); 543# endif 544#endif 545 546#if @GNULIB_EXPL@ 547# if !@HAVE_EXPL@ || !@HAVE_DECL_EXPL@ 548# undef expl 549_GL_FUNCDECL_SYS (expl, long double, (long double x)); 550# endif 551_GL_CXXALIAS_SYS (expl, long double, (long double x)); 552_GL_CXXALIASWARN (expl); 553#elif defined GNULIB_POSIXCHECK 554# undef expl 555# if HAVE_RAW_DECL_EXPL 556_GL_WARN_ON_USE (expl, "expl is unportable - " 557 "use gnulib module expl for portability"); 558# endif 559#endif 560 561 562#if @GNULIB_EXP2F@ 563# if !@HAVE_DECL_EXP2F@ 564_GL_FUNCDECL_SYS (exp2f, float, (float x)); 565# endif 566_GL_CXXALIAS_SYS (exp2f, float, (float x)); 567_GL_CXXALIASWARN (exp2f); 568#elif defined GNULIB_POSIXCHECK 569# undef exp2f 570# if HAVE_RAW_DECL_EXP2F 571_GL_WARN_ON_USE (exp2f, "exp2f is unportable - " 572 "use gnulib module exp2f for portability"); 573# endif 574#endif 575 576#if @GNULIB_EXP2@ 577# if @REPLACE_EXP2@ 578# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 579# undef exp2 580# define exp2 rpl_exp2 581# endif 582_GL_FUNCDECL_RPL (exp2, double, (double x)); 583_GL_CXXALIAS_RPL (exp2, double, (double x)); 584# else 585# if !@HAVE_DECL_EXP2@ 586_GL_FUNCDECL_SYS (exp2, double, (double x)); 587# endif 588_GL_CXXALIAS_SYS (exp2, double, (double x)); 589# endif 590_GL_CXXALIASWARN (exp2); 591#elif defined GNULIB_POSIXCHECK 592# undef exp2 593# if HAVE_RAW_DECL_EXP2 594_GL_WARN_ON_USE (exp2, "exp2 is unportable - " 595 "use gnulib module exp2 for portability"); 596# endif 597#endif 598 599#if @GNULIB_EXP2L@ 600# if @REPLACE_EXP2L@ 601# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 602# undef exp2l 603# define exp2l rpl_exp2l 604# endif 605_GL_FUNCDECL_RPL (exp2l, long double, (long double x)); 606_GL_CXXALIAS_RPL (exp2l, long double, (long double x)); 607# else 608# if !@HAVE_DECL_EXP2L@ 609# undef exp2l 610_GL_FUNCDECL_SYS (exp2l, long double, (long double x)); 611# endif 612_GL_CXXALIAS_SYS (exp2l, long double, (long double x)); 613# endif 614_GL_CXXALIASWARN (exp2l); 615#elif defined GNULIB_POSIXCHECK 616# undef exp2l 617# if HAVE_RAW_DECL_EXP2L 618_GL_WARN_ON_USE (exp2l, "exp2l is unportable - " 619 "use gnulib module exp2l for portability"); 620# endif 621#endif 622 623 624#if @GNULIB_EXPM1F@ 625# if @REPLACE_EXPM1F@ 626# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 627# undef expm1f 628# define expm1f rpl_expm1f 629# endif 630_GL_FUNCDECL_RPL (expm1f, float, (float x)); 631_GL_CXXALIAS_RPL (expm1f, float, (float x)); 632# else 633# if !@HAVE_EXPM1F@ 634_GL_FUNCDECL_SYS (expm1f, float, (float x)); 635# endif 636_GL_CXXALIAS_SYS (expm1f, float, (float x)); 637# endif 638_GL_CXXALIASWARN (expm1f); 639#elif defined GNULIB_POSIXCHECK 640# undef expm1f 641# if HAVE_RAW_DECL_EXPM1F 642_GL_WARN_ON_USE (expm1f, "expm1f is unportable - " 643 "use gnulib module expm1f for portability"); 644# endif 645#endif 646 647#if @GNULIB_EXPM1@ 648# if @REPLACE_EXPM1@ 649# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 650# undef expm1 651# define expm1 rpl_expm1 652# endif 653_GL_FUNCDECL_RPL (expm1, double, (double x)); 654_GL_CXXALIAS_RPL (expm1, double, (double x)); 655# else 656# if !@HAVE_EXPM1@ 657_GL_FUNCDECL_SYS (expm1, double, (double x)); 658# endif 659_GL_CXXALIAS_SYS (expm1, double, (double x)); 660# endif 661_GL_CXXALIASWARN (expm1); 662#elif defined GNULIB_POSIXCHECK 663# undef expm1 664# if HAVE_RAW_DECL_EXPM1 665_GL_WARN_ON_USE (expm1, "expm1 is unportable - " 666 "use gnulib module expm1 for portability"); 667# endif 668#endif 669 670#if @GNULIB_EXPM1L@ 671# if !@HAVE_DECL_EXPM1L@ 672# undef expm1l 673_GL_FUNCDECL_SYS (expm1l, long double, (long double x)); 674# endif 675_GL_CXXALIAS_SYS (expm1l, long double, (long double x)); 676_GL_CXXALIASWARN (expm1l); 677#elif defined GNULIB_POSIXCHECK 678# undef expm1l 679# if HAVE_RAW_DECL_EXPM1L 680_GL_WARN_ON_USE (expm1l, "expm1l is unportable - " 681 "use gnulib module expm1l for portability"); 682# endif 683#endif 684 685 686#if @GNULIB_FABSF@ 687# if !@HAVE_FABSF@ 688# undef fabsf 689_GL_FUNCDECL_SYS (fabsf, float, (float x)); 690# endif 691_GL_CXXALIAS_SYS (fabsf, float, (float x)); 692_GL_CXXALIASWARN (fabsf); 693#elif defined GNULIB_POSIXCHECK 694# undef fabsf 695# if HAVE_RAW_DECL_FABSF 696_GL_WARN_ON_USE (fabsf, "fabsf is unportable - " 697 "use gnulib module fabsf for portability"); 698# endif 699#endif 700 701#if @GNULIB_FABSL@ 702# if @REPLACE_FABSL@ 703# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 704# undef fabsl 705# define fabsl rpl_fabsl 706# endif 707_GL_FUNCDECL_RPL (fabsl, long double, (long double x)); 708_GL_CXXALIAS_RPL (fabsl, long double, (long double x)); 709# else 710# if !@HAVE_FABSL@ 711# undef fabsl 712_GL_FUNCDECL_SYS (fabsl, long double, (long double x)); 713# endif 714_GL_CXXALIAS_SYS (fabsl, long double, (long double x)); 715# endif 716_GL_CXXALIASWARN (fabsl); 717#elif defined GNULIB_POSIXCHECK 718# undef fabsl 719# if HAVE_RAW_DECL_FABSL 720_GL_WARN_ON_USE (fabsl, "fabsl is unportable - " 721 "use gnulib module fabsl for portability"); 722# endif 723#endif 724 725 726#if @GNULIB_FLOORF@ 727# if @REPLACE_FLOORF@ 728# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 729# undef floorf 730# define floorf rpl_floorf 731# endif 732_GL_FUNCDECL_RPL (floorf, float, (float x)); 733_GL_CXXALIAS_RPL (floorf, float, (float x)); 734# else 735# if !@HAVE_DECL_FLOORF@ 736# undef floorf 737_GL_FUNCDECL_SYS (floorf, float, (float x)); 738# endif 739_GL_CXXALIAS_SYS (floorf, float, (float x)); 740# endif 741_GL_CXXALIASWARN (floorf); 742#elif defined GNULIB_POSIXCHECK 743# undef floorf 744# if HAVE_RAW_DECL_FLOORF 745_GL_WARN_ON_USE (floorf, "floorf is unportable - " 746 "use gnulib module floorf for portability"); 747# endif 748#endif 749 750#if @GNULIB_FLOOR@ 751# if @REPLACE_FLOOR@ 752# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 753# define floor rpl_floor 754# endif 755_GL_FUNCDECL_RPL (floor, double, (double x)); 756_GL_CXXALIAS_RPL (floor, double, (double x)); 757# else 758_GL_CXXALIAS_SYS (floor, double, (double x)); 759# endif 760_GL_CXXALIASWARN (floor); 761#endif 762 763#if @GNULIB_FLOORL@ 764# if @REPLACE_FLOORL@ 765# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 766# undef floorl 767# define floorl rpl_floorl 768# endif 769_GL_FUNCDECL_RPL (floorl, long double, (long double x)); 770_GL_CXXALIAS_RPL (floorl, long double, (long double x)); 771# else 772# if !@HAVE_DECL_FLOORL@ 773# undef floorl 774_GL_FUNCDECL_SYS (floorl, long double, (long double x)); 775# endif 776_GL_CXXALIAS_SYS (floorl, long double, (long double x)); 777# endif 778_GL_CXXALIASWARN (floorl); 779#elif defined GNULIB_POSIXCHECK 780# undef floorl 781# if HAVE_RAW_DECL_FLOORL 782_GL_WARN_ON_USE (floorl, "floorl is unportable - " 783 "use gnulib module floorl for portability"); 784# endif 785#endif 786 787 788#if @GNULIB_FMAF@ 789# if @REPLACE_FMAF@ 790# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 791# undef fmaf 792# define fmaf rpl_fmaf 793# endif 794_GL_FUNCDECL_RPL (fmaf, float, (float x, float y, float z)); 795_GL_CXXALIAS_RPL (fmaf, float, (float x, float y, float z)); 796# else 797# if !@HAVE_FMAF@ 798_GL_FUNCDECL_SYS (fmaf, float, (float x, float y, float z)); 799# endif 800_GL_CXXALIAS_SYS (fmaf, float, (float x, float y, float z)); 801# endif 802_GL_CXXALIASWARN (fmaf); 803#elif defined GNULIB_POSIXCHECK 804# undef fmaf 805# if HAVE_RAW_DECL_FMAF 806_GL_WARN_ON_USE (fmaf, "fmaf is unportable - " 807 "use gnulib module fmaf for portability"); 808# endif 809#endif 810 811#if @GNULIB_FMA@ 812# if @REPLACE_FMA@ 813# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 814# undef fma 815# define fma rpl_fma 816# endif 817_GL_FUNCDECL_RPL (fma, double, (double x, double y, double z)); 818_GL_CXXALIAS_RPL (fma, double, (double x, double y, double z)); 819# else 820# if !@HAVE_FMA@ 821_GL_FUNCDECL_SYS (fma, double, (double x, double y, double z)); 822# endif 823_GL_CXXALIAS_SYS (fma, double, (double x, double y, double z)); 824# endif 825_GL_CXXALIASWARN (fma); 826#elif defined GNULIB_POSIXCHECK 827# undef fma 828# if HAVE_RAW_DECL_FMA 829_GL_WARN_ON_USE (fma, "fma is unportable - " 830 "use gnulib module fma for portability"); 831# endif 832#endif 833 834#if @GNULIB_FMAL@ 835# if @REPLACE_FMAL@ 836# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 837# undef fmal 838# define fmal rpl_fmal 839# endif 840_GL_FUNCDECL_RPL (fmal, long double, 841 (long double x, long double y, long double z)); 842_GL_CXXALIAS_RPL (fmal, long double, 843 (long double x, long double y, long double z)); 844# else 845# if !@HAVE_FMAL@ 846# undef fmal 847_GL_FUNCDECL_SYS (fmal, long double, 848 (long double x, long double y, long double z)); 849# endif 850_GL_CXXALIAS_SYS (fmal, long double, 851 (long double x, long double y, long double z)); 852# endif 853_GL_CXXALIASWARN (fmal); 854#elif defined GNULIB_POSIXCHECK 855# undef fmal 856# if HAVE_RAW_DECL_FMAL 857_GL_WARN_ON_USE (fmal, "fmal is unportable - " 858 "use gnulib module fmal for portability"); 859# endif 860#endif 861 862 863#if @GNULIB_FMODF@ 864# if @REPLACE_FMODF@ 865# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 866# undef fmodf 867# define fmodf rpl_fmodf 868# endif 869_GL_FUNCDECL_RPL (fmodf, float, (float x, float y)); 870_GL_CXXALIAS_RPL (fmodf, float, (float x, float y)); 871# else 872# if !@HAVE_FMODF@ 873# undef fmodf 874_GL_FUNCDECL_SYS (fmodf, float, (float x, float y)); 875# endif 876_GL_CXXALIAS_SYS (fmodf, float, (float x, float y)); 877# endif 878_GL_CXXALIASWARN (fmodf); 879#elif defined GNULIB_POSIXCHECK 880# undef fmodf 881# if HAVE_RAW_DECL_FMODF 882_GL_WARN_ON_USE (fmodf, "fmodf is unportable - " 883 "use gnulib module fmodf for portability"); 884# endif 885#endif 886 887#if @GNULIB_FMOD@ 888# if @REPLACE_FMOD@ 889# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 890# undef fmod 891# define fmod rpl_fmod 892# endif 893_GL_FUNCDECL_RPL (fmod, double, (double x, double y)); 894_GL_CXXALIAS_RPL (fmod, double, (double x, double y)); 895# else 896_GL_CXXALIAS_SYS (fmod, double, (double x, double y)); 897# endif 898_GL_CXXALIASWARN (fmod); 899#elif defined GNULIB_POSIXCHECK 900# undef fmod 901# if HAVE_RAW_DECL_FMOD 902_GL_WARN_ON_USE (fmod, "fmod has portability problems - " 903 "use gnulib module fmod for portability"); 904# endif 905#endif 906 907#if @GNULIB_FMODL@ 908# if @REPLACE_FMODL@ 909# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 910# undef fmodl 911# define fmodl rpl_fmodl 912# endif 913_GL_FUNCDECL_RPL (fmodl, long double, (long double x, long double y)); 914_GL_CXXALIAS_RPL (fmodl, long double, (long double x, long double y)); 915# else 916# if !@HAVE_FMODL@ 917# undef fmodl 918_GL_FUNCDECL_SYS (fmodl, long double, (long double x, long double y)); 919# endif 920_GL_CXXALIAS_SYS (fmodl, long double, (long double x, long double y)); 921# endif 922_GL_CXXALIASWARN (fmodl); 923#elif defined GNULIB_POSIXCHECK 924# undef fmodl 925# if HAVE_RAW_DECL_FMODL 926_GL_WARN_ON_USE (fmodl, "fmodl is unportable - " 927 "use gnulib module fmodl for portability"); 928# endif 929#endif 930 931 932/* Write x as 933 x = mantissa * 2^exp 934 where 935 If x finite and nonzero: 0.5 <= |mantissa| < 1.0. 936 If x is zero: mantissa = x, exp = 0. 937 If x is infinite or NaN: mantissa = x, exp unspecified. 938 Store exp in *EXPPTR and return mantissa. */ 939#if @GNULIB_FREXPF@ 940# if @REPLACE_FREXPF@ 941# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 942# undef frexpf 943# define frexpf rpl_frexpf 944# endif 945_GL_FUNCDECL_RPL (frexpf, float, (float x, int *expptr) _GL_ARG_NONNULL ((2))); 946_GL_CXXALIAS_RPL (frexpf, float, (float x, int *expptr)); 947# else 948# if !@HAVE_FREXPF@ 949# undef frexpf 950_GL_FUNCDECL_SYS (frexpf, float, (float x, int *expptr) _GL_ARG_NONNULL ((2))); 951# endif 952_GL_CXXALIAS_SYS (frexpf, float, (float x, int *expptr)); 953# endif 954_GL_CXXALIASWARN (frexpf); 955#elif defined GNULIB_POSIXCHECK 956# undef frexpf 957# if HAVE_RAW_DECL_FREXPF 958_GL_WARN_ON_USE (frexpf, "frexpf is unportable - " 959 "use gnulib module frexpf for portability"); 960# endif 961#endif 962 963/* Write x as 964 x = mantissa * 2^exp 965 where 966 If x finite and nonzero: 0.5 <= |mantissa| < 1.0. 967 If x is zero: mantissa = x, exp = 0. 968 If x is infinite or NaN: mantissa = x, exp unspecified. 969 Store exp in *EXPPTR and return mantissa. */ 970#if @GNULIB_FREXP@ 971# if @REPLACE_FREXP@ 972# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 973# define frexp rpl_frexp 974# endif 975_GL_FUNCDECL_RPL (frexp, double, (double x, int *expptr) _GL_ARG_NONNULL ((2))); 976_GL_CXXALIAS_RPL (frexp, double, (double x, int *expptr)); 977# else 978_GL_CXXALIAS_SYS (frexp, double, (double x, int *expptr)); 979# endif 980_GL_CXXALIASWARN (frexp); 981#elif defined GNULIB_POSIXCHECK 982# undef frexp 983/* Assume frexp is always declared. */ 984_GL_WARN_ON_USE (frexp, "frexp is unportable - " 985 "use gnulib module frexp for portability"); 986#endif 987 988/* Write x as 989 x = mantissa * 2^exp 990 where 991 If x finite and nonzero: 0.5 <= |mantissa| < 1.0. 992 If x is zero: mantissa = x, exp = 0. 993 If x is infinite or NaN: mantissa = x, exp unspecified. 994 Store exp in *EXPPTR and return mantissa. */ 995#if @GNULIB_FREXPL@ && @REPLACE_FREXPL@ 996# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 997# undef frexpl 998# define frexpl rpl_frexpl 999# endif 1000_GL_FUNCDECL_RPL (frexpl, long double, 1001 (long double x, int *expptr) _GL_ARG_NONNULL ((2))); 1002_GL_CXXALIAS_RPL (frexpl, long double, (long double x, int *expptr)); 1003#else 1004# if !@HAVE_DECL_FREXPL@ 1005_GL_FUNCDECL_SYS (frexpl, long double, 1006 (long double x, int *expptr) _GL_ARG_NONNULL ((2))); 1007# endif 1008# if @GNULIB_FREXPL@ 1009_GL_CXXALIAS_SYS (frexpl, long double, (long double x, int *expptr)); 1010# endif 1011#endif 1012#if @GNULIB_FREXPL@ && !(@REPLACE_FREXPL@ && !@HAVE_DECL_FREXPL@) 1013_GL_CXXALIASWARN (frexpl); 1014#endif 1015#if !@GNULIB_FREXPL@ && defined GNULIB_POSIXCHECK 1016# undef frexpl 1017# if HAVE_RAW_DECL_FREXPL 1018_GL_WARN_ON_USE (frexpl, "frexpl is unportable - " 1019 "use gnulib module frexpl for portability"); 1020# endif 1021#endif 1022 1023 1024/* Return sqrt(x^2+y^2). */ 1025#if @GNULIB_HYPOTF@ 1026# if @REPLACE_HYPOTF@ 1027# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1028# undef hypotf 1029# define hypotf rpl_hypotf 1030# endif 1031_GL_FUNCDECL_RPL (hypotf, float, (float x, float y)); 1032_GL_CXXALIAS_RPL (hypotf, float, (float x, float y)); 1033# else 1034# if !@HAVE_HYPOTF@ 1035_GL_FUNCDECL_SYS (hypotf, float, (float x, float y)); 1036# endif 1037_GL_CXXALIAS_SYS (hypotf, float, (float x, float y)); 1038# endif 1039_GL_CXXALIASWARN (hypotf); 1040#elif defined GNULIB_POSIXCHECK 1041# undef hypotf 1042# if HAVE_RAW_DECL_HYPOTF 1043_GL_WARN_ON_USE (hypotf, "hypotf is unportable - " 1044 "use gnulib module hypotf for portability"); 1045# endif 1046#endif 1047 1048/* Return sqrt(x^2+y^2). */ 1049#if @GNULIB_HYPOT@ 1050# if @REPLACE_HYPOT@ 1051# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1052# undef hypot 1053# define hypot rpl_hypot 1054# endif 1055_GL_FUNCDECL_RPL (hypot, double, (double x, double y)); 1056_GL_CXXALIAS_RPL (hypot, double, (double x, double y)); 1057# else 1058_GL_CXXALIAS_SYS (hypot, double, (double x, double y)); 1059# endif 1060_GL_CXXALIASWARN (hypot); 1061#elif defined GNULIB_POSIXCHECK 1062# undef hypot 1063# if HAVE_RAW_DECL_HYPOT 1064_GL_WARN_ON_USE (hypotf, "hypot has portability problems - " 1065 "use gnulib module hypot for portability"); 1066# endif 1067#endif 1068 1069/* Return sqrt(x^2+y^2). */ 1070#if @GNULIB_HYPOTL@ 1071# if @REPLACE_HYPOTL@ 1072# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1073# undef hypotl 1074# define hypotl rpl_hypotl 1075# endif 1076_GL_FUNCDECL_RPL (hypotl, long double, (long double x, long double y)); 1077_GL_CXXALIAS_RPL (hypotl, long double, (long double x, long double y)); 1078# else 1079# if !@HAVE_HYPOTL@ 1080_GL_FUNCDECL_SYS (hypotl, long double, (long double x, long double y)); 1081# endif 1082_GL_CXXALIAS_SYS (hypotl, long double, (long double x, long double y)); 1083# endif 1084_GL_CXXALIASWARN (hypotl); 1085#elif defined GNULIB_POSIXCHECK 1086# undef hypotl 1087# if HAVE_RAW_DECL_HYPOTL 1088_GL_WARN_ON_USE (hypotl, "hypotl is unportable - " 1089 "use gnulib module hypotl for portability"); 1090# endif 1091#endif 1092 1093 1094#if @GNULIB_ILOGBF@ 1095# if @REPLACE_ILOGBF@ 1096# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1097# undef ilogbf 1098# define ilogbf rpl_ilogbf 1099# endif 1100_GL_FUNCDECL_RPL (ilogbf, int, (float x)); 1101_GL_CXXALIAS_RPL (ilogbf, int, (float x)); 1102# else 1103# if !@HAVE_ILOGBF@ 1104_GL_FUNCDECL_SYS (ilogbf, int, (float x)); 1105# endif 1106_GL_CXXALIAS_SYS (ilogbf, int, (float x)); 1107# endif 1108_GL_CXXALIASWARN (ilogbf); 1109#elif defined GNULIB_POSIXCHECK 1110# undef ilogbf 1111# if HAVE_RAW_DECL_ILOGBF 1112_GL_WARN_ON_USE (ilogbf, "ilogbf is unportable - " 1113 "use gnulib module ilogbf for portability"); 1114# endif 1115#endif 1116 1117#if @GNULIB_ILOGB@ 1118# if @REPLACE_ILOGB@ 1119# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1120# undef ilogb 1121# define ilogb rpl_ilogb 1122# endif 1123_GL_FUNCDECL_RPL (ilogb, int, (double x)); 1124_GL_CXXALIAS_RPL (ilogb, int, (double x)); 1125# else 1126# if !@HAVE_ILOGB@ 1127_GL_FUNCDECL_SYS (ilogb, int, (double x)); 1128# endif 1129_GL_CXXALIAS_SYS (ilogb, int, (double x)); 1130# endif 1131_GL_CXXALIASWARN (ilogb); 1132#elif defined GNULIB_POSIXCHECK 1133# undef ilogb 1134# if HAVE_RAW_DECL_ILOGB 1135_GL_WARN_ON_USE (ilogb, "ilogb is unportable - " 1136 "use gnulib module ilogb for portability"); 1137# endif 1138#endif 1139 1140#if @GNULIB_ILOGBL@ 1141# if !@HAVE_ILOGBL@ 1142_GL_FUNCDECL_SYS (ilogbl, int, (long double x)); 1143# endif 1144_GL_CXXALIAS_SYS (ilogbl, int, (long double x)); 1145_GL_CXXALIASWARN (ilogbl); 1146#elif defined GNULIB_POSIXCHECK 1147# undef ilogbl 1148# if HAVE_RAW_DECL_ILOGBL 1149_GL_WARN_ON_USE (ilogbl, "ilogbl is unportable - " 1150 "use gnulib module ilogbl for portability"); 1151# endif 1152#endif 1153 1154 1155/* Return x * 2^exp. */ 1156#if @GNULIB_LDEXPF@ 1157# if !@HAVE_LDEXPF@ 1158# undef ldexpf 1159_GL_FUNCDECL_SYS (ldexpf, float, (float x, int exp)); 1160# endif 1161_GL_CXXALIAS_SYS (ldexpf, float, (float x, int exp)); 1162_GL_CXXALIASWARN (ldexpf); 1163#elif defined GNULIB_POSIXCHECK 1164# undef ldexpf 1165# if HAVE_RAW_DECL_LDEXPF 1166_GL_WARN_ON_USE (ldexpf, "ldexpf is unportable - " 1167 "use gnulib module ldexpf for portability"); 1168# endif 1169#endif 1170 1171/* Return x * 2^exp. */ 1172#if @GNULIB_LDEXPL@ && @REPLACE_LDEXPL@ 1173# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1174# undef ldexpl 1175# define ldexpl rpl_ldexpl 1176# endif 1177_GL_FUNCDECL_RPL (ldexpl, long double, (long double x, int exp)); 1178_GL_CXXALIAS_RPL (ldexpl, long double, (long double x, int exp)); 1179#else 1180# if !@HAVE_DECL_LDEXPL@ 1181_GL_FUNCDECL_SYS (ldexpl, long double, (long double x, int exp)); 1182# endif 1183# if @GNULIB_LDEXPL@ 1184_GL_CXXALIAS_SYS (ldexpl, long double, (long double x, int exp)); 1185# endif 1186#endif 1187#if @GNULIB_LDEXPL@ 1188_GL_CXXALIASWARN (ldexpl); 1189#endif 1190#if !@GNULIB_LDEXPL@ && defined GNULIB_POSIXCHECK 1191# undef ldexpl 1192# if HAVE_RAW_DECL_LDEXPL 1193_GL_WARN_ON_USE (ldexpl, "ldexpl is unportable - " 1194 "use gnulib module ldexpl for portability"); 1195# endif 1196#endif 1197 1198 1199#if @GNULIB_LOGF@ 1200# if @REPLACE_LOGF@ 1201# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1202# undef logf 1203# define logf rpl_logf 1204# endif 1205_GL_FUNCDECL_RPL (logf, float, (float x)); 1206_GL_CXXALIAS_RPL (logf, float, (float x)); 1207# else 1208# if !@HAVE_LOGF@ 1209# undef logf 1210_GL_FUNCDECL_SYS (logf, float, (float x)); 1211# endif 1212_GL_CXXALIAS_SYS (logf, float, (float x)); 1213# endif 1214_GL_CXXALIASWARN (logf); 1215#elif defined GNULIB_POSIXCHECK 1216# undef logf 1217# if HAVE_RAW_DECL_LOGF 1218_GL_WARN_ON_USE (logf, "logf is unportable - " 1219 "use gnulib module logf for portability"); 1220# endif 1221#endif 1222 1223#if @GNULIB_LOG@ 1224# if @REPLACE_LOG@ 1225# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1226# undef log 1227# define log rpl_log 1228# endif 1229_GL_FUNCDECL_RPL (log, double, (double x)); 1230_GL_CXXALIAS_RPL (log, double, (double x)); 1231# else 1232_GL_CXXALIAS_SYS (log, double, (double x)); 1233# endif 1234_GL_CXXALIASWARN (log); 1235#elif defined GNULIB_POSIXCHECK 1236# undef log 1237# if HAVE_RAW_DECL_LOG 1238_GL_WARN_ON_USE (log, "log has portability problems - " 1239 "use gnulib module log for portability"); 1240# endif 1241#endif 1242 1243#if @GNULIB_LOGL@ 1244# if @REPLACE_LOGL@ 1245# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1246# undef logl 1247# define logl rpl_logl 1248# endif 1249_GL_FUNCDECL_RPL (logl, long double, (long double x)); 1250_GL_CXXALIAS_RPL (logl, long double, (long double x)); 1251# else 1252# if !@HAVE_LOGL@ || !@HAVE_DECL_LOGL@ 1253# undef logl 1254_GL_FUNCDECL_SYS (logl, long double, (long double x)); 1255# endif 1256_GL_CXXALIAS_SYS (logl, long double, (long double x)); 1257# endif 1258_GL_CXXALIASWARN (logl); 1259#elif defined GNULIB_POSIXCHECK 1260# undef logl 1261# if HAVE_RAW_DECL_LOGL 1262_GL_WARN_ON_USE (logl, "logl is unportable - " 1263 "use gnulib module logl for portability"); 1264# endif 1265#endif 1266 1267 1268#if @GNULIB_LOG10F@ 1269# if @REPLACE_LOG10F@ 1270# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1271# undef log10f 1272# define log10f rpl_log10f 1273# endif 1274_GL_FUNCDECL_RPL (log10f, float, (float x)); 1275_GL_CXXALIAS_RPL (log10f, float, (float x)); 1276# else 1277# if !@HAVE_LOG10F@ 1278# undef log10f 1279_GL_FUNCDECL_SYS (log10f, float, (float x)); 1280# endif 1281_GL_CXXALIAS_SYS (log10f, float, (float x)); 1282# endif 1283_GL_CXXALIASWARN (log10f); 1284#elif defined GNULIB_POSIXCHECK 1285# undef log10f 1286# if HAVE_RAW_DECL_LOG10F 1287_GL_WARN_ON_USE (log10f, "log10f is unportable - " 1288 "use gnulib module log10f for portability"); 1289# endif 1290#endif 1291 1292#if @GNULIB_LOG10@ 1293# if @REPLACE_LOG10@ 1294# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1295# undef log10 1296# define log10 rpl_log10 1297# endif 1298_GL_FUNCDECL_RPL (log10, double, (double x)); 1299_GL_CXXALIAS_RPL (log10, double, (double x)); 1300# else 1301_GL_CXXALIAS_SYS (log10, double, (double x)); 1302# endif 1303_GL_CXXALIASWARN (log10); 1304#elif defined GNULIB_POSIXCHECK 1305# undef log10 1306# if HAVE_RAW_DECL_LOG10 1307_GL_WARN_ON_USE (log10, "log10 has portability problems - " 1308 "use gnulib module log10 for portability"); 1309# endif 1310#endif 1311 1312#if @GNULIB_LOG10L@ 1313# if @REPLACE_LOG10L@ 1314# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1315# undef log10l 1316# define log10l rpl_log10l 1317# endif 1318_GL_FUNCDECL_RPL (log10l, long double, (long double x)); 1319_GL_CXXALIAS_RPL (log10l, long double, (long double x)); 1320# else 1321# if !@HAVE_LOG10L@ || !@HAVE_DECL_LOG10L@ 1322# undef log10l 1323_GL_FUNCDECL_SYS (log10l, long double, (long double x)); 1324# endif 1325_GL_CXXALIAS_SYS (log10l, long double, (long double x)); 1326# endif 1327_GL_CXXALIASWARN (log10l); 1328#elif defined GNULIB_POSIXCHECK 1329# undef log10l 1330# if HAVE_RAW_DECL_LOG10L 1331_GL_WARN_ON_USE (log10l, "log10l is unportable - " 1332 "use gnulib module log10l for portability"); 1333# endif 1334#endif 1335 1336 1337#if @GNULIB_LOG1PF@ 1338# if @REPLACE_LOG1PF@ 1339# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1340# undef log1pf 1341# define log1pf rpl_log1pf 1342# endif 1343_GL_FUNCDECL_RPL (log1pf, float, (float x)); 1344_GL_CXXALIAS_RPL (log1pf, float, (float x)); 1345# else 1346# if !@HAVE_LOG1PF@ 1347_GL_FUNCDECL_SYS (log1pf, float, (float x)); 1348# endif 1349_GL_CXXALIAS_SYS (log1pf, float, (float x)); 1350# endif 1351_GL_CXXALIASWARN (log1pf); 1352#elif defined GNULIB_POSIXCHECK 1353# undef log1pf 1354# if HAVE_RAW_DECL_LOG1PF 1355_GL_WARN_ON_USE (log1pf, "log1pf is unportable - " 1356 "use gnulib module log1pf for portability"); 1357# endif 1358#endif 1359 1360#if @GNULIB_LOG1P@ 1361# if @REPLACE_LOG1P@ 1362# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1363# undef log1p 1364# define log1p rpl_log1p 1365# endif 1366_GL_FUNCDECL_RPL (log1p, double, (double x)); 1367_GL_CXXALIAS_RPL (log1p, double, (double x)); 1368# else 1369# if !@HAVE_LOG1P@ 1370_GL_FUNCDECL_SYS (log1p, double, (double x)); 1371# endif 1372_GL_CXXALIAS_SYS (log1p, double, (double x)); 1373# endif 1374_GL_CXXALIASWARN (log1p); 1375#elif defined GNULIB_POSIXCHECK 1376# undef log1p 1377# if HAVE_RAW_DECL_LOG1P 1378_GL_WARN_ON_USE (log1p, "log1p has portability problems - " 1379 "use gnulib module log1p for portability"); 1380# endif 1381#endif 1382 1383#if @GNULIB_LOG1PL@ 1384# if @REPLACE_LOG1PL@ 1385# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1386# undef log1pl 1387# define log1pl rpl_log1pl 1388# endif 1389_GL_FUNCDECL_RPL (log1pl, long double, (long double x)); 1390_GL_CXXALIAS_RPL (log1pl, long double, (long double x)); 1391# else 1392# if !@HAVE_LOG1PL@ 1393_GL_FUNCDECL_SYS (log1pl, long double, (long double x)); 1394# endif 1395_GL_CXXALIAS_SYS (log1pl, long double, (long double x)); 1396# endif 1397_GL_CXXALIASWARN (log1pl); 1398#elif defined GNULIB_POSIXCHECK 1399# undef log1pl 1400# if HAVE_RAW_DECL_LOG1PL 1401_GL_WARN_ON_USE (log1pl, "log1pl has portability problems - " 1402 "use gnulib module log1pl for portability"); 1403# endif 1404#endif 1405 1406 1407#if @GNULIB_LOG2F@ 1408# if @REPLACE_LOG2F@ 1409# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1410# undef log2f 1411# define log2f rpl_log2f 1412# endif 1413_GL_FUNCDECL_RPL (log2f, float, (float x)); 1414_GL_CXXALIAS_RPL (log2f, float, (float x)); 1415# else 1416# if !@HAVE_DECL_LOG2F@ 1417# undef log2f 1418_GL_FUNCDECL_SYS (log2f, float, (float x)); 1419# endif 1420_GL_CXXALIAS_SYS (log2f, float, (float x)); 1421# endif 1422_GL_CXXALIASWARN (log2f); 1423#elif defined GNULIB_POSIXCHECK 1424# undef log2f 1425# if HAVE_RAW_DECL_LOG2F 1426_GL_WARN_ON_USE (log2f, "log2f is unportable - " 1427 "use gnulib module log2f for portability"); 1428# endif 1429#endif 1430 1431#if @GNULIB_LOG2@ 1432# if @REPLACE_LOG2@ 1433# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1434# undef log2 1435# define log2 rpl_log2 1436# endif 1437_GL_FUNCDECL_RPL (log2, double, (double x)); 1438_GL_CXXALIAS_RPL (log2, double, (double x)); 1439# else 1440# if !@HAVE_DECL_LOG2@ 1441# undef log2 1442_GL_FUNCDECL_SYS (log2, double, (double x)); 1443# endif 1444_GL_CXXALIAS_SYS (log2, double, (double x)); 1445# endif 1446_GL_CXXALIASWARN (log2); 1447#elif defined GNULIB_POSIXCHECK 1448# undef log2 1449# if HAVE_RAW_DECL_LOG2 1450_GL_WARN_ON_USE (log2, "log2 is unportable - " 1451 "use gnulib module log2 for portability"); 1452# endif 1453#endif 1454 1455#if @GNULIB_LOG2L@ 1456# if @REPLACE_LOG2L@ 1457# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1458# undef log2l 1459# define log2l rpl_log2l 1460# endif 1461_GL_FUNCDECL_RPL (log2l, long double, (long double x)); 1462_GL_CXXALIAS_RPL (log2l, long double, (long double x)); 1463# else 1464# if !@HAVE_DECL_LOG2L@ 1465_GL_FUNCDECL_SYS (log2l, long double, (long double x)); 1466# endif 1467_GL_CXXALIAS_SYS (log2l, long double, (long double x)); 1468# endif 1469_GL_CXXALIASWARN (log2l); 1470#elif defined GNULIB_POSIXCHECK 1471# undef log2l 1472# if HAVE_RAW_DECL_LOG2L 1473_GL_WARN_ON_USE (log2l, "log2l is unportable - " 1474 "use gnulib module log2l for portability"); 1475# endif 1476#endif 1477 1478 1479#if @GNULIB_LOGBF@ 1480# if @REPLACE_LOGBF@ 1481# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1482# undef logbf 1483# define logbf rpl_logbf 1484# endif 1485_GL_FUNCDECL_RPL (logbf, float, (float x)); 1486_GL_CXXALIAS_RPL (logbf, float, (float x)); 1487# else 1488# if !@HAVE_LOGBF@ 1489_GL_FUNCDECL_SYS (logbf, float, (float x)); 1490# endif 1491_GL_CXXALIAS_SYS (logbf, float, (float x)); 1492# endif 1493_GL_CXXALIASWARN (logbf); 1494#elif defined GNULIB_POSIXCHECK 1495# undef logbf 1496# if HAVE_RAW_DECL_LOGBF 1497_GL_WARN_ON_USE (logbf, "logbf is unportable - " 1498 "use gnulib module logbf for portability"); 1499# endif 1500#endif 1501 1502#if @GNULIB_LOGB@ 1503# if @REPLACE_LOGB@ 1504# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1505# undef logb 1506# define logb rpl_logb 1507# endif 1508_GL_FUNCDECL_RPL (logb, double, (double x)); 1509_GL_CXXALIAS_RPL (logb, double, (double x)); 1510# else 1511# if !@HAVE_DECL_LOGB@ 1512_GL_FUNCDECL_SYS (logb, double, (double x)); 1513# endif 1514_GL_CXXALIAS_SYS (logb, double, (double x)); 1515# endif 1516_GL_CXXALIASWARN (logb); 1517#elif defined GNULIB_POSIXCHECK 1518# undef logb 1519# if HAVE_RAW_DECL_LOGB 1520_GL_WARN_ON_USE (logb, "logb is unportable - " 1521 "use gnulib module logb for portability"); 1522# endif 1523#endif 1524 1525#if @GNULIB_LOGBL@ 1526# if @REPLACE_LOGBL@ 1527# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1528# undef logbl 1529# define logbl rpl_logbl 1530# endif 1531_GL_FUNCDECL_RPL (logbl, long double, (long double x)); 1532_GL_CXXALIAS_RPL (logbl, long double, (long double x)); 1533# else 1534# if !@HAVE_LOGBL@ 1535_GL_FUNCDECL_SYS (logbl, long double, (long double x)); 1536# endif 1537_GL_CXXALIAS_SYS (logbl, long double, (long double x)); 1538# endif 1539_GL_CXXALIASWARN (logbl); 1540#elif defined GNULIB_POSIXCHECK 1541# undef logbl 1542# if HAVE_RAW_DECL_LOGBL 1543_GL_WARN_ON_USE (logbl, "logbl is unportable - " 1544 "use gnulib module logbl for portability"); 1545# endif 1546#endif 1547 1548 1549#if @GNULIB_MODFF@ 1550# if @REPLACE_MODFF@ 1551# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1552# undef modff 1553# define modff rpl_modff 1554# endif 1555_GL_FUNCDECL_RPL (modff, float, (float x, float *iptr) _GL_ARG_NONNULL ((2))); 1556_GL_CXXALIAS_RPL (modff, float, (float x, float *iptr)); 1557# else 1558# if !@HAVE_MODFF@ 1559# undef modff 1560_GL_FUNCDECL_SYS (modff, float, (float x, float *iptr) _GL_ARG_NONNULL ((2))); 1561# endif 1562_GL_CXXALIAS_SYS (modff, float, (float x, float *iptr)); 1563# endif 1564_GL_CXXALIASWARN (modff); 1565#elif defined GNULIB_POSIXCHECK 1566# undef modff 1567# if HAVE_RAW_DECL_MODFF 1568_GL_WARN_ON_USE (modff, "modff is unportable - " 1569 "use gnulib module modff for portability"); 1570# endif 1571#endif 1572 1573#if @GNULIB_MODF@ 1574# if @REPLACE_MODF@ 1575# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1576# undef modf 1577# define modf rpl_modf 1578# endif 1579_GL_FUNCDECL_RPL (modf, double, (double x, double *iptr) _GL_ARG_NONNULL ((2))); 1580_GL_CXXALIAS_RPL (modf, double, (double x, double *iptr)); 1581# else 1582_GL_CXXALIAS_SYS (modf, double, (double x, double *iptr)); 1583# endif 1584_GL_CXXALIASWARN (modf); 1585#elif defined GNULIB_POSIXCHECK 1586# undef modf 1587# if HAVE_RAW_DECL_MODF 1588_GL_WARN_ON_USE (modf, "modf has portability problems - " 1589 "use gnulib module modf for portability"); 1590# endif 1591#endif 1592 1593#if @GNULIB_MODFL@ 1594# if @REPLACE_MODFL@ 1595# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1596# undef modfl 1597# define modfl rpl_modfl 1598# endif 1599_GL_FUNCDECL_RPL (modfl, long double, (long double x, long double *iptr) 1600 _GL_ARG_NONNULL ((2))); 1601_GL_CXXALIAS_RPL (modfl, long double, (long double x, long double *iptr)); 1602# else 1603# if !@HAVE_MODFL@ 1604# undef modfl 1605_GL_FUNCDECL_SYS (modfl, long double, (long double x, long double *iptr) 1606 _GL_ARG_NONNULL ((2))); 1607# endif 1608_GL_CXXALIAS_SYS (modfl, long double, (long double x, long double *iptr)); 1609# endif 1610_GL_CXXALIASWARN (modfl); 1611#elif defined GNULIB_POSIXCHECK 1612# undef modfl 1613# if HAVE_RAW_DECL_MODFL 1614_GL_WARN_ON_USE (modfl, "modfl is unportable - " 1615 "use gnulib module modfl for portability"); 1616# endif 1617#endif 1618 1619 1620#if @GNULIB_POWF@ 1621# if !@HAVE_POWF@ 1622# undef powf 1623_GL_FUNCDECL_SYS (powf, float, (float x, float y)); 1624# endif 1625_GL_CXXALIAS_SYS (powf, float, (float x, float y)); 1626_GL_CXXALIASWARN (powf); 1627#elif defined GNULIB_POSIXCHECK 1628# undef powf 1629# if HAVE_RAW_DECL_POWF 1630_GL_WARN_ON_USE (powf, "powf is unportable - " 1631 "use gnulib module powf for portability"); 1632# endif 1633#endif 1634 1635 1636#if @GNULIB_REMAINDERF@ 1637# if @REPLACE_REMAINDERF@ 1638# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1639# undef remainderf 1640# define remainderf rpl_remainderf 1641# endif 1642_GL_FUNCDECL_RPL (remainderf, float, (float x, float y)); 1643_GL_CXXALIAS_RPL (remainderf, float, (float x, float y)); 1644# else 1645# if !@HAVE_REMAINDERF@ 1646_GL_FUNCDECL_SYS (remainderf, float, (float x, float y)); 1647# endif 1648_GL_CXXALIAS_SYS (remainderf, float, (float x, float y)); 1649# endif 1650_GL_CXXALIASWARN (remainderf); 1651#elif defined GNULIB_POSIXCHECK 1652# undef remainderf 1653# if HAVE_RAW_DECL_REMAINDERF 1654_GL_WARN_ON_USE (remainderf, "remainderf is unportable - " 1655 "use gnulib module remainderf for portability"); 1656# endif 1657#endif 1658 1659#if @GNULIB_REMAINDER@ 1660# if @REPLACE_REMAINDER@ 1661# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1662# undef remainder 1663# define remainder rpl_remainder 1664# endif 1665_GL_FUNCDECL_RPL (remainder, double, (double x, double y)); 1666_GL_CXXALIAS_RPL (remainder, double, (double x, double y)); 1667# else 1668# if !@HAVE_REMAINDER@ || !@HAVE_DECL_REMAINDER@ 1669_GL_FUNCDECL_SYS (remainder, double, (double x, double y)); 1670# endif 1671_GL_CXXALIAS_SYS (remainder, double, (double x, double y)); 1672# endif 1673_GL_CXXALIASWARN (remainder); 1674#elif defined GNULIB_POSIXCHECK 1675# undef remainder 1676# if HAVE_RAW_DECL_REMAINDER 1677_GL_WARN_ON_USE (remainder, "remainder is unportable - " 1678 "use gnulib module remainder for portability"); 1679# endif 1680#endif 1681 1682#if @GNULIB_REMAINDERL@ 1683# if @REPLACE_REMAINDERL@ 1684# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1685# undef remainderl 1686# define remainderl rpl_remainderl 1687# endif 1688_GL_FUNCDECL_RPL (remainderl, long double, (long double x, long double y)); 1689_GL_CXXALIAS_RPL (remainderl, long double, (long double x, long double y)); 1690# else 1691# if !@HAVE_DECL_REMAINDERL@ 1692# undef remainderl 1693_GL_FUNCDECL_SYS (remainderl, long double, (long double x, long double y)); 1694# endif 1695_GL_CXXALIAS_SYS (remainderl, long double, (long double x, long double y)); 1696# endif 1697_GL_CXXALIASWARN (remainderl); 1698#elif defined GNULIB_POSIXCHECK 1699# undef remainderl 1700# if HAVE_RAW_DECL_REMAINDERL 1701_GL_WARN_ON_USE (remainderl, "remainderl is unportable - " 1702 "use gnulib module remainderl for portability"); 1703# endif 1704#endif 1705 1706 1707#if @GNULIB_RINTF@ 1708# if !@HAVE_DECL_RINTF@ 1709_GL_FUNCDECL_SYS (rintf, float, (float x)); 1710# endif 1711_GL_CXXALIAS_SYS (rintf, float, (float x)); 1712_GL_CXXALIASWARN (rintf); 1713#elif defined GNULIB_POSIXCHECK 1714# undef rintf 1715# if HAVE_RAW_DECL_RINTF 1716_GL_WARN_ON_USE (rintf, "rintf is unportable - " 1717 "use gnulib module rintf for portability"); 1718# endif 1719#endif 1720 1721#if @GNULIB_RINT@ 1722# if !@HAVE_RINT@ 1723_GL_FUNCDECL_SYS (rint, double, (double x)); 1724# endif 1725_GL_CXXALIAS_SYS (rint, double, (double x)); 1726_GL_CXXALIASWARN (rint); 1727#elif defined GNULIB_POSIXCHECK 1728# undef rint 1729# if HAVE_RAW_DECL_RINT 1730_GL_WARN_ON_USE (rint, "rint is unportable - " 1731 "use gnulib module rint for portability"); 1732# endif 1733#endif 1734 1735#if @GNULIB_RINTL@ 1736# if !@HAVE_RINTL@ 1737_GL_FUNCDECL_SYS (rintl, long double, (long double x)); 1738# endif 1739_GL_CXXALIAS_SYS (rintl, long double, (long double x)); 1740_GL_CXXALIASWARN (rintl); 1741#elif defined GNULIB_POSIXCHECK 1742# undef rintl 1743# if HAVE_RAW_DECL_RINTL 1744_GL_WARN_ON_USE (rintl, "rintl is unportable - " 1745 "use gnulib module rintl for portability"); 1746# endif 1747#endif 1748 1749 1750#if @GNULIB_ROUNDF@ 1751# if @REPLACE_ROUNDF@ 1752# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1753# undef roundf 1754# define roundf rpl_roundf 1755# endif 1756_GL_FUNCDECL_RPL (roundf, float, (float x)); 1757_GL_CXXALIAS_RPL (roundf, float, (float x)); 1758# else 1759# if !@HAVE_DECL_ROUNDF@ 1760_GL_FUNCDECL_SYS (roundf, float, (float x)); 1761# endif 1762_GL_CXXALIAS_SYS (roundf, float, (float x)); 1763# endif 1764_GL_CXXALIASWARN (roundf); 1765#elif defined GNULIB_POSIXCHECK 1766# undef roundf 1767# if HAVE_RAW_DECL_ROUNDF 1768_GL_WARN_ON_USE (roundf, "roundf is unportable - " 1769 "use gnulib module roundf for portability"); 1770# endif 1771#endif 1772 1773#if @GNULIB_ROUND@ 1774# if @REPLACE_ROUND@ 1775# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1776# undef round 1777# define round rpl_round 1778# endif 1779_GL_FUNCDECL_RPL (round, double, (double x)); 1780_GL_CXXALIAS_RPL (round, double, (double x)); 1781# else 1782# if !@HAVE_DECL_ROUND@ 1783_GL_FUNCDECL_SYS (round, double, (double x)); 1784# endif 1785_GL_CXXALIAS_SYS (round, double, (double x)); 1786# endif 1787_GL_CXXALIASWARN (round); 1788#elif defined GNULIB_POSIXCHECK 1789# undef round 1790# if HAVE_RAW_DECL_ROUND 1791_GL_WARN_ON_USE (round, "round is unportable - " 1792 "use gnulib module round for portability"); 1793# endif 1794#endif 1795 1796#if @GNULIB_ROUNDL@ 1797# if @REPLACE_ROUNDL@ 1798# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1799# undef roundl 1800# define roundl rpl_roundl 1801# endif 1802_GL_FUNCDECL_RPL (roundl, long double, (long double x)); 1803_GL_CXXALIAS_RPL (roundl, long double, (long double x)); 1804# else 1805# if !@HAVE_DECL_ROUNDL@ 1806# undef roundl 1807_GL_FUNCDECL_SYS (roundl, long double, (long double x)); 1808# endif 1809_GL_CXXALIAS_SYS (roundl, long double, (long double x)); 1810# endif 1811_GL_CXXALIASWARN (roundl); 1812#elif defined GNULIB_POSIXCHECK 1813# undef roundl 1814# if HAVE_RAW_DECL_ROUNDL 1815_GL_WARN_ON_USE (roundl, "roundl is unportable - " 1816 "use gnulib module roundl for portability"); 1817# endif 1818#endif 1819 1820 1821#if @GNULIB_SINF@ 1822# if !@HAVE_SINF@ 1823# undef sinf 1824_GL_FUNCDECL_SYS (sinf, float, (float x)); 1825# endif 1826_GL_CXXALIAS_SYS (sinf, float, (float x)); 1827_GL_CXXALIASWARN (sinf); 1828#elif defined GNULIB_POSIXCHECK 1829# undef sinf 1830# if HAVE_RAW_DECL_SINF 1831_GL_WARN_ON_USE (sinf, "sinf is unportable - " 1832 "use gnulib module sinf for portability"); 1833# endif 1834#endif 1835 1836#if @GNULIB_SINL@ 1837# if !@HAVE_SINL@ || !@HAVE_DECL_SINL@ 1838# undef sinl 1839_GL_FUNCDECL_SYS (sinl, long double, (long double x)); 1840# endif 1841_GL_CXXALIAS_SYS (sinl, long double, (long double x)); 1842_GL_CXXALIASWARN (sinl); 1843#elif defined GNULIB_POSIXCHECK 1844# undef sinl 1845# if HAVE_RAW_DECL_SINL 1846_GL_WARN_ON_USE (sinl, "sinl is unportable - " 1847 "use gnulib module sinl for portability"); 1848# endif 1849#endif 1850 1851 1852#if @GNULIB_SINHF@ 1853# if !@HAVE_SINHF@ 1854# undef sinhf 1855_GL_FUNCDECL_SYS (sinhf, float, (float x)); 1856# endif 1857_GL_CXXALIAS_SYS (sinhf, float, (float x)); 1858_GL_CXXALIASWARN (sinhf); 1859#elif defined GNULIB_POSIXCHECK 1860# undef sinhf 1861# if HAVE_RAW_DECL_SINHF 1862_GL_WARN_ON_USE (sinhf, "sinhf is unportable - " 1863 "use gnulib module sinhf for portability"); 1864# endif 1865#endif 1866 1867 1868#if @GNULIB_SQRTF@ 1869# if !@HAVE_SQRTF@ 1870# undef sqrtf 1871_GL_FUNCDECL_SYS (sqrtf, float, (float x)); 1872# endif 1873_GL_CXXALIAS_SYS (sqrtf, float, (float x)); 1874_GL_CXXALIASWARN (sqrtf); 1875#elif defined GNULIB_POSIXCHECK 1876# undef sqrtf 1877# if HAVE_RAW_DECL_SQRTF 1878_GL_WARN_ON_USE (sqrtf, "sqrtf is unportable - " 1879 "use gnulib module sqrtf for portability"); 1880# endif 1881#endif 1882 1883#if @GNULIB_SQRTL@ 1884# if @REPLACE_SQRTL@ 1885# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1886# undef sqrtl 1887# define sqrtl rpl_sqrtl 1888# endif 1889_GL_FUNCDECL_RPL (sqrtl, long double, (long double x)); 1890_GL_CXXALIAS_RPL (sqrtl, long double, (long double x)); 1891# else 1892# if !@HAVE_SQRTL@ || !@HAVE_DECL_SQRTL@ 1893# undef sqrtl 1894_GL_FUNCDECL_SYS (sqrtl, long double, (long double x)); 1895# endif 1896_GL_CXXALIAS_SYS (sqrtl, long double, (long double x)); 1897# endif 1898_GL_CXXALIASWARN (sqrtl); 1899#elif defined GNULIB_POSIXCHECK 1900# undef sqrtl 1901# if HAVE_RAW_DECL_SQRTL 1902_GL_WARN_ON_USE (sqrtl, "sqrtl is unportable - " 1903 "use gnulib module sqrtl for portability"); 1904# endif 1905#endif 1906 1907 1908#if @GNULIB_TANF@ 1909# if !@HAVE_TANF@ 1910# undef tanf 1911_GL_FUNCDECL_SYS (tanf, float, (float x)); 1912# endif 1913_GL_CXXALIAS_SYS (tanf, float, (float x)); 1914_GL_CXXALIASWARN (tanf); 1915#elif defined GNULIB_POSIXCHECK 1916# undef tanf 1917# if HAVE_RAW_DECL_TANF 1918_GL_WARN_ON_USE (tanf, "tanf is unportable - " 1919 "use gnulib module tanf for portability"); 1920# endif 1921#endif 1922 1923#if @GNULIB_TANL@ 1924# if !@HAVE_TANL@ || !@HAVE_DECL_TANL@ 1925# undef tanl 1926_GL_FUNCDECL_SYS (tanl, long double, (long double x)); 1927# endif 1928_GL_CXXALIAS_SYS (tanl, long double, (long double x)); 1929_GL_CXXALIASWARN (tanl); 1930#elif defined GNULIB_POSIXCHECK 1931# undef tanl 1932# if HAVE_RAW_DECL_TANL 1933_GL_WARN_ON_USE (tanl, "tanl is unportable - " 1934 "use gnulib module tanl for portability"); 1935# endif 1936#endif 1937 1938 1939#if @GNULIB_TANHF@ 1940# if !@HAVE_TANHF@ 1941# undef tanhf 1942_GL_FUNCDECL_SYS (tanhf, float, (float x)); 1943# endif 1944_GL_CXXALIAS_SYS (tanhf, float, (float x)); 1945_GL_CXXALIASWARN (tanhf); 1946#elif defined GNULIB_POSIXCHECK 1947# undef tanhf 1948# if HAVE_RAW_DECL_TANHF 1949_GL_WARN_ON_USE (tanhf, "tanhf is unportable - " 1950 "use gnulib module tanhf for portability"); 1951# endif 1952#endif 1953 1954 1955#if @GNULIB_TRUNCF@ 1956# if @REPLACE_TRUNCF@ 1957# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1958# define truncf rpl_truncf 1959# endif 1960_GL_FUNCDECL_RPL (truncf, float, (float x)); 1961_GL_CXXALIAS_RPL (truncf, float, (float x)); 1962# else 1963# if !@HAVE_DECL_TRUNCF@ 1964_GL_FUNCDECL_SYS (truncf, float, (float x)); 1965# endif 1966_GL_CXXALIAS_SYS (truncf, float, (float x)); 1967# endif 1968_GL_CXXALIASWARN (truncf); 1969#elif defined GNULIB_POSIXCHECK 1970# undef truncf 1971# if HAVE_RAW_DECL_TRUNCF 1972_GL_WARN_ON_USE (truncf, "truncf is unportable - " 1973 "use gnulib module truncf for portability"); 1974# endif 1975#endif 1976 1977#if @GNULIB_TRUNC@ 1978# if @REPLACE_TRUNC@ 1979# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1980# define trunc rpl_trunc 1981# endif 1982_GL_FUNCDECL_RPL (trunc, double, (double x)); 1983_GL_CXXALIAS_RPL (trunc, double, (double x)); 1984# else 1985# if !@HAVE_DECL_TRUNC@ 1986_GL_FUNCDECL_SYS (trunc, double, (double x)); 1987# endif 1988_GL_CXXALIAS_SYS (trunc, double, (double x)); 1989# endif 1990_GL_CXXALIASWARN (trunc); 1991#elif defined GNULIB_POSIXCHECK 1992# undef trunc 1993# if HAVE_RAW_DECL_TRUNC 1994_GL_WARN_ON_USE (trunc, "trunc is unportable - " 1995 "use gnulib module trunc for portability"); 1996# endif 1997#endif 1998 1999#if @GNULIB_TRUNCL@ 2000# if @REPLACE_TRUNCL@ 2001# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 2002# undef truncl 2003# define truncl rpl_truncl 2004# endif 2005_GL_FUNCDECL_RPL (truncl, long double, (long double x)); 2006_GL_CXXALIAS_RPL (truncl, long double, (long double x)); 2007# else 2008# if !@HAVE_DECL_TRUNCL@ 2009_GL_FUNCDECL_SYS (truncl, long double, (long double x)); 2010# endif 2011_GL_CXXALIAS_SYS (truncl, long double, (long double x)); 2012# endif 2013_GL_CXXALIASWARN (truncl); 2014#elif defined GNULIB_POSIXCHECK 2015# undef truncl 2016# if HAVE_RAW_DECL_TRUNCL 2017_GL_WARN_ON_USE (truncl, "truncl is unportable - " 2018 "use gnulib module truncl for portability"); 2019# endif 2020#endif 2021 2022 2023/* Definitions of function-like macros come here, after the function 2024 declarations. */ 2025 2026 2027#if @GNULIB_ISFINITE@ 2028# if @REPLACE_ISFINITE@ 2029_GL_EXTERN_C int gl_isfinitef (float x); 2030_GL_EXTERN_C int gl_isfinited (double x); 2031_GL_EXTERN_C int gl_isfinitel (long double x); 2032# undef isfinite 2033# define isfinite(x) \ 2034 (sizeof (x) == sizeof (long double) ? gl_isfinitel (x) : \ 2035 sizeof (x) == sizeof (double) ? gl_isfinited (x) : \ 2036 gl_isfinitef (x)) 2037# endif 2038# ifdef __cplusplus 2039# ifdef isfinite 2040_GL_MATH_CXX_REAL_FLOATING_DECL_1 (isfinite) 2041# undef isfinite 2042_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isfinite) 2043# endif 2044# endif 2045#elif defined GNULIB_POSIXCHECK 2046# if defined isfinite 2047_GL_WARN_REAL_FLOATING_DECL (isfinite); 2048# undef isfinite 2049# define isfinite(x) _GL_WARN_REAL_FLOATING_IMPL (isfinite, x) 2050# endif 2051#endif 2052 2053 2054#if @GNULIB_ISINF@ 2055# if @REPLACE_ISINF@ 2056_GL_EXTERN_C int gl_isinff (float x); 2057_GL_EXTERN_C int gl_isinfd (double x); 2058_GL_EXTERN_C int gl_isinfl (long double x); 2059# undef isinf 2060# define isinf(x) \ 2061 (sizeof (x) == sizeof (long double) ? gl_isinfl (x) : \ 2062 sizeof (x) == sizeof (double) ? gl_isinfd (x) : \ 2063 gl_isinff (x)) 2064# endif 2065# ifdef __cplusplus 2066# ifdef isinf 2067_GL_MATH_CXX_REAL_FLOATING_DECL_1 (isinf) 2068# undef isinf 2069_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isinf) 2070# endif 2071# endif 2072#elif defined GNULIB_POSIXCHECK 2073# if defined isinf 2074_GL_WARN_REAL_FLOATING_DECL (isinf); 2075# undef isinf 2076# define isinf(x) _GL_WARN_REAL_FLOATING_IMPL (isinf, x) 2077# endif 2078#endif 2079 2080 2081#if @GNULIB_ISNANF@ 2082/* Test for NaN for 'float' numbers. */ 2083# if @HAVE_ISNANF@ 2084/* The original <math.h> included above provides a declaration of isnan macro 2085 or (older) isnanf function. */ 2086# if __GNUC__ >= 4 2087 /* GCC 4.0 and newer provides three built-ins for isnan. */ 2088# undef isnanf 2089# define isnanf(x) __builtin_isnanf ((float)(x)) 2090# elif defined isnan 2091# undef isnanf 2092# define isnanf(x) isnan ((float)(x)) 2093# endif 2094# else 2095/* Test whether X is a NaN. */ 2096# undef isnanf 2097# define isnanf rpl_isnanf 2098_GL_EXTERN_C int isnanf (float x); 2099# endif 2100#endif 2101 2102#if @GNULIB_ISNAND@ 2103/* Test for NaN for 'double' numbers. 2104 This function is a gnulib extension, unlike isnan() which applied only 2105 to 'double' numbers earlier but now is a type-generic macro. */ 2106# if @HAVE_ISNAND@ 2107/* The original <math.h> included above provides a declaration of isnan 2108 macro. */ 2109# if __GNUC__ >= 4 2110 /* GCC 4.0 and newer provides three built-ins for isnan. */ 2111# undef isnand 2112# define isnand(x) __builtin_isnan ((double)(x)) 2113# else 2114# undef isnand 2115# define isnand(x) isnan ((double)(x)) 2116# endif 2117# else 2118/* Test whether X is a NaN. */ 2119# undef isnand 2120# define isnand rpl_isnand 2121_GL_EXTERN_C int isnand (double x); 2122# endif 2123#endif 2124 2125#if @GNULIB_ISNANL@ 2126/* Test for NaN for 'long double' numbers. */ 2127# if @HAVE_ISNANL@ 2128/* The original <math.h> included above provides a declaration of isnan 2129 macro or (older) isnanl function. */ 2130# if __GNUC__ >= 4 2131 /* GCC 4.0 and newer provides three built-ins for isnan. */ 2132# undef isnanl 2133# define isnanl(x) __builtin_isnanl ((long double)(x)) 2134# elif defined isnan 2135# undef isnanl 2136# define isnanl(x) isnan ((long double)(x)) 2137# endif 2138# else 2139/* Test whether X is a NaN. */ 2140# undef isnanl 2141# define isnanl rpl_isnanl 2142_GL_EXTERN_C int isnanl (long double x) _GL_ATTRIBUTE_CONST; 2143# endif 2144#endif 2145 2146/* This must come *after* the snippets for GNULIB_ISNANF and GNULIB_ISNANL! */ 2147#if @GNULIB_ISNAN@ 2148# if @REPLACE_ISNAN@ 2149/* We can't just use the isnanf macro (e.g.) as exposed by 2150 isnanf.h (e.g.) here, because those may end up being macros 2151 that recursively expand back to isnan. So use the gnulib 2152 replacements for them directly. */ 2153# if @HAVE_ISNANF@ && __GNUC__ >= 4 2154# define gl_isnan_f(x) __builtin_isnanf ((float)(x)) 2155# else 2156_GL_EXTERN_C int rpl_isnanf (float x); 2157# define gl_isnan_f(x) rpl_isnanf (x) 2158# endif 2159# if @HAVE_ISNAND@ && __GNUC__ >= 4 2160# define gl_isnan_d(x) __builtin_isnan ((double)(x)) 2161# else 2162_GL_EXTERN_C int rpl_isnand (double x); 2163# define gl_isnan_d(x) rpl_isnand (x) 2164# endif 2165# if @HAVE_ISNANL@ && __GNUC__ >= 4 2166# define gl_isnan_l(x) __builtin_isnanl ((long double)(x)) 2167# else 2168_GL_EXTERN_C int rpl_isnanl (long double x) _GL_ATTRIBUTE_CONST; 2169# define gl_isnan_l(x) rpl_isnanl (x) 2170# endif 2171# undef isnan 2172# define isnan(x) \ 2173 (sizeof (x) == sizeof (long double) ? gl_isnan_l (x) : \ 2174 sizeof (x) == sizeof (double) ? gl_isnan_d (x) : \ 2175 gl_isnan_f (x)) 2176# elif __GNUC__ >= 4 2177# undef isnan 2178# define isnan(x) \ 2179 (sizeof (x) == sizeof (long double) ? __builtin_isnanl ((long double)(x)) : \ 2180 sizeof (x) == sizeof (double) ? __builtin_isnan ((double)(x)) : \ 2181 __builtin_isnanf ((float)(x))) 2182# endif 2183# ifdef __cplusplus 2184# ifdef isnan 2185_GL_MATH_CXX_REAL_FLOATING_DECL_1 (isnan) 2186# undef isnan 2187_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isnan) 2188# endif 2189# else 2190/* Ensure isnan is a macro. */ 2191# ifndef isnan 2192# define isnan isnan 2193# endif 2194# endif 2195#elif defined GNULIB_POSIXCHECK 2196# if defined isnan 2197_GL_WARN_REAL_FLOATING_DECL (isnan); 2198# undef isnan 2199# define isnan(x) _GL_WARN_REAL_FLOATING_IMPL (isnan, x) 2200# endif 2201#endif 2202 2203 2204#if @GNULIB_SIGNBIT@ 2205# if @REPLACE_SIGNBIT_USING_GCC@ 2206# undef signbit 2207 /* GCC 4.0 and newer provides three built-ins for signbit. */ 2208# define signbit(x) \ 2209 (sizeof (x) == sizeof (long double) ? __builtin_signbitl (x) : \ 2210 sizeof (x) == sizeof (double) ? __builtin_signbit (x) : \ 2211 __builtin_signbitf (x)) 2212# endif 2213# if @REPLACE_SIGNBIT@ 2214# undef signbit 2215_GL_EXTERN_C int gl_signbitf (float arg); 2216_GL_EXTERN_C int gl_signbitd (double arg); 2217_GL_EXTERN_C int gl_signbitl (long double arg); 2218# if __GNUC__ >= 2 && !defined __STRICT_ANSI__ 2219# define _GL_NUM_UINT_WORDS(type) \ 2220 ((sizeof (type) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) 2221# if defined FLT_SIGNBIT_WORD && defined FLT_SIGNBIT_BIT && !defined gl_signbitf 2222# define gl_signbitf_OPTIMIZED_MACRO 2223# define gl_signbitf(arg) \ 2224 ({ union { float _value; \ 2225 unsigned int _word[_GL_NUM_UINT_WORDS (float)]; \ 2226 } _m; \ 2227 _m._value = (arg); \ 2228 (_m._word[FLT_SIGNBIT_WORD] >> FLT_SIGNBIT_BIT) & 1; \ 2229 }) 2230# endif 2231# if defined DBL_SIGNBIT_WORD && defined DBL_SIGNBIT_BIT && !defined gl_signbitd 2232# define gl_signbitd_OPTIMIZED_MACRO 2233# define gl_signbitd(arg) \ 2234 ({ union { double _value; \ 2235 unsigned int _word[_GL_NUM_UINT_WORDS (double)]; \ 2236 } _m; \ 2237 _m._value = (arg); \ 2238 (_m._word[DBL_SIGNBIT_WORD] >> DBL_SIGNBIT_BIT) & 1; \ 2239 }) 2240# endif 2241# if defined LDBL_SIGNBIT_WORD && defined LDBL_SIGNBIT_BIT && !defined gl_signbitl 2242# define gl_signbitl_OPTIMIZED_MACRO 2243# define gl_signbitl(arg) \ 2244 ({ union { long double _value; \ 2245 unsigned int _word[_GL_NUM_UINT_WORDS (long double)]; \ 2246 } _m; \ 2247 _m._value = (arg); \ 2248 (_m._word[LDBL_SIGNBIT_WORD] >> LDBL_SIGNBIT_BIT) & 1; \ 2249 }) 2250# endif 2251# endif 2252# define signbit(x) \ 2253 (sizeof (x) == sizeof (long double) ? gl_signbitl (x) : \ 2254 sizeof (x) == sizeof (double) ? gl_signbitd (x) : \ 2255 gl_signbitf (x)) 2256# endif 2257# ifdef __cplusplus 2258# ifdef signbit 2259_GL_MATH_CXX_REAL_FLOATING_DECL_1 (signbit) 2260# undef signbit 2261_GL_MATH_CXX_REAL_FLOATING_DECL_2 (signbit) 2262# endif 2263# endif 2264#elif defined GNULIB_POSIXCHECK 2265# if defined signbit 2266_GL_WARN_REAL_FLOATING_DECL (signbit); 2267# undef signbit 2268# define signbit(x) _GL_WARN_REAL_FLOATING_IMPL (signbit, x) 2269# endif 2270#endif 2271 2272_GL_INLINE_HEADER_END 2273 2274#endif /* _@GUARD_PREFIX@_MATH_H */ 2275#endif /* _@GUARD_PREFIX@_MATH_H */ 2276