#include "packedmatrix.h"

- * \brief ~~TRiangular System solving with Matrix~~.

+ * \brief Solves X U = B with X and B matrices and U upper triangular.

- * Solves X U = B where X and B are matrices, and U is upper

- * triangular. X is stored inplace on B.

+ * X is stored inplace on B.

+ * \attention Note, that the 'right' variants of TRSM are slower than

* This is the wrapper function including bounds checks. See

- * _mzd_trsm_upper_right for implementation details.

+ * _mzd_trsm_upper_right() for implementation details.

* \param U Input upper triangular matrix.

* \param B Input matrix, being overwritten by the solution matrix X

* \param cutoff Minimal dimension for Strassen recursion.

void mzd_trsm_upper_right(packedmatrix *U, packedmatrix *B, const int cutoff);

- * \brief ~~TRiangular System solving with Matrix~~.

+ * \brief Solves X U = B with X and B matrices and U upper triangular.

- * Solves X U = B where X and B are matrices, and U is upper triangular.

+ * X is stored inplace on B.

+ * \attention Note, that the 'right' variants of TRSM are slower than

* \param U Input upper triangular matrix.

* \param B Input matrix, being overwritten by the solution matrix X

* \param cutoff Minimal dimension for Strassen recursion.

void _mzd_trsm_upper_right(packedmatrix *U, packedmatrix *B, const int cutoff);

- * \brief ~~TRiangular System solving with Matrix~~.

+ * \brief Solves X L = B with X and B matrices and L lower triangular.

- * Solves X L = B where X and B are matrices, and L is lower triangular.

- * X is stored inplace on B

+ * X is stored inplace on B.

* This is the wrapper function including bounds checks. See

- * _mzd_trsm_upper_right for implementation details.

+ * _mzd_trsm_upper_right() for implementation details.

+ * \attention Note, that the 'right' variants of TRSM are slower than the 'left'

* \param L Input upper triangular matrix.

* \param B Input matrix, being overwritten by the solution matrix X

void mzd_trsm_lower_right(packedmatrix *L, packedmatrix *B, const int cutoff);

- * \brief TRiangular System solving with matrix.

+ * \brief Solves X L = B with X and B with matrices and L lower

+ * This version assumes that the matrices are at an even position on

+ * the RADIX grid and that their dimension is a multiple of RADIX. X

+ * is stored inplace on B.

- * Solves X L = B where X and B are matrices, and L is lower triangular.

- * This version assumes that the matrices are at an even position on

- * the RADIX grid and that their dimension is a multiple of RADIX.

- * X is stored inplace on B

+ * \attention Note, that the 'right' variants of TRSM are slower than

* \param L Input lower triangular matrix.

* \param B Input matrix, being overwritten by the solution matrix X

void _mzd_trsm_lower_right(packedmatrix *L, packedmatrix *B, const int cutoff);

- * \brief TRiangular System solving with matrix.

- * Solves L X = B where X and B are matrices, and L is lower triangular.

+ * \brief Solves L X = B with X and B matrices and L lower triangular.

* X is stored inplace on B.

* This is the wrapper function including bounds checks. See

- * _mzd_trsm_lower_left for implementation details.

+ * _mzd_trsm_lower_left() for implementation details.

* \param L Input lower triangular matrix.

* \param B Input matrix, being overwritten by the solution matrix X

void mzd_trsm_lower_left(packedmatrix *L, packedmatrix *B, const int cutoff);

- * \brief TRiangular System solving with Matrix.

- * Solves L X = B where X and B are matrices, and L is lower

- * triangular. X is stored inplace on B.

+ * \brief Solves L X = B with X and B matrices and L lower triangular.

+ * X is stored inplace on B.

* \param L Input lower triangular matrix.

* \param B Input matrix, being overwritten by the solution matrix X

void _mzd_trsm_lower_left(packedmatrix *L, packedmatrix *B, const int cutoff);

- * \brief ~~TRiangular System solving with matrix~~.

+ * \brief Solves U X = B with X and B matrices and U upper triangular.

- * Solves U X = B where X and B are matrices, and U is upper triangular.

- * X is stored inplace on B

+ * X is stored inplace on B.

* This is the wrapper function including bounds checks. See

- * _mzd_trsm_upper_left for implementation details.

+ * _mzd_trsm_upper_left() for implementation details.

* \param U Input upper triangular matrix.

* \param B Input matrix, being overwritten by the solution matrix X

void mzd_trsm_upper_left(packedmatrix *U, packedmatrix *B, const int cutoff);

- * \brief ~~TRiangular System solving with matrix~~.

+ * \brief Solves U X = B with X and B matrices and U upper triangular.

- * Solves U X = B where X and B are matrices, and U is upper triangular.

- * X is stored inplace on B

+ * X is stored inplace on B.

* \param U Input upper triangular matrix.

* \param B Input matrix, being overwritten by the solution matrix X