GenericLinearAlgebraOperations<T>.SymmetricMultiplyAndAddInPlace Method

Definition

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

Overload List

SymmetricMultiplyAndAddInPlace(MatrixTriangle, Int32, T, Array2D<T>, ArraySlice<T>, T, ArraySlice<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 symmetric matrix.

SymmetricMultiplyAndAddInPlace(MatrixOperationSide, MatrixTriangle, Int32, Int32, T, Array2D<T>, Array2D<T>, T, Array2D<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 a symmetric matrix and B and C are m by n matrices.

SymmetricMultiplyAndAddInPlace(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 a symmetric matrix and B and C are m by n matrices.

SymmetricMultiplyAndAddInPlace(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 a symmetric matrix and B and C are m by n matrices.

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

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 symmetric matrix.

SymmetricMultiplyAndAddInPlace(MatrixOperationSide, MatrixTriangle, Int32, Int32, T, ReadOnlySpan<T>, Int32, ReadOnlySpan<T>, Int32, T, Span<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 a symmetric matrix and B and C are m by n matrices.

SymmetricMultiplyAndAddInPlace(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 a symmetric matrix and B and C are m by n matrices.

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

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 symmetric matrix.

C#
public override void SymmetricMultiplyAndAddInPlace(
	MatrixTriangle uplo,
	int n,
	T alpha,
	ReadOnlySpan<T> a,
	int lda,
	ReadOnlySpan<T> x,
	int incx,
	T beta,
	Span<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  T
            ALPHA is DOUBLE PRECISION.
             On entry, ALPHA specifies the scalar alpha.
            
a  ReadOnlySpan<T>
            A is DOUBLE PRECISION 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 symmetric 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 symmetric matrix and the strictly
             upper triangular part of A is not referenced.
            
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<T>
            X is DOUBLE PRECISION 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  T
            BETA is DOUBLE PRECISION.
             On entry, BETA specifies the scalar beta. When BETA is
             supplied as zero then Y need not be set on input.
            
y  Span<T>
            Y is DOUBLE PRECISION 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>.SymmetricMultiplyAndAddInPlace(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

SymmetricMultiplyAndAddInPlace(MatrixOperationSide, MatrixTriangle, Int32, Int32, T, ReadOnlySpan<T>, Int32, ReadOnlySpan<T>, Int32, T, Span<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 a symmetric matrix and B and C are m by n matrices.

C#
public override void SymmetricMultiplyAndAddInPlace(
	MatrixOperationSide side,
	MatrixTriangle uplo,
	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
             On entry,  SIDE  specifies whether  the  symmetric 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  symmetric  matrix   A  is  to  be
             referenced as follows:
                UPLO = 'U' or 'u'   Only the upper triangular part of the
                                    symmetric matrix is to be referenced.
                UPLO = 'L' or 'l'   Only the lower triangular part of the
                                    symmetric 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  T
            ALPHA is DOUBLE PRECISION.
             On entry, ALPHA specifies the scalar alpha.
            
a  ReadOnlySpan<T>
            A is DOUBLE PRECISION 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  symmetric 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  symmetric 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  symmetric
             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  symmetric 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  symmetric 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  symmetric
             matrix and the  strictly upper triangular part of  A  is not
             referenced.
            
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<T>
            B is DOUBLE PRECISION 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  T
            BETA is DOUBLE PRECISION.
             On entry,  BETA  specifies the scalar  beta.  When  BETA  is
             supplied as zero then C need not be set on input.
            
c  Span<T>
            C is DOUBLE PRECISION 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>.SymmetricMultiplyAndAddInPlace(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

SymmetricMultiplyAndAddInPlace(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 a symmetric matrix and B and C are m by n matrices.

C#
public override void SymmetricMultiplyAndAddInPlace(
	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  symmetric 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  symmetric  matrix   A  is  to  be
             referenced as follows:
                UPLO = 'U' or 'u'   Only the upper triangular part of the
                                    symmetric matrix is to be referenced.
                UPLO = 'L' or 'l'   Only the lower triangular part of the
                                    symmetric 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  symmetric 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  symmetric 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  symmetric
             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  symmetric 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  symmetric 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  symmetric
             matrix and the  strictly upper triangular part of  A  is not
             referenced.
            
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>.SymmetricMultiplyAndAddInPlace(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