LSST Applications g00274db5b6+edbf708997,g00d0e8bbd7+edbf708997,g199a45376c+5137f08352,g1fd858c14a+1d4b6db739,g262e1987ae+f4d9505c4f,g29ae962dfc+7156fb1a53,g2cef7863aa+73c82f25e4,g35bb328faa+edbf708997,g3e17d7035e+5b3adc59f5,g3fd5ace14f+852fa6fbcb,g47891489e3+6dc8069a4c,g53246c7159+edbf708997,g64539dfbff+9f17e571f4,g67b6fd64d1+6dc8069a4c,g74acd417e5+ae494d68d9,g786e29fd12+af89c03590,g7ae74a0b1c+a25e60b391,g7aefaa3e3d+536efcc10a,g7cc15d900a+d121454f8d,g87389fa792+a4172ec7da,g89139ef638+6dc8069a4c,g8d7436a09f+28c28d8d6d,g8ea07a8fe4+db21c37724,g92c671f44c+9f17e571f4,g98df359435+b2e6376b13,g99af87f6a8+b0f4ad7b8d,gac66b60396+966efe6077,gb88ae4c679+7dec8f19df,gbaa8f7a6c5+38b34f4976,gbf99507273+edbf708997,gc24b5d6ed1+9f17e571f4,gca7fc764a6+6dc8069a4c,gcc769fe2a4+97d0256649,gd7ef33dd92+6dc8069a4c,gdab6d2f7ff+ae494d68d9,gdbb4c4dda9+9f17e571f4,ge410e46f29+6dc8069a4c,geaed405ab2+e194be0d2b,w.2025.47
LSST Data Management Base Package
Loading...
Searching...
No Matches
lsst::afw::math::LeastSquares::Impl Class Referenceabstract

Public Types

enum  StateFlags {
  LOWER_FISHER_MATRIX = 0x001 , FULL_FISHER_MATRIX = 0x002 , RHS_VECTOR = 0x004 , SOLUTION_ARRAY = 0x008 ,
  COVARIANCE_ARRAY = 0x010 , DIAGNOSTIC_ARRAY = 0x020 , DESIGN_AND_DATA = 0x040
}
 

Public Member Functions

template<typename D>
void setRank (Eigen::MatrixBase< D > const &values)
 
void ensure (int desired)
 
virtual void factor ()=0
 
virtual void updateRank ()=0
 
virtual void updateSolution ()=0
 
virtual void updateCovariance ()=0
 
virtual void updateDiagnostic ()=0
 
 Impl (int dimension_, Factorization factorization_, double threshold_=std::numeric_limits< double >::epsilon())
 
virtual ~Impl ()=default
 

Public Attributes

int state
 
int dimension
 
int rank
 
Factorization factorization
 
Factorization whichDiagnostic
 
double threshold
 
Eigen::MatrixXd design
 
Eigen::VectorXd data
 
Eigen::MatrixXd fisher
 
Eigen::VectorXd rhs
 
ndarray::Array< double, 1, 1 > solution
 
ndarray::Array< double, 2, 2 > covariance
 
ndarray::Array< double, 1, 1 > diagnostic
 

Detailed Description

Definition at line 43 of file LeastSquares.cc.

Member Enumeration Documentation

◆ StateFlags

Enumerator
LOWER_FISHER_MATRIX 
FULL_FISHER_MATRIX 
RHS_VECTOR 
SOLUTION_ARRAY 
COVARIANCE_ARRAY 
DIAGNOSTIC_ARRAY 
DESIGN_AND_DATA 

Definition at line 45 of file LeastSquares.cc.

Constructor & Destructor Documentation

◆ Impl()

lsst::afw::math::LeastSquares::Impl::Impl ( int dimension_,
Factorization factorization_,
double threshold_ = std::numeric_limits<double>::epsilon() )
inlineexplicit

Definition at line 122 of file LeastSquares.cc.

126 :
127 state(0),
128 dimension(dimension_),
129 rank(dimension_),
130 factorization(factorization_),
131 whichDiagnostic(factorization_),
132 threshold(threshold_)
133 {}

◆ ~Impl()

virtual lsst::afw::math::LeastSquares::Impl::~Impl ( )
virtualdefault

Member Function Documentation

◆ ensure()

void lsst::afw::math::LeastSquares::Impl::ensure ( int desired)
inline

Definition at line 82 of file LeastSquares.cc.

