computes the Hermitian rank-k update α opts[a].ConjugateTranspose[opts[a]]+β b and resets the appropriate part of b to the result.


  • To use HERK, you first need to load the BLAS Package using Needs["LinearAlgebra`BLAS`"].
  • The following arguments must be given:
  • ulinput stringupper/lower triangular string
    tsinput stringtransposition string
    αinput expressionscalar mutliple
    ainput expressionrectangular matrix
    βinput expressionscalar multiple
    binput/output symbolsquare matrix; the symbol value is modified in place
  • The upper/lower triangular string ul may be specified as:
  • "U"update the upper triangular part of b
    "L"update the lower triangular part of b
  • The transposition strings describe the operators opts and may be specified as:
  • "N"no transposition
    "C"conjugate transpose
  • The main diagonal elements of b are assumed to be real-valued.
  • Dimensions of the matrix arguments must be such that the dot product and addition are well defined.


open allclose all

Basic Examples  (1)

Load the BLAS package:

Apply Hermitian rank-2 update to the upper triangular part of a matrix:

Scope  (4)

Real matrices:

Complex matrices:

Arbitrary-precision matrices:

Integer-symbolic matrices:

Properties & Relations  (1)

HERK["U","N",α,a,β,b] is equivalent to b=α a.ConjugateTranspose[a]+β b applied to the upper triangular part of b:

The strictly lower triangular part of b is unchanged:

Possible Issues  (2)

The last argument must be a symbol:

The last argument must be initialized to a matrix, otherwise an error message is issued: