aboutsummaryrefslogtreecommitdiffhomepage
path: root/unsupported/Eigen/src/MatrixFunctions
diff options
context:
space:
mode:
authorGravatar Chen-Pang He <jdh8@ms63.hinet.net>2013-07-20 17:49:38 +0800
committerGravatar Chen-Pang He <jdh8@ms63.hinet.net>2013-07-20 17:49:38 +0800
commitc587e63631b6c37e842033c2b0438f269865dd0a (patch)
tree30aabda138d279b9fe2c57fd09ed638dc69e0d31 /unsupported/Eigen/src/MatrixFunctions
parent4b780553e05e35cb4813cd57eaf12befb6062891 (diff)
Simplify MatrixPower::split
Diffstat (limited to 'unsupported/Eigen/src/MatrixFunctions')
-rw-r--r--unsupported/Eigen/src/MatrixFunctions/MatrixPower.h22
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>