82 {
84 if (desired & FULL_FISHER_MATRIX) desired |= LOWER_FISHER_MATRIX;
85 int toAdd = ~state & desired;
86 if (toAdd & LOWER_FISHER_MATRIX) {
87 assert(state & DESIGN_AND_DATA);
88 fisher = Eigen::MatrixXd::Zero(design.cols(), design.cols());
89 fisher.selfadjointView<Eigen::Lower>().rankUpdate(design.adjoint());
90 }
91 if (toAdd & FULL_FISHER_MATRIX) {
92 fisher.triangularView<Eigen::StrictlyUpper>() = fisher.adjoint();
93 }
94 if (toAdd & RHS_VECTOR) {
95 assert(state & DESIGN_AND_DATA);
96 rhs = design.adjoint() * data;
97 }
98 if (toAdd & SOLUTION_ARRAY) {
99 if (solution.isEmpty()) solution = ndarray::allocate(dimension);
101 }
102 if (toAdd & COVARIANCE_ARRAY) {
103 if (covariance.isEmpty()) covariance = ndarray::allocate(dimension, dimension);
105 }
106 if (toAdd & DIAGNOSTIC_ARRAY) {
107 if (diagnostic.isEmpty()) diagnostic = ndarray::allocate(dimension);
109 }
110 state |= toAdd;
111 }
ndarray::Array< double, 1, 1 > solution
ndarray::Array< double, 2, 2 > covariance
ndarray::Array< double, 1, 1 > diagnostic

◆ factor()

virtual void lsst::afw::math::LeastSquares::Impl::factor ( )
pure virtual

◆ setRank()

template<typename D>
void lsst::afw::math::LeastSquares::Impl::setRank ( Eigen::MatrixBase< D > const & values)
inline

Definition at line 72 of file LeastSquares.cc.

72 {
73 double cond = threshold * values[0];
74 if (cond <= 0.0) {
75 rank = 0;
76 } else {
77 for (rank = dimension; (rank > 1) && (values[rank - 1] < cond); --rank)
78 ;
79 }
80 }

◆ updateCovariance()

virtual void lsst::afw::math::LeastSquares::Impl::updateCovariance ( )
pure virtual

◆ updateDiagnostic()

virtual void lsst::afw::math::LeastSquares::Impl::updateDiagnostic ( )
pure virtual

◆ updateRank()

virtual void lsst::afw::math::LeastSquares::Impl::updateRank ( )
pure virtual

◆ updateSolution()

virtual void lsst::afw::math::LeastSquares::Impl::updateSolution ( )
pure virtual

Member Data Documentation

◆ covariance

ndarray::Array<double, 2, 2> lsst::afw::math::LeastSquares::Impl::covariance

Definition at line 68 of file LeastSquares.cc.

◆ data

Eigen::VectorXd lsst::afw::math::LeastSquares::Impl::data

Definition at line 63 of file LeastSquares.cc.

◆ design

Eigen::MatrixXd lsst::afw::math::LeastSquares::Impl::design

Definition at line 62 of file LeastSquares.cc.

◆ diagnostic

ndarray::Array<double, 1, 1> lsst::afw::math::LeastSquares::Impl::diagnostic

Definition at line 69 of file LeastSquares.cc.

◆ dimension

int lsst::afw::math::LeastSquares::Impl::dimension

Definition at line 56 of file LeastSquares.cc.

◆ factorization

Factorization lsst::afw::math::LeastSquares::Impl::factorization

Definition at line 58 of file LeastSquares.cc.

◆ fisher

Eigen::MatrixXd lsst::afw::math::LeastSquares::Impl::fisher

Definition at line 64 of file LeastSquares.cc.

◆ rank

int lsst::afw::math::LeastSquares::Impl::rank

Definition at line 57 of file LeastSquares.cc.

◆ rhs

Eigen::VectorXd lsst::afw::math::LeastSquares::Impl::rhs

Definition at line 65 of file LeastSquares.cc.

◆ solution

ndarray::Array<double, 1, 1> lsst::afw::math::LeastSquares::Impl::solution

Definition at line 67 of file LeastSquares.cc.

◆ state

int lsst::afw::math::LeastSquares::Impl::state

Definition at line 55 of file LeastSquares.cc.

◆ threshold

double lsst::afw::math::LeastSquares::Impl::threshold

Definition at line 60 of file LeastSquares.cc.

◆ whichDiagnostic

Factorization lsst::afw::math::LeastSquares::Impl::whichDiagnostic

Definition at line 59 of file LeastSquares.cc.


The documentation for this class was generated from the following file: