computes the multiplication of a triangle matrix a and a full matrix b as α opts[a].b or α b.opts[a] and resets b to the result.


  • To use TRMM, you first need to load the BLAS Package using Needs["LinearAlgebra`BLAS`"].
  • The following arguments must be given:
  • sdinput stringleft/right side string
  • input string
  • upper/lower triangular string
    tsinput stringtransposition string
    dginput stringdiagonal ones string
    αinput expressionscalar mutliple
    ainput expressionrectangular matrix
    binput/output symbolrectangular matrix; the symbol value is modified in place
  • The left/right side string sd may be specified as:
  • "L"a is on the left side of the dot product
    "R"a is on the right side of the dot product
  • The upper/lower triangular string ul may be specified as:
  • "U"the upper triangular part of a is used
    "L"the lower triangular part of a is used
  • The transposition strings describe the operators opts and may be specified as:
  • "N"no transposition
    "C"conjugate transpose
  • The diagonal ones string dg may be specified as:
  • "U"the main diagonal of a is assumed to contain only ones
    "N"the actual values of the main diagonal of a are used
  • Dimensions of the matrix arguments must be such that the dot product is well defined.


open allclose all

Basic Examples  (1)

Load the BLAS package:

Compute UpperTriangularize[a].b and save it in b:

Scope  (4)

Real matrices:

Complex matrices:

Arbitrary-precision matrices:

Symbolic matrices:

Properties & Relations  (4)

TRMM["L","U","N","N",α,a,b] is equivalent to b=α UpperTriangularize[a].b:

TRMM["L","L","T","N",α,a,b] is equivalent to b=αTranspose[LowerTriangularize[a]].b:

Note this is not TRMM["L","U","T","N",α,a,L] as the lower triangular part is used for the transpose:

If dg="U", the diagonal values of a are assumed to be ones:

The diagonal in a has been effectively replaced by ones:

If a is a rectangular matrix then only the leading upper or lower triangular part of a is used:

The matrix a is effectively truncated to its upper left corner:

Possible Issues  (2)

The last argument must be a symbol:

The last argument must be initialized to a matrix: