• Home
  • Raw
  • Download

Lines Matching full:scalar

50  * Scalar x, y, coef[N+1];
80 template <typename Scalar, int N>
83 static EIGEN_STRONG_INLINE Scalar run(const Scalar x, const Scalar coef[]) { in run()
86 return polevl<Scalar, N - 1>::run(x, coef) * x + coef[N]; in run()
90 template <typename Scalar>
91 struct polevl<Scalar, 0> {
93 static EIGEN_STRONG_INLINE Scalar run(const Scalar, const Scalar coef[]) {
104 template <typename Scalar>
107 static EIGEN_STRONG_INLINE Scalar run(const Scalar) {
108 EIGEN_STATIC_ASSERT((internal::is_same<Scalar, Scalar>::value == false),
110 return Scalar(0);
114 template <typename Scalar>
116 typedef Scalar type;
151 template <typename Scalar>
153 typedef Scalar type;
161 * input Scalar s, assuming s is above 10.0.
163 * If s is above a certain threshold for the given Scalar type, zero
165 * coefficients for results matching Scalar machine precision.
169 template <typename Scalar>
172 static EIGEN_STRONG_INLINE Scalar run(const Scalar) {
173 EIGEN_STATIC_ASSERT((internal::is_same<Scalar, Scalar>::value == false),
175 return Scalar(0);
222 template <typename Scalar>
225 static Scalar run(Scalar x) {
283 Scalar p, q, nz, s, w, y;
286 const Scalar maxnum = NumTraits<Scalar>::infinity();
287 const Scalar m_pi = Scalar(EIGEN_PI);
289 const Scalar zero = Scalar(0);
290 const Scalar one = Scalar(1);
291 const Scalar half = Scalar(0.5);
321 while (s < Scalar(10)) {
326 y = digamma_impl_maybe_poly<Scalar>::run(s);
338 template <typename Scalar>
341 static EIGEN_STRONG_INLINE Scalar run(const Scalar) {
342 EIGEN_STATIC_ASSERT((internal::is_same<Scalar, Scalar>::value == false),
344 return Scalar(0);
348 template <typename Scalar>
350 typedef Scalar type;
371 template <typename Scalar>
374 static EIGEN_STRONG_INLINE Scalar run(const Scalar) {
375 EIGEN_STATIC_ASSERT((internal::is_same<Scalar, Scalar>::value == false),
377 return Scalar(0);
381 template <typename Scalar>
383 typedef Scalar type;
404 template <typename Scalar>
406 typedef Scalar type;
410 template <typename Scalar>
413 …static EIGEN_STRONG_INLINE Scalar machep() { assert(false && "machep not supported for this type")…
415 …static EIGEN_STRONG_INLINE Scalar big() { assert(false && "big not supported for this type"); retu…
417 …static EIGEN_STRONG_INLINE Scalar biginv() { assert(false && "biginv not supported for this type")…
457 template <typename Scalar>
460 static Scalar run(Scalar a, Scalar x) {
461 EIGEN_STATIC_ASSERT((internal::is_same<Scalar, Scalar>::value == false),
463 return Scalar(0);
469 template <typename Scalar> struct igamma_impl; // predeclare igamma_impl
471 template <typename Scalar>
474 static Scalar run(Scalar a, Scalar x) {
529 const Scalar zero = 0;
530 const Scalar one = 1;
531 const Scalar nan = NumTraits<Scalar>::quiet_NaN();
546 return (one - igamma_impl<Scalar>::Impl(a, x));
554 friend struct igamma_impl<Scalar>;
563 EIGEN_DEVICE_FUNC static Scalar Impl(Scalar a, Scalar x) {
564 const Scalar zero = 0;
565 const Scalar one = 1;
566 const Scalar two = 2;
567 const Scalar machep = cephes_helper<Scalar>::machep();
568 const Scalar maxlog = numext::log(NumTraits<Scalar>::highest());
569 const Scalar big = cephes_helper<Scalar>::big();
570 const Scalar biginv = cephes_helper<Scalar>::biginv();
571 const Scalar inf = NumTraits<Scalar>::infinity();
573 Scalar ans, ax, c, yc, r, t, y, z;
574 Scalar pk, pkm1, pkm2, qk, qkm1, qkm2;
579 ax = a * numext::log(x) - x - lgamma_impl<Scalar>::run(a);
634 template <typename Scalar>
636 typedef Scalar type;
641 template <typename Scalar>
644 static EIGEN_STRONG_INLINE Scalar run(Scalar a, Scalar x) {
645 EIGEN_STATIC_ASSERT((internal::is_same<Scalar, Scalar>::value == false),
647 return Scalar(0);
653 template <typename Scalar>
656 static Scalar run(Scalar a, Scalar x) {
717 const Scalar zero = 0;
718 const Scalar one = 1;
719 const Scalar nan = NumTraits<Scalar>::quiet_NaN();
735 return (one - igammac_impl<Scalar>::Impl(a, x));
743 friend struct igammac_impl<Scalar>;
752 EIGEN_DEVICE_FUNC static Scalar Impl(Scalar a, Scalar x) {
753 const Scalar zero = 0;
754 const Scalar one = 1;
755 const Scalar machep = cephes_helper<Scalar>::machep();
756 const Scalar maxlog = numext::log(NumTraits<Scalar>::highest());
758 Scalar ans, ax, c, r;
761 ax = a * numext::log(x) - x - lgamma_impl<Scalar>::run(a);
792 template <typename Scalar>
794 typedef Scalar type;
797 template <typename Scalar>
800 static EIGEN_STRONG_INLINE Scalar run(const Scalar) {
801 EIGEN_STATIC_ASSERT((internal::is_same<Scalar, Scalar>::value == false),
803 return Scalar(0);
847 template <typename Scalar>
850 static Scalar run(Scalar x, Scalar q) {
913 Scalar p, r, a, b, k, s, t, w;
915 const Scalar A[] = {
916 Scalar(12.0),
917 Scalar(-720.0),
918 Scalar(30240.0),
919 Scalar(-1209600.0),
920 Scalar(47900160.0),
921 Scalar(-1.8924375803183791606e9), /*1.307674368e12/691*/
922 Scalar(7.47242496e10),
923 Scalar(-2.950130727918164224e12), /*1.067062284288e16/3617*/
924 Scalar(1.1646782814350067249e14), /*5.109094217170944e18/43867*/
925 Scalar(-4.5979787224074726105e15), /*8.028576626982912e20/174611*/
926 Scalar(1.8152105401943546773e17), /*1.5511210043330985984e23/854513*/
927 Scalar(-7.1661652561756670113e18) /*1.6938241367317436694528e27/236364091*/
930 const Scalar maxnum = NumTraits<Scalar>::infinity();
931 const Scalar zero = 0.0, half = 0.5, one = 1.0;
932 const Scalar machep = cephes_helper<Scalar>::machep();
933 const Scalar nan = NumTraits<Scalar>::quiet_NaN();
964 if (zeta_impl_series<Scalar>::run(a, b, s, x, machep)) {
996 template <typename Scalar>
998 typedef Scalar type;
1003 template <typename Scalar>
1006 static EIGEN_STRONG_INLINE Scalar run(Scalar n, Scalar x) {
1007 EIGEN_STATIC_ASSERT((internal::is_same<Scalar, Scalar>::value == false),
1009 return Scalar(0);
1015 template <typename Scalar>
1018 static Scalar run(Scalar n, Scalar x) {
1019 Scalar zero = 0.0, one = 1.0;
1020 Scalar nplus = n + one;
1021 const Scalar nan = NumTraits<Scalar>::quiet_NaN();
1029 return digamma_impl<Scalar>::run(x);
1033 Scalar factorial = numext::exp(lgamma_impl<Scalar>::run(nplus));
1034 return numext::pow(-one, nplus) * factorial * zeta_impl<Scalar>::run(nplus, x);
1045 template <typename Scalar>
1047 typedef Scalar type;
1052 template <typename Scalar>
1055 static EIGEN_STRONG_INLINE Scalar run(Scalar a, Scalar b, Scalar x) {
1056 EIGEN_STATIC_ASSERT((internal::is_same<Scalar, Scalar>::value == false),
1058 return Scalar(0);
1064 template <typename Scalar>
1067 static EIGEN_STRONG_INLINE Scalar run(Scalar, Scalar, Scalar) {
1137 EIGEN_STATIC_ASSERT((internal::is_same<Scalar, Scalar>::value == false),
1139 return Scalar(0);
1146 template <typename Scalar>
1149 static EIGEN_STRONG_INLINE Scalar run(Scalar a, Scalar b, Scalar x, bool small_branch) {
1150 EIGEN_STATIC_ASSERT((internal::is_same<Scalar, float>::value ||
1151 internal::is_same<Scalar, double>::value),
1153 const Scalar big = cephes_helper<Scalar>::big();
1154 const Scalar machep = cephes_helper<Scalar>::machep();
1155 const Scalar biginv = cephes_helper<Scalar>::biginv();
1157 const Scalar zero = 0;
1158 const Scalar one = 1;
1159 const Scalar two = 2;
1161 Scalar xk, pk, pkm1, pkm2, qk, qkm1, qkm2;
1162 Scalar k1, k2, k3, k4, k5, k6, k7, k8, k26update;
1163 Scalar ans;
1166 const int num_iters = (internal::is_same<Scalar, float>::value) ? 100 : 300;
1167 const Scalar thresh =
1168 (internal::is_same<Scalar, float>::value) ? machep : Scalar(3) * machep;
1169 Scalar r = (internal::is_same<Scalar, float>::value) ? zero : one;
1253 /* Helper functions depending on the Scalar type */
1254 template <typename Scalar>
1506 template <typename Scalar>
1507 EIGEN_DEVICE_FUNC inline EIGEN_MATHFUNC_RETVAL(lgamma, Scalar)
1508 lgamma(const Scalar& x) {
1509 return EIGEN_MATHFUNC_IMPL(lgamma, Scalar)::run(x);
1512 template <typename Scalar>
1513 EIGEN_DEVICE_FUNC inline EIGEN_MATHFUNC_RETVAL(digamma, Scalar)
1514 digamma(const Scalar& x) {
1515 return EIGEN_MATHFUNC_IMPL(digamma, Scalar)::run(x);
1518 template <typename Scalar>
1519 EIGEN_DEVICE_FUNC inline EIGEN_MATHFUNC_RETVAL(zeta, Scalar)
1520 zeta(const Scalar& x, const Scalar& q) {
1521 return EIGEN_MATHFUNC_IMPL(zeta, Scalar)::run(x, q);
1524 template <typename Scalar>
1525 EIGEN_DEVICE_FUNC inline EIGEN_MATHFUNC_RETVAL(polygamma, Scalar)
1526 polygamma(const Scalar& n, const Scalar& x) {
1527 return EIGEN_MATHFUNC_IMPL(polygamma, Scalar)::run(n, x);
1530 template <typename Scalar>
1531 EIGEN_DEVICE_FUNC inline EIGEN_MATHFUNC_RETVAL(erf, Scalar)
1532 erf(const Scalar& x) {
1533 return EIGEN_MATHFUNC_IMPL(erf, Scalar)::run(x);
1536 template <typename Scalar>
1537 EIGEN_DEVICE_FUNC inline EIGEN_MATHFUNC_RETVAL(erfc, Scalar)
1538 erfc(const Scalar& x) {
1539 return EIGEN_MATHFUNC_IMPL(erfc, Scalar)::run(x);
1542 template <typename Scalar>
1543 EIGEN_DEVICE_FUNC inline EIGEN_MATHFUNC_RETVAL(igamma, Scalar)
1544 igamma(const Scalar& a, const Scalar& x) {
1545 return EIGEN_MATHFUNC_IMPL(igamma, Scalar)::run(a, x);
1548 template <typename Scalar>
1549 EIGEN_DEVICE_FUNC inline EIGEN_MATHFUNC_RETVAL(igammac, Scalar)
1550 igammac(const Scalar& a, const Scalar& x) {
1551 return EIGEN_MATHFUNC_IMPL(igammac, Scalar)::run(a, x);
1554 template <typename Scalar>
1555 EIGEN_DEVICE_FUNC inline EIGEN_MATHFUNC_RETVAL(betainc, Scalar)
1556 betainc(const Scalar& a, const Scalar& b, const Scalar& x) {
1557 return EIGEN_MATHFUNC_IMPL(betainc, Scalar)::run(a, b, x);