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

Subversion Repositories altor32

[/] [altor32/] [trunk/] [gcc-x64/] [or1knd-elf/] [or1knd-elf/] [include/] [c++/] [4.8.0/] [tr1/] [cmath] - Blame information for rev 35

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 35 ultra_embe
// TR1 cmath -*- C++ -*-
2
 
3
// Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012
4
// Free Software Foundation, Inc.
5
//
6
// This file is part of the GNU ISO C++ Library.  This library is free
7
// software; you can redistribute it and/or modify it under the
8
// terms of the GNU General Public License as published by the
9
// Free Software Foundation; either version 3, or (at your option)
10
// any later version.
11
 
12
// This library is distributed in the hope that it will be useful,
13
// but WITHOUT ANY WARRANTY; without even the implied warranty of
14
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
// GNU General Public License for more details.
16
 
17
// Under Section 7 of GPL version 3, you are granted additional
18
// permissions described in the GCC Runtime Library Exception, version
19
// 3.1, as published by the Free Software Foundation.
20
 
21
// You should have received a copy of the GNU General Public License and
22
// a copy of the GCC Runtime Library Exception along with this program;
23
// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
24
// .
25
 
26
/** @file tr1/cmath
27
 *  This is a TR1 C++ Library header.
28
 */
29
 
30
#ifndef _GLIBCXX_TR1_CMATH
31
#define _GLIBCXX_TR1_CMATH 1
32
 
33
#pragma GCC system_header
34
 
35
#include 
36
 
37
#ifdef _GLIBCXX_USE_C99_MATH_TR1
38
 
39
#undef acosh
40
#undef acoshf
41
#undef acoshl
42
#undef asinh
43
#undef asinhf
44
#undef asinhl
45
#undef atanh
46
#undef atanhf
47
#undef atanhl
48
#undef cbrt
49
#undef cbrtf
50
#undef cbrtl
51
#undef copysign
52
#undef copysignf
53
#undef copysignl
54
#undef erf
55
#undef erff
56
#undef erfl
57
#undef erfc
58
#undef erfcf
59
#undef erfcl
60
#undef exp2
61
#undef exp2f
62
#undef exp2l
63
#undef expm1
64
#undef expm1f
65
#undef expm1l
66
#undef fdim
67
#undef fdimf
68
#undef fdiml
69
#undef fma
70
#undef fmaf
71
#undef fmal
72
#undef fmax
73
#undef fmaxf
74
#undef fmaxl
75
#undef fmin
76
#undef fminf
77
#undef fminl
78
#undef hypot
79
#undef hypotf
80
#undef hypotl
81
#undef ilogb
82
#undef ilogbf
83
#undef ilogbl
84
#undef lgamma
85
#undef lgammaf
86
#undef lgammal
87
#undef llrint
88
#undef llrintf
89
#undef llrintl
90
#undef llround
91
#undef llroundf
92
#undef llroundl
93
#undef log1p
94
#undef log1pf
95
#undef log1pl
96
#undef log2
97
#undef log2f
98
#undef log2l
99
#undef logb
100
#undef logbf
101
#undef logbl
102
#undef lrint
103
#undef lrintf
104
#undef lrintl
105
#undef lround
106
#undef lroundf
107
#undef lroundl
108
#undef nan
109
#undef nanf
110
#undef nanl
111
#undef nearbyint
112
#undef nearbyintf
113
#undef nearbyintl
114
#undef nextafter
115
#undef nextafterf
116
#undef nextafterl
117
#undef nexttoward
118
#undef nexttowardf
119
#undef nexttowardl
120
#undef remainder
121
#undef remainderf
122
#undef remainderl
123
#undef remquo
124
#undef remquof
125
#undef remquol
126
#undef rint
127
#undef rintf
128
#undef rintl
129
#undef round
130
#undef roundf
131
#undef roundl
132
#undef scalbln
133
#undef scalblnf
134
#undef scalblnl
135
#undef scalbn
136
#undef scalbnf
137
#undef scalbnl
138
#undef tgamma
139
#undef tgammaf
140
#undef tgammal
141
#undef trunc
142
#undef truncf
143
#undef truncl
144
 
145
#endif
146
 
