aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/StableNorm.h
diff options
context:
space:
mode:
authorGravatar Benoit Jacob <jacob.benoit.1@gmail.com>2010-05-08 15:57:56 -0400
committerGravatar Benoit Jacob <jacob.benoit.1@gmail.com>2010-05-08 15:57:56 -0400
commiteda2795f51f8defdacfb21b2e38a4e6b8bece123 (patch)
treecb6e82265d2cdf3b76a6eb11c20383e8682b365a /Eigen/src/Core/StableNorm.h
parent5deda974135658c393c1055e4e99705510df5d36 (diff)
use modern ei_first_aligned function, dont try compiling coeffRef() on rvalue expressions.
Diffstat (limited to 'Eigen/src/Core/StableNorm.h')
-rw-r--r--Eigen/src/Core/StableNorm.h10
1 files changed, 3 insertions, 7 deletions
diff --git a/Eigen/src/Core/StableNorm.h b/Eigen/src/Core/StableNorm.h
index 70371d8ba..c2ce93779 100644
--- a/Eigen/src/Core/StableNorm.h
+++ b/Eigen/src/Core/StableNorm.h
@@ -62,13 +62,9 @@ MatrixBase<Derived>::stableNorm() const
Alignment = (int(Flags)&DirectAccessBit) || (int(Flags)&AlignedBit) ? 1 : 0
};
int n = size();
- int bi=0;
- if ((int(Flags)&DirectAccessBit) && !(int(Flags)&AlignedBit))
- {
- bi = ei_first_aligned(&const_cast_derived().coeffRef(0), n);
- if (bi>0)
- ei_stable_norm_kernel(this->head(bi), ssq, scale, invScale);
- }
+ int bi = ei_first_aligned(derived());
+ if (bi>0)
+ ei_stable_norm_kernel(this->head(bi), ssq, scale, invScale);
for (; bi<n; bi+=blockSize)
ei_stable_norm_kernel(this->segment(bi,std::min(blockSize, n - bi)).template forceAlignedAccessIf<Alignment>(), ssq, scale, invScale);
return scale * ei_sqrt(ssq);