LSST Applications  21.0.0+04719a4bac,21.0.0-1-ga51b5d4+f5e6047307,21.0.0-11-g2b59f77+a9c1acf22d,21.0.0-11-ga42c5b2+86977b0b17,21.0.0-12-gf4ce030+76814010d2,21.0.0-13-g1721dae+760e7a6536,21.0.0-13-g3a573fe+768d78a30a,21.0.0-15-g5a7caf0+f21cbc5713,21.0.0-16-g0fb55c1+b60e2d390c,21.0.0-19-g4cded4ca+71a93a33c0,21.0.0-2-g103fe59+bb20972958,21.0.0-2-g45278ab+04719a4bac,21.0.0-2-g5242d73+3ad5d60fb1,21.0.0-2-g7f82c8f+8babb168e8,21.0.0-2-g8f08a60+06509c8b61,21.0.0-2-g8faa9b5+616205b9df,21.0.0-2-ga326454+8babb168e8,21.0.0-2-gde069b7+5e4aea9c2f,21.0.0-2-gecfae73+1d3a86e577,21.0.0-2-gfc62afb+3ad5d60fb1,21.0.0-25-g1d57be3cd+e73869a214,21.0.0-3-g357aad2+ed88757d29,21.0.0-3-g4a4ce7f+3ad5d60fb1,21.0.0-3-g4be5c26+3ad5d60fb1,21.0.0-3-g65f322c+e0b24896a3,21.0.0-3-g7d9da8d+616205b9df,21.0.0-3-ge02ed75+a9c1acf22d,21.0.0-4-g591bb35+a9c1acf22d,21.0.0-4-g65b4814+b60e2d390c,21.0.0-4-gccdca77+0de219a2bc,21.0.0-4-ge8a399c+6c55c39e83,21.0.0-5-gd00fb1e+05fce91b99,21.0.0-6-gc675373+3ad5d60fb1,21.0.0-64-g1122c245+4fb2b8f86e,21.0.0-7-g04766d7+cd19d05db2,21.0.0-7-gdf92d54+04719a4bac,21.0.0-8-g5674e7b+d1bd76f71f,master-gac4afde19b+a9c1acf22d,w.2021.13
LSST Data Management Base Package
Public Types | Public Member Functions | Public Attributes | List of all members
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_, double threshold_=std::numeric_limits< double >::epsilon())
 
virtual ~Impl ()
 

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_,
double  threshold_ = std::numeric_limits<double>::epsilon() 
)
inline

◆ ~Impl()

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

Definition at line 125 of file LeastSquares.cc.

125 {}

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);
100  updateSolution();
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
Definition: LeastSquares.cc:67
ndarray::Array< double, 2, 2 > covariance
Definition: LeastSquares.cc:68
ndarray::Array< double, 1, 1 > diagnostic
Definition: LeastSquares.cc:69

◆ 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: