Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1054)

Side by Side Diff: gcc/libstdc++-v3/include/tr1_impl/cmath

Issue 3050029: [gcc] GCC 4.5.0=>4.5.1 (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/nacl-toolchain.git
Patch Set: Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « gcc/libstdc++-v3/include/tr1_impl/cctype ('k') | gcc/libstdc++-v3/include/tr1_impl/complex » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // TR1 cmath -*- C++ -*-
2
3 // Copyright (C) 2007, 2009 Free Software Foundation, Inc.
4 //
5 // This file is part of the GNU ISO C++ Library. This library is free
6 // software; you can redistribute it and/or modify it under the
7 // terms of the GNU General Public License as published by the
8 // Free Software Foundation; either version 3, or (at your option)
9 // any later version.
10
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
15
16 // Under Section 7 of GPL version 3, you are granted additional
17 // permissions described in the GCC Runtime Library Exception, version
18 // 3.1, as published by the Free Software Foundation.
19
20 // You should have received a copy of the GNU General Public License and
21 // a copy of the GCC Runtime Library Exception along with this program;
22 // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
23 // <http://www.gnu.org/licenses/>.
24
25 /** @file tr1_impl/cmath
26 * This is an internal header file, included by other library headers.
27 * You should not attempt to use it directly.
28 */
29
30 #if _GLIBCXX_USE_C99_MATH_TR1
31
32 #undef acosh
33 #undef acoshf
34 #undef acoshl
35 #undef asinh
36 #undef asinhf
37 #undef asinhl
38 #undef atanh
39 #undef atanhf
40 #undef atanhl
41 #undef cbrt
42 #undef cbrtf
43 #undef cbrtl
44 #undef copysign
45 #undef copysignf
46 #undef copysignl
47 #undef erf
48 #undef erff
49 #undef erfl
50 #undef erfc
51 #undef erfcf
52 #undef erfcl
53 #undef exp2
54 #undef exp2f
55 #undef exp2l
56 #undef expm1
57 #undef expm1f
58 #undef expm1l
59 #undef fdim
60 #undef fdimf
61 #undef fdiml
62 #undef fma
63 #undef fmaf
64 #undef fmal
65 #undef fmax
66 #undef fmaxf
67 #undef fmaxl
68 #undef fmin
69 #undef fminf
70 #undef fminl
71 #undef hypot
72 #undef hypotf
73 #undef hypotl
74 #undef ilogb
75 #undef ilogbf
76 #undef ilogbl
77 #undef lgamma
78 #undef lgammaf
79 #undef lgammal
80 #undef llrint
81 #undef llrintf
82 #undef llrintl
83 #undef llround
84 #undef llroundf
85 #undef llroundl
86 #undef log1p
87 #undef log1pf
88 #undef log1pl
89 #undef log2
90 #undef log2f
91 #undef log2l
92 #undef logb
93 #undef logbf
94 #undef logbl
95 #undef lrint
96 #undef lrintf
97 #undef lrintl
98 #undef lround
99 #undef lroundf
100 #undef lroundl
101 #undef nan
102 #undef nanf
103 #undef nanl
104 #undef nearbyint
105 #undef nearbyintf
106 #undef nearbyintl
107 #undef nextafter
108 #undef nextafterf
109 #undef nextafterl
110 #undef nexttoward
111 #undef nexttowardf
112 #undef nexttowardl
113 #undef remainder
114 #undef remainderf
115 #undef remainderl
116 #undef remquo
117 #undef remquof
118 #undef remquol
119 #undef rint
120 #undef rintf
121 #undef rintl
122 #undef round
123 #undef roundf
124 #undef roundl
125 #undef scalbln
126 #undef scalblnf
127 #undef scalblnl
128 #undef scalbn
129 #undef scalbnf
130 #undef scalbnl
131 #undef tgamma
132 #undef tgammaf
133 #undef tgammal
134 #undef trunc
135 #undef truncf
136 #undef truncl
137
138 #endif
139
140 namespace std
141 {
142 _GLIBCXX_BEGIN_NAMESPACE_TR1
143
144 #if _GLIBCXX_USE_C99_MATH_TR1
145
146 // types
147 using ::double_t;
148 using ::float_t;
149
150 // functions
151 using ::acosh;
152 using ::acoshf;
153 using ::acoshl;
154
155 using ::asinh;
156 using ::asinhf;
157 using ::asinhl;
158
159 using ::atanh;
160 using ::atanhf;
161 using ::atanhl;
162
163 using ::cbrt;
164 using ::cbrtf;
165 using ::cbrtl;
166
167 using ::copysign;
168 using ::copysignf;
169 using ::copysignl;
170
171 using ::erf;
172 using ::erff;
173 using ::erfl;
174
175 using ::erfc;
176 using ::erfcf;
177 using ::erfcl;
178
179 using ::exp2;
180 using ::exp2f;
181 using ::exp2l;
182
183 using ::expm1;
184 using ::expm1f;
185 using ::expm1l;
186
187 using ::fdim;
188 using ::fdimf;
189 using ::fdiml;
190
191 using ::fma;
192 using ::fmaf;
193 using ::fmal;
194
195 using ::fmax;
196 using ::fmaxf;
197 using ::fmaxl;
198
199 using ::fmin;
200 using ::fminf;
201 using ::fminl;
202
203 using ::hypot;
204 using ::hypotf;
205 using ::hypotl;
206
207 using ::ilogb;
208 using ::ilogbf;
209 using ::ilogbl;
210
211 using ::lgamma;
212 using ::lgammaf;
213 using ::lgammal;
214
215 using ::llrint;
216 using ::llrintf;
217 using ::llrintl;
218
219 using ::llround;
220 using ::llroundf;
221 using ::llroundl;
222
223 using ::log1p;
224 using ::log1pf;
225 using ::log1pl;
226
227 using ::log2;
228 using ::log2f;
229 using ::log2l;
230
231 using ::logb;
232 using ::logbf;
233 using ::logbl;
234
235 using ::lrint;
236 using ::lrintf;
237 using ::lrintl;
238
239 using ::lround;
240 using ::lroundf;
241 using ::lroundl;
242
243 using ::nan;
244 using ::nanf;
245 using ::nanl;
246
247 using ::nearbyint;
248 using ::nearbyintf;
249 using ::nearbyintl;
250
251 using ::nextafter;
252 using ::nextafterf;
253 using ::nextafterl;
254
255 using ::nexttoward;
256 using ::nexttowardf;
257 using ::nexttowardl;
258
259 using ::remainder;
260 using ::remainderf;
261 using ::remainderl;
262
263 using ::remquo;
264 using ::remquof;
265 using ::remquol;
266
267 using ::rint;
268 using ::rintf;
269 using ::rintl;
270
271 using ::round;
272 using ::roundf;
273 using ::roundl;
274
275 using ::scalbln;
276 using ::scalblnf;
277 using ::scalblnl;
278
279 using ::scalbn;
280 using ::scalbnf;
281 using ::scalbnl;
282
283 using ::tgamma;
284 using ::tgammaf;
285 using ::tgammal;
286
287 using ::trunc;
288 using ::truncf;
289 using ::truncl;
290
291 #endif
292
293 #if _GLIBCXX_USE_C99_MATH
294 #if !_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC
295
296 /// Function template definitions [8.16.3].
297 using std::signbit;
298
299 using std::fpclassify;
300
301 using std::isfinite;
302 using std::isinf;
303 using std::isnan;
304 using std::isnormal;
305
306 using std::isgreater;
307 using std::isgreaterequal;
308 using std::isless;
309 using std::islessequal;
310 using std::islessgreater;
311 using std::isunordered;
312 #endif
313 #endif
314
315 #if _GLIBCXX_USE_C99_MATH_TR1
316
317 /// Additional overloads [8.16.4].
318 using std::acos;
319
320 inline float
321 acosh(float __x)
322 { return __builtin_acoshf(__x); }
323
324 inline long double
325 acosh(long double __x)
326 { return __builtin_acoshl(__x); }
327
328 template<typename _Tp>
329 inline typename __gnu_cxx::__promote<_Tp>::__type
330 acosh(_Tp __x)
331 {
332 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
333 return acosh(__type(__x));
334 }
335
336 using std::asin;
337
338 inline float
339 asinh(float __x)
340 { return __builtin_asinhf(__x); }
341
342 inline long double
343 asinh(long double __x)
344 { return __builtin_asinhl(__x); }
345
346 template<typename _Tp>
347 inline typename __gnu_cxx::__promote<_Tp>::__type
348 asinh(_Tp __x)
349 {
350 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
351 return asinh(__type(__x));
352 }
353
354 using std::atan;
355 using std::atan2;
356
357 inline float
358 atanh(float __x)
359 { return __builtin_atanhf(__x); }
360
361 inline long double
362 atanh(long double __x)
363 { return __builtin_atanhl(__x); }
364
365 template<typename _Tp>
366 inline typename __gnu_cxx::__promote<_Tp>::__type
367 atanh(_Tp __x)
368 {
369 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
370 return atanh(__type(__x));
371 }
372
373 inline float
374 cbrt(float __x)
375 { return __builtin_cbrtf(__x); }
376
377 inline long double
378 cbrt(long double __x)
379 { return __builtin_cbrtl(__x); }
380
381 template<typename _Tp>
382 inline typename __gnu_cxx::__promote<_Tp>::__type
383 cbrt(_Tp __x)
384 {
385 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
386 return cbrt(__type(__x));
387 }
388
389 using std::ceil;
390
391 inline float
392 copysign(float __x, float __y)
393 { return __builtin_copysignf(__x, __y); }
394
395 inline long double
396 copysign(long double __x, long double __y)
397 { return __builtin_copysignl(__x, __y); }
398
399 template<typename _Tp, typename _Up>
400 inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
401 copysign(_Tp __x, _Up __y)
402 {
403 typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
404 return copysign(__type(__x), __type(__y));
405 }
406
407 using std::cos;
408 using std::cosh;
409
410 inline float
411 erf(float __x)
412 { return __builtin_erff(__x); }
413
414 inline long double
415 erf(long double __x)
416 { return __builtin_erfl(__x); }
417
418 template<typename _Tp>
419 inline typename __gnu_cxx::__promote<_Tp>::__type
420 erf(_Tp __x)
421 {
422 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
423 return erf(__type(__x));
424 }
425
426 inline float
427 erfc(float __x)
428 { return __builtin_erfcf(__x); }
429
430 inline long double
431 erfc(long double __x)
432 { return __builtin_erfcl(__x); }
433
434 template<typename _Tp>
435 inline typename __gnu_cxx::__promote<_Tp>::__type
436 erfc(_Tp __x)
437 {
438 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
439 return erfc(__type(__x));
440 }
441
442 using std::exp;
443
444 inline float
445 exp2(float __x)
446 { return __builtin_exp2f(__x); }
447
448 inline long double
449 exp2(long double __x)
450 { return __builtin_exp2l(__x); }
451
452 template<typename _Tp>
453 inline typename __gnu_cxx::__promote<_Tp>::__type
454 exp2(_Tp __x)
455 {
456 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
457 return exp2(__type(__x));
458 }
459
460 inline float
461 expm1(float __x)
462 { return __builtin_expm1f(__x); }
463
464 inline long double
465 expm1(long double __x)
466 { return __builtin_expm1l(__x); }
467
468 template<typename _Tp>
469 inline typename __gnu_cxx::__promote<_Tp>::__type
470 expm1(_Tp __x)
471 {
472 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
473 return expm1(__type(__x));
474 }
475
476 using std::fabs;
477
478 inline float
479 fdim(float __x, float __y)
480 { return __builtin_fdimf(__x, __y); }
481
482 inline long double
483 fdim(long double __x, long double __y)
484 { return __builtin_fdiml(__x, __y); }
485
486 template<typename _Tp, typename _Up>
487 inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
488 fdim(_Tp __x, _Up __y)
489 {
490 typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
491 return fdim(__type(__x), __type(__y));
492 }
493
494 using std::floor;
495
496 inline float
497 fma(float __x, float __y, float __z)
498 { return __builtin_fmaf(__x, __y, __z); }
499
500 inline long double
501 fma(long double __x, long double __y, long double __z)
502 { return __builtin_fmal(__x, __y, __z); }
503
504 template<typename _Tp, typename _Up, typename _Vp>
505 inline typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type
506 fma(_Tp __x, _Up __y, _Vp __z)
507 {
508 typedef typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type __type;
509 return fma(__type(__x), __type(__y), __type(__z));
510 }
511
512 inline float
513 fmax(float __x, float __y)
514 { return __builtin_fmaxf(__x, __y); }
515
516 inline long double
517 fmax(long double __x, long double __y)
518 { return __builtin_fmaxl(__x, __y); }
519
520 template<typename _Tp, typename _Up>
521 inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
522 fmax(_Tp __x, _Up __y)
523 {
524 typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
525 return fmax(__type(__x), __type(__y));
526 }
527
528 inline float
529 fmin(float __x, float __y)
530 { return __builtin_fminf(__x, __y); }
531
532 inline long double
533 fmin(long double __x, long double __y)
534 { return __builtin_fminl(__x, __y); }
535
536 template<typename _Tp, typename _Up>
537 inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
538 fmin(_Tp __x, _Up __y)
539 {
540 typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
541 return fmin(__type(__x), __type(__y));
542 }
543
544 using std::fmod;
545 using std::frexp;
546
547 inline float
548 hypot(float __x, float __y)
549 { return __builtin_hypotf(__x, __y); }
550
551 inline long double
552 hypot(long double __x, long double __y)
553 { return __builtin_hypotl(__x, __y); }
554
555 template<typename _Tp, typename _Up>
556 inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
557 hypot(_Tp __x, _Up __y)
558 {
559 typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
560 return hypot(__type(__x), __type(__y));
561 }
562
563 inline int
564 ilogb(float __x)
565 { return __builtin_ilogbf(__x); }
566
567 inline int
568 ilogb(long double __x)
569 { return __builtin_ilogbl(__x); }
570
571 template<typename _Tp>
572 inline int
573 ilogb(_Tp __x)
574 {
575 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
576 return ilogb(__type(__x));
577 }
578
579 using std::ldexp;
580
581 inline float
582 lgamma(float __x)
583 { return __builtin_lgammaf(__x); }
584
585 inline long double
586 lgamma(long double __x)
587 { return __builtin_lgammal(__x); }
588
589 template<typename _Tp>
590 inline typename __gnu_cxx::__promote<_Tp>::__type
591 lgamma(_Tp __x)
592 {
593 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
594 return lgamma(__type(__x));
595 }
596
597 inline long long
598 llrint(float __x)
599 { return __builtin_llrintf(__x); }
600
601 inline long long
602 llrint(long double __x)
603 { return __builtin_llrintl(__x); }
604
605 template<typename _Tp>
606 inline long long
607 llrint(_Tp __x)
608 {
609 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
610 return llrint(__type(__x));
611 }
612
613 inline long long
614 llround(float __x)
615 { return __builtin_llroundf(__x); }
616
617 inline long long
618 llround(long double __x)
619 { return __builtin_llroundl(__x); }
620
621 template<typename _Tp>
622 inline long long
623 llround(_Tp __x)
624 {
625 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
626 return llround(__type(__x));
627 }
628
629 using std::log;
630 using std::log10;
631
632 inline float
633 log1p(float __x)
634 { return __builtin_log1pf(__x); }
635
636 inline long double
637 log1p(long double __x)
638 { return __builtin_log1pl(__x); }
639
640 template<typename _Tp>
641 inline typename __gnu_cxx::__promote<_Tp>::__type
642 log1p(_Tp __x)
643 {
644 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
645 return log1p(__type(__x));
646 }
647
648 // DR 568.
649 inline float
650 log2(float __x)
651 { return __builtin_log2f(__x); }
652
653 inline long double
654 log2(long double __x)
655 { return __builtin_log2l(__x); }
656
657 template<typename _Tp>
658 inline typename __gnu_cxx::__promote<_Tp>::__type
659 log2(_Tp __x)
660 {
661 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
662 return log2(__type(__x));
663 }
664
665 inline float
666 logb(float __x)
667 { return __builtin_logbf(__x); }
668
669 inline long double
670 logb(long double __x)
671 { return __builtin_logbl(__x); }
672
673 template<typename _Tp>
674 inline typename __gnu_cxx::__promote<_Tp>::__type
675 logb(_Tp __x)
676 {
677 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
678 return logb(__type(__x));
679 }
680
681 inline long
682 lrint(float __x)
683 { return __builtin_lrintf(__x); }
684
685 inline long
686 lrint(long double __x)
687 { return __builtin_lrintl(__x); }
688
689 template<typename _Tp>
690 inline long
691 lrint(_Tp __x)
692 {
693 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
694 return lrint(__type(__x));
695 }
696
697 inline long
698 lround(float __x)
699 { return __builtin_lroundf(__x); }
700
701 inline long
702 lround(long double __x)
703 { return __builtin_lroundl(__x); }
704
705 template<typename _Tp>
706 inline long
707 lround(_Tp __x)
708 {
709 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
710 return lround(__type(__x));
711 }
712
713 inline float
714 nearbyint(float __x)
715 { return __builtin_nearbyintf(__x); }
716
717 inline long double
718 nearbyint(long double __x)
719 { return __builtin_nearbyintl(__x); }
720
721 template<typename _Tp>
722 inline typename __gnu_cxx::__promote<_Tp>::__type
723 nearbyint(_Tp __x)
724 {
725 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
726 return nearbyint(__type(__x));
727 }
728
729 inline float
730 nextafter(float __x, float __y)
731 { return __builtin_nextafterf(__x, __y); }
732
733 inline long double
734 nextafter(long double __x, long double __y)
735 { return __builtin_nextafterl(__x, __y); }
736
737 template<typename _Tp, typename _Up>
738 inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
739 nextafter(_Tp __x, _Up __y)
740 {
741 typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
742 return nextafter(__type(__x), __type(__y));
743 }
744
745 inline float
746 nexttoward(float __x, long double __y)
747 { return __builtin_nexttowardf(__x, __y); }
748
749 inline long double
750 nexttoward(long double __x, long double __y)
751 { return __builtin_nexttowardl(__x, __y); }
752
753 template<typename _Tp>
754 inline typename __gnu_cxx::__promote<_Tp>::__type
755 nexttoward(_Tp __x, long double __y)
756 {
757 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
758 return nexttoward(__type(__x), __y);
759 }
760
761 // DR 550. What should the return type of pow(float,int) be?
762 // NB: C++0x and TR1 != C++03.
763 // using std::pow;
764
765 inline float
766 remainder(float __x, float __y)
767 { return __builtin_remainderf(__x, __y); }
768
769 inline long double
770 remainder(long double __x, long double __y)
771 { return __builtin_remainderl(__x, __y); }
772
773 template<typename _Tp, typename _Up>
774 inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
775 remainder(_Tp __x, _Up __y)
776 {
777 typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
778 return remainder(__type(__x), __type(__y));
779 }
780
781 inline float
782 remquo(float __x, float __y, int* __pquo)
783 { return __builtin_remquof(__x, __y, __pquo); }
784
785 inline long double
786 remquo(long double __x, long double __y, int* __pquo)
787 { return __builtin_remquol(__x, __y, __pquo); }
788
789 template<typename _Tp, typename _Up>
790 inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
791 remquo(_Tp __x, _Up __y, int* __pquo)
792 {
793 typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
794 return remquo(__type(__x), __type(__y), __pquo);
795 }
796
797 inline float
798 rint(float __x)
799 { return __builtin_rintf(__x); }
800
801 inline long double
802 rint(long double __x)
803 { return __builtin_rintl(__x); }
804
805 template<typename _Tp>
806 inline typename __gnu_cxx::__promote<_Tp>::__type
807 rint(_Tp __x)
808 {
809 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
810 return rint(__type(__x));
811 }
812
813 inline float
814 round(float __x)
815 { return __builtin_roundf(__x); }
816
817 inline long double
818 round(long double __x)
819 { return __builtin_roundl(__x); }
820
821 template<typename _Tp>
822 inline typename __gnu_cxx::__promote<_Tp>::__type
823 round(_Tp __x)
824 {
825 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
826 return round(__type(__x));
827 }
828
829 inline float
830 scalbln(float __x, long __ex)
831 { return __builtin_scalblnf(__x, __ex); }
832
833 inline long double
834 scalbln(long double __x, long __ex)
835 { return __builtin_scalblnl(__x, __ex); }
836
837 template<typename _Tp>
838 inline typename __gnu_cxx::__promote<_Tp>::__type
839 scalbln(_Tp __x, long __ex)
840 {
841 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
842 return scalbln(__type(__x), __ex);
843 }
844
845 inline float
846 scalbn(float __x, int __ex)
847 { return __builtin_scalbnf(__x, __ex); }
848
849 inline long double
850 scalbn(long double __x, int __ex)
851 { return __builtin_scalbnl(__x, __ex); }
852
853 template<typename _Tp>
854 inline typename __gnu_cxx::__promote<_Tp>::__type
855 scalbn(_Tp __x, int __ex)
856 {
857 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
858 return scalbn(__type(__x), __ex);
859 }
860
861 using std::sin;
862 using std::sinh;
863 using std::sqrt;
864 using std::tan;
865 using std::tanh;
866
867 inline float
868 tgamma(float __x)
869 { return __builtin_tgammaf(__x); }
870
871 inline long double
872 tgamma(long double __x)
873 { return __builtin_tgammal(__x); }
874
875 template<typename _Tp>
876 inline typename __gnu_cxx::__promote<_Tp>::__type
877 tgamma(_Tp __x)
878 {
879 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
880 return tgamma(__type(__x));
881 }
882
883 inline float
884 trunc(float __x)
885 { return __builtin_truncf(__x); }
886
887 inline long double
888 trunc(long double __x)
889 { return __builtin_truncl(__x); }
890
891 template<typename _Tp>
892 inline typename __gnu_cxx::__promote<_Tp>::__type
893 trunc(_Tp __x)
894 {
895 typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
896 return trunc(__type(__x));
897 }
898
899 #endif
900
901 _GLIBCXX_END_NAMESPACE_TR1
902 }
OLDNEW
« no previous file with comments | « gcc/libstdc++-v3/include/tr1_impl/cctype ('k') | gcc/libstdc++-v3/include/tr1_impl/complex » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698