M4RI  1.0.1
Functions
trsm.h File Reference

Triangular system solving with Matrix routines. More...

#include "packedmatrix.h"

Go to the source code of this file.

Functions

void mzd_trsm_upper_right (mzd_t const *U, mzd_t *B, const int cutoff)
 Solves X U = B with X and B matrices and U upper triangular.
void _mzd_trsm_upper_right (mzd_t const *U, mzd_t *B, const int cutoff)
 Solves X U = B with X and B matrices and U upper triangular.
void mzd_trsm_lower_right (mzd_t const *L, mzd_t *B, const int cutoff)
 Solves X L = B with X and B matrices and L lower triangular.
void _mzd_trsm_lower_right (mzd_t const *L, mzd_t *B, const int cutoff)
 Solves X L = B with X and B with matrices and L lower triangular.
void mzd_trsm_lower_left (mzd_t const *L, mzd_t *B, const int cutoff)
 Solves L X = B with X and B matrices and L lower triangular.
void _mzd_trsm_lower_left (mzd_t const *L, mzd_t *B, const int cutoff)
 Solves L X = B with X and B matrices and L lower triangular.
void mzd_trsm_upper_left (mzd_t const *U, mzd_t *B, const int cutoff)
 Solves U X = B with X and B matrices and U upper triangular.
void _mzd_trsm_upper_left (mzd_t const *U, mzd_t *B, const int cutoff)
 Solves U X = B with X and B matrices and U upper triangular.

Detailed Description

Triangular system solving with Matrix routines.

Author:
Clement Pernet <clement.pernet@gmail.com>

Function Documentation

void _mzd_trsm_lower_left ( mzd_t const *  L,
mzd_t B,
const int  cutoff 
)

Solves L X = B with X and B matrices and L lower triangular.

X is stored inplace on B.

Parameters:
LInput lower triangular matrix.
BInput matrix, being overwritten by the solution matrix X
cutoffMinimal dimension for Strassen recursion.
    |\           ______
    | \         |      |
    |  \        |  B0  |
    |L00\       |      |
    |____\      |______|
    |    |\     |      |
    |    | \    |      |
    |    |  \   |  B1  |
    |L10 |L11\  |      |
    |____|____\ |______|
    
  • L00 L10 B0 and B1 are possibly located at uneven locations.
  • Their column dimension is lower than 64.
  • The first column of L01, L11, B1 are aligned to words.
void _mzd_trsm_lower_right ( mzd_t const *  L,
mzd_t B,
const int  cutoff 
)

Solves X L = B with X and B with matrices and L lower triangular.

This version assumes that the matrices are at an even position on the m4ri_radix grid and that their dimension is a multiple of m4ri_radix. X is stored inplace on B.

Attention:
Note, that the 'right' variants of TRSM are slower than the 'left' variants.
Parameters:
LInput lower triangular matrix.
BInput matrix, being overwritten by the solution matrix X
cutoffMinimal dimension for Strassen recursion.
     |\
     | \
     |  \
     |L00\
     |____\
     |    |\
     |    | \
     |    |  \
     |L10 |L11\
     |____|____\
      _________
     |B0  |B1  |
     |____|____|
   
  • L00 and B0 are possibly located at uneven locations.
  • Their column dimension is lower than 64.
  • The first column of L10, L11, B1 are aligned to words.
void _mzd_trsm_upper_left ( mzd_t const *  U,
mzd_t B,
const int  cutoff 
)

Solves U X = B with X and B matrices and U upper triangular.

X is stored inplace on B.

Parameters:
UInput upper triangular matrix.
BInput matrix, being overwritten by the solution matrix X
cutoffMinimal dimension for Strassen recursion.
     __________   ______
     \ U00|    | |      |
      \   |U01 | |      |
       \  |    | |  B0  |
        \ |    | |      |
         \|____| |______|
          \    | |      |
           \U11| |      |
            \  | |  B1  |
             \ | |      |
              \| |______|
     
  • U00, B0 and B1 are possibly located at uneven locations.
  • Their column dimension is greater than 64
  • The first column of U01, U11, B0 and B1 are aligned to words.
void _mzd_trsm_upper_right ( mzd_t const *  U,
mzd_t B,
const int  cutoff 
)

Solves X U = B with X and B matrices and U upper triangular.

X is stored inplace on B.

Attention:
Note, that the 'right' variants of TRSM are slower than the 'left' variants.
Parameters:
UInput upper triangular matrix.
BInput matrix, being overwritten by the solution matrix X
cutoffMinimal dimension for Strassen recursion.
     _________ 
     \U00|   |
      \  |U01|
       \ |   |
        \|___|
         \U11|
          \  |
           \ |
            \|
      _______
     |B0 |B1 |
     |___|___|
   
  • U00 and B0 are possibly located at uneven locations.
  • Their column dimension is lower than 64.
  • The first column of U01, U11, B1 are aligned at words.
void mzd_trsm_lower_left ( mzd_t const *  L,
mzd_t B,
const int  cutoff 
)

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.

Parameters:
LInput lower triangular matrix.
BInput matrix, being overwritten by the solution matrix X
cutoffMinimal dimension for Strassen recursion.
void mzd_trsm_lower_right ( mzd_t const *  L,
mzd_t B,
const int  cutoff 
)

Solves X L = 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_upper_right() for implementation details.

Attention:
Note, that the 'right' variants of TRSM are slower than the 'left' variants.
Parameters:
LInput upper triangular matrix.
BInput matrix, being overwritten by the solution matrix X
cutoffMinimal dimension for Strassen recursion.
void mzd_trsm_upper_left ( mzd_t const *  U,
mzd_t B,
const int  cutoff 
)

Solves U X = B with X and B matrices and U upper triangular.

X is stored inplace on B.

This is the wrapper function including bounds checks. See _mzd_trsm_upper_left() for implementation details.

Parameters:
UInput upper triangular matrix.
BInput matrix, being overwritten by the solution matrix X
cutoffMinimal dimension for Strassen recursion.
void mzd_trsm_upper_right ( mzd_t const *  U,
mzd_t B,
const int  cutoff 
)

Solves X U = B with X and B matrices and U upper triangular.

X is stored inplace on B.

Attention:
Note, that the 'right' variants of TRSM are slower than the 'left' variants.

This is the wrapper function including bounds checks. See _mzd_trsm_upper_right() for implementation details.

Parameters:
UInput upper triangular matrix.
BInput matrix, being overwritten by the solution matrix X
cutoffMinimal dimension for Strassen recursion.