17 template <
typename Real>
21 static Real
ACos(Real
const&
x);
22 static Real
ACosh(Real
const& x);
23 static Real
ASin(Real
const& x);
24 static Real
ASinh(Real
const& x);
25 static Real
ATan(Real
const& x);
26 static Real
ATanh(Real
const& x);
27 static Real
ATan2(Real
const&
y, Real
const& x);
28 static Real
ATanpi(Real
const& x);
29 static Real
ATan2pi(Real
const& y, Real
const& x);
30 static Real
Ceil(Real
const& x);
31 static Real
Cos(Real
const& x);
32 static Real
Cosh(Real
const& x);
33 static Real
Cospi(Real
const& x);
34 static Real
Exp(Real
const& x);
35 static Real
Exp2(Real
const& x);
36 static Real
Exp10(Real
const& x);
37 static Real
FAbs(Real
const& x);
38 static Real
Floor(Real
const& x);
39 static Real
FMod(Real
const& x, Real
const& y);
40 static Real
InvSqrt(Real
const& x);
41 static Real
Log(Real
const& x);
42 static Real
Log2(Real
const& x);
43 static Real
Log10(Real
const& x);
44 static Real
Pow(Real
const& x, Real
const& y);
45 static Real
Sin(Real
const& x);
46 static Real
Sinh(Real
const& x);
47 static Real
Sinpi(Real
const& x);
48 static Real
Sqr(Real
const& x);
49 static Real
Sqrt(Real
const& x);
50 static Real
Tan(Real
const& x);
51 static Real
Tanh(Real
const& x);
53 static Real
Sign(Real
const& x);
54 static int ISign(Real
const& x);
57 static Real
Clamp(Real
const& x, Real
const& min, Real
const & max);
209 template <
typename T>
212 template <
typename T>
215 template <
typename T>
220 template <
typename Real>
226 template <
typename Real>
template <
typename T>
232 template <
typename Real>
template <
typename T>
235 return (T)acos((
float)x);
238 template <
typename Real>
template <
typename T>
241 return (T)acos((
double)x);
246 template <
typename Real>
252 template <
typename Real>
template <
typename T>
255 return log(x + sqrt(x * x - (Real)1));
258 template <
typename Real>
template <
typename T>
262 return (T)log(y + sqrt(y * y - 1.0
f));
265 template <
typename Real>
template <
typename T>
268 double y = (double)x;
269 return (T)log(y + sqrt(y * y - 1.0));
274 template <
typename Real>
280 template <
typename Real>
template <
typename T>
286 template <
typename Real>
template <
typename T>
289 return (T)asin((
float)x);
292 template <
typename Real>
template <
typename T>
295 return (T)asin((
double)x);
300 template <
typename Real>
306 template <
typename Real>
template <
typename T>
309 return log(x + sqrt(x * x + (Real)1));
312 template <
typename Real>
template <
typename T>
316 return (T)log(y + sqrt(y * y + 1.0
f));
319 template <
typename Real>
template <
typename T>
322 double y = (double)x;
323 return (T)log(y + sqrt(y * y + 1.0));
328 template <
typename Real>
334 template <
typename Real>
template <
typename T>
340 template <
typename Real>
template <
typename T>
343 return (T)atan((
float)x);
346 template <
typename Real>
template <
typename T>
349 return (T)atan((
double)x);
354 template <
typename Real>
360 template <
typename Real>
template <
typename T>
363 return log( ((Real)1 + x) / ((Real)1 - x) ) * (Real)0.5;
366 template <
typename Real>
template <
typename T>
370 return (T)(log( (1.0
f + y) / (1.0
f - y) ) * 0.5f);
373 template <
typename Real>
template <
typename T>
376 double y = (double)x;
377 return (T)(log( (1.0 + y) / (1.0 - y) ) * 0.5);
382 template <
typename Real>
388 template <
typename Real>
template <
typename T>
394 template <
typename Real>
template <
typename T>
397 return (T)atan2((
float)y, (
float)x);
400 template <
typename Real>
template <
typename T>
403 return (T)atan2((
double)y, (
double)x);
408 template <
typename Real>
414 template <
typename Real>
template <
typename T>
420 template <
typename Real>
template <
typename T>
426 template <
typename Real>
template <
typename T>
434 template <
typename Real>
440 template <
typename Real>
template <
typename T>
446 template <
typename Real>
template <
typename T>
449 return (T)(atan2((
float)y, (
float)x) * (float)
GTE_C_INV_PI);
452 template <
typename Real>
template <
typename T>
460 template <
typename Real>
466 template <
typename Real>
template <
typename T>
472 template <
typename Real>
template <
typename T>
475 return (T)ceil((
float)x);
478 template <
typename Real>
template <
typename T>
481 return (T)ceil((
double)x);
486 template <
typename Real>
492 template <
typename Real>
template <
typename T>
498 template <
typename Real>
template <
typename T>
501 return (T)cos((
float)x);
504 template <
typename Real>
template <
typename T>
507 return (T)cos((
double)x);
512 template <
typename Real>
518 template <
typename Real>
template <
typename T>
524 template <
typename Real>
template <
typename T>
527 return (T)cosh((
float)x);
530 template <
typename Real>
template <
typename T>
533 return (T)cosh((
double)x);
538 template <
typename Real>
544 template <
typename Real>
template <
typename T>
550 template <
typename Real>
template <
typename T>
553 return (T)cos((
float)x * (
float)
GTE_C_PI);
556 template <
typename Real>
template <
typename T>
559 return (T)cos((
double)(x * (T)
GTE_C_PI));
564 template <
typename Real>
570 template <
typename Real>
template <
typename T>
576 template <
typename Real>
template <
typename T>
579 return (T)exp((
float)x);
582 template <
typename Real>
template <
typename T>
585 return (T)exp((
double)x);
590 template <
typename Real>
596 template <
typename Real>
template <
typename T>
602 template <
typename Real>
template <
typename T>
608 template <
typename Real>
template <
typename T>
616 template <
typename Real>
622 template <
typename Real>
template <
typename T>
628 template <
typename Real>
template <
typename T>
634 template <
typename Real>
template <
typename T>
642 template <
typename Real>
648 template <
typename Real>
template <
typename T>
654 template <
typename Real>
template <
typename T>
657 return (Real)fabs((
float)x);
660 template <
typename Real>
template <
typename T>
663 return (x.GetSign() >= 0 ? x : -
x);
668 template <
typename Real>
674 template <
typename Real>
template <
typename T>
680 template <
typename Real>
template <
typename T>
683 return (T)floor((
float)x);
686 template <
typename Real>
template <
typename T>
689 return (T)floor((
double)x);
694 template <
typename Real>
700 template <
typename Real>
template <
typename T>
706 template <
typename Real>
template <
typename T>
709 return (T)fmod((
float)x, (
float)y);
712 template <
typename Real>
template <
typename T>
715 return (T)fmod((
double)x, (
double)y);
720 template <
typename Real>
726 template <
typename Real>
template <
typename T>
729 return ((T)1) / sqrt(x);
732 template <
typename Real>
template <
typename T>
735 return (T)(1.0f / sqrt((
float)x));
738 template <
typename Real>
template <
typename T>
741 return (T)(1.0 / sqrt((
double)x));
746 template <
typename Real>
752 template <
typename Real>
template <
typename T>
758 template <
typename Real>
template <
typename T>
761 return (T)log((
float)x);
764 template <
typename Real>
template <
typename T>
767 return (T)log((
double)x);
772 template <
typename Real>
778 template <
typename Real>
template <
typename T>
784 template <
typename Real>
template <
typename T>
790 template <
typename Real>
template <
typename T>
798 template <
typename Real>
804 template <
typename Real>
template <
typename T>
810 template <
typename Real>
template <
typename T>
813 return (T)log10((
float)x);
816 template <
typename Real>
template <
typename T>
819 return (T)log10((
double)x);
824 template <
typename Real>
830 template <
typename Real>
template <
typename T>
836 template <
typename Real>
template <
typename T>
839 return (T)pow((
float)x, (
float)y);
842 template <
typename Real>
template <
typename T>
845 return (T)pow((
double)x, (
double)y);
850 template <
typename Real>
856 template <
typename Real>
template <
typename T>
862 template <
typename Real>
template <
typename T>
865 return (T)sin((
float)x);
868 template <
typename Real>
template <
typename T>
871 return (T)sin((
double)x);
876 template <
typename Real>
882 template <
typename Real>
template <
typename T>
888 template <
typename Real>
template <
typename T>
891 return (T)sinh((
float)x);
894 template <
typename Real>
template <
typename T>
897 return (T)sinh((
double)x);
902 template <
typename Real>
908 template <
typename Real>
template <
typename T>
914 template <
typename Real>
template <
typename T>
917 return (T)sin((
float)x * (
float)
GTE_C_PI);
920 template <
typename Real>
template <
typename T>
923 return (T)sin((
double)(x * (T)
GTE_C_PI));
928 template <
typename Real>
936 template <
typename Real>
942 template <
typename Real>
template <
typename T>
948 template <
typename Real>
template <
typename T>
951 return (T)sqrt((
float)x);
954 template <
typename Real>
template <
typename T>
957 return (T)sqrt((
double)x);
962 template <
typename Real>
968 template <
typename Real>
template <
typename T>
974 template <
typename Real>
template <
typename T>
977 return (T)tan((
float)x);
980 template <
typename Real>
template <
typename T>
983 return (T)tan((
double)x);
988 template <
typename Real>
994 template <
typename Real>
template <
typename T>
1000 template <
typename Real>
template <
typename T>
1003 return (T)tanh((
float)x);
1006 template <
typename Real>
template <
typename T>
1009 return (T)tanh((
double)x);
1014 template <
typename Real>
1020 template <
typename Real>
template <
typename T>
1023 return (x > (Real)0 ? (Real)1 : (x < (Real)0 ? (Real)-1 : (Real)0));
1026 template <
typename Real>
template <
typename T>
1030 return (y > 0.0
f ? 1.0
f : (y < 0.0
f ? -1.0
f : 0.0
f));
1033 template <
typename Real>
template <
typename T>
1036 return (Real)x.GetSign();
1041 template <
typename Real>
1047 template <
typename Real>
template <
typename T>
1050 return (x > (Real)0 ? 1 : (x < (Real)0 ? -1 : 0));
1053 template <
typename Real>
template <
typename T>
1057 return (y > 0.0
f ? 1 : (y < 0 ? -1 : 0));
1060 template <
typename Real>
template <
typename T>
1068 template <
typename Real>
1071 return (x <= min ? min : (x >= max ? max : x));
1074 template <
typename Real>
1080 template <
typename Real>
template <
typename T>
1083 return (x <= (Real)0 ? (Real)0 : (x >= (Real)1 ? (Real)1 : x));
1086 template <
typename Real>
template <
typename T>
1090 return (y <= 0.0
f ? 0.0
f : (y >= 1.0
f ? 1.0
f : y));
1093 template <
typename Real>
template <
typename T>
1096 Real
const zero(0), one(1);
1097 return (x <= zero ? zero : (x >= one ? one : x));
1102 template <
typename Real>
1108 template <
typename Real>
template <
typename T>
1111 return (
unsigned int)(3 + std::numeric_limits<Real>::digits -
1112 std::numeric_limits<Real>::min_exponent);
1115 template <
typename Real>
template <
typename T>
1124 template <
typename Real>
template <
typename T>
1127 return std::numeric_limits<unsigned int>::max();
static Real Saturate(Real const &x)
static Real Exp2(Real const &x)
static T Exp10Impl(T x, Arithmetic::IsFPType tag)
static Real Cosh(Real const &x)
static T CeilImpl(T x, Arithmetic::IsFPType tag)
static Real ACosh(Real const &x)
static T ACosImpl(T x, Arithmetic::IsFPType tag)
std::integral_constant< Type, IS_FP16 > IsFP16Type
static Real Cos(Real const &x)
static int ISignImpl(T x, Arithmetic::IsFPType tag)
static Real Sign(Real const &x)
static Real ASinh(Real const &x)
static Real Clamp(Real const &x, Real const &min, Real const &max)
static T Log2Impl(T x, Arithmetic::IsFPType tag)
static T FModImpl(T x, T y, Arithmetic::IsFPType tag)
static T FloorImpl(T x, Arithmetic::IsFPType tag)
static Real Tanh(Real const &x)
static T SaturateImpl(T x, Arithmetic::IsFPType tag)
static T ATan2Impl(T y, T x, Arithmetic::IsFPType tag)
static T ATanhImpl(T x, Arithmetic::IsFPType tag)
static Real ATanh(Real const &x)
static Real Sinh(Real const &x)
static unsigned int GetMaxBisections()
static T InvSqrtImpl(T x, Arithmetic::IsFPType tag)
static Real Sqr(Real const &x)
static T SinpiImpl(T x, Arithmetic::IsFPType tag)
static Real Sqrt(Real const &x)
static Real Exp10(Real const &x)
static Real Ceil(Real const &x)
static T ATanImpl(T x, Arithmetic::IsFPType tag)
static T SinImpl(T x, Arithmetic::IsFPType tag)
static Real ASin(Real const &x)
static Real ATan2pi(Real const &y, Real const &x)
static T CospiImpl(T x, Arithmetic::IsFPType tag)
static Real FAbs(Real const &x)
static T PowImpl(T x, T y, Arithmetic::IsFPType tag)
static unsigned int GetMaxBisectionsImpl(Arithmetic::IsFPType tag)
static Real ACos(Real const &x)
static Real Exp(Real const &x)
static T ACoshImpl(T x, Arithmetic::IsFPType tag)
static T CosImpl(T x, Arithmetic::IsFPType tag)
static T FAbsImpl(T x, Arithmetic::IsFPType tag)
static Real Pow(Real const &x, Real const &y)
std::integral_constant< Type, IS_FLOATING_POINT > IsFPType
static Real Log10(Real const &x)
static Real Sinpi(Real const &x)
static T LogImpl(T x, Arithmetic::IsFPType tag)
static Real ATanpi(Real const &x)
static Real Cospi(Real const &x)
static Real Sin(Real const &x)
static Real ATan2(Real const &y, Real const &x)
static T CoshImpl(T x, Arithmetic::IsFPType tag)
static Real ATan(Real const &x)
static T SqrtImpl(T x, Arithmetic::IsFPType tag)
std::integral_constant< Type, IS_BINARY_SCIENTIFIC > IsBSType
static T ExpImpl(T x, Arithmetic::IsFPType tag)
static T TanhImpl(T x, Arithmetic::IsFPType tag)
static T ASinImpl(T x, Arithmetic::IsFPType tag)
static int ISign(Real const &x)
static T ATanpiImpl(T x, Arithmetic::IsFPType tag)
static Real Log2(Real const &x)
static T SignImpl(T x, Arithmetic::IsFPType tag)
static T ATan2piImpl(T y, T x, Arithmetic::IsFPType tag)
static T ASinhImpl(T x, Arithmetic::IsFPType tag)
static T Exp2Impl(T x, Arithmetic::IsFPType tag)
static Real Log(Real const &x)
static Real InvSqrt(Real const &x)
static T SinhImpl(T x, Arithmetic::IsFPType tag)
static T TanImpl(T x, Arithmetic::IsFPType tag)
static Real Floor(Real const &x)
static Real Tan(Real const &x)
static T Log10Impl(T x, Arithmetic::IsFPType tag)
static Real FMod(Real const &x, Real const &y)