#ifndef EIGEN_SOLVETRIANGULAR_H
#define EIGEN_SOLVETRIANGULAR_H
#include "./InternalHeaderCheck.h"
namespace Eigen {
namespace internal {
template <typename LhsScalar, typename RhsScalar, typename Index, int Side, int Mode, bool Conjugate, int StorageOrder>
struct triangular_solve_vector;
template <typename Scalar, typename Index, int Side, int Mode, bool Conjugate, int TriStorageOrder,
int OtherStorageOrder, int OtherInnerStride>
struct triangular_solve_matrix;
template <typename Lhs, typename Rhs, int Side>
class trsolve_traits { … };
template <typename Lhs, typename Rhs,
int Side,
int Mode,
int Unrolling = trsolve_traits<Lhs, Rhs, Side>::Unrolling,
int RhsVectors = trsolve_traits<Lhs, Rhs, Side>::RhsVectors>
struct triangular_solver_selector;
triangular_solver_selector<Lhs, Rhs, Side, Mode, NoUnrolling, 1>;
triangular_solver_selector<Lhs, Rhs, Side, Mode, NoUnrolling, Dynamic>;
template <typename Lhs, typename Rhs, int Mode, int LoopIndex, int Size, bool Stop = LoopIndex == Size>
struct triangular_solver_unroller;
triangular_solver_unroller<Lhs, Rhs, Mode, LoopIndex, Size, false>;
triangular_solver_unroller<Lhs, Rhs, Mode, LoopIndex, Size, true>;
triangular_solver_selector<Lhs, Rhs, OnTheLeft, Mode, CompleteUnrolling, 1>;
triangular_solver_selector<Lhs, Rhs, OnTheRight, Mode, CompleteUnrolling, 1>;
}
#ifndef EIGEN_PARSED_BY_DOXYGEN
template <typename MatrixType, unsigned int Mode>
template <int Side, typename OtherDerived>
EIGEN_DEVICE_FUNC void TriangularViewImpl<MatrixType, Mode, Dense>::solveInPlace(
const MatrixBase<OtherDerived>& _other) const { … }
template <typename Derived, unsigned int Mode>
template <int Side, typename Other>
const internal::triangular_solve_retval<Side, TriangularView<Derived, Mode>, Other>
TriangularViewImpl<Derived, Mode, Dense>::solve(const MatrixBase<Other>& other) const { … }
#endif
namespace internal {
traits<triangular_solve_retval<Side, TriangularType, Rhs>>;
template <int Side, typename TriangularType, typename Rhs>
struct triangular_solve_retval : public ReturnByValue<triangular_solve_retval<Side, TriangularType, Rhs> > { … };
}
}
#endif