147
namespace std _GLIBCXX_VISIBILITY(default)
148
{
149
namespace tr1
150
{
151
_GLIBCXX_BEGIN_NAMESPACE_VERSION
152
 
153
#if _GLIBCXX_USE_C99_MATH_TR1
154
 
155
  // types
156
  using ::double_t;
157
  using ::float_t;
158
 
159
  // functions
160
  using ::acosh;
161
  using ::acoshf;
162
  using ::acoshl;
163
 
164
  using ::asinh;
165
  using ::asinhf;
166
  using ::asinhl;
167
 
168
  using ::atanh;
169
  using ::atanhf;
170
  using ::atanhl;
171
 
172
  using ::cbrt;
173
  using ::cbrtf;
174
  using ::cbrtl;
175
 
176
  using ::copysign;
177
  using ::copysignf;
178
  using ::copysignl;
179
 
180
  using ::erf;
181
  using ::erff;
182
  using ::erfl;
183
 
184
  using ::erfc;
185
  using ::erfcf;
186
  using ::erfcl;
187
 
188
  using ::exp2;
189
  using ::exp2f;
190
  using ::exp2l;
191
 
192
  using ::expm1;
193
  using ::expm1f;
194
  using ::expm1l;
195
 
196
  using ::fdim;
197
  using ::fdimf;
198
  using ::fdiml;
199
 
200
  using ::fma;
201
  using ::fmaf;
202
  using ::fmal;
203
 
204
  using ::fmax;
205
  using ::fmaxf;
206
  using ::fmaxl;
207
 
208
  using ::fmin;
209
  using ::fminf;
210
  using ::fminl;
211
 
212
  using ::hypot;
213
  using ::hypotf;
214
  using ::hypotl;
215
 
216
  using ::ilogb;
217
  using ::ilogbf;
218
  using ::ilogbl;
219
 
220
  using ::lgamma;
221
  using ::lgammaf;
222
  using ::lgammal;
223
 
224
  using ::llrint;
225
  using ::llrintf;
226
  using ::llrintl;
227
 
228
  using ::llround;
229
  using ::llroundf;
230
  using ::llroundl;
231
 
232
  using ::log1p;
233
  using ::log1pf;
234
  using ::log1pl;
235
 
236
  using ::log2;
237
  using ::log2f;
238
  using ::log2l;
239
 
240
  using ::logb;
241
  using ::logbf;
242
  using ::logbl;
243
 
244
  using ::lrint;
245
  using ::lrintf;
246
  using ::lrintl;
247
 
248
  using ::lround;
249
  using ::lroundf;
250
  using ::lroundl;
251
 
252
  using ::nan;
253
  using ::nanf;
254
  using ::nanl;
255
 
256
  using ::nearbyint;
257
  using ::nearbyintf;
258
  using ::nearbyintl;
259
 
260
  using ::nextafter;
261
  using ::nextafterf;
262
  using ::nextafterl;
263
 
264
  using ::nexttoward;
265
  using ::nexttowardf;
266
  using ::nexttowardl;
267
 
268
  using ::remainder;
269
  using ::remainderf;
270
  using ::remainderl;
271
 
272
  using ::remquo;
273
  using ::remquof;
274
  using ::remquol;
275
 
276
  using ::rint;
277
  using ::rintf;
278
  using ::rintl;
279
 
280
  using ::round;
281
  using ::roundf;
282
  using ::roundl;
283
 
284
  using ::scalbln;
285
  using ::scalblnf;
286
  using ::scalblnl;
287
 
288
  using ::scalbn;
289
  using ::scalbnf;
290
  using ::scalbnl;
291
 
292
  using ::tgamma;
293
  using ::tgammaf;
294
  using ::tgammal;
295
 
296
  using ::trunc;
297
  using ::truncf;
298
  using ::truncl;
299
 
300
#endif
301
 
302
#if _GLIBCXX_USE_C99_MATH
303
#if !_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC
304
 
305
  /// Function template definitions [8.16.3].
306
  template
307
    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
308
                                           int>::__type
309
    fpclassify(_Tp __f)
310
    {
311
      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
312
      return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL,
313
                                  FP_SUBNORMAL, FP_ZERO, __type(__f));
314
    }
315
 
316
  template
317
    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
318
                                           int>::__type
319
    isfinite(_Tp __f)
320
    {
321
      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
322
      return __builtin_isfinite(__type(__f));
323
    }
324
 
325
  template
326
    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
327
                                           int>::__type
328
    isinf(_Tp __f)
329
    {
330
      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
331
      return __builtin_isinf(__type(__f));
332
    }
333
 
334
  template
335
    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
336
                                           int>::__type
337
    isnan(_Tp __f)
338
    {
339
      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
340
      return __builtin_isnan(__type(__f));
341
    }
342
 
343
  template
344
    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
345
                                           int>::__type
346
    isnormal(_Tp __f)
347
    {
348
      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
349
      return __builtin_isnormal(__type(__f));
350
    }
351
 
352
  template
353
    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
354
                                           int>::__type
355
    signbit(_Tp __f)
356
    {
357
      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
358
      return __builtin_signbit(__type(__f));
359
    }
360
 
361
  template
362
    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
363
                                           int>::__type
364
    isgreater(_Tp __f1, _Tp __f2)
365
    {
366
      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
367
      return __builtin_isgreater(__type(__f1), __type(__f2));
368
    }
369
 
370
  template
371
    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
372
                                           int>::__type
373
    isgreaterequal(_Tp __f1, _Tp __f2)
374
    {
375
      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
376
      return __builtin_isgreaterequal(__type(__f1), __type(__f2));
377
    }
378
 
379
  template
380
    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
381
                                           int>::__type
382
    isless(_Tp __f1, _Tp __f2)
383
    {
384
      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
385
      return __builtin_isless(__type(__f1), __type(__f2));
386
    }
387
 
388
  template
389
    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
390
                                           int>::__type
391
    islessequal(_Tp __f1, _Tp __f2)
392
    {
393
      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
394
      return __builtin_islessequal(__type(__f1), __type(__f2));
395
    }
396
 
397
  template
398
    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
399
                                           int>::__type
400
    islessgreater(_Tp __f1, _Tp __f2)
401
    {
402
      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
403
      return __builtin_islessgreater(__type(__f1), __type(__f2));
404
    }
405
 
406
  template
407
    inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value,
408
                                           int>::__type
409
    isunordered(_Tp __f1, _Tp __f2)
410
    {
411
      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
412
      return __builtin_isunordered(__type(__f1), __type(__f2));
413
    }
414
 
415
#endif
416
#endif
417
 
418
#if _GLIBCXX_USE_C99_MATH_TR1
419
 
420
  /// Additional overloads [8.16.4].
421
  using std::acos;
422
 
423
  inline float
424
  acosh(float __x)
425
  { return __builtin_acoshf(__x); }
426
 
427
  inline long double
428
  acosh(long double __x)
429
  { return __builtin_acoshl(__x); }
430
 
431
  template
432
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
433
                                           double>::__type
434
    acosh(_Tp __x)
435
    { return __builtin_acosh(__x); }
436
 
437
  using std::asin;
438
 
439
  inline float
440
  asinh(float __x)
441
  { return __builtin_asinhf(__x); }
442
 
443
  inline long double
444
  asinh(long double __x)
445
  { return __builtin_asinhl(__x); }
446
 
447
  template
448
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
449
                                           double>::__type
450
    asinh(_Tp __x)
451
    { return __builtin_asinh(__x); }
452
 
453
  using std::atan;
454
  using std::atan2;
455
 
456
  inline float
457
  atanh(float __x)
458
  { return __builtin_atanhf(__x); }
459
 
460
  inline long double
461
  atanh(long double __x)
462
  { return __builtin_atanhl(__x); }
463
 
464
  template
465
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
466
                                           double>::__type
467
    atanh(_Tp __x)
468
    { return __builtin_atanh(__x); }
469
 
470
  inline float
471
  cbrt(float __x)
472
  { return __builtin_cbrtf(__x); }
473
 
474
  inline long double
475
  cbrt(long double __x)
476
  { return __builtin_cbrtl(__x); }
477
 
478
  template
479
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
480
                                           double>::__type
481
    cbrt(_Tp __x)
482
    { return __builtin_cbrt(__x); }
483
 
484
  using std::ceil;
485
 
486
  inline float
487
  copysign(float __x, float __y)
488
  { return __builtin_copysignf(__x, __y); }
489
 
490
  inline long double
491
  copysign(long double __x, long double __y)
492
  { return __builtin_copysignl(__x, __y); }
493
 
494
  template
495
    inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
496
    copysign(_Tp __x, _Up __y)
497
    {
498
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
499
      return copysign(__type(__x), __type(__y));
500
    }
501
 
502
  using std::cos;
503
  using std::cosh;
504
 
505
  inline float
506
  erf(float __x)
507
  { return __builtin_erff(__x); }
508
 
509
  inline long double
510
  erf(long double __x)
511
  { return __builtin_erfl(__x); }
512
 
513
  template
514
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
515
                                           double>::__type
516
    erf(_Tp __x)
517
    { return __builtin_erf(__x); }
518
 
519
  inline float
520
  erfc(float __x)
521
  { return __builtin_erfcf(__x); }
522
 
523
  inline long double
524
  erfc(long double __x)
525
  { return __builtin_erfcl(__x); }
526
 
527
  template
528
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
529
                                           double>::__type
530
    erfc(_Tp __x)
531
    { return __builtin_erfc(__x); }
532
 
533
  using std::exp;
534
 
535
  inline float
536
  exp2(float __x)
537
  { return __builtin_exp2f(__x); }
538
 
539
  inline long double
540
  exp2(long double __x)
541
  { return __builtin_exp2l(__x); }
542
 
543
  template
544
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
545
                                           double>::__type
546
    exp2(_Tp __x)
547
    { return __builtin_exp2(__x); }
548
 
549
  inline float
550
  expm1(float __x)
551
  { return __builtin_expm1f(__x); }
552
 
553
  inline long double
554
  expm1(long double __x)
555
  { return __builtin_expm1l(__x); }
556
 
557
  template
558
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
559
                                           double>::__type
560
    expm1(_Tp __x)
561
    { return __builtin_expm1(__x); }
562
 
563
  // Note: we deal with fabs in a special way, because an using std::fabs
564
  // would bring in also the overloads for complex types, which in C++0x
565
  // mode have a different return type.
566
  // With __CORRECT_ISO_CPP_MATH_H_PROTO, math.h imports std::fabs in the
567
  // global namespace after the declarations of the float / double / long
568
  // double overloads but before the std::complex overloads.
569
  using ::fabs;
570
 
571
#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO
572
  inline float
573
  fabs(float __x)
574
  { return __builtin_fabsf(__x); }
575
 
576
  inline long double
577
  fabs(long double __x)
578
  { return __builtin_fabsl(__x); }
579
 
580
  template
581
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
582
                                           double>::__type
583
    fabs(_Tp __x)
584
    { return __builtin_fabs(__x); }
585
#endif
586
 
587
  inline float
588
  fdim(float __x, float __y)
589
  { return __builtin_fdimf(__x, __y); }
590
 
591
  inline long double
592
  fdim(long double __x, long double __y)
593
  { return __builtin_fdiml(__x, __y); }
594
 
595
  template
596
    inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
597
    fdim(_Tp __x, _Up __y)
598
    {
599
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
600
      return fdim(__type(__x), __type(__y));
601
    }
602
 
603
  using std::floor;
604
 
605
  inline float
606
  fma(float __x, float __y, float __z)
607
  { return __builtin_fmaf(__x, __y, __z); }
608
 
609
  inline long double
610
  fma(long double __x, long double __y, long double __z)
611
  { return __builtin_fmal(__x, __y, __z); }
612
 
613
  template
614
    inline typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type
615
    fma(_Tp __x, _Up __y, _Vp __z)
616
    {
617
      typedef typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type __type;
618
      return fma(__type(__x), __type(__y), __type(__z));
619
    }
620
 
621
  inline float
622
  fmax(float __x, float __y)
623
  { return __builtin_fmaxf(__x, __y); }
624
 
625
  inline long double
626
  fmax(long double __x, long double __y)
627
  { return __builtin_fmaxl(__x, __y); }
628
 
629
  template
630
    inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
631
    fmax(_Tp __x, _Up __y)
632
    {
633
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
634
      return fmax(__type(__x), __type(__y));
635
    }
636
 
637
  inline float
638
  fmin(float __x, float __y)
639
  { return __builtin_fminf(__x, __y); }
640
 
641
  inline long double
642
  fmin(long double __x, long double __y)
643
  { return __builtin_fminl(__x, __y); }
644
 
645
  template
646
    inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
647
    fmin(_Tp __x, _Up __y)
648
    {
649
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
650
      return fmin(__type(__x), __type(__y));
651
    }
652
 
653
  using std::fmod;
654
  using std::frexp;
655
 
656
  inline float
657
  hypot(float __x, float __y)
658
  { return __builtin_hypotf(__x, __y); }
659
 
660
  inline long double
661
  hypot(long double __x, long double __y)
662
  { return __builtin_hypotl(__x, __y); }
663
 
664
  template
665
    inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
666
    hypot(_Tp __y, _Up __x)
667
    {
668
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
669
      return hypot(__type(__y), __type(__x));
670
    }
671
 
672
  inline int
673
  ilogb(float __x)
674
  { return __builtin_ilogbf(__x); }
675
 
676
  inline int
677
  ilogb(long double __x)
678
  { return __builtin_ilogbl(__x); }
679
 
680
  template
681
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
682
                                           int>::__type
683
    ilogb(_Tp __x)
684
    { return __builtin_ilogb(__x); }
685
 
686
  using std::ldexp;
687
 
688
  inline float
689
  lgamma(float __x)
690
  { return __builtin_lgammaf(__x); }
691
 
692
  inline long double
693
  lgamma(long double __x)
694
  { return __builtin_lgammal(__x); }
695
 
696
  template
697
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
698
                                           double>::__type
699
    lgamma(_Tp __x)
700
    { return __builtin_lgamma(__x); }
701
 
702
  inline long long
703
  llrint(float __x)
704
  { return __builtin_llrintf(__x); }
705
 
706
  inline long long
707
  llrint(long double __x)
708
  { return __builtin_llrintl(__x); }
709
 
710
  template
711
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
712
                                           long long>::__type
713
    llrint(_Tp __x)
714
    { return __builtin_llrint(__x); }
715
 
716
  inline long long
717
  llround(float __x)
718
  { return __builtin_llroundf(__x); }
719
 
720
  inline long long
721
  llround(long double __x)
722
  { return __builtin_llroundl(__x); }
723
 
724
  template
725
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
726
                                           long long>::__type
727
    llround(_Tp __x)
728
    { return __builtin_llround(__x); }
729
 
730
  using std::log;
731
  using std::log10;
732
 
733
  inline float
734
  log1p(float __x)
735
  { return __builtin_log1pf(__x); }
736
 
737
  inline long double
738
  log1p(long double __x)
739
  { return __builtin_log1pl(__x); }
740
 
741
  template
742
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
743
                                           double>::__type
744
    log1p(_Tp __x)
745
    { return __builtin_log1p(__x); }
746
 
747
  // DR 568.
748
  inline float
749
  log2(float __x)
750
  { return __builtin_log2f(__x); }
751
 
752
  inline long double
753
  log2(long double __x)
754
  { return __builtin_log2l(__x); }
755
 
756
  template
757
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
758
                                           double>::__type
759
    log2(_Tp __x)
760
    { return __builtin_log2(__x); }
761
 
762
  inline float
763
  logb(float __x)
764
  { return __builtin_logbf(__x); }
765
 
766
  inline long double
767
  logb(long double __x)
768
  { return __builtin_logbl(__x); }
769
 
770
  template
771
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
772
                                           double>::__type
773
    logb(_Tp __x)
774
    {
775
      return __builtin_logb(__x);
776
    }
777
 
778
  inline long
779
  lrint(float __x)
780
  { return __builtin_lrintf(__x); }
781
 
782
  inline long
783
  lrint(long double __x)
784
  { return __builtin_lrintl(__x); }
785
 
786
  template
787
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
788
                                           long>::__type
789
    lrint(_Tp __x)
790
    { return __builtin_lrint(__x); }
791
 
792
  inline long
793
  lround(float __x)
794
  { return __builtin_lroundf(__x); }
795
 
796
  inline long
797
  lround(long double __x)
798
  { return __builtin_lroundl(__x); }
799
 
800
  template
801
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
802
                                           long>::__type
803
    lround(_Tp __x)
804
    { return __builtin_lround(__x); }
805
 
806
  inline float
807
  nearbyint(float __x)
808
  { return __builtin_nearbyintf(__x); }
809
 
810
  inline long double
811
  nearbyint(long double __x)
812
  { return __builtin_nearbyintl(__x); }
813
 
814
  template
815
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
816
                                           double>::__type
817
    nearbyint(_Tp __x)
818
    { return __builtin_nearbyint(__x); }
819
 
820
  inline float
821
  nextafter(float __x, float __y)
822
  { return __builtin_nextafterf(__x, __y); }
823
 
824
  inline long double
825
  nextafter(long double __x, long double __y)
826
  { return __builtin_nextafterl(__x, __y); }
827
 
828
  template
829
    inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
830
    nextafter(_Tp __x, _Up __y)
831
    {
832
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
833
      return nextafter(__type(__x), __type(__y));
834
    }
835
 
836
  inline float
837
  nexttoward(float __x, long double __y)
838
  { return __builtin_nexttowardf(__x, __y); }
839
 
840
  inline long double
841
  nexttoward(long double __x, long double __y)
842
  { return __builtin_nexttowardl(__x, __y); }
843
 
844
  template
845
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
846
                                           double>::__type
847
    nexttoward(_Tp __x, long double __y)
848
    { return __builtin_nexttoward(__x, __y); }
849
 
850
  // DR 550. What should the return type of pow(float,int) be?
851
  // NB: C++0x and TR1 != C++03.
852
  //   using std::pow;
853
 
854
  inline float
855
  remainder(float __x, float __y)
856
  { return __builtin_remainderf(__x, __y); }
857
 
858
  inline long double
859
  remainder(long double __x, long double __y)
860
  { return __builtin_remainderl(__x, __y); }
861
 
862
  template
863
    inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
864
    remainder(_Tp __x, _Up __y)
865
    {
866
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
867
      return remainder(__type(__x), __type(__y));
868
    }
869
 
870
  inline float
871
  remquo(float __x, float __y, int* __pquo)
872
  { return __builtin_remquof(__x, __y, __pquo); }
873
 
874
  inline long double
875
  remquo(long double __x, long double __y, int* __pquo)
876
  { return __builtin_remquol(__x, __y, __pquo); }
877
 
878
  template
879
    inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
880
    remquo(_Tp __x, _Up __y, int* __pquo)
881
    {
882
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
883
      return remquo(__type(__x), __type(__y), __pquo);
884
    }
885
 
886
  inline float
887
  rint(float __x)
888
  { return __builtin_rintf(__x); }
889
 
890
  inline long double
891
  rint(long double __x)
892
  { return __builtin_rintl(__x); }
893
 
894
  template
895
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
896
                                           double>::__type
897
    rint(_Tp __x)
898
    { return __builtin_rint(__x); }
899
 
900
  inline float
901
  round(float __x)
902
  { return __builtin_roundf(__x); }
903
 
904
  inline long double
905
  round(long double __x)
906
  { return __builtin_roundl(__x); }
907
 
908
  template
909
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
910
                                           double>::__type
911
    round(_Tp __x)
912
    { return __builtin_round(__x); }
913
 
914
  inline float
915
  scalbln(float __x, long __ex)
916
  { return __builtin_scalblnf(__x, __ex); }
917
 
918
  inline long double
919
  scalbln(long double __x, long __ex)
920
  { return __builtin_scalblnl(__x, __ex); }
921
 
922
  template
923
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
924
                                           double>::__type
925
    scalbln(_Tp __x, long __ex)
926
    { return __builtin_scalbln(__x, __ex); }
927
 
928
  inline float
929
  scalbn(float __x, int __ex)
930
  { return __builtin_scalbnf(__x, __ex); }
931
 
932
  inline long double
933
  scalbn(long double __x, int __ex)
934
  { return __builtin_scalbnl(__x, __ex); }
935
 
936
  template
937
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
938
                                           double>::__type
939
    scalbn(_Tp __x, int __ex)
940
    { return __builtin_scalbn(__x, __ex); }
941
 
942
  using std::sin;
943
  using std::sinh;
944
  using std::sqrt;
945
  using std::tan;
946
  using std::tanh;
947
 
948
  inline float
949
  tgamma(float __x)
950
  { return __builtin_tgammaf(__x); }
951
 
952
  inline long double
953
  tgamma(long double __x)
954
  { return __builtin_tgammal(__x); }
955
 
956
  template
957
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
958
                                           double>::__type
959
    tgamma(_Tp __x)
960
    { return __builtin_tgamma(__x); }
961
 
962
  inline float
963
  trunc(float __x)
964
  { return __builtin_truncf(__x); }
965
 
966
  inline long double
967
  trunc(long double __x)
968
  { return __builtin_truncl(__x); }
969
 
970
  template
971
    inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value,
972
                                           double>::__type
973
    trunc(_Tp __x)
974
    { return __builtin_trunc(__x); }
975
 
976
#endif
977
_GLIBCXX_END_NAMESPACE_VERSION
978
}
979
}
980
 
