From 307c4fc2922d950b90ee86387afa5de77f670349 Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Tue, 23 Jun 2015 10:10:17 +0200 Subject: Workaround missalignment produced by first_aligned for PacketSize==1 and size==1 --- Eigen/src/Core/StableNorm.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'Eigen/src/Core/StableNorm.h') diff --git a/Eigen/src/Core/StableNorm.h b/Eigen/src/Core/StableNorm.h index f702fd8e2..f9cd01b7e 100644 --- a/Eigen/src/Core/StableNorm.h +++ b/Eigen/src/Core/StableNorm.h @@ -157,6 +157,7 @@ inline typename NumTraits::Scalar>::Real MatrixBase::stableNorm() const { using std::sqrt; + using std::abs; const Index blockSize = 4096; RealScalar scale(0); RealScalar invScale(1); @@ -167,6 +168,10 @@ MatrixBase::stableNorm() const typedef typename internal::conditional, Aligned>, typename Base::ConstSegmentReturnType>::type SegmentWrapper; Index n = size(); + + if(n==1) + return abs(this->coeff(0)); + Index bi = internal::first_aligned(derived()); if (bi>0) internal::stable_norm_kernel(this->head(bi), ssq, scale, invScale); -- cgit v1.2.3