Loading [MathJax]/extensions/TeX/AMSsymbols.js
Automatic Differentiation
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
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