mult_rz Interface

public interface mult_rz

Module Procedures

private subroutine mult_rz_mtx(lside, trans, l, a, tau, c, work, olwork, err)

Multiplies a general matrix by the orthogonal matrix Z from an RZ factorization such that or

Arguments

Type IntentOptional Attributes Name
logical, intent(in) :: lside

Set to true to compute ; else, set to false to compute .

logical, intent(in) :: trans

Set to true if ; else, set to false if .

integer(kind=int32), intent(in) :: l

The number of columns in matrix containing the meaningful part of the Householder vectors. If lside is true, ; else, if lside is false, .

real(kind=real64), intent(inout), dimension(:,:) :: a

On input the -by- matrix , where if lside is true; else, if lside is false. The I-th row must contain the Householder vector in the last rows. Notice, the contents of this matrix are restored on exit.

real(kind=real64), intent(in), dimension(:) :: tau

A -element array containing the scalar factors of the elementary reflectors, where if lside is true; else, if lside is false.

real(kind=real64), intent(inout), dimension(:,:) :: c

On input, the -by- matrix . On output, the product of the orthogonal matrix and the original matrix .

real(kind=real64), intent(out), optional, target, dimension(:) :: work

An optional input, that if provided, prevents any local memory allocation. If not provided, the memory required is allocated within. If provided, the length of the array must be at least olwork.

integer(kind=int32), intent(out), optional :: olwork

An optional output used to determine workspace size. If supplied, the routine determines the optimal size for @p work, and returns without performing any actual calculations.

class(errors), intent(inout), optional, target :: err

The error object to be updated.

private subroutine mult_rz_mtx_cmplx(lside, trans, l, a, tau, c, work, olwork, err)

Multiplies a general matrix by the orthogonal matrix Z from an RZ factorization such that or .

Arguments

Type IntentOptional Attributes Name
logical, intent(in) :: lside

Set to true to compute ; else, set to false to compute .

logical, intent(in) :: trans

Set to true if ; else, set to false if .

integer(kind=int32), intent(in) :: l

The number of columns in matrix containing the meaningful part of the Householder vectors. If lside is true, ; else, if lside is false, .

complex(kind=real64), intent(inout), dimension(:,:) :: a

On input the -by- matrix , where if lside is true; else, if lside is false. The I-th row must contain the Householder vector in the last rows. Notice, the contents of this matrix are restored on exit.

complex(kind=real64), intent(in), dimension(:) :: tau

A -element array containing the scalar factors of the elementary reflectors, where if lside is true; else, if lside is false.

complex(kind=real64), intent(inout), dimension(:,:) :: c

On input, the -by- matrix . On output, the product of the orthogonal matrix and the original matrix .

complex(kind=real64), intent(out), optional, target, dimension(:) :: work

An optional input, that if provided, prevents any local memory allocation. If not provided, the memory required is allocated within. If provided, the length of the array must be at least olwork.

integer(kind=int32), intent(out), optional :: olwork

An optional output used to determine workspace size. If supplied, the routine determines the optimal size for @p work, and returns without performing any actual calculations.

class(errors), intent(inout), optional, target :: err

The error object to be updated.

private subroutine mult_rz_vec(trans, l, a, tau, c, work, olwork, err)

Multiplies a general matrix by the orthogonal matrix Z from an RZ factorization such that .

Arguments

Type IntentOptional Attributes Name
logical, intent(in) :: trans

Set to true if ; else, set to false if .

integer(kind=int32), intent(in) :: l

The number of columns in matrix containing the meaningful part of the Householder vectors.

real(kind=real64), intent(inout), dimension(:,:) :: a

On input the -by- matrix . The I-th row must contain the Householder vector in the last rows. Notice, the contents of this matrix are restored on exit.

real(kind=real64), intent(in), dimension(:) :: tau

An -element array containing the scalar factors of the elementary reflectors.

real(kind=real64), intent(inout), dimension(:) :: c

On input, the -element array . On output, the product of and .

real(kind=real64), intent(out), optional, target, dimension(:) :: work

An optional input, that if provided, prevents any local memory allocation. If not provided, the memory required is allocated within. If provided, the length of the array must be at least olwork.

integer(kind=int32), intent(out), optional :: olwork

An optional output used to determine workspace size. If supplied, the routine determines the optimal size for @p work, and returns without performing any actual calculations.

class(errors), intent(inout), optional, target :: err

The error object to be updated.

private subroutine mult_rz_vec_cmplx(trans, l, a, tau, c, work, olwork, err)

Multiplies a general matrix by the orthogonal matrix Z from an RZ factorization such that .

Arguments

Type IntentOptional Attributes Name
logical, intent(in) :: trans

Set to true if ; else, set to false if .

integer(kind=int32), intent(in) :: l

The number of columns in matrix containing the meaningful part of the Householder vectors.

complex(kind=real64), intent(inout), dimension(:,:) :: a

On input the -by- matrix . The I-th row must contain the Householder vector in the last rows. Notice, the contents of this matrix are restored on exit.

complex(kind=real64), intent(in), dimension(:) :: tau

An -element array containing the scalar factors of the elementary reflectors.

complex(kind=real64), intent(inout), dimension(:) :: c

On input, the -element array . On output, the product of and .

complex(kind=real64), intent(out), optional, target, dimension(:) :: work

An optional input, that if provided, prevents any local memory allocation. If not provided, the memory required is allocated within. If provided, the length of the array must be at least olwork.

integer(kind=int32), intent(out), optional :: olwork

An optional output used to determine workspace size. If supplied, the routine determines the optimal size for @p work, and returns without performing any actual calculations.

class(errors), intent(inout), optional, target :: err

The error object to be updated.