22 template <
typename QRSolver,
typename VectorType>
61 wa1.tail(
n - rank).setZero();
63 wa1.head(rank) =
s.topLeftCorner(rank, rank).template triangularView<Upper>().solve(qtb.head(rank));
65 x =
qr.colsPermutation() * wa1;
71 wa2 =
diag.cwiseProduct(
x);
72 dxnorm = wa2.blueNorm();
73 fp = dxnorm - m_delta;
74 if (fp <=
Scalar(0.1) * m_delta) {
84 wa1 =
qr.colsPermutation().inverse() *
diag.cwiseProduct(wa2) / dxnorm;
85 s.topLeftCorner(
n,
n).transpose().template triangularView<Lower>().solveInPlace(wa1);
86 temp = wa1.blueNorm();
87 parl = fp / m_delta / temp / temp;
91 for (
j = 0;
j <
n; ++
j) wa1[
j] =
s.col(
j).head(
j + 1).dot(qtb.head(
j + 1)) /
diag[
qr.colsPermutation().indices()(
j)];
93 gnorm = wa1.stableNorm();
94 paru = gnorm / m_delta;
101 if (
par == 0.)
par = gnorm / dxnorm;
114 wa2 =
diag.cwiseProduct(
x);
115 dxnorm = wa2.blueNorm();
117 fp = dxnorm - m_delta;
122 if (
abs(fp) <=
Scalar(0.1) * m_delta || (parl == 0. && fp <= temp && temp < 0.) || iter == 10)
break;
125 wa1 =
qr.colsPermutation().inverse() *
diag.cwiseProduct(wa2 / dxnorm);
127 for (
j = 0;
j <
n; ++
j) {
132 temp = wa1.blueNorm();
133 parc = fp / m_delta / temp / temp;
142 if (iter == 0)
par = 0.;
AnnoyingScalar abs(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:135
AnnoyingScalar sqrt(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:134
int i
Definition: BiCGSTAB_step_by_step.cpp:9
const unsigned n
Definition: CG3DPackingUnitTest.cpp:11
HouseholderQR< MatrixXf > qr(A)
#define eigen_assert(x)
Definition: Macros.h:910
SCALAR Scalar
Definition: bench_gemm.cpp:45
MatrixXf MatrixType
Definition: benchmark-blocking-sizes.cpp:52
#define min(a, b)
Definition: datatypes.h:22
#define max(a, b)
Definition: datatypes.h:23
RealScalar s
Definition: level1_cplx_impl.h:130
const char const char const char * diag
Definition: level2_impl.h:86
void lmqrsolv(Matrix< Scalar, Rows, Cols > &s, const PermutationMatrix< Dynamic, Dynamic, PermIndex > &iPerm, const Matrix< Scalar, Dynamic, 1 > &diag, const Matrix< Scalar, Dynamic, 1 > &qtb, Matrix< Scalar, Dynamic, 1 > &x, Matrix< Scalar, Dynamic, 1 > &sdiag)
Definition: LMqrsolv.h:26
void lmpar2(const QRSolver &qr, const VectorType &diag, const VectorType &qtb, typename VectorType::Scalar m_delta, typename VectorType::Scalar &par, VectorType &x)
Definition: LMpar.h:23
Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:70
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:83
string par
Definition: calibrate.py:135
Definition: Eigen_Colamd.h:49
list x
Definition: plotDoE.py:28
Definition: fft_test_shared.h:66
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2