00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #if _GLIBCXX_USE_C99_MATH_TR1
00031
00032 #undef acosh
00033 #undef acoshf
00034 #undef acoshl
00035 #undef asinh
00036 #undef asinhf
00037 #undef asinhl
00038 #undef atanh
00039 #undef atanhf
00040 #undef atanhl
00041 #undef cbrt
00042 #undef cbrtf
00043 #undef cbrtl
00044 #undef copysign
00045 #undef copysignf
00046 #undef copysignl
00047 #undef erf
00048 #undef erff
00049 #undef erfl
00050 #undef erfc
00051 #undef erfcf
00052 #undef erfcl
00053 #undef exp2
00054 #undef exp2f
00055 #undef exp2l
00056 #undef expm1
00057 #undef expm1f
00058 #undef expm1l
00059 #undef fdim
00060 #undef fdimf
00061 #undef fdiml
00062 #undef fma
00063 #undef fmaf
00064 #undef fmal
00065 #undef fmax
00066 #undef fmaxf
00067 #undef fmaxl
00068 #undef fmin
00069 #undef fminf
00070 #undef fminl
00071 #undef hypot
00072 #undef hypotf
00073 #undef hypotl
00074 #undef ilogb
00075 #undef ilogbf
00076 #undef ilogbl
00077 #undef lgamma
00078 #undef lgammaf
00079 #undef lgammal
00080 #undef llrint
00081 #undef llrintf
00082 #undef llrintl
00083 #undef llround
00084 #undef llroundf
00085 #undef llroundl
00086 #undef log1p
00087 #undef log1pf
00088 #undef log1pl
00089 #undef log2
00090 #undef log2f
00091 #undef log2l
00092 #undef logb
00093 #undef logbf
00094 #undef logbl
00095 #undef lrint
00096 #undef lrintf
00097 #undef lrintl
00098 #undef lround
00099 #undef lroundf
00100 #undef lroundl
00101 #undef nan
00102 #undef nanf
00103 #undef nanl
00104 #undef nearbyint
00105 #undef nearbyintf
00106 #undef nearbyintl
00107 #undef nextafter
00108 #undef nextafterf
00109 #undef nextafterl
00110 #undef nexttoward
00111 #undef nexttowardf
00112 #undef nexttowardl
00113 #undef remainder
00114 #undef remainderf
00115 #undef remainderl
00116 #undef remquo
00117 #undef remquof
00118 #undef remquol
00119 #undef rint
00120 #undef rintf
00121 #undef rintl
00122 #undef round
00123 #undef roundf
00124 #undef roundl
00125 #undef scalbln
00126 #undef scalblnf
00127 #undef scalblnl
00128 #undef scalbn
00129 #undef scalbnf
00130 #undef scalbnl
00131 #undef tgamma
00132 #undef tgammaf
00133 #undef tgammal
00134 #undef trunc
00135 #undef truncf
00136 #undef truncl
00137
00138 #endif
00139
00140 namespace std
00141 {
00142 _GLIBCXX_BEGIN_NAMESPACE_TR1
00143
00144 #if _GLIBCXX_USE_C99_MATH_TR1
00145
00146
00147 using ::double_t;
00148 using ::float_t;
00149
00150
00151 using ::acosh;
00152 using ::acoshf;
00153 using ::acoshl;
00154
00155 using ::asinh;
00156 using ::asinhf;
00157 using ::asinhl;
00158
00159 using ::atanh;
00160 using ::atanhf;
00161 using ::atanhl;
00162
00163 using ::cbrt;
00164 using ::cbrtf;
00165 using ::cbrtl;
00166
00167 using ::copysign;
00168 using ::copysignf;
00169 using ::copysignl;
00170
00171 using ::erf;
00172 using ::erff;
00173 using ::erfl;
00174
00175 using ::erfc;
00176 using ::erfcf;
00177 using ::erfcl;
00178
00179 using ::exp2;
00180 using ::exp2f;
00181 using ::exp2l;
00182
00183 using ::expm1;
00184 using ::expm1f;
00185 using ::expm1l;
00186
00187 using ::fdim;
00188 using ::fdimf;
00189 using ::fdiml;
00190
00191 using ::fma;
00192 using ::fmaf;
00193 using ::fmal;
00194
00195 using ::fmax;
00196 using ::fmaxf;
00197 using ::fmaxl;
00198
00199 using ::fmin;
00200 using ::fminf;
00201 using ::fminl;
00202
00203 using ::hypot;
00204 using ::hypotf;
00205 using ::hypotl;
00206
00207 using ::ilogb;
00208 using ::ilogbf;
00209 using ::ilogbl;
00210
00211 using ::lgamma;
00212 using ::lgammaf;
00213 using ::lgammal;
00214
00215 using ::llrint;
00216 using ::llrintf;
00217 using ::llrintl;
00218
00219 using ::llround;
00220 using ::llroundf;
00221 using ::llroundl;
00222
00223 using ::log1p;
00224 using ::log1pf;
00225 using ::log1pl;
00226
00227 using ::log2;
00228 using ::log2f;
00229 using ::log2l;
00230
00231 using ::logb;
00232 using ::logbf;
00233 using ::logbl;
00234
00235 using ::lrint;
00236 using ::lrintf;
00237 using ::lrintl;
00238
00239 using ::lround;
00240 using ::lroundf;
00241 using ::lroundl;
00242
00243 using ::nan;
00244 using ::nanf;
00245 using ::nanl;
00246
00247 using ::nearbyint;
00248 using ::nearbyintf;
00249 using ::nearbyintl;
00250
00251 using ::nextafter;
00252 using ::nextafterf;
00253 using ::nextafterl;
00254
00255 using ::nexttoward;
00256 using ::nexttowardf;
00257 using ::nexttowardl;
00258
00259 using ::remainder;
00260 using ::remainderf;
00261 using ::remainderl;
00262
00263 using ::remquo;
00264 using ::remquof;
00265 using ::remquol;
00266
00267 using ::rint;
00268 using ::rintf;
00269 using ::rintl;
00270
00271 using ::round;
00272 using ::roundf;
00273 using ::roundl;
00274
00275 using ::scalbln;
00276 using ::scalblnf;
00277 using ::scalblnl;
00278
00279 using ::scalbn;
00280 using ::scalbnf;
00281 using ::scalbnl;
00282
00283 using ::tgamma;
00284 using ::tgammaf;
00285 using ::tgammal;
00286
00287 using ::trunc;
00288 using ::truncf;
00289 using ::truncl;
00290
00291 #endif
00292
00293 #if _GLIBCXX_USE_C99_MATH
00294 #if !_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC
00295
00296
00297 using std::signbit;
00298
00299 using std::fpclassify;
00300
00301 using std::isfinite;
00302 using std::isinf;
00303 using std::isnan;
00304 using std::isnormal;
00305
00306 using std::isgreater;
00307 using std::isgreaterequal;
00308 using std::isless;
00309 using std::islessequal;
00310 using std::islessgreater;
00311 using std::isunordered;
00312 #endif
00313 #endif
00314
00315 #if _GLIBCXX_USE_C99_MATH_TR1
00316
00317
00318 using std::acos;
00319
00320 inline float
00321 acosh(float __x)
00322 { return __builtin_acoshf(__x); }
00323
00324 inline long double
00325 acosh(long double __x)
00326 { return __builtin_acoshl(__x); }
00327
00328 template<typename _Tp>
00329 inline typename __gnu_cxx::__promote<_Tp>::__type
00330 acosh(_Tp __x)
00331 {
00332 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
00333 return acosh(__type(__x));
00334 }
00335
00336 using std::asin;
00337
00338 inline float
00339 asinh(float __x)
00340 { return __builtin_asinhf(__x); }
00341
00342 inline long double
00343 asinh(long double __x)
00344 { return __builtin_asinhl(__x); }
00345
00346 template<typename _Tp>
00347 inline typename __gnu_cxx::__promote<_Tp>::__type
00348 asinh(_Tp __x)
00349 {
00350 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
00351 return asinh(__type(__x));
00352 }
00353
00354 using std::atan;
00355 using std::atan2;
00356
00357 inline float
00358 atanh(float __x)
00359 { return __builtin_atanhf(__x); }
00360
00361 inline long double
00362 atanh(long double __x)
00363 { return __builtin_atanhl(__x); }
00364
00365 template<typename _Tp>
00366 inline typename __gnu_cxx::__promote<_Tp>::__type
00367 atanh(_Tp __x)
00368 {
00369 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
00370 return atanh(__type(__x));
00371 }
00372
00373 inline float
00374 cbrt(float __x)
00375 { return __builtin_cbrtf(__x); }
00376
00377 inline long double
00378 cbrt(long double __x)
00379 { return __builtin_cbrtl(__x); }
00380
00381 template<typename _Tp>
00382 inline typename __gnu_cxx::__promote<_Tp>::__type
00383 cbrt(_Tp __x)
00384 {
00385 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
00386 return cbrt(__type(__x));
00387 }
00388
00389 using std::ceil;
00390
00391 inline float
00392 copysign(float __x, float __y)
00393 { return __builtin_copysignf(__x, __y); }
00394
00395 inline long double
00396 copysign(long double __x, long double __y)
00397 { return __builtin_copysignl(__x, __y); }
00398
00399 template<typename _Tp, typename _Up>
00400 inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
00401 copysign(_Tp __x, _Up __y)
00402 {
00403 typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
00404 return copysign(__type(__x), __type(__y));
00405 }
00406
00407 using std::cos;
00408 using std::cosh;
00409
00410 inline float
00411 erf(float __x)
00412 { return __builtin_erff(__x); }
00413
00414 inline long double
00415 erf(long double __x)
00416 { return __builtin_erfl(__x); }
00417
00418 template<typename _Tp>
00419 inline typename __gnu_cxx::__promote<_Tp>::__type
00420 erf(_Tp __x)
00421 {
00422 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
00423 return erf(__type(__x));
00424 }
00425
00426 inline float
00427 erfc(float __x)
00428 { return __builtin_erfcf(__x); }
00429
00430 inline long double
00431 erfc(long double __x)
00432 { return __builtin_erfcl(__x); }
00433
00434 template<typename _Tp>
00435 inline typename __gnu_cxx::__promote<_Tp>::__type
00436 erfc(_Tp __x)
00437 {
00438 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
00439 return erfc(__type(__x));
00440 }
00441
00442 using std::exp;
00443
00444 inline float
00445 exp2(float __x)
00446 { return __builtin_exp2f(__x); }
00447
00448 inline long double
00449 exp2(long double __x)
00450 { return __builtin_exp2l(__x); }
00451
00452 template<typename _Tp>
00453 inline typename __gnu_cxx::__promote<_Tp>::__type
00454 exp2(_Tp __x)
00455 {
00456 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
00457 return exp2(__type(__x));
00458 }
00459
00460 inline float
00461 expm1(float __x)
00462 { return __builtin_expm1f(__x); }
00463
00464 inline long double
00465 expm1(long double __x)
00466 { return __builtin_expm1l(__x); }
00467
00468 template<typename _Tp>
00469 inline typename __gnu_cxx::__promote<_Tp>::__type
00470 expm1(_Tp __x)
00471 {
00472 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
00473 return expm1(__type(__x));
00474 }
00475
00476 using std::fabs;
00477
00478 inline float
00479 fdim(float __x, float __y)
00480 { return __builtin_fdimf(__x, __y); }
00481
00482 inline long double
00483 fdim(long double __x, long double __y)
00484 { return __builtin_fdiml(__x, __y); }
00485
00486 template<typename _Tp, typename _Up>
00487 inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
00488 fdim(_Tp __x, _Up __y)
00489 {
00490 typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
00491 return fdim(__type(__x), __type(__y));
00492 }
00493
00494 using std::floor;
00495
00496 inline float
00497 fma(float __x, float __y, float __z)
00498 { return __builtin_fmaf(__x, __y, __z); }
00499
00500 inline long double
00501 fma(long double __x, long double __y, long double __z)
00502 { return __builtin_fmal(__x, __y, __z); }
00503
00504 template<typename _Tp, typename _Up, typename _Vp>
00505 inline typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type
00506 fma(_Tp __x, _Up __y, _Vp __z)
00507 {
00508 typedef typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type __type;
00509 return fma(__type(__x), __type(__y), __type(__z));
00510 }
00511
00512 inline float
00513 fmax(float __x, float __y)
00514 { return __builtin_fmaxf(__x, __y); }
00515
00516 inline long double
00517 fmax(long double __x, long double __y)
00518 { return __builtin_fmaxl(__x, __y); }
00519
00520 template<typename _Tp, typename _Up>
00521 inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
00522 fmax(_Tp __x, _Up __y)
00523 {
00524 typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
00525 return fmax(__type(__x), __type(__y));
00526 }
00527
00528 inline float
00529 fmin(float __x, float __y)
00530 { return __builtin_fminf(__x, __y); }
00531
00532 inline long double
00533 fmin(long double __x, long double __y)
00534 { return __builtin_fminl(__x, __y); }
00535
00536 template<typename _Tp, typename _Up>
00537 inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
00538 fmin(_Tp __x, _Up __y)
00539 {
00540 typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
00541 return fmin(__type(__x), __type(__y));
00542 }
00543
00544 using std::fmod;
00545 using std::frexp;
00546
00547 inline float
00548 hypot(float __x, float __y)
00549 { return __builtin_hypotf(__x, __y); }
00550
00551 inline long double
00552 hypot(long double __x, long double __y)
00553 { return __builtin_hypotl(__x, __y); }
00554
00555 template<typename _Tp, typename _Up>
00556 inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
00557 hypot(_Tp __x, _Up __y)
00558 {
00559 typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
00560 return hypot(__type(__x), __type(__y));
00561 }
00562
00563 inline int
00564 ilogb(float __x)
00565 { return __builtin_ilogbf(__x); }
00566
00567 inline int
00568 ilogb(long double __x)
00569 { return __builtin_ilogbl(__x); }
00570
00571 template<typename _Tp>
00572 inline int
00573 ilogb(_Tp __x)
00574 {
00575 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
00576 return ilogb(__type(__x));
00577 }
00578
00579 using std::ldexp;
00580
00581 inline float
00582 lgamma(float __x)
00583 { return __builtin_lgammaf(__x); }
00584
00585 inline long double
00586 lgamma(long double __x)
00587 { return __builtin_lgammal(__x); }
00588
00589 template<typename _Tp>
00590 inline typename __gnu_cxx::__promote<_Tp>::__type
00591 lgamma(_Tp __x)
00592 {
00593 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
00594 return lgamma(__type(__x));
00595 }
00596
00597 inline long long
00598 llrint(float __x)
00599 { return __builtin_llrintf(__x); }
00600
00601 inline long long
00602 llrint(long double __x)
00603 { return __builtin_llrintl(__x); }
00604
00605 template<typename _Tp>
00606 inline long long
00607 llrint(_Tp __x)
00608 {
00609 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
00610 return llrint(__type(__x));
00611 }
00612
00613 inline long long
00614 llround(float __x)
00615 { return __builtin_llroundf(__x); }
00616
00617 inline long long
00618 llround(long double __x)
00619 { return __builtin_llroundl(__x); }
00620
00621 template<typename _Tp>
00622 inline long long
00623 llround(_Tp __x)
00624 {
00625 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
00626 return llround(__type(__x));
00627 }
00628
00629 using std::log;
00630 using std::log10;
00631
00632 inline float
00633 log1p(float __x)
00634 { return __builtin_log1pf(__x); }
00635
00636 inline long double
00637 log1p(long double __x)
00638 { return __builtin_log1pl(__x); }
00639
00640 template<typename _Tp>
00641 inline typename __gnu_cxx::__promote<_Tp>::__type
00642 log1p(_Tp __x)
00643 {
00644 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
00645 return log1p(__type(__x));
00646 }
00647
00648
00649 inline float
00650 log2(float __x)
00651 { return __builtin_log2f(__x); }
00652
00653 inline long double
00654 log2(long double __x)
00655 { return __builtin_log2l(__x); }
00656
00657 template<typename _Tp>
00658 inline typename __gnu_cxx::__promote<_Tp>::__type
00659 log2(_Tp __x)
00660 {
00661 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
00662 return log2(__type(__x));
00663 }
00664
00665 inline float
00666 logb(float __x)
00667 { return __builtin_logbf(__x); }
00668
00669 inline long double
00670 logb(long double __x)
00671 { return __builtin_logbl(__x); }
00672
00673 template<typename _Tp>
00674 inline typename __gnu_cxx::__promote<_Tp>::__type
00675 logb(_Tp __x)
00676 {
00677 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
00678 return logb(__type(__x));
00679 }
00680
00681 inline long
00682 lrint(float __x)
00683 { return __builtin_lrintf(__x); }
00684
00685 inline long
00686 lrint(long double __x)
00687 { return __builtin_lrintl(__x); }
00688
00689 template<typename _Tp>
00690 inline long
00691 lrint(_Tp __x)
00692 {
00693 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
00694 return lrint(__type(__x));
00695 }
00696
00697 inline long
00698 lround(float __x)
00699 { return __builtin_lroundf(__x); }
00700
00701 inline long
00702 lround(long double __x)
00703 { return __builtin_lroundl(__x); }
00704
00705 template<typename _Tp>
00706 inline long
00707 lround(_Tp __x)
00708 {
00709 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
00710 return lround(__type(__x));
00711 }
00712
00713 inline float
00714 nearbyint(float __x)
00715 { return __builtin_nearbyintf(__x); }
00716
00717 inline long double
00718 nearbyint(long double __x)
00719 { return __builtin_nearbyintl(__x); }
00720
00721 template<typename _Tp>
00722 inline typename __gnu_cxx::__promote<_Tp>::__type
00723 nearbyint(_Tp __x)
00724 {
00725 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
00726 return nearbyint(__type(__x));
00727 }
00728
00729 inline float
00730 nextafter(float __x, float __y)
00731 { return __builtin_nextafterf(__x, __y); }
00732
00733 inline long double
00734 nextafter(long double __x, long double __y)
00735 { return __builtin_nextafterl(__x, __y); }
00736
00737 template<typename _Tp, typename _Up>
00738 inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
00739 nextafter(_Tp __x, _Up __y)
00740 {
00741 typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
00742 return nextafter(__type(__x), __type(__y));
00743 }
00744
00745 inline float
00746 nexttoward(float __x, long double __y)
00747 { return __builtin_nexttowardf(__x, __y); }
00748
00749 inline long double
00750 nexttoward(long double __x, long double __y)
00751 { return __builtin_nexttowardl(__x, __y); }
00752
00753 template<typename _Tp>
00754 inline typename __gnu_cxx::__promote<_Tp>::__type
00755 nexttoward(_Tp __x, long double __y)
00756 {
00757 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
00758 return nexttoward(__type(__x), __y);
00759 }
00760
00761
00762
00763
00764
00765 inline float
00766 remainder(float __x, float __y)
00767 { return __builtin_remainderf(__x, __y); }
00768
00769 inline long double
00770 remainder(long double __x, long double __y)
00771 { return __builtin_remainderl(__x, __y); }
00772
00773 template<typename _Tp, typename _Up>
00774 inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
00775 remainder(_Tp __x, _Up __y)
00776 {
00777 typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
00778 return remainder(__type(__x), __type(__y));
00779 }
00780
00781 inline float
00782 remquo(float __x, float __y, int* __pquo)
00783 { return __builtin_remquof(__x, __y, __pquo); }
00784
00785 inline long double
00786 remquo(long double __x, long double __y, int* __pquo)
00787 { return __builtin_remquol(__x, __y, __pquo); }
00788
00789 template<typename _Tp, typename _Up>
00790 inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
00791 remquo(_Tp __x, _Up __y, int* __pquo)
00792 {
00793 typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
00794 return remquo(__type(__x), __type(__y), __pquo);
00795 }
00796
00797 inline float
00798 rint(float __x)
00799 { return __builtin_rintf(__x); }
00800
00801 inline long double
00802 rint(long double __x)
00803 { return __builtin_rintl(__x); }
00804
00805 template<typename _Tp>
00806 inline typename __gnu_cxx::__promote<_Tp>::__type
00807 rint(_Tp __x)
00808 {
00809 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
00810 return rint(__type(__x));
00811 }
00812
00813 inline float
00814 round(float __x)
00815 { return __builtin_roundf(__x); }
00816
00817 inline long double
00818 round(long double __x)
00819 { return __builtin_roundl(__x); }
00820
00821 template<typename _Tp>
00822 inline typename __gnu_cxx::__promote<_Tp>::__type
00823 round(_Tp __x)
00824 {
00825 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
00826 return round(__type(__x));
00827 }
00828
00829 inline float
00830 scalbln(float __x, long __ex)
00831 { return __builtin_scalblnf(__x, __ex); }
00832
00833 inline long double
00834 scalbln(long double __x, long __ex)
00835 { return __builtin_scalblnl(__x, __ex); }
00836
00837 template<typename _Tp>
00838 inline typename __gnu_cxx::__promote<_Tp>::__type
00839 scalbln(_Tp __x, long __ex)
00840 {
00841 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
00842 return scalbln(__type(__x), __ex);
00843 }
00844
00845 inline float
00846 scalbn(float __x, int __ex)
00847 { return __builtin_scalbnf(__x, __ex); }
00848
00849 inline long double
00850 scalbn(long double __x, int __ex)
00851 { return __builtin_scalbnl(__x, __ex); }
00852
00853 template<typename _Tp>
00854 inline typename __gnu_cxx::__promote<_Tp>::__type
00855 scalbn(_Tp __x, int __ex)
00856 {
00857 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
00858 return scalbn(__type(__x), __ex);
00859 }
00860
00861 using std::sin;
00862 using std::sinh;
00863 using std::sqrt;
00864 using std::tan;
00865 using std::tanh;
00866
00867 inline float
00868 tgamma(float __x)
00869 { return __builtin_tgammaf(__x); }
00870
00871 inline long double
00872 tgamma(long double __x)
00873 { return __builtin_tgammal(__x); }
00874
00875 template<typename _Tp>
00876 inline typename __gnu_cxx::__promote<_Tp>::__type
00877 tgamma(_Tp __x)
00878 {
00879 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
00880 return tgamma(__type(__x));
00881 }
00882
00883 inline float
00884 trunc(float __x)
00885 { return __builtin_truncf(__x); }
00886
00887 inline long double
00888 trunc(long double __x)
00889 { return __builtin_truncl(__x); }
00890
00891 template<typename _Tp>
00892 inline typename __gnu_cxx::__promote<_Tp>::__type
00893 trunc(_Tp __x)
00894 {
00895 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
00896 return trunc(__type(__x));
00897 }
00898
00899 #endif
00900
00901 _GLIBCXX_END_NAMESPACE_TR1
00902 }