OLD | NEW |
(Empty) | |
| 1 // -*- C++ -*- |
| 2 //===---------------------------- cmath -----------------------------------===// |
| 3 // |
| 4 // The LLVM Compiler Infrastructure |
| 5 // |
| 6 // This file is dual licensed under the MIT and the University of Illinois Open |
| 7 // Source Licenses. See LICENSE.TXT for details. |
| 8 // |
| 9 //===----------------------------------------------------------------------===// |
| 10 |
| 11 #ifndef _LIBCPP_CMATH |
| 12 #define _LIBCPP_CMATH |
| 13 |
| 14 /* |
| 15 cmath synopsis |
| 16 |
| 17 Macros: |
| 18 |
| 19 HUGE_VAL |
| 20 HUGE_VALF // C99 |
| 21 HUGE_VALL // C99 |
| 22 INFINITY // C99 |
| 23 NAN // C99 |
| 24 FP_INFINITE // C99 |
| 25 FP_NAN // C99 |
| 26 FP_NORMAL // C99 |
| 27 FP_SUBNORMAL // C99 |
| 28 FP_ZERO // C99 |
| 29 FP_FAST_FMA // C99 |
| 30 FP_FAST_FMAF // C99 |
| 31 FP_FAST_FMAL // C99 |
| 32 FP_ILOGB0 // C99 |
| 33 FP_ILOGBNAN // C99 |
| 34 MATH_ERRNO // C99 |
| 35 MATH_ERREXCEPT // C99 |
| 36 math_errhandling // C99 |
| 37 |
| 38 namespace std |
| 39 { |
| 40 |
| 41 Types: |
| 42 |
| 43 float_t // C99 |
| 44 double_t // C99 |
| 45 |
| 46 // C90 |
| 47 |
| 48 floating_point abs(floating_point x); |
| 49 |
| 50 floating_point acos (arithmetic x); |
| 51 float acosf(float x); |
| 52 long double acosl(long double x); |
| 53 |
| 54 floating_point asin (arithmetic x); |
| 55 float asinf(float x); |
| 56 long double asinl(long double x); |
| 57 |
| 58 floating_point atan (arithmetic x); |
| 59 float atanf(float x); |
| 60 long double atanl(long double x); |
| 61 |
| 62 floating_point atan2 (arithmetic y, arithmetic x); |
| 63 float atan2f(float y, float x); |
| 64 long double atan2l(long double y, long double x); |
| 65 |
| 66 floating_point ceil (arithmetic x); |
| 67 float ceilf(float x); |
| 68 long double ceill(long double x); |
| 69 |
| 70 floating_point cos (arithmetic x); |
| 71 float cosf(float x); |
| 72 long double cosl(long double x); |
| 73 |
| 74 floating_point cosh (arithmetic x); |
| 75 float coshf(float x); |
| 76 long double coshl(long double x); |
| 77 |
| 78 floating_point exp (arithmetic x); |
| 79 float expf(float x); |
| 80 long double expl(long double x); |
| 81 |
| 82 floating_point fabs (arithmetic x); |
| 83 float fabsf(float x); |
| 84 long double fabsl(long double x); |
| 85 |
| 86 floating_point floor (arithmetic x); |
| 87 float floorf(float x); |
| 88 long double floorl(long double x); |
| 89 |
| 90 floating_point fmod (arithmetic x, arithmetic y); |
| 91 float fmodf(float x, float y); |
| 92 long double fmodl(long double x, long double y); |
| 93 |
| 94 floating_point frexp (arithmetic value, int* exp); |
| 95 float frexpf(float value, int* exp); |
| 96 long double frexpl(long double value, int* exp); |
| 97 |
| 98 floating_point ldexp (arithmetic value, int exp); |
| 99 float ldexpf(float value, int exp); |
| 100 long double ldexpl(long double value, int exp); |
| 101 |
| 102 floating_point log (arithmetic x); |
| 103 float logf(float x); |
| 104 long double logl(long double x); |
| 105 |
| 106 floating_point log10 (arithmetic x); |
| 107 float log10f(float x); |
| 108 long double log10l(long double x); |
| 109 |
| 110 floating_point modf (floating_point value, floating_point* iptr); |
| 111 float modff(float value, float* iptr); |
| 112 long double modfl(long double value, long double* iptr); |
| 113 |
| 114 floating_point pow (arithmetic x, arithmetic y); |
| 115 float powf(float x, float y); |
| 116 long double powl(long double x, long double y); |
| 117 |
| 118 floating_point sin (arithmetic x); |
| 119 float sinf(float x); |
| 120 long double sinl(long double x); |
| 121 |
| 122 floating_point sinh (arithmetic x); |
| 123 float sinhf(float x); |
| 124 long double sinhl(long double x); |
| 125 |
| 126 floating_point sqrt (arithmetic x); |
| 127 float sqrtf(float x); |
| 128 long double sqrtl(long double x); |
| 129 |
| 130 floating_point tan (arithmetic x); |
| 131 float tanf(float x); |
| 132 long double tanl(long double x); |
| 133 |
| 134 floating_point tanh (arithmetic x); |
| 135 float tanhf(float x); |
| 136 long double tanhl(long double x); |
| 137 |
| 138 // C99 |
| 139 |
| 140 bool signbit(arithmetic x); |
| 141 |
| 142 int fpclassify(arithmetic x); |
| 143 |
| 144 bool isfinite(arithmetic x); |
| 145 bool isinf(arithmetic x); |
| 146 bool isnan(arithmetic x); |
| 147 bool isnormal(arithmetic x); |
| 148 |
| 149 bool isgreater(arithmetic x, arithmetic y); |
| 150 bool isgreaterequal(arithmetic x, arithmetic y); |
| 151 bool isless(arithmetic x, arithmetic y); |
| 152 bool islessequal(arithmetic x, arithmetic y); |
| 153 bool islessgreater(arithmetic x, arithmetic y); |
| 154 bool isunordered(arithmetic x, arithmetic y); |
| 155 |
| 156 floating_point acosh (arithmetic x); |
| 157 float acoshf(float x); |
| 158 long double acoshl(long double x); |
| 159 |
| 160 floating_point asinh (arithmetic x); |
| 161 float asinhf(float x); |
| 162 long double asinhl(long double x); |
| 163 |
| 164 floating_point atanh (arithmetic x); |
| 165 float atanhf(float x); |
| 166 long double atanhl(long double x); |
| 167 |
| 168 floating_point cbrt (arithmetic x); |
| 169 float cbrtf(float x); |
| 170 long double cbrtl(long double x); |
| 171 |
| 172 floating_point copysign (arithmetic x, arithmetic y); |
| 173 float copysignf(float x, float y); |
| 174 long double copysignl(long double x, long double y); |
| 175 |
| 176 floating_point erf (arithmetic x); |
| 177 float erff(float x); |
| 178 long double erfl(long double x); |
| 179 |
| 180 floating_point erfc (arithmetic x); |
| 181 float erfcf(float x); |
| 182 long double erfcl(long double x); |
| 183 |
| 184 floating_point exp2 (arithmetic x); |
| 185 float exp2f(float x); |
| 186 long double exp2l(long double x); |
| 187 |
| 188 floating_point expm1 (arithmetic x); |
| 189 float expm1f(float x); |
| 190 long double expm1l(long double x); |
| 191 |
| 192 floating_point fdim (arithmetic x, arithmetic y); |
| 193 float fdimf(float x, float y); |
| 194 long double fdiml(long double x, long double y); |
| 195 |
| 196 floating_point fma (arithmetic x, arithmetic y, arithmetic z); |
| 197 float fmaf(float x, float y, float z); |
| 198 long double fmal(long double x, long double y, long double z); |
| 199 |
| 200 floating_point fmax (arithmetic x, arithmetic y); |
| 201 float fmaxf(float x, float y); |
| 202 long double fmaxl(long double x, long double y); |
| 203 |
| 204 floating_point fmin (arithmetic x, arithmetic y); |
| 205 float fminf(float x, float y); |
| 206 long double fminl(long double x, long double y); |
| 207 |
| 208 floating_point hypot (arithmetic x, arithmetic y); |
| 209 float hypotf(float x, float y); |
| 210 long double hypotl(long double x, long double y); |
| 211 |
| 212 int ilogb (arithmetic x); |
| 213 int ilogbf(float x); |
| 214 int ilogbl(long double x); |
| 215 |
| 216 floating_point lgamma (arithmetic x); |
| 217 float lgammaf(float x); |
| 218 long double lgammal(long double x); |
| 219 |
| 220 long long llrint (arithmetic x); |
| 221 long long llrintf(float x); |
| 222 long long llrintl(long double x); |
| 223 |
| 224 long long llround (arithmetic x); |
| 225 long long llroundf(float x); |
| 226 long long llroundl(long double x); |
| 227 |
| 228 floating_point log1p (arithmetic x); |
| 229 float log1pf(float x); |
| 230 long double log1pl(long double x); |
| 231 |
| 232 floating_point log2 (arithmetic x); |
| 233 float log2f(float x); |
| 234 long double log2l(long double x); |
| 235 |
| 236 floating_point logb (arithmetic x); |
| 237 float logbf(float x); |
| 238 long double logbl(long double x); |
| 239 |
| 240 long lrint (arithmetic x); |
| 241 long lrintf(float x); |
| 242 long lrintl(long double x); |
| 243 |
| 244 long lround (arithmetic x); |
| 245 long lroundf(float x); |
| 246 long lroundl(long double x); |
| 247 |
| 248 double nan (const char* str); |
| 249 float nanf(const char* str); |
| 250 long double nanl(const char* str); |
| 251 |
| 252 floating_point nearbyint (arithmetic x); |
| 253 float nearbyintf(float x); |
| 254 long double nearbyintl(long double x); |
| 255 |
| 256 floating_point nextafter (arithmetic x, arithmetic y); |
| 257 float nextafterf(float x, float y); |
| 258 long double nextafterl(long double x, long double y); |
| 259 |
| 260 floating_point nexttoward (arithmetic x, long double y); |
| 261 float nexttowardf(float x, long double y); |
| 262 long double nexttowardl(long double x, long double y); |
| 263 |
| 264 floating_point remainder (arithmetic x, arithmetic y); |
| 265 float remainderf(float x, float y); |
| 266 long double remainderl(long double x, long double y); |
| 267 |
| 268 floating_point remquo (arithmetic x, arithmetic y, int* pquo); |
| 269 float remquof(float x, float y, int* pquo); |
| 270 long double remquol(long double x, long double y, int* pquo); |
| 271 |
| 272 floating_point rint (arithmetic x); |
| 273 float rintf(float x); |
| 274 long double rintl(long double x); |
| 275 |
| 276 floating_point round (arithmetic x); |
| 277 float roundf(float x); |
| 278 long double roundl(long double x); |
| 279 |
| 280 floating_point scalbln (arithmetic x, long ex); |
| 281 float scalblnf(float x, long ex); |
| 282 long double scalblnl(long double x, long ex); |
| 283 |
| 284 floating_point scalbn (arithmetic x, int ex); |
| 285 float scalbnf(float x, int ex); |
| 286 long double scalbnl(long double x, int ex); |
| 287 |
| 288 floating_point tgamma (arithmetic x); |
| 289 float tgammaf(float x); |
| 290 long double tgammal(long double x); |
| 291 |
| 292 floating_point trunc (arithmetic x); |
| 293 float truncf(float x); |
| 294 long double truncl(long double x); |
| 295 |
| 296 } // std |
| 297 |
| 298 */ |
| 299 |
| 300 #include <__config> |
| 301 #include <math.h> |
| 302 #include <type_traits> |
| 303 |
| 304 #ifdef _LIBCPP_MSVCRT |
| 305 #include "support/win32/math_win32.h" |
| 306 #endif |
| 307 |
| 308 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) |
| 309 #pragma GCC system_header |
| 310 #endif |
| 311 |
| 312 // signbit |
| 313 |
| 314 #ifdef signbit |
| 315 |
| 316 template <class _A1> |
| 317 _LIBCPP_ALWAYS_INLINE |
| 318 bool |
| 319 __libcpp_signbit(_A1 __x) _NOEXCEPT |
| 320 { |
| 321 return signbit(__x); |
| 322 } |
| 323 |
| 324 #undef signbit |
| 325 |
| 326 template <class _A1> |
| 327 inline _LIBCPP_INLINE_VISIBILITY |
| 328 typename std::enable_if<std::is_arithmetic<_A1>::value, bool>::type |
| 329 signbit(_A1 __x) _NOEXCEPT |
| 330 { |
| 331 return __libcpp_signbit((typename std::__promote<_A1>::type)__x); |
| 332 } |
| 333 |
| 334 #endif // signbit |
| 335 |
| 336 // fpclassify |
| 337 |
| 338 #ifdef fpclassify |
| 339 |
| 340 template <class _A1> |
| 341 _LIBCPP_ALWAYS_INLINE |
| 342 int |
| 343 __libcpp_fpclassify(_A1 __x) _NOEXCEPT |
| 344 { |
| 345 return fpclassify(__x); |
| 346 } |
| 347 |
| 348 #undef fpclassify |
| 349 |
| 350 template <class _A1> |
| 351 inline _LIBCPP_INLINE_VISIBILITY |
| 352 typename std::enable_if<std::is_arithmetic<_A1>::value, int>::type |
| 353 fpclassify(_A1 __x) _NOEXCEPT |
| 354 { |
| 355 return __libcpp_fpclassify((typename std::__promote<_A1>::type)__x); |
| 356 } |
| 357 |
| 358 #endif // fpclassify |
| 359 |
| 360 // isfinite |
| 361 |
| 362 #ifdef isfinite |
| 363 |
| 364 template <class _A1> |
| 365 _LIBCPP_ALWAYS_INLINE |
| 366 bool |
| 367 __libcpp_isfinite(_A1 __x) _NOEXCEPT |
| 368 { |
| 369 return isfinite(__x); |
| 370 } |
| 371 |
| 372 #undef isfinite |
| 373 |
| 374 template <class _A1> |
| 375 inline _LIBCPP_INLINE_VISIBILITY |
| 376 typename std::enable_if<std::is_arithmetic<_A1>::value, bool>::type |
| 377 isfinite(_A1 __x) _NOEXCEPT |
| 378 { |
| 379 return __libcpp_isfinite((typename std::__promote<_A1>::type)__x); |
| 380 } |
| 381 |
| 382 #endif // isfinite |
| 383 |
| 384 // isinf |
| 385 |
| 386 #ifdef isinf |
| 387 |
| 388 template <class _A1> |
| 389 _LIBCPP_ALWAYS_INLINE |
| 390 bool |
| 391 __libcpp_isinf(_A1 __x) _NOEXCEPT |
| 392 { |
| 393 return isinf(__x); |
| 394 } |
| 395 |
| 396 #undef isinf |
| 397 |
| 398 template <class _A1> |
| 399 inline _LIBCPP_INLINE_VISIBILITY |
| 400 typename std::enable_if<std::is_arithmetic<_A1>::value, bool>::type |
| 401 isinf(_A1 __x) _NOEXCEPT |
| 402 { |
| 403 return __libcpp_isinf((typename std::__promote<_A1>::type)__x); |
| 404 } |
| 405 |
| 406 #endif // isinf |
| 407 |
| 408 // isnan |
| 409 |
| 410 #ifdef isnan |
| 411 |
| 412 template <class _A1> |
| 413 _LIBCPP_ALWAYS_INLINE |
| 414 bool |
| 415 __libcpp_isnan(_A1 __x) _NOEXCEPT |
| 416 { |
| 417 return isnan(__x); |
| 418 } |
| 419 |
| 420 #undef isnan |
| 421 |
| 422 template <class _A1> |
| 423 inline _LIBCPP_INLINE_VISIBILITY |
| 424 typename std::enable_if<std::is_arithmetic<_A1>::value, bool>::type |
| 425 isnan(_A1 __x) _NOEXCEPT |
| 426 { |
| 427 return __libcpp_isnan((typename std::__promote<_A1>::type)__x); |
| 428 } |
| 429 |
| 430 #endif // isnan |
| 431 |
| 432 // isnormal |
| 433 |
| 434 #ifdef isnormal |
| 435 |
| 436 template <class _A1> |
| 437 _LIBCPP_ALWAYS_INLINE |
| 438 bool |
| 439 __libcpp_isnormal(_A1 __x) _NOEXCEPT |
| 440 { |
| 441 return isnormal(__x); |
| 442 } |
| 443 |
| 444 #undef isnormal |
| 445 |
| 446 template <class _A1> |
| 447 inline _LIBCPP_INLINE_VISIBILITY |
| 448 typename std::enable_if<std::is_arithmetic<_A1>::value, bool>::type |
| 449 isnormal(_A1 __x) _NOEXCEPT |
| 450 { |
| 451 return __libcpp_isnormal((typename std::__promote<_A1>::type)__x); |
| 452 } |
| 453 |
| 454 #endif // isnormal |
| 455 |
| 456 // isgreater |
| 457 |
| 458 #ifdef isgreater |
| 459 |
| 460 template <class _A1, class _A2> |
| 461 _LIBCPP_ALWAYS_INLINE |
| 462 bool |
| 463 __libcpp_isgreater(_A1 __x, _A2 __y) _NOEXCEPT |
| 464 { |
| 465 return isgreater(__x, __y); |
| 466 } |
| 467 |
| 468 #undef isgreater |
| 469 |
| 470 template <class _A1, class _A2> |
| 471 inline _LIBCPP_INLINE_VISIBILITY |
| 472 typename std::enable_if |
| 473 < |
| 474 std::is_arithmetic<_A1>::value && |
| 475 std::is_arithmetic<_A2>::value, |
| 476 bool |
| 477 >::type |
| 478 isgreater(_A1 __x, _A2 __y) _NOEXCEPT |
| 479 { |
| 480 typedef typename std::__promote<_A1, _A2>::type type; |
| 481 return __libcpp_isgreater((type)__x, (type)__y); |
| 482 } |
| 483 |
| 484 #endif // isgreater |
| 485 |
| 486 // isgreaterequal |
| 487 |
| 488 #ifdef isgreaterequal |
| 489 |
| 490 template <class _A1, class _A2> |
| 491 _LIBCPP_ALWAYS_INLINE |
| 492 bool |
| 493 __libcpp_isgreaterequal(_A1 __x, _A2 __y) _NOEXCEPT |
| 494 { |
| 495 return isgreaterequal(__x, __y); |
| 496 } |
| 497 |
| 498 #undef isgreaterequal |
| 499 |
| 500 template <class _A1, class _A2> |
| 501 inline _LIBCPP_INLINE_VISIBILITY |
| 502 typename std::enable_if |
| 503 < |
| 504 std::is_arithmetic<_A1>::value && |
| 505 std::is_arithmetic<_A2>::value, |
| 506 bool |
| 507 >::type |
| 508 isgreaterequal(_A1 __x, _A2 __y) _NOEXCEPT |
| 509 { |
| 510 typedef typename std::__promote<_A1, _A2>::type type; |
| 511 return __libcpp_isgreaterequal((type)__x, (type)__y); |
| 512 } |
| 513 |
| 514 #endif // isgreaterequal |
| 515 |
| 516 // isless |
| 517 |
| 518 #ifdef isless |
| 519 |
| 520 template <class _A1, class _A2> |
| 521 _LIBCPP_ALWAYS_INLINE |
| 522 bool |
| 523 __libcpp_isless(_A1 __x, _A2 __y) _NOEXCEPT |
| 524 { |
| 525 return isless(__x, __y); |
| 526 } |
| 527 |
| 528 #undef isless |
| 529 |
| 530 template <class _A1, class _A2> |
| 531 inline _LIBCPP_INLINE_VISIBILITY |
| 532 typename std::enable_if |
| 533 < |
| 534 std::is_arithmetic<_A1>::value && |
| 535 std::is_arithmetic<_A2>::value, |
| 536 bool |
| 537 >::type |
| 538 isless(_A1 __x, _A2 __y) _NOEXCEPT |
| 539 { |
| 540 typedef typename std::__promote<_A1, _A2>::type type; |
| 541 return __libcpp_isless((type)__x, (type)__y); |
| 542 } |
| 543 |
| 544 #endif // isless |
| 545 |
| 546 // islessequal |
| 547 |
| 548 #ifdef islessequal |
| 549 |
| 550 template <class _A1, class _A2> |
| 551 _LIBCPP_ALWAYS_INLINE |
| 552 bool |
| 553 __libcpp_islessequal(_A1 __x, _A2 __y) _NOEXCEPT |
| 554 { |
| 555 return islessequal(__x, __y); |
| 556 } |
| 557 |
| 558 #undef islessequal |
| 559 |
| 560 template <class _A1, class _A2> |
| 561 inline _LIBCPP_INLINE_VISIBILITY |
| 562 typename std::enable_if |
| 563 < |
| 564 std::is_arithmetic<_A1>::value && |
| 565 std::is_arithmetic<_A2>::value, |
| 566 bool |
| 567 >::type |
| 568 islessequal(_A1 __x, _A2 __y) _NOEXCEPT |
| 569 { |
| 570 typedef typename std::__promote<_A1, _A2>::type type; |
| 571 return __libcpp_islessequal((type)__x, (type)__y); |
| 572 } |
| 573 |
| 574 #endif // islessequal |
| 575 |
| 576 // islessgreater |
| 577 |
| 578 #ifdef islessgreater |
| 579 |
| 580 template <class _A1, class _A2> |
| 581 _LIBCPP_ALWAYS_INLINE |
| 582 bool |
| 583 __libcpp_islessgreater(_A1 __x, _A2 __y) _NOEXCEPT |
| 584 { |
| 585 return islessgreater(__x, __y); |
| 586 } |
| 587 |
| 588 #undef islessgreater |
| 589 |
| 590 template <class _A1, class _A2> |
| 591 inline _LIBCPP_INLINE_VISIBILITY |
| 592 typename std::enable_if |
| 593 < |
| 594 std::is_arithmetic<_A1>::value && |
| 595 std::is_arithmetic<_A2>::value, |
| 596 bool |
| 597 >::type |
| 598 islessgreater(_A1 __x, _A2 __y) _NOEXCEPT |
| 599 { |
| 600 typedef typename std::__promote<_A1, _A2>::type type; |
| 601 return __libcpp_islessgreater((type)__x, (type)__y); |
| 602 } |
| 603 |
| 604 #endif // islessgreater |
| 605 |
| 606 // isunordered |
| 607 |
| 608 #ifdef isunordered |
| 609 |
| 610 template <class _A1, class _A2> |
| 611 _LIBCPP_ALWAYS_INLINE |
| 612 bool |
| 613 __libcpp_isunordered(_A1 __x, _A2 __y) _NOEXCEPT |
| 614 { |
| 615 return isunordered(__x, __y); |
| 616 } |
| 617 |
| 618 #undef isunordered |
| 619 |
| 620 template <class _A1, class _A2> |
| 621 inline _LIBCPP_INLINE_VISIBILITY |
| 622 typename std::enable_if |
| 623 < |
| 624 std::is_arithmetic<_A1>::value && |
| 625 std::is_arithmetic<_A2>::value, |
| 626 bool |
| 627 >::type |
| 628 isunordered(_A1 __x, _A2 __y) _NOEXCEPT |
| 629 { |
| 630 typedef typename std::__promote<_A1, _A2>::type type; |
| 631 return __libcpp_isunordered((type)__x, (type)__y); |
| 632 } |
| 633 |
| 634 #endif // isunordered |
| 635 |
| 636 _LIBCPP_BEGIN_NAMESPACE_STD |
| 637 |
| 638 using ::signbit; |
| 639 using ::fpclassify; |
| 640 using ::isfinite; |
| 641 using ::isinf; |
| 642 using ::isnan; |
| 643 using ::isnormal; |
| 644 using ::isgreater; |
| 645 using ::isgreaterequal; |
| 646 using ::isless; |
| 647 using ::islessequal; |
| 648 using ::islessgreater; |
| 649 using ::isunordered; |
| 650 using ::isunordered; |
| 651 |
| 652 using ::float_t; |
| 653 using ::double_t; |
| 654 |
| 655 // abs |
| 656 |
| 657 #if !defined(_AIX) |
| 658 inline _LIBCPP_INLINE_VISIBILITY |
| 659 float |
| 660 abs(float __x) _NOEXCEPT {return fabsf(__x);} |
| 661 |
| 662 inline _LIBCPP_INLINE_VISIBILITY |
| 663 double |
| 664 abs(double __x) _NOEXCEPT {return fabs(__x);} |
| 665 |
| 666 inline _LIBCPP_INLINE_VISIBILITY |
| 667 long double |
| 668 abs(long double __x) _NOEXCEPT {return fabsl(__x);} |
| 669 #endif // !defined(_AIX) |
| 670 |
| 671 #ifndef __sun__ |
| 672 |
| 673 // acos |
| 674 |
| 675 using ::acos; |
| 676 using ::acosf; |
| 677 |
| 678 #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) |
| 679 inline _LIBCPP_INLINE_VISIBILITY float acos(float __x) _NOEXCEPT {re
turn acosf(__x);} |
| 680 inline _LIBCPP_INLINE_VISIBILITY long double acos(long double __x) _NOEXCEPT {re
turn acosl(__x);} |
| 681 #endif |
| 682 |
| 683 template <class _A1> |
| 684 inline _LIBCPP_INLINE_VISIBILITY |
| 685 typename enable_if<is_integral<_A1>::value, double>::type |
| 686 acos(_A1 __x) _NOEXCEPT {return acos((double)__x);} |
| 687 |
| 688 // asin |
| 689 |
| 690 using ::asin; |
| 691 using ::asinf; |
| 692 |
| 693 #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) |
| 694 inline _LIBCPP_INLINE_VISIBILITY float asin(float __x) _NOEXCEPT {re
turn asinf(__x);} |
| 695 inline _LIBCPP_INLINE_VISIBILITY long double asin(long double __x) _NOEXCEPT {re
turn asinl(__x);} |
| 696 #endif |
| 697 |
| 698 template <class _A1> |
| 699 inline _LIBCPP_INLINE_VISIBILITY |
| 700 typename enable_if<is_integral<_A1>::value, double>::type |
| 701 asin(_A1 __x) _NOEXCEPT {return asin((double)__x);} |
| 702 |
| 703 // atan |
| 704 |
| 705 using ::atan; |
| 706 using ::atanf; |
| 707 |
| 708 #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) |
| 709 inline _LIBCPP_INLINE_VISIBILITY float atan(float __x) _NOEXCEPT {re
turn atanf(__x);} |
| 710 inline _LIBCPP_INLINE_VISIBILITY long double atan(long double __x) _NOEXCEPT {re
turn atanl(__x);} |
| 711 #endif |
| 712 |
| 713 template <class _A1> |
| 714 inline _LIBCPP_INLINE_VISIBILITY |
| 715 typename enable_if<is_integral<_A1>::value, double>::type |
| 716 atan(_A1 __x) _NOEXCEPT {return atan((double)__x);} |
| 717 |
| 718 // atan2 |
| 719 |
| 720 using ::atan2; |
| 721 using ::atan2f; |
| 722 |
| 723 #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) |
| 724 inline _LIBCPP_INLINE_VISIBILITY float atan2(float __y, float __x) _NOEXCE
PT {return atan2f(__y, __x);} |
| 725 inline _LIBCPP_INLINE_VISIBILITY long double atan2(long double __y, long double
__x) _NOEXCEPT {return atan2l(__y, __x);} |
| 726 #endif |
| 727 |
| 728 template <class _A1, class _A2> |
| 729 inline _LIBCPP_INLINE_VISIBILITY |
| 730 typename enable_if |
| 731 < |
| 732 is_arithmetic<_A1>::value && |
| 733 is_arithmetic<_A2>::value, |
| 734 typename __promote<_A1, _A2>::type |
| 735 >::type |
| 736 atan2(_A1 __y, _A2 __x) _NOEXCEPT |
| 737 { |
| 738 typedef typename __promote<_A1, _A2>::type __result_type; |
| 739 static_assert((!(is_same<_A1, __result_type>::value && |
| 740 is_same<_A2, __result_type>::value)), ""); |
| 741 return atan2((__result_type)__y, (__result_type)__x); |
| 742 } |
| 743 |
| 744 // ceil |
| 745 |
| 746 using ::ceil; |
| 747 using ::ceilf; |
| 748 |
| 749 #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) |
| 750 inline _LIBCPP_INLINE_VISIBILITY float ceil(float __x) _NOEXCEPT {re
turn ceilf(__x);} |
| 751 inline _LIBCPP_INLINE_VISIBILITY long double ceil(long double __x) _NOEXCEPT {re
turn ceill(__x);} |
| 752 #endif |
| 753 |
| 754 template <class _A1> |
| 755 inline _LIBCPP_INLINE_VISIBILITY |
| 756 typename enable_if<is_integral<_A1>::value, double>::type |
| 757 ceil(_A1 __x) _NOEXCEPT {return ceil((double)__x);} |
| 758 |
| 759 // cos |
| 760 |
| 761 using ::cos; |
| 762 using ::cosf; |
| 763 |
| 764 #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) |
| 765 inline _LIBCPP_INLINE_VISIBILITY float cos(float __x) _NOEXCEPT {ret
urn cosf(__x);} |
| 766 inline _LIBCPP_INLINE_VISIBILITY long double cos(long double __x) _NOEXCEPT {ret
urn cosl(__x);} |
| 767 #endif |
| 768 |
| 769 template <class _A1> |
| 770 inline _LIBCPP_INLINE_VISIBILITY |
| 771 typename enable_if<is_integral<_A1>::value, double>::type |
| 772 cos(_A1 __x) _NOEXCEPT {return cos((double)__x);} |
| 773 |
| 774 // cosh |
| 775 |
| 776 using ::cosh; |
| 777 using ::coshf; |
| 778 |
| 779 #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) |
| 780 inline _LIBCPP_INLINE_VISIBILITY float cosh(float __x) _NOEXCEPT {re
turn coshf(__x);} |
| 781 inline _LIBCPP_INLINE_VISIBILITY long double cosh(long double __x) _NOEXCEPT {re
turn coshl(__x);} |
| 782 #endif |
| 783 |
| 784 template <class _A1> |
| 785 inline _LIBCPP_INLINE_VISIBILITY |
| 786 typename enable_if<is_integral<_A1>::value, double>::type |
| 787 cosh(_A1 __x) _NOEXCEPT {return cosh((double)__x);} |
| 788 |
| 789 #endif // __sun__ |
| 790 // exp |
| 791 |
| 792 using ::exp; |
| 793 using ::expf; |
| 794 |
| 795 #ifndef __sun__ |
| 796 |
| 797 #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) |
| 798 inline _LIBCPP_INLINE_VISIBILITY float exp(float __x) _NOEXCEPT {ret
urn expf(__x);} |
| 799 inline _LIBCPP_INLINE_VISIBILITY long double exp(long double __x) _NOEXCEPT {ret
urn expl(__x);} |
| 800 #endif |
| 801 |
| 802 |
| 803 template <class _A1> |
| 804 inline _LIBCPP_INLINE_VISIBILITY |
| 805 typename enable_if<is_integral<_A1>::value, double>::type |
| 806 exp(_A1 __x) _NOEXCEPT {return exp((double)__x);} |
| 807 |
| 808 // fabs |
| 809 |
| 810 using ::fabs; |
| 811 using ::fabsf; |
| 812 |
| 813 #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) |
| 814 inline _LIBCPP_INLINE_VISIBILITY float fabs(float __x) _NOEXCEPT {re
turn fabsf(__x);} |
| 815 inline _LIBCPP_INLINE_VISIBILITY long double fabs(long double __x) _NOEXCEPT {re
turn fabsl(__x);} |
| 816 #endif |
| 817 |
| 818 template <class _A1> |
| 819 inline _LIBCPP_INLINE_VISIBILITY |
| 820 typename enable_if<is_integral<_A1>::value, double>::type |
| 821 fabs(_A1 __x) _NOEXCEPT {return fabs((double)__x);} |
| 822 |
| 823 // floor |
| 824 |
| 825 using ::floor; |
| 826 using ::floorf; |
| 827 |
| 828 #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) |
| 829 inline _LIBCPP_INLINE_VISIBILITY float floor(float __x) _NOEXCEPT {r
eturn floorf(__x);} |
| 830 inline _LIBCPP_INLINE_VISIBILITY long double floor(long double __x) _NOEXCEPT {r
eturn floorl(__x);} |
| 831 #endif |
| 832 |
| 833 template <class _A1> |
| 834 inline _LIBCPP_INLINE_VISIBILITY |
| 835 typename enable_if<is_integral<_A1>::value, double>::type |
| 836 floor(_A1 __x) _NOEXCEPT {return floor((double)__x);} |
| 837 |
| 838 // fmod |
| 839 |
| 840 #endif //__sun__ |
| 841 using ::fmod; |
| 842 using ::fmodf; |
| 843 #ifndef __sun__ |
| 844 |
| 845 #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) |
| 846 inline _LIBCPP_INLINE_VISIBILITY float fmod(float __x, float __y) _NOEXCEP
T {return fmodf(__x, __y);} |
| 847 inline _LIBCPP_INLINE_VISIBILITY long double fmod(long double __x, long double _
_y) _NOEXCEPT {return fmodl(__x, __y);} |
| 848 #endif |
| 849 |
| 850 template <class _A1, class _A2> |
| 851 inline _LIBCPP_INLINE_VISIBILITY |
| 852 typename enable_if |
| 853 < |
| 854 is_arithmetic<_A1>::value && |
| 855 is_arithmetic<_A2>::value, |
| 856 typename __promote<_A1, _A2>::type |
| 857 >::type |
| 858 fmod(_A1 __x, _A2 __y) _NOEXCEPT |
| 859 { |
| 860 typedef typename __promote<_A1, _A2>::type __result_type; |
| 861 static_assert((!(is_same<_A1, __result_type>::value && |
| 862 is_same<_A2, __result_type>::value)), ""); |
| 863 return fmod((__result_type)__x, (__result_type)__y); |
| 864 } |
| 865 |
| 866 |
| 867 // frexp |
| 868 |
| 869 using ::frexp; |
| 870 using ::frexpf; |
| 871 |
| 872 #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) |
| 873 inline _LIBCPP_INLINE_VISIBILITY float frexp(float __x, int* __e) _NOEXCEP
T {return frexpf(__x, __e);} |
| 874 inline _LIBCPP_INLINE_VISIBILITY long double frexp(long double __x, int* __e) _N
OEXCEPT {return frexpl(__x, __e);} |
| 875 #endif |
| 876 |
| 877 template <class _A1> |
| 878 inline _LIBCPP_INLINE_VISIBILITY |
| 879 typename enable_if<is_integral<_A1>::value, double>::type |
| 880 frexp(_A1 __x, int* __e) _NOEXCEPT {return frexp((double)__x, __e);} |
| 881 |
| 882 // ldexp |
| 883 |
| 884 using ::ldexp; |
| 885 using ::ldexpf; |
| 886 |
| 887 #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) |
| 888 inline _LIBCPP_INLINE_VISIBILITY float ldexp(float __x, int __e) _NOEXCEPT
{return ldexpf(__x, __e);} |
| 889 inline _LIBCPP_INLINE_VISIBILITY long double ldexp(long double __x, int __e) _NO
EXCEPT {return ldexpl(__x, __e);} |
| 890 #endif |
| 891 |
| 892 template <class _A1> |
| 893 inline _LIBCPP_INLINE_VISIBILITY |
| 894 typename enable_if<is_integral<_A1>::value, double>::type |
| 895 ldexp(_A1 __x, int __e) _NOEXCEPT {return ldexp((double)__x, __e);} |
| 896 |
| 897 // log |
| 898 |
| 899 #endif // __sun__ |
| 900 using ::log; |
| 901 using ::logf; |
| 902 #ifndef __sun__ |
| 903 |
| 904 #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) |
| 905 inline _LIBCPP_INLINE_VISIBILITY float log(float __x) _NOEXCEPT {ret
urn logf(__x);} |
| 906 inline _LIBCPP_INLINE_VISIBILITY long double log(long double __x) _NOEXCEPT {ret
urn logl(__x);} |
| 907 #endif |
| 908 |
| 909 template <class _A1> |
| 910 inline _LIBCPP_INLINE_VISIBILITY |
| 911 typename enable_if<is_integral<_A1>::value, double>::type |
| 912 log(_A1 __x) _NOEXCEPT {return log((double)__x);} |
| 913 |
| 914 |
| 915 // log10 |
| 916 |
| 917 using ::log10; |
| 918 using ::log10f; |
| 919 |
| 920 #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) |
| 921 inline _LIBCPP_INLINE_VISIBILITY float log10(float __x) _NOEXCEPT {r
eturn log10f(__x);} |
| 922 inline _LIBCPP_INLINE_VISIBILITY long double log10(long double __x) _NOEXCEPT {r
eturn log10l(__x);} |
| 923 #endif |
| 924 |
| 925 template <class _A1> |
| 926 inline _LIBCPP_INLINE_VISIBILITY |
| 927 typename enable_if<is_integral<_A1>::value, double>::type |
| 928 log10(_A1 __x) _NOEXCEPT {return log10((double)__x);} |
| 929 |
| 930 // modf |
| 931 |
| 932 using ::modf; |
| 933 using ::modff; |
| 934 |
| 935 #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) |
| 936 inline _LIBCPP_INLINE_VISIBILITY float modf(float __x, float* __y) _NOEXCE
PT {return modff(__x, __y);} |
| 937 inline _LIBCPP_INLINE_VISIBILITY long double modf(long double __x, long double*
__y) _NOEXCEPT {return modfl(__x, __y);} |
| 938 #endif |
| 939 |
| 940 // pow |
| 941 |
| 942 #endif // __sun__ |
| 943 using ::pow; |
| 944 using ::powf; |
| 945 |
| 946 #ifndef __sun__ |
| 947 |
| 948 #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) |
| 949 inline _LIBCPP_INLINE_VISIBILITY float pow(float __x, float __y) _NOEXCEPT
{return powf(__x, __y);} |
| 950 inline _LIBCPP_INLINE_VISIBILITY long double pow(long double __x, long double __
y) _NOEXCEPT {return powl(__x, __y);} |
| 951 #endif |
| 952 |
| 953 template <class _A1, class _A2> |
| 954 inline _LIBCPP_INLINE_VISIBILITY |
| 955 typename enable_if |
| 956 < |
| 957 is_arithmetic<_A1>::value && |
| 958 is_arithmetic<_A2>::value, |
| 959 typename __promote<_A1, _A2>::type |
| 960 >::type |
| 961 pow(_A1 __x, _A2 __y) _NOEXCEPT |
| 962 { |
| 963 typedef typename __promote<_A1, _A2>::type __result_type; |
| 964 static_assert((!(is_same<_A1, __result_type>::value && |
| 965 is_same<_A2, __result_type>::value)), ""); |
| 966 return pow((__result_type)__x, (__result_type)__y); |
| 967 } |
| 968 |
| 969 |
| 970 // sin |
| 971 |
| 972 using ::sin; |
| 973 using ::sinf; |
| 974 |
| 975 #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) |
| 976 inline _LIBCPP_INLINE_VISIBILITY float sin(float __x) _NOEXCEPT {ret
urn sinf(__x);} |
| 977 inline _LIBCPP_INLINE_VISIBILITY long double sin(long double __x) _NOEXCEPT {ret
urn sinl(__x);} |
| 978 #endif |
| 979 |
| 980 template <class _A1> |
| 981 inline _LIBCPP_INLINE_VISIBILITY |
| 982 typename enable_if<is_integral<_A1>::value, double>::type |
| 983 sin(_A1 __x) _NOEXCEPT {return sin((double)__x);} |
| 984 |
| 985 // sinh |
| 986 |
| 987 using ::sinh; |
| 988 using ::sinhf; |
| 989 |
| 990 #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) |
| 991 inline _LIBCPP_INLINE_VISIBILITY float sinh(float __x) _NOEXCEPT {re
turn sinhf(__x);} |
| 992 inline _LIBCPP_INLINE_VISIBILITY long double sinh(long double __x) _NOEXCEPT {re
turn sinhl(__x);} |
| 993 #endif |
| 994 |
| 995 template <class _A1> |
| 996 inline _LIBCPP_INLINE_VISIBILITY |
| 997 typename enable_if<is_integral<_A1>::value, double>::type |
| 998 sinh(_A1 __x) _NOEXCEPT {return sinh((double)__x);} |
| 999 |
| 1000 // sqrt |
| 1001 |
| 1002 #endif // __sun__ |
| 1003 using ::sqrt; |
| 1004 using ::sqrtf; |
| 1005 |
| 1006 |
| 1007 #if !(defined(_LIBCPP_MSVCRT) || defined(__sun__) || defined(_AIX)) |
| 1008 inline _LIBCPP_INLINE_VISIBILITY float sqrt(float __x) _NOEXCEPT {re
turn sqrtf(__x);} |
| 1009 inline _LIBCPP_INLINE_VISIBILITY long double sqrt(long double __x) _NOEXCEPT {re
turn sqrtl(__x);} |
| 1010 #endif |
| 1011 |
| 1012 template <class _A1> |
| 1013 inline _LIBCPP_INLINE_VISIBILITY |
| 1014 typename enable_if<is_integral<_A1>::value, double>::type |
| 1015 sqrt(_A1 __x) _NOEXCEPT {return sqrt((double)__x);} |
| 1016 |
| 1017 // tan |
| 1018 |
| 1019 using ::tan; |
| 1020 using ::tanf; |
| 1021 #ifndef __sun__ |
| 1022 |
| 1023 #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) |
| 1024 inline _LIBCPP_INLINE_VISIBILITY float tan(float __x) _NOEXCEPT {ret
urn tanf(__x);} |
| 1025 inline _LIBCPP_INLINE_VISIBILITY long double tan(long double __x) _NOEXCEPT {ret
urn tanl(__x);} |
| 1026 #endif |
| 1027 |
| 1028 template <class _A1> |
| 1029 inline _LIBCPP_INLINE_VISIBILITY |
| 1030 typename enable_if<is_integral<_A1>::value, double>::type |
| 1031 tan(_A1 __x) _NOEXCEPT {return tan((double)__x);} |
| 1032 |
| 1033 // tanh |
| 1034 |
| 1035 using ::tanh; |
| 1036 using ::tanhf; |
| 1037 |
| 1038 #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX)) |
| 1039 inline _LIBCPP_INLINE_VISIBILITY float tanh(float __x) _NOEXCEPT {re
turn tanhf(__x);} |
| 1040 inline _LIBCPP_INLINE_VISIBILITY long double tanh(long double __x) _NOEXCEPT {re
turn tanhl(__x);} |
| 1041 #endif |
| 1042 |
| 1043 template <class _A1> |
| 1044 inline _LIBCPP_INLINE_VISIBILITY |
| 1045 typename enable_if<is_integral<_A1>::value, double>::type |
| 1046 tanh(_A1 __x) _NOEXCEPT {return tanh((double)__x);} |
| 1047 |
| 1048 // acosh |
| 1049 |
| 1050 #ifndef _LIBCPP_MSVCRT |
| 1051 using ::acosh; |
| 1052 using ::acoshf; |
| 1053 |
| 1054 inline _LIBCPP_INLINE_VISIBILITY float acosh(float __x) _NOEXCEPT {r
eturn acoshf(__x);} |
| 1055 inline _LIBCPP_INLINE_VISIBILITY long double acosh(long double __x) _NOEXCEPT {r
eturn acoshl(__x);} |
| 1056 |
| 1057 template <class _A1> |
| 1058 inline _LIBCPP_INLINE_VISIBILITY |
| 1059 typename enable_if<is_integral<_A1>::value, double>::type |
| 1060 acosh(_A1 __x) _NOEXCEPT {return acosh((double)__x);} |
| 1061 #endif |
| 1062 |
| 1063 // asinh |
| 1064 |
| 1065 #ifndef _LIBCPP_MSVCRT |
| 1066 using ::asinh; |
| 1067 using ::asinhf; |
| 1068 |
| 1069 inline _LIBCPP_INLINE_VISIBILITY float asinh(float __x) _NOEXCEPT {r
eturn asinhf(__x);} |
| 1070 inline _LIBCPP_INLINE_VISIBILITY long double asinh(long double __x) _NOEXCEPT {r
eturn asinhl(__x);} |
| 1071 |
| 1072 template <class _A1> |
| 1073 inline _LIBCPP_INLINE_VISIBILITY |
| 1074 typename enable_if<is_integral<_A1>::value, double>::type |
| 1075 asinh(_A1 __x) _NOEXCEPT {return asinh((double)__x);} |
| 1076 #endif |
| 1077 |
| 1078 // atanh |
| 1079 |
| 1080 #ifndef _LIBCPP_MSVCRT |
| 1081 using ::atanh; |
| 1082 using ::atanhf; |
| 1083 |
| 1084 inline _LIBCPP_INLINE_VISIBILITY float atanh(float __x) _NOEXCEPT {r
eturn atanhf(__x);} |
| 1085 inline _LIBCPP_INLINE_VISIBILITY long double atanh(long double __x) _NOEXCEPT {r
eturn atanhl(__x);} |
| 1086 |
| 1087 template <class _A1> |
| 1088 inline _LIBCPP_INLINE_VISIBILITY |
| 1089 typename enable_if<is_integral<_A1>::value, double>::type |
| 1090 atanh(_A1 __x) _NOEXCEPT {return atanh((double)__x);} |
| 1091 #endif |
| 1092 |
| 1093 // cbrt |
| 1094 |
| 1095 #ifndef _LIBCPP_MSVCRT |
| 1096 using ::cbrt; |
| 1097 using ::cbrtf; |
| 1098 |
| 1099 inline _LIBCPP_INLINE_VISIBILITY float cbrt(float __x) _NOEXCEPT {re
turn cbrtf(__x);} |
| 1100 inline _LIBCPP_INLINE_VISIBILITY long double cbrt(long double __x) _NOEXCEPT {re
turn cbrtl(__x);} |
| 1101 |
| 1102 template <class _A1> |
| 1103 inline _LIBCPP_INLINE_VISIBILITY |
| 1104 typename enable_if<is_integral<_A1>::value, double>::type |
| 1105 cbrt(_A1 __x) _NOEXCEPT {return cbrt((double)__x);} |
| 1106 #endif |
| 1107 |
| 1108 // copysign |
| 1109 |
| 1110 using ::copysign; |
| 1111 using ::copysignf; |
| 1112 |
| 1113 inline _LIBCPP_INLINE_VISIBILITY float copysign(float __x, float __y) _NOE
XCEPT {return copysignf(__x, __y);} |
| 1114 inline _LIBCPP_INLINE_VISIBILITY long double copysign(long double __x, long doub
le __y) _NOEXCEPT {return copysignl(__x, __y);} |
| 1115 |
| 1116 template <class _A1, class _A2> |
| 1117 inline _LIBCPP_INLINE_VISIBILITY |
| 1118 typename enable_if |
| 1119 < |
| 1120 is_arithmetic<_A1>::value && |
| 1121 is_arithmetic<_A2>::value, |
| 1122 typename __promote<_A1, _A2>::type |
| 1123 >::type |
| 1124 copysign(_A1 __x, _A2 __y) _NOEXCEPT |
| 1125 { |
| 1126 typedef typename __promote<_A1, _A2>::type __result_type; |
| 1127 static_assert((!(is_same<_A1, __result_type>::value && |
| 1128 is_same<_A2, __result_type>::value)), ""); |
| 1129 return copysign((__result_type)__x, (__result_type)__y); |
| 1130 } |
| 1131 |
| 1132 #ifndef _LIBCPP_MSVCRT |
| 1133 |
| 1134 // erf |
| 1135 |
| 1136 using ::erf; |
| 1137 using ::erff; |
| 1138 |
| 1139 inline _LIBCPP_INLINE_VISIBILITY float erf(float __x) _NOEXCEPT {ret
urn erff(__x);} |
| 1140 inline _LIBCPP_INLINE_VISIBILITY long double erf(long double __x) _NOEXCEPT {ret
urn erfl(__x);} |
| 1141 |
| 1142 template <class _A1> |
| 1143 inline _LIBCPP_INLINE_VISIBILITY |
| 1144 typename enable_if<is_integral<_A1>::value, double>::type |
| 1145 erf(_A1 __x) _NOEXCEPT {return erf((double)__x);} |
| 1146 |
| 1147 // erfc |
| 1148 |
| 1149 using ::erfc; |
| 1150 using ::erfcf; |
| 1151 |
| 1152 inline _LIBCPP_INLINE_VISIBILITY float erfc(float __x) _NOEXCEPT {re
turn erfcf(__x);} |
| 1153 inline _LIBCPP_INLINE_VISIBILITY long double erfc(long double __x) _NOEXCEPT {re
turn erfcl(__x);} |
| 1154 |
| 1155 template <class _A1> |
| 1156 inline _LIBCPP_INLINE_VISIBILITY |
| 1157 typename enable_if<is_integral<_A1>::value, double>::type |
| 1158 erfc(_A1 __x) _NOEXCEPT {return erfc((double)__x);} |
| 1159 |
| 1160 // exp2 |
| 1161 |
| 1162 using ::exp2; |
| 1163 using ::exp2f; |
| 1164 |
| 1165 inline _LIBCPP_INLINE_VISIBILITY float exp2(float __x) _NOEXCEPT {re
turn exp2f(__x);} |
| 1166 inline _LIBCPP_INLINE_VISIBILITY long double exp2(long double __x) _NOEXCEPT {re
turn exp2l(__x);} |
| 1167 |
| 1168 template <class _A1> |
| 1169 inline _LIBCPP_INLINE_VISIBILITY |
| 1170 typename enable_if<is_integral<_A1>::value, double>::type |
| 1171 exp2(_A1 __x) _NOEXCEPT {return exp2((double)__x);} |
| 1172 |
| 1173 // expm1 |
| 1174 |
| 1175 using ::expm1; |
| 1176 using ::expm1f; |
| 1177 |
| 1178 inline _LIBCPP_INLINE_VISIBILITY float expm1(float __x) _NOEXCEPT {r
eturn expm1f(__x);} |
| 1179 inline _LIBCPP_INLINE_VISIBILITY long double expm1(long double __x) _NOEXCEPT {r
eturn expm1l(__x);} |
| 1180 |
| 1181 template <class _A1> |
| 1182 inline _LIBCPP_INLINE_VISIBILITY |
| 1183 typename enable_if<is_integral<_A1>::value, double>::type |
| 1184 expm1(_A1 __x) _NOEXCEPT {return expm1((double)__x);} |
| 1185 |
| 1186 // fdim |
| 1187 |
| 1188 using ::fdim; |
| 1189 using ::fdimf; |
| 1190 |
| 1191 inline _LIBCPP_INLINE_VISIBILITY float fdim(float __x, float __y) _NOEXCEP
T {return fdimf(__x, __y);} |
| 1192 inline _LIBCPP_INLINE_VISIBILITY long double fdim(long double __x, long double _
_y) _NOEXCEPT {return fdiml(__x, __y);} |
| 1193 |
| 1194 template <class _A1, class _A2> |
| 1195 inline _LIBCPP_INLINE_VISIBILITY |
| 1196 typename enable_if |
| 1197 < |
| 1198 is_arithmetic<_A1>::value && |
| 1199 is_arithmetic<_A2>::value, |
| 1200 typename __promote<_A1, _A2>::type |
| 1201 >::type |
| 1202 fdim(_A1 __x, _A2 __y) _NOEXCEPT |
| 1203 { |
| 1204 typedef typename __promote<_A1, _A2>::type __result_type; |
| 1205 static_assert((!(is_same<_A1, __result_type>::value && |
| 1206 is_same<_A2, __result_type>::value)), ""); |
| 1207 return fdim((__result_type)__x, (__result_type)__y); |
| 1208 } |
| 1209 |
| 1210 // fma |
| 1211 |
| 1212 inline _LIBCPP_INLINE_VISIBILITY float fmaf(float __x, float __y, float __z) _NO
EXCEPT {return (float)((double)__x*__y + __z);} |
| 1213 #ifndef FP_FAST_FMAF |
| 1214 #define FP_FAST_FMAF |
| 1215 #endif |
| 1216 |
| 1217 using ::fma; |
| 1218 |
| 1219 inline _LIBCPP_INLINE_VISIBILITY float fma(float __x, float __y, float __z
) _NOEXCEPT {return fmaf(__x, __y, __z);} |
| 1220 inline _LIBCPP_INLINE_VISIBILITY long double fma(long double __x, long double __
y, long double __z) _NOEXCEPT {return fmal(__x, __y, __z);} |
| 1221 |
| 1222 template <class _A1, class _A2, class _A3> |
| 1223 inline _LIBCPP_INLINE_VISIBILITY |
| 1224 typename enable_if |
| 1225 < |
| 1226 is_arithmetic<_A1>::value && |
| 1227 is_arithmetic<_A2>::value && |
| 1228 is_arithmetic<_A3>::value, |
| 1229 typename __promote<_A1, _A2, _A3>::type |
| 1230 >::type |
| 1231 fma(_A1 __x, _A2 __y, _A3 __z) _NOEXCEPT |
| 1232 { |
| 1233 typedef typename __promote<_A1, _A2, _A3>::type __result_type; |
| 1234 static_assert((!(is_same<_A1, __result_type>::value && |
| 1235 is_same<_A2, __result_type>::value && |
| 1236 is_same<_A3, __result_type>::value)), ""); |
| 1237 return fma((__result_type)__x, (__result_type)__y, (__result_type)__z); |
| 1238 } |
| 1239 |
| 1240 // fmax |
| 1241 |
| 1242 using ::fmax; |
| 1243 using ::fmaxf; |
| 1244 |
| 1245 inline _LIBCPP_INLINE_VISIBILITY float fmax(float __x, float __y) _NOEXCEP
T {return fmaxf(__x, __y);} |
| 1246 inline _LIBCPP_INLINE_VISIBILITY long double fmax(long double __x, long double _
_y) _NOEXCEPT {return fmaxl(__x, __y);} |
| 1247 |
| 1248 template <class _A1, class _A2> |
| 1249 inline _LIBCPP_INLINE_VISIBILITY |
| 1250 typename enable_if |
| 1251 < |
| 1252 is_arithmetic<_A1>::value && |
| 1253 is_arithmetic<_A2>::value, |
| 1254 typename __promote<_A1, _A2>::type |
| 1255 >::type |
| 1256 fmax(_A1 __x, _A2 __y) _NOEXCEPT |
| 1257 { |
| 1258 typedef typename __promote<_A1, _A2>::type __result_type; |
| 1259 static_assert((!(is_same<_A1, __result_type>::value && |
| 1260 is_same<_A2, __result_type>::value)), ""); |
| 1261 return fmax((__result_type)__x, (__result_type)__y); |
| 1262 } |
| 1263 |
| 1264 // fmin |
| 1265 |
| 1266 using ::fmin; |
| 1267 using ::fminf; |
| 1268 |
| 1269 inline _LIBCPP_INLINE_VISIBILITY float fmin(float __x, float __y) _NOEXCEP
T {return fminf(__x, __y);} |
| 1270 inline _LIBCPP_INLINE_VISIBILITY long double fmin(long double __x, long double _
_y) _NOEXCEPT {return fminl(__x, __y);} |
| 1271 |
| 1272 template <class _A1, class _A2> |
| 1273 inline _LIBCPP_INLINE_VISIBILITY |
| 1274 typename enable_if |
| 1275 < |
| 1276 is_arithmetic<_A1>::value && |
| 1277 is_arithmetic<_A2>::value, |
| 1278 typename __promote<_A1, _A2>::type |
| 1279 >::type |
| 1280 fmin(_A1 __x, _A2 __y) _NOEXCEPT |
| 1281 { |
| 1282 typedef typename __promote<_A1, _A2>::type __result_type; |
| 1283 static_assert((!(is_same<_A1, __result_type>::value && |
| 1284 is_same<_A2, __result_type>::value)), ""); |
| 1285 return fmin((__result_type)__x, (__result_type)__y); |
| 1286 } |
| 1287 |
| 1288 // hypot |
| 1289 |
| 1290 using ::hypot; |
| 1291 using ::hypotf; |
| 1292 |
| 1293 inline _LIBCPP_INLINE_VISIBILITY float hypot(float __x, float __y) _NOEXCE
PT {return hypotf(__x, __y);} |
| 1294 inline _LIBCPP_INLINE_VISIBILITY long double hypot(long double __x, long double
__y) _NOEXCEPT {return hypotl(__x, __y);} |
| 1295 |
| 1296 template <class _A1, class _A2> |
| 1297 inline _LIBCPP_INLINE_VISIBILITY |
| 1298 typename enable_if |
| 1299 < |
| 1300 is_arithmetic<_A1>::value && |
| 1301 is_arithmetic<_A2>::value, |
| 1302 typename __promote<_A1, _A2>::type |
| 1303 >::type |
| 1304 hypot(_A1 __x, _A2 __y) _NOEXCEPT |
| 1305 { |
| 1306 typedef typename __promote<_A1, _A2>::type __result_type; |
| 1307 static_assert((!(is_same<_A1, __result_type>::value && |
| 1308 is_same<_A2, __result_type>::value)), ""); |
| 1309 return hypot((__result_type)__x, (__result_type)__y); |
| 1310 } |
| 1311 |
| 1312 // ilogb |
| 1313 |
| 1314 using ::ilogb; |
| 1315 using ::ilogbf; |
| 1316 |
| 1317 inline _LIBCPP_INLINE_VISIBILITY int ilogb(float __x) _NOEXCEPT {return il
ogbf(__x);} |
| 1318 inline _LIBCPP_INLINE_VISIBILITY int ilogb(long double __x) _NOEXCEPT {return il
ogbl(__x);} |
| 1319 |
| 1320 template <class _A1> |
| 1321 inline _LIBCPP_INLINE_VISIBILITY |
| 1322 typename enable_if<is_integral<_A1>::value, int>::type |
| 1323 ilogb(_A1 __x) _NOEXCEPT {return ilogb((double)__x);} |
| 1324 |
| 1325 // lgamma |
| 1326 |
| 1327 using ::lgamma; |
| 1328 using ::lgammaf; |
| 1329 |
| 1330 inline _LIBCPP_INLINE_VISIBILITY float lgamma(float __x) _NOEXCEPT {
return lgammaf(__x);} |
| 1331 inline _LIBCPP_INLINE_VISIBILITY long double lgamma(long double __x) _NOEXCEPT {
return lgammal(__x);} |
| 1332 |
| 1333 |
| 1334 template <class _A1> |
| 1335 inline _LIBCPP_INLINE_VISIBILITY |
| 1336 typename enable_if<is_integral<_A1>::value, double>::type |
| 1337 lgamma(_A1 __x) _NOEXCEPT {return lgamma((double)__x);} |
| 1338 |
| 1339 |
| 1340 // llrint |
| 1341 |
| 1342 using ::llrint; |
| 1343 using ::llrintf; |
| 1344 |
| 1345 inline _LIBCPP_INLINE_VISIBILITY long long llrint(float __x) _NOEXCEPT {re
turn llrintf(__x);} |
| 1346 inline _LIBCPP_INLINE_VISIBILITY long long llrint(long double __x) _NOEXCEPT {re
turn llrintl(__x);} |
| 1347 |
| 1348 template <class _A1> |
| 1349 inline _LIBCPP_INLINE_VISIBILITY |
| 1350 typename enable_if<is_integral<_A1>::value, long long>::type |
| 1351 llrint(_A1 __x) _NOEXCEPT {return llrint((double)__x);} |
| 1352 |
| 1353 // llround |
| 1354 |
| 1355 using ::llround; |
| 1356 using ::llroundf; |
| 1357 |
| 1358 inline _LIBCPP_INLINE_VISIBILITY long long llround(float __x) _NOEXCEPT {r
eturn llroundf(__x);} |
| 1359 inline _LIBCPP_INLINE_VISIBILITY long long llround(long double __x) _NOEXCEPT {r
eturn llroundl(__x);} |
| 1360 |
| 1361 template <class _A1> |
| 1362 inline _LIBCPP_INLINE_VISIBILITY |
| 1363 typename enable_if<is_integral<_A1>::value, long long>::type |
| 1364 llround(_A1 __x) _NOEXCEPT {return llround((double)__x);} |
| 1365 |
| 1366 // log1p |
| 1367 |
| 1368 using ::log1p; |
| 1369 using ::log1pf; |
| 1370 |
| 1371 inline _LIBCPP_INLINE_VISIBILITY float log1p(float __x) _NOEXCEPT {r
eturn log1pf(__x);} |
| 1372 inline _LIBCPP_INLINE_VISIBILITY long double log1p(long double __x) _NOEXCEPT {r
eturn log1pl(__x);} |
| 1373 |
| 1374 template <class _A1> |
| 1375 inline _LIBCPP_INLINE_VISIBILITY |
| 1376 typename enable_if<is_integral<_A1>::value, double>::type |
| 1377 log1p(_A1 __x) _NOEXCEPT {return log1p((double)__x);} |
| 1378 |
| 1379 // log2 |
| 1380 |
| 1381 using ::log2; |
| 1382 using ::log2f; |
| 1383 |
| 1384 inline _LIBCPP_INLINE_VISIBILITY float log2(float __x) _NOEXCEPT {re
turn log2f(__x);} |
| 1385 inline _LIBCPP_INLINE_VISIBILITY long double log2(long double __x) _NOEXCEPT {re
turn log2l(__x);} |
| 1386 |
| 1387 template <class _A1> |
| 1388 inline _LIBCPP_INLINE_VISIBILITY |
| 1389 typename enable_if<is_integral<_A1>::value, double>::type |
| 1390 log2(_A1 __x) _NOEXCEPT {return log2((double)__x);} |
| 1391 |
| 1392 // logb |
| 1393 |
| 1394 using ::logb; |
| 1395 using ::logbf; |
| 1396 |
| 1397 inline _LIBCPP_INLINE_VISIBILITY float logb(float __x) _NOEXCEPT {re
turn logbf(__x);} |
| 1398 inline _LIBCPP_INLINE_VISIBILITY long double logb(long double __x) _NOEXCEPT {re
turn logbl(__x);} |
| 1399 |
| 1400 template <class _A1> |
| 1401 inline _LIBCPP_INLINE_VISIBILITY |
| 1402 typename enable_if<is_integral<_A1>::value, double>::type |
| 1403 logb(_A1 __x) _NOEXCEPT {return logb((double)__x);} |
| 1404 |
| 1405 // lrint |
| 1406 |
| 1407 using ::lrint; |
| 1408 using ::lrintf; |
| 1409 |
| 1410 inline _LIBCPP_INLINE_VISIBILITY long lrint(float __x) _NOEXCEPT {return l
rintf(__x);} |
| 1411 inline _LIBCPP_INLINE_VISIBILITY long lrint(long double __x) _NOEXCEPT {return l
rintl(__x);} |
| 1412 |
| 1413 template <class _A1> |
| 1414 inline _LIBCPP_INLINE_VISIBILITY |
| 1415 typename enable_if<is_integral<_A1>::value, long>::type |
| 1416 lrint(_A1 __x) _NOEXCEPT {return lrint((double)__x);} |
| 1417 |
| 1418 // lround |
| 1419 |
| 1420 using ::lround; |
| 1421 using ::lroundf; |
| 1422 |
| 1423 inline _LIBCPP_INLINE_VISIBILITY long lround(float __x) _NOEXCEPT {return
lroundf(__x);} |
| 1424 inline _LIBCPP_INLINE_VISIBILITY long lround(long double __x) _NOEXCEPT {return
lroundl(__x);} |
| 1425 |
| 1426 template <class _A1> |
| 1427 inline _LIBCPP_INLINE_VISIBILITY |
| 1428 typename enable_if<is_integral<_A1>::value, long>::type |
| 1429 lround(_A1 __x) _NOEXCEPT {return lround((double)__x);} |
| 1430 |
| 1431 #endif // _LIBCPP_MSVCRT |
| 1432 #endif // __sun__ |
| 1433 |
| 1434 // nan |
| 1435 |
| 1436 #ifndef _LIBCPP_MSVCRT |
| 1437 using ::nan; |
| 1438 using ::nanf; |
| 1439 #endif // _LIBCPP_MSVCRT |
| 1440 |
| 1441 #ifndef __sun__ |
| 1442 #ifndef _LIBCPP_MSVCRT |
| 1443 |
| 1444 // nearbyint |
| 1445 |
| 1446 using ::nearbyint; |
| 1447 using ::nearbyintf; |
| 1448 |
| 1449 inline _LIBCPP_INLINE_VISIBILITY float nearbyint(float __x) _NOEXCEPT
{return nearbyintf(__x);} |
| 1450 inline _LIBCPP_INLINE_VISIBILITY long double nearbyint(long double __x) _NOEXCEP
T {return nearbyintl(__x);} |
| 1451 |
| 1452 template <class _A1> |
| 1453 inline _LIBCPP_INLINE_VISIBILITY |
| 1454 typename enable_if<is_integral<_A1>::value, double>::type |
| 1455 nearbyint(_A1 __x) _NOEXCEPT {return nearbyint((double)__x);} |
| 1456 |
| 1457 // nextafter |
| 1458 |
| 1459 using ::nextafter; |
| 1460 using ::nextafterf; |
| 1461 |
| 1462 inline _LIBCPP_INLINE_VISIBILITY float nextafter(float __x, float __y) _NO
EXCEPT {return nextafterf(__x, __y);} |
| 1463 inline _LIBCPP_INLINE_VISIBILITY long double nextafter(long double __x, long dou
ble __y) _NOEXCEPT {return nextafterl(__x, __y);} |
| 1464 |
| 1465 template <class _A1, class _A2> |
| 1466 inline _LIBCPP_INLINE_VISIBILITY |
| 1467 typename enable_if |
| 1468 < |
| 1469 is_arithmetic<_A1>::value && |
| 1470 is_arithmetic<_A2>::value, |
| 1471 typename __promote<_A1, _A2>::type |
| 1472 >::type |
| 1473 nextafter(_A1 __x, _A2 __y) _NOEXCEPT |
| 1474 { |
| 1475 typedef typename __promote<_A1, _A2>::type __result_type; |
| 1476 static_assert((!(is_same<_A1, __result_type>::value && |
| 1477 is_same<_A2, __result_type>::value)), ""); |
| 1478 return nextafter((__result_type)__x, (__result_type)__y); |
| 1479 } |
| 1480 |
| 1481 // nexttoward |
| 1482 |
| 1483 using ::nexttoward; |
| 1484 using ::nexttowardf; |
| 1485 |
| 1486 inline _LIBCPP_INLINE_VISIBILITY float nexttoward(float __x, long double _
_y) _NOEXCEPT {return nexttowardf(__x, __y);} |
| 1487 inline _LIBCPP_INLINE_VISIBILITY long double nexttoward(long double __x, long do
uble __y) _NOEXCEPT {return nexttowardl(__x, __y);} |
| 1488 |
| 1489 template <class _A1> |
| 1490 inline _LIBCPP_INLINE_VISIBILITY |
| 1491 typename enable_if<is_integral<_A1>::value, double>::type |
| 1492 nexttoward(_A1 __x, long double __y) _NOEXCEPT {return nexttoward((double)__x, _
_y);} |
| 1493 |
| 1494 // remainder |
| 1495 |
| 1496 using ::remainder; |
| 1497 using ::remainderf; |
| 1498 |
| 1499 inline _LIBCPP_INLINE_VISIBILITY float remainder(float __x, float __y) _NO
EXCEPT {return remainderf(__x, __y);} |
| 1500 inline _LIBCPP_INLINE_VISIBILITY long double remainder(long double __x, long dou
ble __y) _NOEXCEPT {return remainderl(__x, __y);} |
| 1501 |
| 1502 template <class _A1, class _A2> |
| 1503 inline _LIBCPP_INLINE_VISIBILITY |
| 1504 typename enable_if |
| 1505 < |
| 1506 is_arithmetic<_A1>::value && |
| 1507 is_arithmetic<_A2>::value, |
| 1508 typename __promote<_A1, _A2>::type |
| 1509 >::type |
| 1510 remainder(_A1 __x, _A2 __y) _NOEXCEPT |
| 1511 { |
| 1512 typedef typename __promote<_A1, _A2>::type __result_type; |
| 1513 static_assert((!(is_same<_A1, __result_type>::value && |
| 1514 is_same<_A2, __result_type>::value)), ""); |
| 1515 return remainder((__result_type)__x, (__result_type)__y); |
| 1516 } |
| 1517 |
| 1518 // remquo |
| 1519 |
| 1520 using ::remquo; |
| 1521 using ::remquof; |
| 1522 |
| 1523 inline _LIBCPP_INLINE_VISIBILITY float remquo(float __x, float __y, int* _
_z) _NOEXCEPT {return remquof(__x, __y, __z);} |
| 1524 inline _LIBCPP_INLINE_VISIBILITY long double remquo(long double __x, long double
__y, int* __z) _NOEXCEPT {return remquol(__x, __y, __z);} |
| 1525 |
| 1526 template <class _A1, class _A2> |
| 1527 inline _LIBCPP_INLINE_VISIBILITY |
| 1528 typename enable_if |
| 1529 < |
| 1530 is_arithmetic<_A1>::value && |
| 1531 is_arithmetic<_A2>::value, |
| 1532 typename __promote<_A1, _A2>::type |
| 1533 >::type |
| 1534 remquo(_A1 __x, _A2 __y, int* __z) _NOEXCEPT |
| 1535 { |
| 1536 typedef typename __promote<_A1, _A2>::type __result_type; |
| 1537 static_assert((!(is_same<_A1, __result_type>::value && |
| 1538 is_same<_A2, __result_type>::value)), ""); |
| 1539 return remquo((__result_type)__x, (__result_type)__y, __z); |
| 1540 } |
| 1541 |
| 1542 // rint |
| 1543 |
| 1544 using ::rint; |
| 1545 using ::rintf; |
| 1546 |
| 1547 inline _LIBCPP_INLINE_VISIBILITY float rint(float __x) _NOEXCEPT {re
turn rintf(__x);} |
| 1548 inline _LIBCPP_INLINE_VISIBILITY long double rint(long double __x) _NOEXCEPT {re
turn rintl(__x);} |
| 1549 |
| 1550 template <class _A1> |
| 1551 inline _LIBCPP_INLINE_VISIBILITY |
| 1552 typename enable_if<is_integral<_A1>::value, double>::type |
| 1553 rint(_A1 __x) _NOEXCEPT {return rint((double)__x);} |
| 1554 |
| 1555 // round |
| 1556 |
| 1557 using ::round; |
| 1558 using ::roundf; |
| 1559 |
| 1560 inline _LIBCPP_INLINE_VISIBILITY float round(float __x) _NOEXCEPT {r
eturn roundf(__x);} |
| 1561 inline _LIBCPP_INLINE_VISIBILITY long double round(long double __x) _NOEXCEPT {r
eturn roundl(__x);} |
| 1562 |
| 1563 template <class _A1> |
| 1564 inline _LIBCPP_INLINE_VISIBILITY |
| 1565 typename enable_if<is_integral<_A1>::value, double>::type |
| 1566 round(_A1 __x) _NOEXCEPT {return round((double)__x);} |
| 1567 |
| 1568 // scalbln |
| 1569 |
| 1570 using ::scalbln; |
| 1571 using ::scalblnf; |
| 1572 |
| 1573 inline _LIBCPP_INLINE_VISIBILITY float scalbln(float __x, long __y) _NOEXC
EPT {return scalblnf(__x, __y);} |
| 1574 inline _LIBCPP_INLINE_VISIBILITY long double scalbln(long double __x, long __y)
_NOEXCEPT {return scalblnl(__x, __y);} |
| 1575 |
| 1576 template <class _A1> |
| 1577 inline _LIBCPP_INLINE_VISIBILITY |
| 1578 typename enable_if<is_integral<_A1>::value, double>::type |
| 1579 scalbln(_A1 __x, long __y) _NOEXCEPT {return scalbln((double)__x, __y);} |
| 1580 |
| 1581 // scalbn |
| 1582 |
| 1583 using ::scalbn; |
| 1584 using ::scalbnf; |
| 1585 |
| 1586 inline _LIBCPP_INLINE_VISIBILITY float scalbn(float __x, int __y) _NOEXCEP
T {return scalbnf(__x, __y);} |
| 1587 inline _LIBCPP_INLINE_VISIBILITY long double scalbn(long double __x, int __y) _N
OEXCEPT {return scalbnl(__x, __y);} |
| 1588 |
| 1589 template <class _A1> |
| 1590 inline _LIBCPP_INLINE_VISIBILITY |
| 1591 typename enable_if<is_integral<_A1>::value, double>::type |
| 1592 scalbn(_A1 __x, int __y) _NOEXCEPT {return scalbn((double)__x, __y);} |
| 1593 |
| 1594 // tgamma |
| 1595 |
| 1596 using ::tgamma; |
| 1597 using ::tgammaf; |
| 1598 |
| 1599 inline _LIBCPP_INLINE_VISIBILITY float tgamma(float __x) _NOEXCEPT {
return tgammaf(__x);} |
| 1600 inline _LIBCPP_INLINE_VISIBILITY long double tgamma(long double __x) _NOEXCEPT {
return tgammal(__x);} |
| 1601 |
| 1602 template <class _A1> |
| 1603 inline _LIBCPP_INLINE_VISIBILITY |
| 1604 typename enable_if<is_integral<_A1>::value, double>::type |
| 1605 tgamma(_A1 __x) _NOEXCEPT {return tgamma((double)__x);} |
| 1606 |
| 1607 // trunc |
| 1608 |
| 1609 using ::trunc; |
| 1610 using ::truncf; |
| 1611 |
| 1612 inline _LIBCPP_INLINE_VISIBILITY float trunc(float __x) _NOEXCEPT {r
eturn truncf(__x);} |
| 1613 inline _LIBCPP_INLINE_VISIBILITY long double trunc(long double __x) _NOEXCEPT {r
eturn truncl(__x);} |
| 1614 |
| 1615 template <class _A1> |
| 1616 inline _LIBCPP_INLINE_VISIBILITY |
| 1617 typename enable_if<is_integral<_A1>::value, double>::type |
| 1618 trunc(_A1 __x) _NOEXCEPT {return trunc((double)__x);} |
| 1619 |
| 1620 #endif // !_LIBCPP_MSVCRT |
| 1621 |
| 1622 using ::acosl; |
| 1623 using ::asinl; |
| 1624 using ::atanl; |
| 1625 using ::atan2l; |
| 1626 using ::ceill; |
| 1627 using ::cosl; |
| 1628 using ::coshl; |
| 1629 using ::expl; |
| 1630 using ::fabsl; |
| 1631 using ::floorl; |
| 1632 using ::fmodl; |
| 1633 using ::frexpl; |
| 1634 using ::ldexpl; |
| 1635 using ::logl; |
| 1636 using ::log10l; |
| 1637 using ::modfl; |
| 1638 using ::powl; |
| 1639 using ::sinl; |
| 1640 using ::sinhl; |
| 1641 using ::sqrtl; |
| 1642 using ::tanl; |
| 1643 #ifndef _LIBCPP_MSVCRT |
| 1644 using ::tanhl; |
| 1645 using ::acoshl; |
| 1646 using ::asinhl; |
| 1647 using ::atanhl; |
| 1648 using ::cbrtl; |
| 1649 #endif // !_LIBCPP_MSVCRT |
| 1650 using ::copysignl; |
| 1651 #ifndef _LIBCPP_MSVCRT |
| 1652 using ::erfl; |
| 1653 using ::erfcl; |
| 1654 using ::exp2l; |
| 1655 using ::expm1l; |
| 1656 using ::fdiml; |
| 1657 using ::fmal; |
| 1658 using ::fmaxl; |
| 1659 using ::fminl; |
| 1660 using ::hypotl; |
| 1661 using ::ilogbl; |
| 1662 using ::lgammal; |
| 1663 using ::llrintl; |
| 1664 using ::llroundl; |
| 1665 using ::log1pl; |
| 1666 using ::log2l; |
| 1667 using ::logbl; |
| 1668 using ::lrintl; |
| 1669 using ::lroundl; |
| 1670 using ::nanl; |
| 1671 using ::nearbyintl; |
| 1672 using ::nextafterl; |
| 1673 using ::nexttowardl; |
| 1674 using ::remainderl; |
| 1675 using ::remquol; |
| 1676 using ::rintl; |
| 1677 using ::roundl; |
| 1678 using ::scalblnl; |
| 1679 using ::scalbnl; |
| 1680 using ::tgammal; |
| 1681 using ::truncl; |
| 1682 #endif // !_LIBCPP_MSVCRT |
| 1683 |
| 1684 #else |
| 1685 using ::lgamma; |
| 1686 using ::lgammaf; |
| 1687 #endif // __sun__ |
| 1688 _LIBCPP_END_NAMESPACE_STD |
| 1689 |
| 1690 #endif // _LIBCPP_CMATH |
OLD | NEW |