Use lpNorm<1>() to compute l1 norms in LLT and LDLT.

This commit is contained in:
Rasmus Munk Larsen 2016-04-07 15:49:30 -07:00
parent 4d07064a3d
commit 0b5546d182
2 changed files with 8 additions and 8 deletions

View File

@ -459,16 +459,16 @@ LDLT<MatrixType,_UpLo>& LDLT<MatrixType,_UpLo>::compute(const EigenBase<InputTyp
m_l1_norm = RealScalar(0);
if (_UpLo == Lower) {
for (int col = 0; col < size; ++col) {
const RealScalar abs_col_sum = m_matrix.col(col).tail(size - col).cwiseAbs().sum() +
m_matrix.row(col).head(col).cwiseAbs().sum();
const RealScalar abs_col_sum = m_matrix.col(col).tail(size - col).template lpNorm<1>() +
m_matrix.row(col).head(col).template lpNorm<1>();
if (abs_col_sum > m_l1_norm) {
m_l1_norm = abs_col_sum;
}
}
} else {
for (int col = 0; col < a.cols(); ++col) {
const RealScalar abs_col_sum = m_matrix.col(col).head(col).cwiseAbs().sum() +
m_matrix.row(col).tail(size - col).cwiseAbs().sum();
const RealScalar abs_col_sum = m_matrix.col(col).head(col).template lpNorm<1>() +
m_matrix.row(col).tail(size - col).template lpNorm<1>();
if (abs_col_sum > m_l1_norm) {
m_l1_norm = abs_col_sum;
}

View File

@ -414,16 +414,16 @@ LLT<MatrixType,_UpLo>& LLT<MatrixType,_UpLo>::compute(const EigenBase<InputType>
m_l1_norm = RealScalar(0);
if (_UpLo == Lower) {
for (int col = 0; col < size; ++col) {
const RealScalar abs_col_sum = m_matrix.col(col).tail(size - col).cwiseAbs().sum() +
m_matrix.row(col).head(col).cwiseAbs().sum();
const RealScalar abs_col_sum = m_matrix.col(col).tail(size - col).template lpNorm<1>() +
m_matrix.row(col).head(col).template lpNorm<1>();
if (abs_col_sum > m_l1_norm) {
m_l1_norm = abs_col_sum;
}
}
} else {
for (int col = 0; col < a.cols(); ++col) {
const RealScalar abs_col_sum = m_matrix.col(col).head(col).cwiseAbs().sum() +
m_matrix.row(col).tail(size - col).cwiseAbs().sum();
const RealScalar abs_col_sum = m_matrix.col(col).head(col).template lpNorm<1>() +
m_matrix.row(col).tail(size - col).template lpNorm<1>();
if (abs_col_sum > m_l1_norm) {
m_l1_norm = abs_col_sum;
}