GenericLinearAlgebraOperations<T>.HermitianMultiplyAndAddInPlace Method

Definition

Namespace: Numerics.NET.LinearAlgebra.Implementation
Assembly: Numerics.NET.Generic (in Numerics.NET.Generic.dll) Version: 9.0.3

Overload List

HermitianMultiplyAndAddInPlace(MatrixTriangle, Int32, T, Array2D<T>, ArraySlice<T>, T, ArraySlice<T>) Product of a hermitian matrix and a vector.
HermitianMultiplyAndAddInPlace(MatrixTriangle, Int32, Complex<T>, Array2D<Complex<T>>, ArraySlice<Complex<T>>, Complex<T>, ArraySlice<Complex<T>>)

Performs the matrix-vector operation y := alpha*A*x + beta*y, where alpha and beta are scalars, x and y are n element vectors and A is an n by n hermitian matrix.

HermitianMultiplyAndAddInPlace(MatrixTriangle, Int32, Complex<T>, ReadOnlySpan2D<Complex<T>>, ReadOnlySpanSlice<Complex<T>>, Complex<T>, SpanSlice<Complex<T>>)

Performs the matrix-vector operation y := alpha*A*x + beta*y, where alpha and beta are scalars, x and y are n element vectors and A is an n by n hermitian matrix.

HermitianMultiplyAndAddInPlace(MatrixOperationSide, MatrixTriangle, Int32, Int32, T, Array2D<T>, Array2D<T>, T, Array2D<T>) Sum of the product of a hermitian and a general matrix and a scaled matrix.
HermitianMultiplyAndAddInPlace(MatrixOperationSide, MatrixTriangle, Int32, Int32, Complex<T>, Array2D<Complex<T>>, Array2D<Complex<T>>, Complex<T>, Array2D<Complex<T>>)

Performs one of the matrix-matrix operations C := alpha*A*B + beta*C, or C := alpha*B*A + beta*C, where alpha and beta are scalars, A is an hermitian matrix and B and C are m by n matrices.

HermitianMultiplyAndAddInPlace(MatrixOperationSide, MatrixTriangle, Int32, Int32, Complex<T>, ReadOnlySpan2D<Complex<T>>, ReadOnlySpan2D<Complex<T>>, Complex<T>, Span2D<Complex<T>>)

Performs one of the matrix-matrix operations C := alpha*A*B + beta*C, or C := alpha*B*A + beta*C, where alpha and beta are scalars, A is an hermitian matrix and B and C are m by n matrices.

HermitianMultiplyAndAddInPlace(MatrixTriangle, Int32, Complex<T>, ReadOnlySpan<Complex<T>>, Int32, ReadOnlySpan<Complex<T>>, Int32, Complex<T>, Span<Complex<T>>, Int32)

Performs the matrix-vector operation y := alpha*A*x + beta*y, where alpha and beta are scalars, x, incx and y are n element vectors and A is an n by n hermitian matrix.

HermitianMultiplyAndAddInPlace(MatrixTriangle, Int32, T, ReadOnlySpan<T>, Int32, ReadOnlySpan<T>, Int32, T, Span<T>, Int32) Product of a hermitian matrix and a vector.
HermitianMultiplyAndAddInPlace(MatrixOperationSide, MatrixTriangle, Int32, Int32, Complex<T>, ReadOnlySpan<Complex<T>>, Int32, ReadOnlySpan<Complex<T>>, Int32, Complex<T>, Span<Complex<T>>, Int32)

Performs one of the matrix-matrix operations C := alpha*A*B + beta*C, or C := alpha*B*A + beta*C, where alpha and beta are scalars, A is an hermitian matrix and B and C are m by n matrices.

HermitianMultiplyAndAddInPlace(MatrixOperationSide, MatrixTriangle, Int32, Int32, T, ReadOnlySpan<T>, Int32, ReadOnlySpan<T>, Int32, T, Span<T>, Int32) Sum of the product of a hermitian and a general matrix and a scaled matrix.

HermitianMultiplyAndAddInPlace(MatrixTriangle, Int32, Complex<T>, ReadOnlySpan<Complex<T>>, Int32, ReadOnlySpan<Complex<T>>, Int32, Complex<T>, Span<Complex<T>>, Int32)

Performs the matrix-vector operation y := alpha*A*x + beta*y, where alpha and beta are scalars, x, incx and y are n element vectors and A is an n by n hermitian matrix.

