cmath revision 302408
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 17Macros: 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 38namespace std 39{ 40 41Types: 42 43 float_t // C99 44 double_t // C99 45 46// C90 47 48floating_point abs(floating_point x); 49 50floating_point acos (arithmetic x); 51float acosf(float x); 52long double acosl(long double x); 53 54floating_point asin (arithmetic x); 55float asinf(float x); 56long double asinl(long double x); 57 58floating_point atan (arithmetic x); 59float atanf(float x); 60long double atanl(long double x); 61 62floating_point atan2 (arithmetic y, arithmetic x); 63float atan2f(float y, float x); 64long double atan2l(long double y, long double x); 65 66floating_point ceil (arithmetic x); 67float ceilf(float x); 68long double ceill(long double x); 69 70floating_point cos (arithmetic x); 71float cosf(float x); 72long double cosl(long double x); 73 74floating_point cosh (arithmetic x); 75float coshf(float x); 76long double coshl(long double x); 77 78floating_point exp (arithmetic x); 79float expf(float x); 80long double expl(long double x); 81 82floating_point fabs (arithmetic x); 83float fabsf(float x); 84long double fabsl(long double x); 85 86floating_point floor (arithmetic x); 87float floorf(float x); 88long double floorl(long double x); 89 90floating_point fmod (arithmetic x, arithmetic y); 91float fmodf(float x, float y); 92long double fmodl(long double x, long double y); 93 94floating_point frexp (arithmetic value, int* exp); 95float frexpf(float value, int* exp); 96long double frexpl(long double value, int* exp); 97 98floating_point ldexp (arithmetic value, int exp); 99float ldexpf(float value, int exp); 100long double ldexpl(long double value, int exp); 101 102floating_point log (arithmetic x); 103float logf(float x); 104long double logl(long double x); 105 106floating_point log10 (arithmetic x); 107float log10f(float x); 108long double log10l(long double x); 109 110floating_point modf (floating_point value, floating_point* iptr); 111float modff(float value, float* iptr); 112long double modfl(long double value, long double* iptr); 113 114floating_point pow (arithmetic x, arithmetic y); 115float powf(float x, float y); 116long double powl(long double x, long double y); 117 118floating_point sin (arithmetic x); 119float sinf(float x); 120long double sinl(long double x); 121 122floating_point sinh (arithmetic x); 123float sinhf(float x); 124long double sinhl(long double x); 125 126floating_point sqrt (arithmetic x); 127float sqrtf(float x); 128long double sqrtl(long double x); 129 130floating_point tan (arithmetic x); 131float tanf(float x); 132long double tanl(long double x); 133 134floating_point tanh (arithmetic x); 135float tanhf(float x); 136long double tanhl(long double x); 137 138// C99 139 140bool signbit(arithmetic x); 141 142int fpclassify(arithmetic x); 143 144bool isfinite(arithmetic x); 145bool isinf(arithmetic x); 146bool isnan(arithmetic x); 147bool isnormal(arithmetic x); 148 149bool isgreater(arithmetic x, arithmetic y); 150bool isgreaterequal(arithmetic x, arithmetic y); 151bool isless(arithmetic x, arithmetic y); 152bool islessequal(arithmetic x, arithmetic y); 153bool islessgreater(arithmetic x, arithmetic y); 154bool isunordered(arithmetic x, arithmetic y); 155 156floating_point acosh (arithmetic x); 157float acoshf(float x); 158long double acoshl(long double x); 159 160floating_point asinh (arithmetic x); 161float asinhf(float x); 162long double asinhl(long double x); 163 164floating_point atanh (arithmetic x); 165float atanhf(float x); 166long double atanhl(long double x); 167 168floating_point cbrt (arithmetic x); 169float cbrtf(float x); 170long double cbrtl(long double x); 171 172floating_point copysign (arithmetic x, arithmetic y); 173float copysignf(float x, float y); 174long double copysignl(long double x, long double y); 175 176floating_point erf (arithmetic x); 177float erff(float x); 178long double erfl(long double x); 179 180floating_point erfc (arithmetic x); 181float erfcf(float x); 182long double erfcl(long double x); 183 184floating_point exp2 (arithmetic x); 185float exp2f(float x); 186long double exp2l(long double x); 187 188floating_point expm1 (arithmetic x); 189float expm1f(float x); 190long double expm1l(long double x); 191 192floating_point fdim (arithmetic x, arithmetic y); 193float fdimf(float x, float y); 194long double fdiml(long double x, long double y); 195 196floating_point fma (arithmetic x, arithmetic y, arithmetic z); 197float fmaf(float x, float y, float z); 198long double fmal(long double x, long double y, long double z); 199 200floating_point fmax (arithmetic x, arithmetic y); 201float fmaxf(float x, float y); 202long double fmaxl(long double x, long double y); 203 204floating_point fmin (arithmetic x, arithmetic y); 205float fminf(float x, float y); 206long double fminl(long double x, long double y); 207 208floating_point hypot (arithmetic x, arithmetic y); 209float hypotf(float x, float y); 210long double hypotl(long double x, long double y); 211 212int ilogb (arithmetic x); 213int ilogbf(float x); 214int ilogbl(long double x); 215 216floating_point lgamma (arithmetic x); 217float lgammaf(float x); 218long double lgammal(long double x); 219 220long long llrint (arithmetic x); 221long long llrintf(float x); 222long long llrintl(long double x); 223 224long long llround (arithmetic x); 225long long llroundf(float x); 226long long llroundl(long double x); 227 228floating_point log1p (arithmetic x); 229float log1pf(float x); 230long double log1pl(long double x); 231 232floating_point log2 (arithmetic x); 233float log2f(float x); 234long double log2l(long double x); 235 236floating_point logb (arithmetic x); 237float logbf(float x); 238long double logbl(long double x); 239 240long lrint (arithmetic x); 241long lrintf(float x); 242long lrintl(long double x); 243 244long lround (arithmetic x); 245long lroundf(float x); 246long lroundl(long double x); 247 248double nan (const char* str); 249float nanf(const char* str); 250long double nanl(const char* str); 251 252floating_point nearbyint (arithmetic x); 253float nearbyintf(float x); 254long double nearbyintl(long double x); 255 256floating_point nextafter (arithmetic x, arithmetic y); 257float nextafterf(float x, float y); 258long double nextafterl(long double x, long double y); 259 260floating_point nexttoward (arithmetic x, long double y); 261float nexttowardf(float x, long double y); 262long double nexttowardl(long double x, long double y); 263 264floating_point remainder (arithmetic x, arithmetic y); 265float remainderf(float x, float y); 266long double remainderl(long double x, long double y); 267 268floating_point remquo (arithmetic x, arithmetic y, int* pquo); 269float remquof(float x, float y, int* pquo); 270long double remquol(long double x, long double y, int* pquo); 271 272floating_point rint (arithmetic x); 273float rintf(float x); 274long double rintl(long double x); 275 276floating_point round (arithmetic x); 277float roundf(float x); 278long double roundl(long double x); 279 280floating_point scalbln (arithmetic x, long ex); 281float scalblnf(float x, long ex); 282long double scalblnl(long double x, long ex); 283 284floating_point scalbn (arithmetic x, int ex); 285float scalbnf(float x, int ex); 286long double scalbnl(long double x, int ex); 287 288floating_point tgamma (arithmetic x); 289float tgammaf(float x); 290long double tgammal(long double x); 291 292floating_point trunc (arithmetic x); 293float truncf(float x); 294long double truncl(long double x); 295 296} // std 297 298*/ 299 300#include <__config> 301#include <math.h> 302 303#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 304#pragma GCC system_header 305#endif 306 307_LIBCPP_BEGIN_NAMESPACE_STD 308 309using ::signbit; 310using ::fpclassify; 311using ::isfinite; 312using ::isinf; 313using ::isnan; 314using ::isnormal; 315using ::isgreater; 316using ::isgreaterequal; 317using ::isless; 318using ::islessequal; 319using ::islessgreater; 320using ::isunordered; 321using ::isunordered; 322 323using ::float_t; 324using ::double_t; 325 326#ifndef _AIX 327using ::abs; 328#endif 329 330#ifndef __sun__ 331using ::acos; 332using ::acosf; 333using ::asin; 334using ::asinf; 335using ::atan; 336using ::atanf; 337using ::atan2; 338using ::atan2f; 339using ::ceil; 340using ::ceilf; 341using ::cos; 342using ::cosf; 343using ::cosh; 344using ::coshf; 345#endif // __sun__ 346 347using ::exp; 348using ::expf; 349 350#ifndef __sun__ 351using ::fabs; 352using ::fabsf; 353using ::floor; 354using ::floorf; 355#endif //__sun__ 356 357using ::fmod; 358using ::fmodf; 359 360#ifndef __sun__ 361using ::frexp; 362using ::frexpf; 363using ::ldexp; 364using ::ldexpf; 365#endif // __sun__ 366 367using ::log; 368using ::logf; 369 370#ifndef __sun__ 371using ::log10; 372using ::log10f; 373using ::modf; 374using ::modff; 375#endif // __sun__ 376 377using ::pow; 378using ::powf; 379 380#ifndef __sun__ 381using ::sin; 382using ::sinf; 383using ::sinh; 384using ::sinhf; 385#endif // __sun__ 386 387using ::sqrt; 388using ::sqrtf; 389using ::tan; 390using ::tanf; 391 392#ifndef __sun__ 393using ::tanh; 394using ::tanhf; 395 396#ifndef _LIBCPP_MSVCRT 397using ::acosh; 398using ::acoshf; 399using ::asinh; 400using ::asinhf; 401using ::atanh; 402using ::atanhf; 403using ::cbrt; 404using ::cbrtf; 405#endif 406 407using ::copysign; 408using ::copysignf; 409 410#ifndef _LIBCPP_MSVCRT 411using ::erf; 412using ::erff; 413using ::erfc; 414using ::erfcf; 415using ::exp2; 416using ::exp2f; 417using ::expm1; 418using ::expm1f; 419using ::fdim; 420using ::fdimf; 421using ::fmaf; 422using ::fma; 423using ::fmax; 424using ::fmaxf; 425using ::fmin; 426using ::fminf; 427using ::hypot; 428using ::hypotf; 429using ::ilogb; 430using ::ilogbf; 431using ::lgamma; 432using ::lgammaf; 433using ::llrint; 434using ::llrintf; 435using ::llround; 436using ::llroundf; 437using ::log1p; 438using ::log1pf; 439using ::log2; 440using ::log2f; 441using ::logb; 442using ::logbf; 443using ::lrint; 444using ::lrintf; 445using ::lround; 446using ::lroundf; 447#endif // _LIBCPP_MSVCRT 448#endif // __sun__ 449 450#ifndef _LIBCPP_MSVCRT 451using ::nan; 452using ::nanf; 453#endif // _LIBCPP_MSVCRT 454 455#ifndef __sun__ 456#ifndef _LIBCPP_MSVCRT 457using ::nearbyint; 458using ::nearbyintf; 459using ::nextafter; 460using ::nextafterf; 461using ::nexttoward; 462using ::nexttowardf; 463using ::remainder; 464using ::remainderf; 465using ::remquo; 466using ::remquof; 467using ::rint; 468using ::rintf; 469using ::round; 470using ::roundf; 471using ::scalbln; 472using ::scalblnf; 473using ::scalbn; 474using ::scalbnf; 475using ::tgamma; 476using ::tgammaf; 477using ::trunc; 478using ::truncf; 479#endif // !_LIBCPP_MSVCRT 480 481using ::acosl; 482using ::asinl; 483using ::atanl; 484using ::atan2l; 485using ::ceill; 486using ::cosl; 487using ::coshl; 488using ::expl; 489using ::fabsl; 490using ::floorl; 491using ::fmodl; 492using ::frexpl; 493using ::ldexpl; 494using ::logl; 495using ::log10l; 496using ::modfl; 497using ::powl; 498using ::sinl; 499using ::sinhl; 500using ::sqrtl; 501using ::tanl; 502 503#ifndef _LIBCPP_MSVCRT 504using ::tanhl; 505using ::acoshl; 506using ::asinhl; 507using ::atanhl; 508using ::cbrtl; 509#endif // !_LIBCPP_MSVCRT 510 511using ::copysignl; 512 513#ifndef _LIBCPP_MSVCRT 514using ::erfl; 515using ::erfcl; 516using ::exp2l; 517using ::expm1l; 518using ::fdiml; 519using ::fmal; 520using ::fmaxl; 521using ::fminl; 522using ::hypotl; 523using ::ilogbl; 524using ::lgammal; 525using ::llrintl; 526using ::llroundl; 527using ::log1pl; 528using ::log2l; 529using ::logbl; 530using ::lrintl; 531using ::lroundl; 532using ::nanl; 533using ::nearbyintl; 534using ::nextafterl; 535using ::nexttowardl; 536using ::remainderl; 537using ::remquol; 538using ::rintl; 539using ::roundl; 540using ::scalblnl; 541using ::scalbnl; 542using ::tgammal; 543using ::truncl; 544#endif // !_LIBCPP_MSVCRT 545 546#else 547using ::lgamma; 548using ::lgammaf; 549#endif // __sun__ 550 551_LIBCPP_END_NAMESPACE_STD 552 553#endif // _LIBCPP_CMATH 554