Automatic Differentiation
 
Loading...
Searching...
No Matches
mrrr.hpp File Reference

Go to the source code of this file.

Classes

struct  stan::math::internal::mrrr_task
 

Namespaces

namespace  stan
 The lgamma implementation in stan-math is based on either the reentrant safe lgamma_r implementation from C or the boost::math::lgamma implementation.
 
namespace  stan::math
 Matrices and templated mathematical functions.
 
namespace  stan::math::internal
 A comparator that works for any container type that has the brackets operator.
 

Typedefs

using stan::math::internal::VectorXdd = Eigen::Matrix< double_d, -1, 1 >
 
using stan::math::internal::MatrixXdd = Eigen::Matrix< double_d, -1, -1 >
 

Functions

double_d stan::math::internal::get_random_perturbation_multiplier ()
 Generates a random number for perturbing a relatively robust representation.
 
void stan::math::internal::get_gresgorin (const Eigen::Ref< const Eigen::VectorXd > diagonal, const Eigen::Ref< const Eigen::VectorXd > subdiagonal, double &min_eigval, double &max_eigval)
 Calculates bounds on eigenvalues of a symmetric tridiagonal matrix T using Gresgorin discs.
 
double stan::math::internal::max_nan (double a, double b)
 NaN-favouring max.
 
double stan::math::internal::get_ldl (const Eigen::Ref< const Eigen::VectorXd > diagonal, const Eigen::Ref< const Eigen::VectorXd > subdiagonal, const double shift, VectorXdd &l, VectorXdd &d_plus)
 Calculates LDL decomposition of a shifted triagonal matrix T.
 
double stan::math::internal::find_initial_shift (const Eigen::Ref< const Eigen::VectorXd > diagonal, const Eigen::Ref< const Eigen::VectorXd > subdiagonal, VectorXdd &l0, VectorXdd &d0, const double min_eigval, const double max_eigval, const double max_ele_growth)
 Finds a good value for shift of the initial LDL factorization T - shift * I = L * D * L^T.
 
int stan::math::internal::get_sturm_count_ldl (const VectorXdd &l, const VectorXdd &d, const double_d shift)
 Calculates Sturm count of a LDL decomposition of a tridiagonal matrix - number of eigenvalues larger or equal to shift.
 
void stan::math::internal::eigenval_bisect_refine (const VectorXdd &l, const VectorXdd &d, double_d &low, double_d &high, const int i)
 Refines bounds on the i-th largest eigenvalue of LDL decomposition using bisection.
 
double stan::math::internal::get_shifted_ldl (const VectorXdd &l, const VectorXdd &d, const double_d shift, VectorXdd &l_plus, VectorXdd &d_plus)
 Shifts a LDL decomposition.
 
void stan::math::internal::find_shift (const VectorXdd &l, const VectorXdd &d, const double_d low, const double_d high, const double max_ele_growth, const double_d max_shift, VectorXdd &l2, VectorXdd &d2, double_d &shift, double &min_element_growth)
 Finds good shift and shifts a LDL decomposition so as to keep element growth low.
 
template<bool need_eigenvectors = true>
void stan::math::internal::mrrr_cl (const Eigen::Ref< const Eigen::VectorXd > diagonal, const Eigen::Ref< const Eigen::VectorXd > subdiagonal, Eigen::Ref< Eigen::VectorXd > eigenvalues, Eigen::Ref< Eigen::MatrixXd > eigenvectors, const double min_rel_sep=1e-4, const double maximum_ele_growth=15)
 Calculates eigenvalues and eigenvectors of a irreducible tridiagonal matrix T using multiple relatively robust representations (MRRR) algorithm.
 
template<bool need_eigenvectors = true>
void stan::math::internal::tridiagonal_eigensolver_cl (const matrix_cl< double > &diagonal_cl, const matrix_cl< double > &subdiagonal_cl, matrix_cl< double > &eigenvalues_cl, matrix_cl< double > &eigenvectors_cl, const double split_threshold=1e-15)
 Calculates eigenvalues and eigenvectors of a tridiagonal matrix T using MRRR algorithm.
 

Variables

static const double_d stan::math::internal::perturbation_range = 1e-20