C#
public override void HermitianMultiplyAndAddInPlace(
	MatrixTriangle uplo,
	int n,
	Complex<T> alpha,
	ReadOnlySpan<Complex<T>> a,
	int lda,
	ReadOnlySpan<Complex<T>> x,
	int incx,
	Complex<T> beta,
	Span<Complex<T>> y,
	int incy
)

Parameters

uplo  MatrixTriangle
             On entry, UPLO specifies whether the upper or lower
             triangular part of the array A is to be referenced as
             follows:
                UPLO = 'U' or 'u'   Only the upper triangular part of A
                                    is to be referenced.
                UPLO = 'L' or 'l'   Only the lower triangular part of A
                                    is to be referenced.
            
n  Int32
             On entry, N specifies the order of the matrix A.
             N must be at least zero.
            
alpha  Complex<T>
             On entry, ALPHA specifies the scalar alpha.
            
a  ReadOnlySpan<Complex<T>>
            A is complex array of DIMENSION ( LDA, n ).
             Before entry with  UPLO = 'U' or 'u', the leading n by n
             upper triangular part of the array A must contain the upper
             triangular part of the hermitian matrix and the strictly
             lower triangular part of A is not referenced.
             Before entry with UPLO = 'L' or 'l', the leading n by n
             lower triangular part of the array A must contain the lower
             triangular part of the hermitian matrix and the strictly
             upper triangular part of A is not referenced.
             Note that the imaginary parts of the diagonal elements need
             not be set and are assumed to be zero.
            
lda  Int32
             On entry, LDA specifies the first dimension of A as declared
             in the calling (sub) program. LDA must be at least
             max( 1, n ).
            
x  ReadOnlySpan<Complex<T>>
            X is complex array of dimension at least
             ( 1 + ( n - 1 )*abs( INCX ) ).
             Before entry, the incremented array X must contain the n
             element vector x.
            
incx  Int32
             On entry, INCX specifies the increment for the elements of
             X. INCX must not be zero.
            
beta  Complex<T>
             On entry, BETA specifies the scalar beta. When BETA is
             supplied as zero then Y need not be set on input.
            
y  Span<Complex<T>>
            Y is complex array of dimension at least
             ( 1 + ( n - 1 )*abs( INCY ) ).
             Before entry, the incremented array Y must contain the n
             element vector y. On exit, Y is overwritten by the updated
             vector y.
            
incy  Int32
             On entry, INCY specifies the increment for the elements of
             Y. INCY must not be zero.
            

Implements

ILinearAlgebraOperations<T>.HermitianMultiplyAndAddInPlace(MatrixTriangle, Int32, T, ReadOnlySpan<T>, Int32, ReadOnlySpan<T>, Int32, T, Span<T>, Int32)

Remarks

Further Details:

            Level 2 LinearAlgebra routine.
            The vector and matrix arguments are not referenced when N = 0, or M = 0
            -- Written on 22-October-1986.
               Jack Dongarra, Argonne National Lab.
               Jeremy Du Croz, Nag Central Office.
               Sven Hammarling, Nag Central Office.
               Richard Hanson, Sandia National Labs.
            

Authors: Univ. of Tennessee, Univ. of California Berkeley, Univ. of Colorado Denver, NAG Ltd.

Date: November 2011

HermitianMultiplyAndAddInPlace(MatrixOperationSide, MatrixTriangle, Int32, Int32, Complex<T>, ReadOnlySpan<Complex<T>>, Int32, ReadOnlySpan<Complex<T>>, Int32, Complex<T>, Span<Complex<T>>, Int32)

Performs one of the matrix-matrix operations C := alpha*A*B + beta*C, or C := alpha*B*A + beta*C, where alpha and beta are scalars, A is an hermitian matrix and B and C are m by n matrices.

C#
public override void HermitianMultiplyAndAddInPlace(
	MatrixOperationSide side,
	MatrixTriangle uplo,
	int m,
	int n,
	Complex<T> alpha,
	ReadOnlySpan<Complex<T>> a,
	int lda,
	ReadOnlySpan<Complex<T>> b,
	int ldb,
	Complex<T> beta,
	Span<Complex<T>> c,
	int ldc
)

Parameters

side  MatrixOperationSide
             On entry,  SIDE  specifies whether  the  hermitian matrix  A
             appears on the  left or right  in the  operation as follows:
                SIDE = 'L' or 'l'   C := alpha*A*B + beta*C,
                SIDE = 'R' or 'r'   C := alpha*B*A + beta*C,
            
