LinearAlgebraOperations<T>.HermitianMultiplyAndAddInPlace Method

Definition

Namespace: Numerics.NET.LinearAlgebra.Implementation
Assembly: Numerics.NET (in Numerics.NET.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, T, ReadOnlySpan<T>, Int32, ReadOnlySpan<T>, Int32, T, Span<T>, Int32) Product of a hermitian matrix and a vector.
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(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(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(MatrixTriangle, Int32, T, Array2D<T>, ArraySlice<T>, T, ArraySlice<T>)

Product of a hermitian matrix and a vector.
C#
public void HermitianMultiplyAndAddInPlace(
	MatrixTriangle storedTriangle,
	int n,
	T alpha,
	Array2D<T> a,
	ArraySlice<T> x,
	T beta,
	ArraySlice<T> y
)

Parameters

storedTriangle  MatrixTriangle
Specifies whether the matrix is an upper or lower triangular matrix.
n  Int32
The number of rows and columns in the matrix a.
alpha  T
The scalar used to multiply the matrix-vector product.
a  Array2D<T>
A span that contains the elements of the matrix.
x  ArraySlice<T>
A reference to a one-dimensional array containing the elements of the vector x.
beta  T
The scalar used to multiply y.
y  ArraySlice<T>
A reference to a one-dimensional array containing the elements of the vector y. The elements of y are overwritten with the result.

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.

C#
public void HermitianMultiplyAndAddInPlace(
	MatrixTriangle uplo,
	int n,
	Complex<T> alpha,
	Array2D<Complex<T>> a,
	ArraySlice<Complex<T>> x,
	Complex<T> beta,
	ArraySlice<Complex<T>> y
)

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  Array2D<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.
            
             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  ArraySlice<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.
            
             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  ArraySlice<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.
            
             On entry, INCY specifies the increment for the elements of
             Y. INCY must not be zero.
            

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(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.

C#
public void HermitianMultiplyAndAddInPlace(
	MatrixTriangle uplo,
	int n,
	Complex<T> alpha,
	ReadOnlySpan2D<Complex<T>> a,
	ReadOnlySpanSlice<Complex<T>> x,
	Complex<T> beta,
	SpanSlice<Complex<T>> y
)

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  ReadOnlySpan2D<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.
            
             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  ReadOnlySpanSlice<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.
            
             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  SpanSlice<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.
            
             On entry, INCY specifies the increment for the elements of
             Y. INCY must not be zero.
            

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, T, Array2D<T>, Array2D<T>, T, Array2D<T>)

Sum of the product of a hermitian and a general matrix and a scaled matrix.
C#
public void HermitianMultiplyAndAddInPlace(
	MatrixOperationSide side,
	MatrixTriangle storedTriangle,
	int m,
	int n,
	T alpha,
	Array2D<T> a,
	Array2D<T> b,
	T beta,
	Array2D<T> c
)

Parameters

side  MatrixOperationSide
Specifies on which side the hermitian matrix a is to be multiplied.
storedTriangle  MatrixTriangle
Specifies whether the elements of the matrix a are stored in the upper or lower triangular part.
m  Int32
The number of rows in the matrix a and the matrix c.
n  Int32
The number of columns in the matrix b and the matrix c.
alpha  T
The scalar used to multiply the matrix-vector product.
a  Array2D<T>
A span that contains the elements of the first matrix.
b  Array2D<T>
A span that contains the elements of the second matrix.
beta  T
The scalar used to multiply c.
c  Array2D<T>
A span that contains the elements of the third 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.

C#
public void HermitianMultiplyAndAddInPlace(
	MatrixOperationSide side,
	MatrixTriangle uplo,
	int m,
	int n,
	Complex<T> alpha,
	Array2D<Complex<T>> a,
	Array2D<Complex<T>> b,
	Complex<T> beta,
	Array2D<Complex<T>> c
)

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  Array2D<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.
            
             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  Array2D<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.
            
             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  Array2D<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.
            
             On entry, LDC specifies the first dimension of C as declared
             in  the  calling  (sub)  program.   LDC  must  be  at  least
             max( 1, m ).
            

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

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.

C#
public void HermitianMultiplyAndAddInPlace(
	MatrixOperationSide side,
	MatrixTriangle uplo,
	int m,
	int n,
	Complex<T> alpha,
	ReadOnlySpan2D<Complex<T>> a,
	ReadOnlySpan2D<Complex<T>> b,
	Complex<T> beta,
	Span2D<Complex<T>> c
)

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  ReadOnlySpan2D<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.
            
             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  ReadOnlySpan2D<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.
            
             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  Span2D<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.
            
             On entry, LDC specifies the first dimension of C as declared
             in  the  calling  (sub)  program.   LDC  must  be  at  least
             max( 1, m ).
            

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

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

Product of a hermitian matrix and a vector.
C#
public void HermitianMultiplyAndAddInPlace(
	MatrixTriangle storedTriangle,
	int n,
	T alpha,
	ReadOnlySpan<T> a,
	int lda,
	ReadOnlySpan<T> x,
	int incx,
	T beta,
	Span<T> y,
	int incy
)

Parameters

storedTriangle  MatrixTriangle
Specifies whether the matrix is an upper or lower triangular matrix.
n  Int32
The number of rows and columns in the matrix a.
alpha  T
The scalar used to multiply the matrix-vector product.
a  ReadOnlySpan<T>
A span that contains the elements of the matrix.
lda  Int32
The leading dimension of the matrix a.
x  ReadOnlySpan<T>
A reference to a one-dimensional array containing the elements of the vector x.
incx  Int32
The distance between elements in x.
beta  T
The scalar used to multiply y.
y  Span<T>
A reference to a one-dimensional array containing the elements of the vector y. The elements of y are overwritten with the result.
incy  Int32
The distance between elements in y.

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 abstract 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, 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.
C#
public void HermitianMultiplyAndAddInPlace(
	MatrixOperationSide side,
	MatrixTriangle storedTriangle,
	int m,
	int n,
	T alpha,
	ReadOnlySpan<T> a,
	int lda,
	ReadOnlySpan<T> b,
	int ldb,
	T beta,
	Span<T> c,
	int ldc
)

Parameters

side  MatrixOperationSide
Specifies on which side the hermitian matrix a is to be multiplied.
storedTriangle  MatrixTriangle
Specifies whether the elements of the matrix a are stored in the upper or lower triangular part.
m  Int32
The number of rows in the matrix a and the matrix c.
n  Int32
The number of columns in the matrix b and the matrix c.
alpha  T
The scalar used to multiply the matrix-vector product.
a  ReadOnlySpan<T>
A span that contains the elements of the first matrix.
lda  Int32
The leading dimension of the matrix a.
b  ReadOnlySpan<T>
A span that contains the elements of the second matrix.
ldb  Int32
The leading dimension of the matrix b.
beta  T
The scalar used to multiply c.
c  Span<T>
A span that contains the elements of the third matrix.
ldc  Int32
The leading dimension of the matrix c.

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 abstract 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