From 0bb12fa61437e55ce563d076938593bebff7f0fc Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Tue, 1 Dec 2015 14:38:47 +0100 Subject: Add LU::transpose().solve() and LU::adjoint().solve() API. --- Eigen/src/Core/Solve.h | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) (limited to 'Eigen/src/Core/Solve.h') diff --git a/Eigen/src/Core/Solve.h b/Eigen/src/Core/Solve.h index 2d163fe2a..ba2ee53b8 100644 --- a/Eigen/src/Core/Solve.h +++ b/Eigen/src/Core/Solve.h @@ -34,12 +34,11 @@ template struct s template struct solve_traits { - typedef typename Decomposition::MatrixType MatrixType; typedef Matrix PlainObject; }; @@ -145,6 +144,28 @@ struct Assignment, internal::assign_op +struct Assignment,RhsType>, internal::assign_op, Dense2Dense, Scalar> +{ + typedef Solve,RhsType> SrcXprType; + static void run(DstXprType &dst, const SrcXprType &src, const internal::assign_op &) + { + src.dec().nestedExpression().template _solve_impl_transposed(src.rhs(), dst); + } +}; + +// Specialization for "dst = dec.adjoint().solve(rhs)" +template +struct Assignment, const Transpose >,RhsType>, internal::assign_op, Dense2Dense, Scalar> +{ + typedef Solve, const Transpose >,RhsType> SrcXprType; + static void run(DstXprType &dst, const SrcXprType &src, const internal::assign_op &) + { + src.dec().nestedExpression().nestedExpression().template _solve_impl_transposed(src.rhs(), dst); + } +}; + } // end namepsace internal } // end namespace Eigen -- cgit v1.2.3