981
namespace std _GLIBCXX_VISIBILITY(default)
982
{
983
namespace tr1
984
{
985
_GLIBCXX_BEGIN_NAMESPACE_VERSION
986
 
987
  // DR 550. What should the return type of pow(float,int) be?
988
  // NB: C++0x and TR1 != C++03.
989
  inline double
990
  pow(double __x, double __y)
991
  { return std::pow(__x, __y); }
992
 
993
  inline float
994
  pow(float __x, float __y)
995
  { return std::pow(__x, __y); }
996
 
997
  inline long double
998
  pow(long double __x, long double __y)
999
  { return std::pow(__x, __y); }
1000
 
1001
  template
1002
    inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type
1003
    pow(_Tp __x, _Up __y)
1004
    {
1005
      typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type;
1006
      return std::pow(__type(__x), __type(__y));
1007
    }
1008
 
1009
_GLIBCXX_END_NAMESPACE_VERSION
1010
}
1011
}
1012
 
1013
#include 
1014
#include 
1015
#include 
1016
 
1017
#include 
1018
#include 
1019
#include 
1020
#include 
1021
#include 
1022
#include 
1023
#include 
1024
#include 
1025
#include 
1026
#include 
1027
#include 
1028
 
1029
namespace std _GLIBCXX_VISIBILITY(default)
1030
{
1031
namespace tr1
1032
{
1033
_GLIBCXX_BEGIN_NAMESPACE_VERSION
1034
 
1035
  /**
1036
   * @defgroup tr1_math_spec_func Mathematical Special Functions
1037
   * @ingroup numerics
1038
   *
1039
   * A collection of advanced mathematical special functions.
1040
   * @{
1041
   */
1042
 
1043
  inline float
1044
  assoc_laguerref(unsigned int __n, unsigned int __m, float __x)
1045
  { return __detail::__assoc_laguerre(__n, __m, __x); }
1046
 
1047
  inline long double
1048
  assoc_laguerrel(unsigned int __n, unsigned int __m, long double __x)
1049
  {
1050
    return __detail::__assoc_laguerre(__n, __m, __x);
1051
  }
1052
 
1053
  ///  5.2.1.1  Associated Laguerre polynomials.
1054
  template
1055
    inline typename __gnu_cxx::__promote<_Tp>::__type
1056
    assoc_laguerre(unsigned int __n, unsigned int __m, _Tp __x)
1057
    {
1058
      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
1059
      return __detail::__assoc_laguerre<__type>(__n, __m, __x);
1060
    }
1061
 
1062
  inline float
1063
  assoc_legendref(unsigned int __l, unsigned int __m, float __x)
1064
  { return __detail::__assoc_legendre_p(__l, __m, __x); }
1065
 
1066
  inline long double
1067
  assoc_legendrel(unsigned int __l, unsigned int __m, long double __x)
1068
  { return __detail::__assoc_legendre_p(__l, __m, __x); }
1069
 
1070
  ///  5.2.1.2  Associated Legendre functions.
1071
  template
1072
    inline typename __gnu_cxx::__promote<_Tp>::__type
1073
    assoc_legendre(unsigned int __l, unsigned int __m, _Tp __x)
1074
    {
1075
      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
1076
      return __detail::__assoc_legendre_p<__type>(__l, __m, __x);
1077
    }
1078
 
1079
  inline float
1080
  betaf(float __x, float __y)
1081
  { return __detail::__beta(__x, __y); }
1082
 
1083
  inline long double
1084
  betal(long double __x, long double __y)
1085
  { return __detail::__beta(__x, __y); }
1086
 
1087
  ///  5.2.1.3  Beta functions.
1088
  template
1089
    inline typename __gnu_cxx::__promote_2<_Tpx, _Tpy>::__type
1090
    beta(_Tpx __x, _Tpy __y)
1091
    {
1092
      typedef typename __gnu_cxx::__promote_2<_Tpx, _Tpy>::__type __type;
1093
      return __detail::__beta<__type>(__x, __y);
1094
    }
1095
 
1096
  inline float
1097
  comp_ellint_1f(float __k)
1098
  { return __detail::__comp_ellint_1(__k); }
1099
 
1100
  inline long double
1101
  comp_ellint_1l(long double __k)
1102
  { return __detail::__comp_ellint_1(__k); }
1103
 
1104
  ///  5.2.1.4  Complete elliptic integrals of the first kind.
1105
  template
1106
    inline typename __gnu_cxx::__promote<_Tp>::__type
1107
    comp_ellint_1(_Tp __k)
1108
    {
1109
      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
1110
      return __detail::__comp_ellint_1<__type>(__k);
1111
    }
1112
 
1113
  inline float
1114
  comp_ellint_2f(float __k)
1115
  { return __detail::__comp_ellint_2(__k); }
1116
 
1117
  inline long double
1118
  comp_ellint_2l(long double __k)
1119
  { return __detail::__comp_ellint_2(__k); }
1120
 
1121
  ///  5.2.1.5  Complete elliptic integrals of the second kind.
1122
  template
1123
    inline typename __gnu_cxx::__promote<_Tp>::__type
1124
    comp_ellint_2(_Tp __k)
1125
    {
1126
      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
1127
      return __detail::__comp_ellint_2<__type>(__k);
1128
    }
1129
 
1130
  inline float
1131
  comp_ellint_3f(float __k, float __nu)
1132
  { return __detail::__comp_ellint_3(__k, __nu); }
1133
 
1134
  inline long double
1135
  comp_ellint_3l(long double __k, long double __nu)
1136
  { return __detail::__comp_ellint_3(__k, __nu); }
1137
 
1138
  ///  5.2.1.6  Complete elliptic integrals of the third kind.
1139
  template
1140
    inline typename __gnu_cxx::__promote_2<_Tp, _Tpn>::__type
1141
    comp_ellint_3(_Tp __k, _Tpn __nu)
1142
    {
1143
      typedef typename __gnu_cxx::__promote_2<_Tp, _Tpn>::__type __type;
1144
      return __detail::__comp_ellint_3<__type>(__k, __nu);
1145
    }
1146
 
1147
  inline float
1148
  conf_hypergf(float __a, float __c, float __x)
1149
  { return __detail::__conf_hyperg(__a, __c, __x); }
1150
 
1151
  inline long double
1152
  conf_hypergl(long double __a, long double __c, long double __x)
1153
  { return __detail::__conf_hyperg(__a, __c, __x); }
1154
 
1155
  ///  5.2.1.7  Confluent hypergeometric functions.
1156
  template
1157
    inline typename __gnu_cxx::__promote_3<_Tpa, _Tpc, _Tp>::__type
1158
    conf_hyperg(_Tpa __a, _Tpc __c, _Tp __x)
1159
    {
1160
      typedef typename __gnu_cxx::__promote_3<_Tpa, _Tpc, _Tp>::__type __type;
1161
      return __detail::__conf_hyperg<__type>(__a, __c, __x);
1162
    }
1163
 
1164
  inline float
1165
  cyl_bessel_if(float __nu, float __x)
1166
  { return __detail::__cyl_bessel_i(__nu, __x); }
1167
 
1168
  inline long double
1169
  cyl_bessel_il(long double __nu, long double __x)
1170
  { return __detail::__cyl_bessel_i(__nu, __x); }
1171
 
1172
  ///  5.2.1.8  Regular modified cylindrical Bessel functions.
1173
  template
1174
    inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type
1175
    cyl_bessel_i(_Tpnu __nu, _Tp __x)
1176
    {
1177
      typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type;
1178
      return __detail::__cyl_bessel_i<__type>(__nu, __x);
1179
    }
1180
 
1181
  inline float
1182
  cyl_bessel_jf(float __nu, float __x)
1183
  { return __detail::__cyl_bessel_j(__nu, __x); }
1184
 
1185
  inline long double
1186
  cyl_bessel_jl(long double __nu, long double __x)
1187
  { return __detail::__cyl_bessel_j(__nu, __x); }
1188
 
1189
  ///  5.2.1.9  Cylindrical Bessel functions (of the first kind).
1190
  template
1191
    inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type
1192
    cyl_bessel_j(_Tpnu __nu, _Tp __x)
1193
    {
1194
      typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type;
1195
      return __detail::__cyl_bessel_j<__type>(__nu, __x);
1196
    }
1197
 
1198
  inline float
1199
  cyl_bessel_kf(float __nu, float __x)
1200
  { return __detail::__cyl_bessel_k(__nu, __x); }
1201
 
1202
  inline long double
1203
  cyl_bessel_kl(long double __nu, long double __x)
1204
  { return __detail::__cyl_bessel_k(__nu, __x); }
1205
 
1206
  ///  5.2.1.10  Irregular modified cylindrical Bessel functions.
1207
  template
1208
    inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type
1209
    cyl_bessel_k(_Tpnu __nu, _Tp __x)
1210
    {
1211
      typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type;
1212
      return __detail::__cyl_bessel_k<__type>(__nu, __x);
1213
    }
1214
 
1215
  inline float
1216
  cyl_neumannf(float __nu, float __x)
1217
  { return __detail::__cyl_neumann_n(__nu, __x); }
1218
 
1219
  inline long double
1220
  cyl_neumannl(long double __nu, long double __x)
1221
  { return __detail::__cyl_neumann_n(__nu, __x); }
1222
 
1223
  ///  5.2.1.11  Cylindrical Neumann functions.
1224
  template
1225
    inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type
1226
    cyl_neumann(_Tpnu __nu, _Tp __x)
1227
    {
1228
      typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type;
1229
      return __detail::__cyl_neumann_n<__type>(__nu, __x);
1230
    }
1231
 
1232
  inline float
1233
  ellint_1f(float __k, float __phi)
1234
  { return __detail::__ellint_1(__k, __phi); }
1235
 
1236
  inline long double
1237
  ellint_1l(long double __k, long double __phi)
1238
  { return __detail::__ellint_1(__k, __phi); }
1239
 
1240
  ///  5.2.1.12  Incomplete elliptic integrals of the first kind.
1241
  template
1242
    inline typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type
1243
    ellint_1(_Tp __k, _Tpp __phi)
1244
    {
1245
      typedef typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type __type;
1246
      return __detail::__ellint_1<__type>(__k, __phi);
1247
    }
1248
 
1249
  inline float
1250
  ellint_2f(float __k, float __phi)
1251
  { return __detail::__ellint_2(__k, __phi); }
1252
 
1253
  inline long double
1254
  ellint_2l(long double __k, long double __phi)
1255
  { return __detail::__ellint_2(__k, __phi); }
1256
 
1257
  ///  5.2.1.13  Incomplete elliptic integrals of the second kind.
1258
  template
1259
    inline typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type
1260
    ellint_2(_Tp __k, _Tpp __phi)
1261
    {
1262
      typedef typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type __type;
1263
      return __detail::__ellint_2<__type>(__k, __phi);
1264
    }
1265
 
1266
  inline float
1267
  ellint_3f(float __k, float __nu, float __phi)
1268
  { return __detail::__ellint_3(__k, __nu, __phi); }
1269
 
1270
  inline long double
1271
  ellint_3l(long double __k, long double __nu, long double __phi)
1272
  { return __detail::__ellint_3(__k, __nu, __phi); }
1273
 
1274
  ///  5.2.1.14  Incomplete elliptic integrals of the third kind.
1275
  template
1276
    inline typename __gnu_cxx::__promote_3<_Tp, _Tpn, _Tpp>::__type
1277
    ellint_3(_Tp __k, _Tpn __nu, _Tpp __phi)
1278
    {
1279
      typedef typename __gnu_cxx::__promote_3<_Tp, _Tpn, _Tpp>::__type __type;
1280
      return __detail::__ellint_3<__type>(__k, __nu, __phi);
1281
    }
1282
 
1283
  inline float
1284
  expintf(float __x)
1285
  { return __detail::__expint(__x); }
1286
 
1287
  inline long double
1288
  expintl(long double __x)
1289
  { return __detail::__expint(__x); }
1290
 
1291
  ///  5.2.1.15  Exponential integrals.
1292
  template
1293
    inline typename __gnu_cxx::__promote<_Tp>::__type
1294
    expint(_Tp __x)
1295
    {
1296
      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
1297
      return __detail::__expint<__type>(__x);
1298
    }
1299
 
1300
  inline float
1301
  hermitef(unsigned int __n, float __x)
1302
  { return __detail::__poly_hermite(__n, __x); }
1303
 
1304
  inline long double
1305
  hermitel(unsigned int __n, long double __x)
1306
  { return __detail::__poly_hermite(__n, __x); }
1307
 
1308
  ///  5.2.1.16  Hermite polynomials.
1309
  template
1310
    inline typename __gnu_cxx::__promote<_Tp>::__type
1311
    hermite(unsigned int __n, _Tp __x)
1312
    {
1313
      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
1314
      return __detail::__poly_hermite<__type>(__n, __x);
1315
    }
1316
 
1317
  inline float
1318
  hypergf(float __a, float __b, float __c, float __x)
1319
  { return __detail::__hyperg(__a, __b, __c, __x); }
1320
 
1321
  inline long double
1322
  hypergl(long double __a, long double __b, long double __c, long double __x)
1323
  { return __detail::__hyperg(__a, __b, __c, __x); }
1324
 
1325
  ///  5.2.1.17  Hypergeometric functions.
1326
  template
1327
    inline typename __gnu_cxx::__promote_4<_Tpa, _Tpb, _Tpc, _Tp>::__type
1328
    hyperg(_Tpa __a, _Tpb __b, _Tpc __c, _Tp __x)
1329
    {
1330
      typedef typename __gnu_cxx::__promote_4<_Tpa, _Tpb, _Tpc, _Tp>::__type __type;
1331
      return __detail::__hyperg<__type>(__a, __b, __c, __x);
1332
    }
1333
 
1334
  inline float
1335
  laguerref(unsigned int __n, float __x)
1336
  { return __detail::__laguerre(__n, __x); }
1337
 
1338
  inline long double
1339
  laguerrel(unsigned int __n, long double __x)
1340
  { return __detail::__laguerre(__n, __x); }
1341
 
1342
  ///  5.2.1.18  Laguerre polynomials.
1343
  template
1344
    inline typename __gnu_cxx::__promote<_Tp>::__type
1345
    laguerre(unsigned int __n, _Tp __x)
1346
    {
1347
      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
1348
      return __detail::__laguerre<__type>(__n, __x);
1349
    }
1350
 
1351
  inline float
1352
  legendref(unsigned int __n, float __x)
1353
  { return __detail::__poly_legendre_p(__n, __x); }
1354
 
1355
  inline long double
1356
  legendrel(unsigned int __n, long double __x)
1357
  { return __detail::__poly_legendre_p(__n, __x); }
1358
 
1359
  ///  5.2.1.19  Legendre polynomials.
1360
  template
1361
    inline typename __gnu_cxx::__promote<_Tp>::__type
1362
    legendre(unsigned int __n, _Tp __x)
1363
    {
1364
      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
1365
      return __detail::__poly_legendre_p<__type>(__n, __x);
1366
    }
1367
 
1368
  inline float
1369
  riemann_zetaf(float __x)
1370
  { return __detail::__riemann_zeta(__x); }
1371
 
1372
  inline long double
1373
  riemann_zetal(long double __x)
1374
  { return __detail::__riemann_zeta(__x); }
1375
 
1376
  ///  5.2.1.20  Riemann zeta function.
1377
  template
1378
    inline typename __gnu_cxx::__promote<_Tp>::__type
1379
    riemann_zeta(_Tp __x)
1380
    {
1381
      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
1382
      return __detail::__riemann_zeta<__type>(__x);
1383
    }
1384
 
1385
  inline float
1386
  sph_besself(unsigned int __n, float __x)
1387
  { return __detail::__sph_bessel(__n, __x); }
1388
 
1389
  inline long double
1390
  sph_bessell(unsigned int __n, long double __x)
1391
  { return __detail::__sph_bessel(__n, __x); }
1392
 
1393
  ///  5.2.1.21  Spherical Bessel functions.
1394
  template
1395
    inline typename __gnu_cxx::__promote<_Tp>::__type
1396
    sph_bessel(unsigned int __n, _Tp __x)
1397
    {
1398
      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
1399
      return __detail::__sph_bessel<__type>(__n, __x);
1400
    }
1401
 
1402
  inline float
1403
  sph_legendref(unsigned int __l, unsigned int __m, float __theta)
1404
  { return __detail::__sph_legendre(__l, __m, __theta); }
1405
 
1406
  inline long double
1407
  sph_legendrel(unsigned int __l, unsigned int __m, long double __theta)
1408
  { return __detail::__sph_legendre(__l, __m, __theta); }
1409
 
1410
  ///  5.2.1.22  Spherical associated Legendre functions.
1411
  template
1412
    inline typename __gnu_cxx::__promote<_Tp>::__type
1413
    sph_legendre(unsigned int __l, unsigned int __m, _Tp __theta)
1414
    {
1415
      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
1416
      return __detail::__sph_legendre<__type>(__l, __m, __theta);
1417
    }
1418
 
1419
  inline float
1420
  sph_neumannf(unsigned int __n, float __x)
1421
  { return __detail::__sph_neumann(__n, __x); }
1422
 
1423
  inline long double
1424
  sph_neumannl(unsigned int __n, long double __x)
1425
  { return __detail::__sph_neumann(__n, __x); }
1426
 
1427
  ///  5.2.1.23  Spherical Neumann functions.
1428
  template
1429
    inline typename __gnu_cxx::__promote<_Tp>::__type
1430
    sph_neumann(unsigned int __n, _Tp __x)
1431
    {
1432
      typedef typename __gnu_cxx::__promote<_Tp>::__type __type;
1433
      return __detail::__sph_neumann<__type>(__n, __x);
1434
    }
1435
 
1436
  /* @} */ // tr1_math_spec_func
1437
_GLIBCXX_END_NAMESPACE_VERSION
1438
}
1439
}
1440
 
1441
#endif // _GLIBCXX_TR1_CMATH

powered by: WebSVN 2.1.0

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