diff options
author | 2016-07-18 10:44:15 +0200 | |
---|---|---|
committer | 2016-07-18 10:44:15 +0200 | |
commit | 0c3fe4aca502148ee57cbe1ccab04c74a6c7dfd9 (patch) | |
tree | 31a5741b63068ad874eb78b5cbabbe54408d7d5e /Eigen | |
parent | 5ea0864c81ef3a6fee0d5a45623589bbfc60d123 (diff) | |
parent | db9b1541935bf92dfa06a0f00cd81b593ea438a9 (diff) |
merge
Diffstat (limited to 'Eigen')
-rw-r--r-- | Eigen/src/Core/VectorwiseOp.h | 11 | ||||
-rw-r--r-- | Eigen/src/Eigenvalues/GeneralizedEigenSolver.h | 5 |
2 files changed, 13 insertions, 3 deletions
diff --git a/Eigen/src/Core/VectorwiseOp.h b/Eigen/src/Core/VectorwiseOp.h index 00a4a8c39..dd382e990 100644 --- a/Eigen/src/Core/VectorwiseOp.h +++ b/Eigen/src/Core/VectorwiseOp.h @@ -284,6 +284,7 @@ template<typename ExpressionType, int Direction> class VectorwiseOp typedef typename ReturnType<internal::member_any>::Type AnyReturnType; typedef PartialReduxExpr<ExpressionType, internal::member_count<Index>, Direction> CountReturnType; typedef typename ReturnType<internal::member_prod>::Type ProdReturnType; + typedef Reverse<const ExpressionType, Direction> ConstReverseReturnType; typedef Reverse<ExpressionType, Direction> ReverseReturnType; template<int p> struct LpNormReturnType { @@ -456,7 +457,15 @@ template<typename ExpressionType, int Direction> class VectorwiseOp * * \sa DenseBase::reverse() */ EIGEN_DEVICE_FUNC - const ReverseReturnType reverse() const + const ConstReverseReturnType reverse() const + { return ConstReverseReturnType( _expression() ); } + + /** \returns a writable matrix expression + * where each column (or row) are reversed. + * + * \sa reverse() const */ + EIGEN_DEVICE_FUNC + ReverseReturnType reverse() { return ReverseReturnType( _expression() ); } typedef Replicate<ExpressionType,(isVertical?Dynamic:1),(isHorizontal?Dynamic:1)> ReplicateReturnType; diff --git a/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h b/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h index 19730f9e4..6eeeb174e 100644 --- a/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +++ b/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h @@ -333,8 +333,9 @@ GeneralizedEigenSolver<MatrixType>::compute(const MatrixType& A, const MatrixTyp // T = [a 0] // [0 b] - RealScalar a = matT.coeff(i, i), - b = matT(i+1, i+1); // NOTE: using operator() instead of coeff() workarounds a MSVC bug. + RealScalar a = matT.diagonal().coeff(i), + b = matT.diagonal().coeff(i+1); + // ^^ NOTE: using diagonal()(i) instead of coeff(i,i) workarounds a MSVC bug. Matrix<RealScalar,2,2> S2 = m_matS.template block<2,2>(i,i) * Matrix<Scalar,2,1>(b,a).asDiagonal(); Scalar p = Scalar(0.5) * (S2.coeff(0,0) - S2.coeff(1,1)); |