mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-06-22 08:52:15 +08:00
Ensured that all branches of MatrixLogarithmAtomic::getPadeDegree return values.
This commit is contained in:
parent
dee866a99a
commit
42c1b9a8dd
@ -172,10 +172,11 @@ int MatrixLogarithmAtomic<MatrixType>::getPadeDegree(float normTminusI)
|
|||||||
{
|
{
|
||||||
const float maxNormForPade[] = { 2.5111573934555054e-1 /* degree = 3 */ , 4.0535837411880493e-1,
|
const float maxNormForPade[] = { 2.5111573934555054e-1 /* degree = 3 */ , 4.0535837411880493e-1,
|
||||||
5.3149729967117310e-1 };
|
5.3149729967117310e-1 };
|
||||||
for (int degree = 3; degree <= maxPadeDegree; ++degree)
|
int degree = 3
|
||||||
|
for (; degree <= maxPadeDegree; ++degree)
|
||||||
if (normTminusI <= maxNormForPade[degree - minPadeDegree])
|
if (normTminusI <= maxNormForPade[degree - minPadeDegree])
|
||||||
return degree;
|
break;
|
||||||
assert(false); // this line should never be reached
|
return degree;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* \brief Get suitable degree for Pade approximation. (specialized for RealScalar = double) */
|
/* \brief Get suitable degree for Pade approximation. (specialized for RealScalar = double) */
|
||||||
@ -184,10 +185,11 @@ int MatrixLogarithmAtomic<MatrixType>::getPadeDegree(double normTminusI)
|
|||||||
{
|
{
|
||||||
const double maxNormForPade[] = { 1.6206284795015624e-2 /* degree = 3 */ , 5.3873532631381171e-2,
|
const double maxNormForPade[] = { 1.6206284795015624e-2 /* degree = 3 */ , 5.3873532631381171e-2,
|
||||||
1.1352802267628681e-1, 1.8662860613541288e-1, 2.642960831111435e-1 };
|
1.1352802267628681e-1, 1.8662860613541288e-1, 2.642960831111435e-1 };
|
||||||
for (int degree = 3; degree <= maxPadeDegree; ++degree)
|
int degree = 3;
|
||||||
|
for (; degree <= maxPadeDegree; ++degree)
|
||||||
if (normTminusI <= maxNormForPade[degree - minPadeDegree])
|
if (normTminusI <= maxNormForPade[degree - minPadeDegree])
|
||||||
return degree;
|
break;
|
||||||
assert(false); // this line should never be reached
|
return degree;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* \brief Get suitable degree for Pade approximation. (specialized for RealScalar = long double) */
|
/* \brief Get suitable degree for Pade approximation. (specialized for RealScalar = long double) */
|
||||||
@ -214,10 +216,11 @@ int MatrixLogarithmAtomic<MatrixType>::getPadeDegree(long double normTminusI)
|
|||||||
3.6688019729653446926585242192447447e-2, 5.9290962294020186998954055264528393e-2,
|
3.6688019729653446926585242192447447e-2, 5.9290962294020186998954055264528393e-2,
|
||||||
8.6998436081634343903250580992127677e-2, 1.1880960220216759245467951592883642e-1 };
|
8.6998436081634343903250580992127677e-2, 1.1880960220216759245467951592883642e-1 };
|
||||||
#endif
|
#endif
|
||||||
for (int degree = 3; degree <= maxPadeDegree; ++degree)
|
int degree = 3
|
||||||
|
for (; degree <= maxPadeDegree; ++degree)
|
||||||
if (normTminusI <= maxNormForPade[degree - minPadeDegree])
|
if (normTminusI <= maxNormForPade[degree - minPadeDegree])
|
||||||
return degree;
|
break;
|
||||||
assert(false); // this line should never be reached
|
return degree;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* \brief Compute Pade approximation to matrix logarithm */
|
/* \brief Compute Pade approximation to matrix logarithm */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user