inline Eigen::Matrix<T, 1, Eigen::Dynamic> tail(const Eigen::Matrix<T, 1, Eigen::Dynamic>& rv, size_t n) { if (n != 0) check_column_index("tail", "n", rv, n); return rv.tail(n); }
inline Eigen::Matrix<T,1,Eigen::Dynamic> tail(const Eigen::Matrix<T,1,Eigen::Dynamic>& rv, size_t n) { if (n != 0) stan::math::check_column_index("tail(%1%)",n,rv,"n",(double*)0); return rv.tail(n); }
inline Eigen::Matrix<T, Eigen::Dynamic, 1> tail(const Eigen::Matrix<T, Eigen::Dynamic, 1>& v, size_t n) { if (n != 0) check_row_index("tail", "n", v, n); return v.tail(n); }
inline Eigen::Matrix<T,1,Eigen::Dynamic> tail(const Eigen::Matrix<T,1,Eigen::Dynamic>& rv, size_t n) { if (n != 0) validate_column_index(rv, rv.size() - n + 1, "tail"); return rv.tail(n); }
inline Eigen::Matrix<T,Eigen::Dynamic,1> tail(const Eigen::Matrix<T,Eigen::Dynamic,1>& v, size_t n) { if (n != 0) stan::math::check_row_index("tail(%1%)",n,v,"n",(double*)0); return v.tail(n); }
inline Eigen::Matrix<T,Eigen::Dynamic,1> tail(const Eigen::Matrix<T,Eigen::Dynamic,1>& v, size_t n) { if (n != 0) validate_row_index(v, v.size() - n + 1, "tail"); return v.tail(n); }
void rootBounds( double &lb, double &ub ) { Eigen::Matrix<double,deg,1> mycoef = coef.tail(deg).array().abs(); mycoef /= fabs(coef(0)); mycoef(0) += 1.; ub = mycoef.maxCoeff(); lb = -ub; }
void cholesky_update (Eigen::Matrix<double, N, N>& L, Eigen::Matrix<double, N, 1> v) { Eigen::JacobiRotation<double> rot; for (int i = 0; i < N; ++i) { rot.makeGivens(L(i,i), -v(i), &L(i,i)), v(i) = 0; if (i < N-1) apply_jacobi_rotation(L.col(i).tail(N-i-1), v.tail(N-i-1), rot); } }
void realRoots(std::vector<double> &roots) const { if ( coef[0] == 0 ) { Internal::RootFinder<deg-1>::compute(coef.tail(deg),roots); } else { Internal::RootFinder<deg>::compute(coef,roots); } }
void realRootsSturm(const double lb, const double ub, std::vector<double> &roots) const { if ( coef[0] == 0 ) { Internal::SturmRootFinder<deg-1> sturm( coef.tail(deg) ); sturm.realRoots( lb, ub, roots ); } else { Internal::SturmRootFinder<deg> sturm( coef ); sturm.realRoots( lb, ub, roots ); } }