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) \ 47 static inline int \ 48 _gl_cxx_ ## func ## f (float f) \ 49 { \ 50 return func (f); \ 51 } \ 52 static inline int \ 53 _gl_cxx_ ## func ## d (double d) \ 54 { \ 55 return func (d); \ 56 } \ 57 static 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) \ 63 inline int \ 64 func (float f) \ 65 { \ 66 return _gl_cxx_ ## func ## f (f); \ 67 } \ 68 inline int \ 69 func (double d) \ 70 { \ 71 return _gl_cxx_ ## func ## d (d); \ 72 } \ 73 inline int \ 74 func (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 \ 86 rpl_ ## func ## f (float f) \ 87 { \ 88 return func (f); \ 89 } \ 90 _GL_MATH_INLINE int \ 91 rpl_ ## func ## d (double d) \ 92 { \ 93 return func (d); \ 94 } \ 95 _GL_MATH_INLINE int \ 96 rpl_ ## 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); 116 static 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