OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-stable/] [gcc-4.5.1/] [libstdc++-v3/] [include/] [tr1_impl/] [cmath] - Blame information for rev 826

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 424 jeremybenn
// 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
// .
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.