Triangular Solver

template<typename T, typename L, internal::TransposeFlag Trans, MatrixTriangularType UpLo, template<typename, typename> typename S2>
internal::TriangularSolver<T, L, UpLo, Matrix<T, L, S2>> trsolve(internal::ConjugateTransposeOp<TriangularMap<T, UpLo, L>, Trans> &&R, OpSide side, internal::ScalingOp<Matrix<T, L, S2>> &&rhs)
template<typename T, typename L, MatrixTriangularType UpLo, template<typename, typename> typename S2>
internal::TriangularSolver<T, L, UpLo, Matrix<T, L, S2>> trsolve(const TriangularMap<T, UpLo, L> &R, OpSide side, internal::ScalingOp<Matrix<T, L, S2>> &&rhs)
template<typename T, typename L, internal::TransposeFlag Trans, MatrixTriangularType UpLo, template<typename, typename> typename S2>
internal::TriangularSolver<T, L, UpLo, Matrix<T, L, S2>> trsolve(internal::ConjugateTransposeOp<TriangularMap<T, UpLo, L>, Trans> &&R, OpSide side, const Matrix<T, L, S2> &rhs)
template<typename T, typename L, MatrixTriangularType UpLo, template<typename, typename> typename S2>
internal::TriangularSolver<T, L, UpLo, Matrix<T, L, S2>> trsolve(const TriangularMap<T, UpLo, L> &R, OpSide side, const Matrix<T, L, S2> &rhs)

Solves the triangular linear system \( \text{op}(\mathbf{R}) \; \mathbf{X} = \alpha \mathbf{B}\), where R is upper or lower triangular and op(R) = R or op(R) = R.T(). This operation can be done in-place by calling X = trsolve(R, side, X).

Parameters:
  • R[in] coefficient matrix: R or R.T()

  • side[in] specify the location of the A in the system: kLeft ( \( \mathbf{R} \; \mathbf{X} = \alpha \mathbf{B}\)) or kRight ( \( \mathbf{X} \; \mathbf{R} = \alpha \mathbf{B}\))

  • rhs[in] right hand side of the system: B or alpha * B

Returns:

An abstract object representing the solution of the linear system.

template<typename T, typename L, internal::TransposeFlag Trans, MatrixTriangularType UpLo, template<typename, typename> typename S2>
internal::TriangularSolver<T, L, UpLo, Vector<T, L, S2>> trsolve(internal::ConjugateTransposeOp<TriangularMap<T, UpLo, L>, Trans> &&R, const Vector<T, L, S2> &rhs)
template<typename T, typename L, MatrixTriangularType UpLo, template<typename, typename> typename S2>
internal::TriangularSolver<T, L, UpLo, Vector<T, L, S2>> trsolve(const TriangularMap<T, UpLo, L> &R, const Vector<T, L, S2> &rhs)

Solves the triangular linear system \( \text{op}((\mathbf{R}) \; \vec{x} = \alpha \vec{b}\), where R is upper or lower triangular and op(R) = R or op(R) = R.T(). This operation can be done in-place by calling x = trsolve(R, x).

Parameters:
  • R[in] coefficient matrix: A or A.T()

  • rhs[in] right hand side of the system: b

Returns:

An abstract object representing the solution of the linear system.

template<Number T, DataLocation L, MatrixTriangularType UpLo>
T trcond(const TriangularMap<T, UpLo, L> &A)

Calculates the reciprocal of the condition number of a triangular matrix A using the l1 norm: \( \kappa_1(\mathbf{A}) = \| \mathbf{A} \|_1 \| \mathbf{A}^{-1} \|_1 \)

Parameters:

A[in] input matrix