#ifndef EIGEN_TRIANGULARMATRIXVECTOR_H
#define EIGEN_TRIANGULARMATRIXVECTOR_H
#include "../InternalHeaderCheck.h"
namespace Eigen {
namespace internal {
template <typename Index, int Mode, typename LhsScalar, bool ConjLhs, typename RhsScalar, bool ConjRhs,
int StorageOrder, int Version = Specialized>
struct triangular_matrix_vector_product;
triangular_matrix_vector_product<Index, Mode, LhsScalar, ConjLhs, RhsScalar, ConjRhs, ColMajor, Version>;
template <typename Index, int Mode, typename LhsScalar, bool ConjLhs, typename RhsScalar, bool ConjRhs, int Version>
EIGEN_DONT_INLINE void triangular_matrix_vector_product<Index, Mode, LhsScalar, ConjLhs, RhsScalar, ConjRhs, ColMajor,
Version>::run(Index _rows, Index _cols, const LhsScalar* lhs_,
Index lhsStride, const RhsScalar* rhs_,
Index rhsIncr, ResScalar* res_, Index resIncr,
const RhsScalar& alpha) { … }
triangular_matrix_vector_product<Index, Mode, LhsScalar, ConjLhs, RhsScalar, ConjRhs, RowMajor, Version>;
template <typename Index, int Mode, typename LhsScalar, bool ConjLhs, typename RhsScalar, bool ConjRhs, int Version>
EIGEN_DONT_INLINE void triangular_matrix_vector_product<Index, Mode, LhsScalar, ConjLhs, RhsScalar, ConjRhs, RowMajor,
Version>::run(Index _rows, Index _cols, const LhsScalar* lhs_,
Index lhsStride, const RhsScalar* rhs_,
Index rhsIncr, ResScalar* res_, Index resIncr,
const ResScalar& alpha) { … }
template <int Mode, int StorageOrder>
struct trmv_selector;
}
namespace internal {
triangular_product_impl<Mode, true, Lhs, false, Rhs, true>;
triangular_product_impl<Mode, false, Lhs, true, Rhs, false>;
}
namespace internal {
trmv_selector<Mode, ColMajor>;
trmv_selector<Mode, RowMajor>;
}
}
#endif