aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2015-12-11 23:07:33 +0100
committerGravatar Gael Guennebaud <g.gael@free.fr>2015-12-11 23:07:33 +0100
commitc884a8e7f4c0a25ac93a196c8eead84e8077a16a (patch)
tree098710fe628c84c98ad9cef1edb7e7cf44fb1e93 /Eigen
parent4d708457d07c0b9169d9e8336bb4d090791acd5d (diff)
parentc684a07eba30815ce8928d691e57cb26c0d01c07 (diff)
merge
Diffstat (limited to 'Eigen')
-rw-r--r--Eigen/src/Core/CoreEvaluators.h2
-rw-r--r--Eigen/src/Core/functors/UnaryFunctors.h9
2 files changed, 8 insertions, 3 deletions
diff --git a/Eigen/src/Core/CoreEvaluators.h b/Eigen/src/Core/CoreEvaluators.h
index 42ad452f7..f97dc33de 100644
--- a/Eigen/src/Core/CoreEvaluators.h
+++ b/Eigen/src/Core/CoreEvaluators.h
@@ -994,7 +994,7 @@ struct evaluator<PartialReduxExpr<ArgType, MemberOp, Direction> >
CoeffReadCost = TraversalSize==Dynamic ? HugeCost
: TraversalSize * evaluator<ArgType>::CoeffReadCost + int(CostOpType::value),
- Flags = (traits<XprType>::Flags&RowMajorBit) | (evaluator<ArgType>::Flags&HereditaryBits),
+ Flags = (traits<XprType>::Flags&RowMajorBit) | (evaluator<ArgType>::Flags&(HereditaryBits&(~RowMajorBit))),
Alignment = 0 // FIXME this will need to be improved once PartialReduxExpr is vectorized
};
diff --git a/Eigen/src/Core/functors/UnaryFunctors.h b/Eigen/src/Core/functors/UnaryFunctors.h
index e6c665fb6..e630acc38 100644
--- a/Eigen/src/Core/functors/UnaryFunctors.h
+++ b/Eigen/src/Core/functors/UnaryFunctors.h
@@ -676,8 +676,13 @@ struct scalar_sign_op<Scalar,true> {
EIGEN_EMPTY_STRUCT_CTOR(scalar_sign_op)
EIGEN_DEVICE_FUNC inline const Scalar operator() (const Scalar& a) const
{
- typename NumTraits<Scalar>::Real aa = std::abs(a);
- return (aa==0) ? Scalar(0) : (a/aa);
+ using std::abs;
+ typedef typename NumTraits<Scalar>::Real real_type;
+ real_type aa = abs(a);
+ if (aa==0)
+ return Scalar(0);
+ aa = 1./aa;
+ return Scalar(real(a)*aa, imag(a)*aa );
}
//TODO
//template <typename Packet>