aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen
diff options
context:
space:
mode:
authorGravatar Benoit Jacob <jacob.benoit.1@gmail.com>2010-02-26 21:47:54 -0500
committerGravatar Benoit Jacob <jacob.benoit.1@gmail.com>2010-02-26 21:47:54 -0500
commit2c9a91812eb9aaee7c1650bd2985fed63a48b196 (patch)
treed1ed0c10ae289a558bd19d165b7e166370f462d5 /Eigen
parent814e40c72af6277875179672341204efa0a2c502 (diff)
parentc72a5074e681b6680378a2231a8c4270aa7f23db (diff)
merge
Diffstat (limited to 'Eigen')
-rw-r--r--Eigen/src/Core/Assign.h2
-rw-r--r--Eigen/src/Eigenvalues/ComplexSchur.h6
2 files changed, 5 insertions, 3 deletions
diff --git a/Eigen/src/Core/Assign.h b/Eigen/src/Core/Assign.h
index 38c68778f..f806ba572 100644
--- a/Eigen/src/Core/Assign.h
+++ b/Eigen/src/Core/Assign.h
@@ -381,7 +381,7 @@ struct ei_unaligned_assign_impl<false>
template<typename Derived1, typename Derived2>
struct ei_assign_impl<Derived1, Derived2, LinearVectorizedTraversal, NoUnrolling>
{
- inline static void run(Derived1 &dst, const Derived2 &src)
+ EIGEN_STRONG_INLINE static void run(Derived1 &dst, const Derived2 &src)
{
const int size = dst.size();
const int packetSize = ei_packet_traits<typename Derived1::Scalar>::size;
diff --git a/Eigen/src/Eigenvalues/ComplexSchur.h b/Eigen/src/Eigenvalues/ComplexSchur.h
index 0fad415a2..531ebf709 100644
--- a/Eigen/src/Eigenvalues/ComplexSchur.h
+++ b/Eigen/src/Eigenvalues/ComplexSchur.h
@@ -218,10 +218,12 @@ void ComplexSchur<MatrixType>::compute(const MatrixType& matrix, bool skipU)
sf = t.cwiseAbs().sum();
t /= sf; // the normalization by sf is to avoid under/overflow
- b = t.coeff(0,0) + t.coeff(1,1);
+ b = t.coeff(0,1) * t.coeff(1,0);
c = t.coeff(0,0) - t.coeff(1,1);
- disc = ei_sqrt(c*c + RealScalar(4)*t.coeff(0,1)*t.coeff(1,0));
+ disc = ei_sqrt(c*c + RealScalar(4)*b);
+ c = t.coeff(0,0) * t.coeff(1,1) - b;
+ b = t.coeff(0,0) + t.coeff(1,1);
r1 = (b+disc)/RealScalar(2);
r2 = (b-disc)/RealScalar(2);