aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Eigenvalues
diff options
context:
space:
mode:
authorGravatar David H. Bailey <anonymous@invalid.net>2011-05-23 11:20:13 +0200
committerGravatar David H. Bailey <anonymous@invalid.net>2011-05-23 11:20:13 +0200
commit074b067624e45c8e9f42f2347509d06d0d437226 (patch)
treee3c83271afbb175a05970b213aa841075a99cd4f /Eigen/src/Eigenvalues
parent7209d6a12610d4682c65a99f12b0d0278fbbe81d (diff)
fix implicit scalar conversions (needed to support fancy scalar types, see bug #276)
Diffstat (limited to 'Eigen/src/Eigenvalues')
-rw-r--r--Eigen/src/Eigenvalues/EigenSolver.h10
-rw-r--r--Eigen/src/Eigenvalues/RealSchur.h6
2 files changed, 8 insertions, 8 deletions
diff --git a/Eigen/src/Eigenvalues/EigenSolver.h b/Eigen/src/Eigenvalues/EigenSolver.h
index 1ff24e5c0..af9cf357b 100644
--- a/Eigen/src/Eigenvalues/EigenSolver.h
+++ b/Eigen/src/Eigenvalues/EigenSolver.h
@@ -450,7 +450,7 @@ void EigenSolver<MatrixType>::doComputeEigenvectors()
Scalar q = m_eivalues.coeff(n).imag();
// Scalar vector
- if (q == 0)
+ if (q == static_cast<Scalar>(0))
{
Scalar lastr=0, lastw=0;
Index l = n;
@@ -491,12 +491,12 @@ void EigenSolver<MatrixType>::doComputeEigenvectors()
// Overflow control
Scalar t = internal::abs(m_matT.coeff(i,n));
- if ((eps * t) * t > 1)
+ if ((eps * t) * t > Scalar(1))
m_matT.col(n).tail(size-i) /= t;
}
}
}
- else if (q < 0 && n > 0) // Complex vector
+ else if (q < Scalar(0) && n > 0) // Complex vector
{
Scalar lastra=0, lastsa=0, lastw=0;
Index l = n-1;
@@ -530,7 +530,7 @@ void EigenSolver<MatrixType>::doComputeEigenvectors()
else
{
l = i;
- if (m_eivalues.coeff(i).imag() == 0)
+ if (m_eivalues.coeff(i).imag() == static_cast<Scalar>(0))
{
std::complex<Scalar> cc = cdiv(-ra,-sa,w,q);
m_matT.coeffRef(i,n-1) = internal::real(cc);
@@ -564,7 +564,7 @@ void EigenSolver<MatrixType>::doComputeEigenvectors()
// Overflow control
Scalar t = std::max(internal::abs(m_matT.coeff(i,n-1)),internal::abs(m_matT.coeff(i,n)));
- if ((eps * t) * t > 1)
+ if ((eps * t) * t > static_cast<Scalar>(1))
m_matT.block(i, n-1, size-i, 2) /= t;
}
diff --git a/Eigen/src/Eigenvalues/RealSchur.h b/Eigen/src/Eigenvalues/RealSchur.h
index e8b2f1a99..11ee5f5e8 100644
--- a/Eigen/src/Eigenvalues/RealSchur.h
+++ b/Eigen/src/Eigenvalues/RealSchur.h
@@ -324,11 +324,11 @@ inline void RealSchur<MatrixType>::splitOffTwoRows(Index iu, bool computeU, Scal
m_matT.coeffRef(iu,iu) += exshift;
m_matT.coeffRef(iu-1,iu-1) += exshift;
- if (q >= 0) // Two real eigenvalues
+ if (q >= static_cast<Scalar>(0)) // Two real eigenvalues
{
Scalar z = internal::sqrt(internal::abs(q));
JacobiRotation<Scalar> rot;
- if (p >= 0)
+ if (p >= static_cast<Scalar>(0))
rot.makeGivens(p + z, m_matT.coeff(iu, iu-1));
else
rot.makeGivens(p - z, m_matT.coeff(iu, iu-1));
@@ -369,7 +369,7 @@ inline void RealSchur<MatrixType>::computeShift(Index iu, Index iter, Scalar& ex
{
Scalar s = (shiftInfo.coeff(1) - shiftInfo.coeff(0)) / Scalar(2.0);
s = s * s + shiftInfo.coeff(2);
- if (s > 0)
+ if (s > static_cast<Scalar>(0))
{
s = internal::sqrt(s);
if (shiftInfo.coeff(1) < shiftInfo.coeff(0))