• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/toolchains/hndtools-arm-linux-2.6.36-uclibc-4.5.3/arm-linux/include/c++/4.5.3/tr1_impl/
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
140namespace 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}
903