From 074b067624e45c8e9f42f2347509d06d0d437226 Mon Sep 17 00:00:00 2001 From: "David H. Bailey" Date: Mon, 23 May 2011 11:20:13 +0200 Subject: fix implicit scalar conversions (needed to support fancy scalar types, see bug #276) --- Eigen/src/Eigenvalues/EigenSolver.h | 10 +++++----- Eigen/src/Eigenvalues/RealSchur.h | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) (limited to 'Eigen/src/Eigenvalues') 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::doComputeEigenvectors() Scalar q = m_eivalues.coeff(n).imag(); // Scalar vector - if (q == 0) + if (q == static_cast(0)) { Scalar lastr=0, lastw=0; Index l = n; @@ -491,12 +491,12 @@ void EigenSolver::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::doComputeEigenvectors() else { l = i; - if (m_eivalues.coeff(i).imag() == 0) + if (m_eivalues.coeff(i).imag() == static_cast(0)) { std::complex cc = cdiv(-ra,-sa,w,q); m_matT.coeffRef(i,n-1) = internal::real(cc); @@ -564,7 +564,7 @@ void EigenSolver::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(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::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(0)) // Two real eigenvalues { Scalar z = internal::sqrt(internal::abs(q)); JacobiRotation rot; - if (p >= 0) + if (p >= static_cast(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::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(0)) { s = internal::sqrt(s); if (shiftInfo.coeff(1) < shiftInfo.coeff(0)) -- cgit v1.2.3