uplo  MatrixTriangle
             On  entry,   UPLO  specifies  whether  the  upper  or  lower
             triangular  part  of  the  hermitian  matrix   A  is  to  be
             referenced as follows:
                UPLO = 'U' or 'u'   Only the upper triangular part of the
                                    hermitian matrix is to be referenced.
                UPLO = 'L' or 'l'   Only the lower triangular part of the
                                    hermitian matrix is to be referenced.
            
m  Int32
             On entry,  M  specifies the number of rows of the matrix  C.
             M  must be at least zero.
            
n  Int32
             On entry, N specifies the number of columns of the matrix C.
             N  must be at least zero.
            
alpha  Complex<T>
             On entry, ALPHA specifies the scalar alpha.
            
a  ReadOnlySpan<Complex<T>>
            A is complex array of DIMENSION ( LDA, ka ), where ka is
             m  when  SIDE = 'L' or 'l'  and is n  otherwise.
             Before entry  with  SIDE = 'L' or 'l',  the  m by m  part of
             the array  A  must contain the  hermitian matrix,  such that
             when  UPLO = 'U' or 'u', the leading m by m upper triangular
             part of the array  A  must contain the upper triangular part
             of the  hermitian matrix and the  strictly  lower triangular
             part of  A  is not referenced,  and when  UPLO = 'L' or 'l',
             the leading  m by m  lower triangular part  of the  array  A
             must  contain  the  lower triangular part  of the  hermitian
             matrix and the  strictly upper triangular part of  A  is not
             referenced.
             Before entry  with  SIDE = 'R' or 'r',  the  n by n  part of
             the array  A  must contain the  hermitian matrix,  such that
             when  UPLO = 'U' or 'u', the leading n by n upper triangular
             part of the array  A  must contain the upper triangular part
             of the  hermitian matrix and the  strictly  lower triangular
             part of  A  is not referenced,  and when  UPLO = 'L' or 'l',
             the leading  n by n  lower triangular part  of the  array  A
             must  contain  the  lower triangular part  of the  hermitian
             matrix and the  strictly upper triangular part of  A  is not
             referenced.
             Note that the imaginary parts  of the diagonal elements need
             not be set, they are assumed to be zero.
            
lda  Int32
             On entry, LDA specifies the first dimension of A as declared
             in the  calling (sub) program. When  SIDE = 'L' or 'l'  then
             LDA must be at least  max( 1, m ), otherwise  LDA must be at
             least max( 1, n ).
            
b  ReadOnlySpan<Complex<T>>
            B is complex array of DIMENSION ( LDB, n ).
             Before entry, the leading  m by n part of the array  B  must
             contain the matrix B.
            
ldb  Int32
             On entry, LDB specifies the first dimension of B as declared
             in  the  calling  (sub)  program.   LDB  must  be  at  least
             max( 1, m ).
            
beta  Complex<T>
             On entry,  BETA  specifies the scalar  beta.  When  BETA  is
             supplied as zero then C need not be set on input.
            
c  Span<Complex<T>>
            C is complex array of DIMENSION ( LDC, n ).
             Before entry, the leading  m by n  part of the array  C must
             contain the matrix  C,  except when  beta  is zero, in which
             case C need not be set on entry.
             On exit, the array  C  is overwritten by the  m by n updated
             matrix.
            
ldc  Int32
             On entry, LDC specifies the first dimension of C as declared
             in  the  calling  (sub)  program.   LDC  must  be  at  least
             max( 1, m ).
            

Implements

ILinearAlgebraOperations<T>.HermitianMultiplyAndAddInPlace(MatrixOperationSide, MatrixTriangle, Int32, Int32, T, ReadOnlySpan<T>, Int32, ReadOnlySpan<T>, Int32, T, Span<T>, Int32)

Remarks

Further Details:

            Level 3 LinearAlgebra routine.
            -- Written on 8-February-1989.
               Jack Dongarra, Argonne National Laboratory.
               Iain Duff, AERE Harwell.
               Jeremy Du Croz, Numerical Algorithms Group Ltd.
               Sven Hammarling, Numerical Algorithms Group Ltd.
            

Authors: Univ. of Tennessee, Univ. of California Berkeley, Univ. of Colorado Denver, NAG Ltd.

Date: November 2011

See Also