// This file is part of Eigen, a lightweight C++ template library // for linear algebra. // // Copyright (C) 2015 Gael Guennebaud <[email protected]> // // This Source Code Form is subject to the terms of the Mozilla // Public License v. 2.0. If a copy of the MPL was not distributed // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. #ifndef EIGEN_SOLVERBASE_H #define EIGEN_SOLVERBASE_H // IWYU pragma: private #include "./InternalHeaderCheck.h" namespace Eigen { namespace internal { template <typename Derived> struct solve_assertion { … }; solve_assertion<Transpose<Derived>>; solve_assertion<CwiseUnaryOp<Eigen::internal::scalar_conjugate_op<Scalar>, const Transpose<Derived>>>; } // end namespace internal /** \class SolverBase * \brief A base class for matrix decomposition and solvers * * \tparam Derived the actual type of the decomposition/solver. * * Any matrix decomposition inheriting this base class provide the following API: * * \code * MatrixType A, b, x; * DecompositionType dec(A); * x = dec.solve(b); // solve A * x = b * x = dec.transpose().solve(b); // solve A^T * x = b * x = dec.adjoint().solve(b); // solve A' * x = b * \endcode * * \warning Currently, any other usage of transpose() and adjoint() are not supported and will produce compilation * errors. * * \sa class PartialPivLU, class FullPivLU, class HouseholderQR, class ColPivHouseholderQR, class FullPivHouseholderQR, * class CompleteOrthogonalDecomposition, class LLT, class LDLT, class SVDBase */ template <typename Derived> class SolverBase : public EigenBase<Derived> { … }; namespace internal { generic_xpr_base<Derived, MatrixXpr, SolverStorage>; } // end namespace internal } // end namespace Eigen #endif // EIGEN_SOLVERBASE_H