diff options
author | Chen-Pang He <jdh8@ms63.hinet.net> | 2013-07-20 17:49:38 +0800 |
---|---|---|
committer | Chen-Pang He <jdh8@ms63.hinet.net> | 2013-07-20 17:49:38 +0800 |
commit | c587e63631b6c37e842033c2b0438f269865dd0a (patch) | |
tree | 30aabda138d279b9fe2c57fd09ed638dc69e0d31 /unsupported/Eigen/src/MatrixFunctions | |
parent | 4b780553e05e35cb4813cd57eaf12befb6062891 (diff) |
Simplify MatrixPower::split
Diffstat (limited to 'unsupported/Eigen/src/MatrixFunctions')
-rw-r--r-- | unsupported/Eigen/src/MatrixFunctions/MatrixPower.h | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/unsupported/Eigen/src/MatrixFunctions/MatrixPower.h b/unsupported/Eigen/src/MatrixFunctions/MatrixPower.h index e1de7f606..b43789bd0 100644 --- a/unsupported/Eigen/src/MatrixFunctions/MatrixPower.h +++ b/unsupported/Eigen/src/MatrixFunctions/MatrixPower.h @@ -381,7 +381,7 @@ class MatrixPower : internal::noncopyable RealScalar m_conditionNumber; Index m_rank, m_nulls; - RealScalar split(RealScalar, RealScalar*); + void split(RealScalar&, RealScalar&); void initialize(); template<typename ResultType> @@ -414,26 +414,26 @@ void MatrixPower<MatrixType>::compute(ResultType& res, RealScalar p) res(0,0) = std::pow(m_A.coeff(0,0), p); break; default: - RealScalar intpart, x = split(p, &intpart); + RealScalar intpart; + split(p, intpart); computeIntPower(res, intpart); - if (x) computeFracPower(res, x); + if (p) computeFracPower(res, p); } } template<typename MatrixType> -typename MatrixPower<MatrixType>::RealScalar MatrixPower<MatrixType>::split(RealScalar x, RealScalar* intpart) +void MatrixPower<MatrixType>::split(RealScalar& p, RealScalar& intpart) { - *intpart = std::floor(x); - RealScalar res = x - *intpart; + intpart = std::floor(p); + p -= intpart; - if (!m_conditionNumber && res) + if (!m_conditionNumber && p) initialize(); - if (res > RealScalar(0.5) && res > (1-res) * std::pow(m_conditionNumber, res)) { - --res; - ++*intpart; + if (p > RealScalar(0.5) && p > (1-p) * std::pow(m_conditionNumber, p)) { + --p; + ++intpart; } - return res; } template<typename MatrixType> |