libstdc++
tr1_impl/cmath
Go to the documentation of this file.
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
152  using ::acoshf;
153  using ::acoshl;
154 
156  using ::asinhf;
157  using ::asinhl;
158 
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 }
complex< _Tp > log(const complex< _Tp > &)
Return complex natural logarithm of z.
Definition: complex:782
complex< _Tp > cos(const complex< _Tp > &)
Return complex cosine of z.
Definition: complex:699
complex< _Tp > sqrt(const complex< _Tp > &)
Return complex square root of z.
Definition: complex:891
complex< _Tp > log10(const complex< _Tp > &)
Return complex base 10 logarithm of z.
Definition: complex:787
complex< _Tp > tan(const complex< _Tp > &)
Return complex tangent of z.
Definition: complex:918
complex< _Tp > sinh(const complex< _Tp > &)
Return complex hyperbolic sine of z.
Definition: complex:847
complex< _Tp > cosh(const complex< _Tp > &)
Return complex hyperbolic cosine of z.
Definition: complex:729
complex< _Tp > sin(const complex< _Tp > &)
Return complex sine of z.
Definition: complex:817
std::complex< _Tp > asinh(const std::complex< _Tp > &)
asinh(__z) [8.1.6].
complex< _Tp > tanh(const complex< _Tp > &)
Return complex hyperbolic tangent of z.
Definition: complex:946
std::complex< _Tp > atanh(const std::complex< _Tp > &)
atanh(__z) [8.1.7].
_Tp fabs(const std::complex< _Tp > &)
fabs(__z) [8.1.8].
complex< _Tp > exp(const complex< _Tp > &)
Return complex base e exponential of z.
Definition: complex:755
std::complex< _Tp > acosh(const std::complex< _Tp > &)
acosh(__z) [8.1.5].