aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/StableNorm.h
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2015-06-22 17:48:28 +0200
committerGravatar Gael Guennebaud <g.gael@free.fr>2015-06-22 17:48:28 +0200
commitbb3a9b4941ad45704b6929453d5210e3d7be26cc (patch)
tree47045933ff22142429f5125b9a7a463c48b7c5fe /Eigen/src/Core/StableNorm.h
parent476beed7f837cbed9abc401f685c1882936fa959 (diff)
Use Ref<> to bypass forceAlignmentIf
Diffstat (limited to 'Eigen/src/Core/StableNorm.h')
-rw-r--r--Eigen/src/Core/StableNorm.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/Eigen/src/Core/StableNorm.h b/Eigen/src/Core/StableNorm.h
index 83a973365..f702fd8e2 100644
--- a/Eigen/src/Core/StableNorm.h
+++ b/Eigen/src/Core/StableNorm.h
@@ -164,12 +164,14 @@ MatrixBase<Derived>::stableNorm() const
enum {
Alignment = (int(Flags)&DirectAccessBit) || (int(Flags)&AlignedBit) ? 1 : 0
};
+ typedef typename internal::conditional<Alignment, Ref<const Matrix<Scalar,Dynamic,1,0,blockSize,1>, Aligned>,
+ typename Base::ConstSegmentReturnType>::type SegmentWrapper;
Index n = size();
Index bi = internal::first_aligned(derived());
if (bi>0)
internal::stable_norm_kernel(this->head(bi), ssq, scale, invScale);
for (; bi<n; bi+=blockSize)
- internal::stable_norm_kernel(this->segment(bi,numext::mini(blockSize, n - bi)).template forceAlignedAccessIf<Alignment>(), ssq, scale, invScale);
+ internal::stable_norm_kernel(SegmentWrapper(this->segment(bi,numext::mini(blockSize, n - bi))), ssq, scale, invScale);
return scale * sqrt(ssq);
}