LinearAlgebraOperationsExtensions.MultiplyAndAddInPlace Method

Definition

Namespace: Numerics.NET.Collections
Assembly: Numerics.NET (in Numerics.NET.dll) Version: 9.0.0

Overload List

MultiplyAndAddInPlace<T>(ILinearAlgebraOperations<T>, Int32, T, ReadOnlySpanSlice<T>, SpanSlice<T>)

Constant times a vector plus a vector.

MultiplyAndAddInPlace<T>(ILinearAlgebraOperations<T>, TransposeOperation, Int32, Int32, T, ReadOnlySpan2D<T>, ReadOnlySpanSlice<T>, T, SpanSlice<T>)

Performs one of the matrix-vector operations y := alpha*A*x + beta*y, or y := alpha*AT*x + beta*y, where alpha and beta are scalars, x and y are vectors and A is an m by n matrix.

MultiplyAndAddInPlace<T>(ILinearAlgebraOperations<T>, TransposeOperation, TransposeOperation, Int32, Int32, Int32, T, ReadOnlySpan2D<T>, ReadOnlySpan2D<T>, T, Span2D<T>)

Performs one of the matrix-matrix operations C := alpha*op( A )*op( B ) + beta*C, where op( X ) is one of op( X ) = X or op( X ) = XT, alpha and beta are scalars, and A, B and C are matrices, with op( A ) an m by k matrix, op( B ) a k by n matrix and C an m by n matrix.

MultiplyAndAddInPlace<T, TStorage>(ILinearAlgebraOperations<T>, Int32, T, TStorage, TStorage) Evaluates a vector plus the product of a scalar and a vector
MultiplyAndAddInPlace<T, TStorage2D>(ILinearAlgebraOperations<T>, TransposeOperation, TransposeOperation, Int32, Int32, Int32, T, TStorage2D, TStorage2D, T, TStorage2D) Sum of the product of two general matrices and a scaled matrix.
MultiplyAndAddInPlace<T, TStorage, TStorage2D>(ILinearAlgebraOperations<T>, TransposeOperation, Int32, Int32, T, TStorage2D, TStorage, T, TStorage) Sum of the product of a general matrix and vector and a scaled vector.

MultiplyAndAddInPlace<T>(ILinearAlgebraOperations<T>, Int32, T, ReadOnlySpanSlice<T>, SpanSlice<T>)

Constant times a vector plus a vector.

C#
public static void MultiplyAndAddInPlace<T>(
	this ILinearAlgebraOperations<T> operations,
	int n,
	T a,
	ReadOnlySpanSlice<T> x,
	SpanSlice<T> y
)

Parameters

operations  ILinearAlgebraOperations<T>
 
n  Int32
 
a  T
 
x  ReadOnlySpanSlice<T>
 
y  SpanSlice<T>
 

Type Parameters

T

Usage Note

In Visual Basic and C#, you can call this method as an instance method on any object of type ILinearAlgebraOperations<T>. When you use instance method syntax to call this method, omit the first parameter. For more information, see Extension Methods (Visual Basic) or Extension Methods (C# Programming Guide).

Remarks

            uses unrolled loops for increments equal to one.
            

Further Details:

            jack dongarra, linpack, 3/11/78.
            modified 12/3/93, array(1) declarations changed to array(*)
            

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

Date: November 2011

MultiplyAndAddInPlace<T, TStorage>(ILinearAlgebraOperations<T>, Int32, T, TStorage, TStorage)

Evaluates a vector plus the product of a scalar and a vector
C#
public static void MultiplyAndAddInPlace<T, TStorage>(
	this ILinearAlgebraOperations<T> operations,
	int n,
	T alpha,
	TStorage x,
	TStorage y
)
where TStorage : Object, IStorageSlice<T>

Parameters

operations  ILinearAlgebraOperations<T>
The linear algebra operations instance used to perform the calculation.
n  Int32
The number of elements in the vectors x and y.
alpha  T
The scalar value used to multiply the elements of x.
x  TStorage
A reference to a one-dimensional array containing the elements of the vector x.
y  TStorage
A reference to a one-dimensional array containing the elements of the vector y. The elements of y are overwritten with the result.

Type Parameters

T
TStorage

Usage Note

In Visual Basic and C#, you can call this method as an instance method on any object of type ILinearAlgebraOperations<T>. When you use instance method syntax to call this method, omit the first parameter. For more information, see Extension Methods (Visual Basic) or Extension Methods (C# Programming Guide).

MultiplyAndAddInPlace<T>(ILinearAlgebraOperations<T>, TransposeOperation, Int32, Int32, T, ReadOnlySpan2D<T>, ReadOnlySpanSlice<T>, T, SpanSlice<T>)

Performs one of the matrix-vector operations y := alpha*A*x + beta*y, or y := alpha*AT*x + beta*y, where alpha and beta are scalars, x and y are vectors and A is an m by n matrix.

C#
public static void MultiplyAndAddInPlace<T>(
	this ILinearAlgebraOperations<T> operations,
	TransposeOperation trans,
	int m,
	int n,
	T alpha,
	ReadOnlySpan2D<T> a,
	ReadOnlySpanSlice<T> x,
	T beta,
	SpanSlice<T> y
)

Parameters

operations  ILinearAlgebraOperations<T>
The object that performs the operation.
trans  TransposeOperation
             On entry, TRANS specifies the operation to be performed as
             follows:
                TRANS = 'N' or 'n'   y := alpha*A*x + beta*y.
                TRANS = 'T' or 't'   y := alpha*AT*x + beta*y.
                TRANS = 'C' or 'c'   y := alpha*AT*x + beta*y.
            
m  Int32
             On entry, M specifies the number of rows of the matrix A.
             M must be at least zero.
            
n  Int32
             On entry, N specifies the number of columns of the matrix A.
             N must be at least zero.
            
alpha  T
            ALPHA is DOUBLE PRECISION.
             On entry, ALPHA specifies the scalar alpha.
            
a  ReadOnlySpan2D<T>
            A is DOUBLE PRECISION array of DIMENSION ( LDA, n ).
             Before entry, the leading m by n part of the array A must
             contain the matrix of coefficients.
            
             On entry, LDA specifies the first dimension of A as declared
             in the calling (sub) program. LDA must be at least
             max( 1, m ).
            
x  ReadOnlySpanSlice<T>
            X is DOUBLE PRECISION array of DIMENSION at least
             ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n'
             and at least
             ( 1 + ( m - 1 )*abs( INCX ) ) otherwise.
             Before entry, the incremented array X must contain the
             vector x.
            
             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  SpanSlice<T>
            Y is DOUBLE PRECISION array of DIMENSION at least
             ( 1 + ( m - 1 )*abs( INCY ) ) when TRANS = 'N' or 'n'
             and at least
             ( 1 + ( n - 1 )*abs( INCY ) ) otherwise.
             Before entry with BETA non-zero, the incremented array Y
             must contain the 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.
            

Type Parameters

T

Usage Note

In Visual Basic and C#, you can call this method as an instance method on any object of type ILinearAlgebraOperations<T>. When you use instance method syntax to call this method, omit the first parameter. For more information, see Extension Methods (Visual Basic) or Extension Methods (C# Programming Guide).

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

MultiplyAndAddInPlace<T, TStorage, TStorage2D>(ILinearAlgebraOperations<T>, TransposeOperation, Int32, Int32, T, TStorage2D, TStorage, T, TStorage)

Sum of the product of a general matrix and vector and a scaled vector.
C#
public static void MultiplyAndAddInPlace<T, TStorage, TStorage2D>(
	this ILinearAlgebraOperations<T> operations,
	TransposeOperation transposeOperation,
	int m,
	int n,
	T alpha,
	TStorage2D a,
	TStorage x,
	T beta,
	TStorage y
)
where TStorage : Object, IStorageSlice<T>
where TStorage2D : Object, IStorage2D<T>

Parameters

operations  ILinearAlgebraOperations<T>
The linear algebra operations instance used to perform the calculation.
transposeOperation  TransposeOperation
Specifies the operation to be performed on the matrix a.
m  Int32
The number of rows in the matrix a.
n  Int32
The number of columns in the matrix a.
alpha  T
The scalar used to multiply the matrix-vector product.
a  TStorage2D
A span that contains the elements of the matrix.
x  TStorage
A reference to a one-dimensional array containing the elements of the vector x.
beta  T
The scalar used to multiply y.
y  TStorage
A reference to a one-dimensional array containing the elements of the vector y. The elements of y are overwritten with the result.

Type Parameters

T
TStorage
TStorage2D

Usage Note

In Visual Basic and C#, you can call this method as an instance method on any object of type ILinearAlgebraOperations<T>. When you use instance method syntax to call this method, omit the first parameter. For more information, see Extension Methods (Visual Basic) or Extension Methods (C# Programming Guide).

Remarks

This method is similar to the BLAS routine DGEMV.

MultiplyAndAddInPlace<T>(ILinearAlgebraOperations<T>, TransposeOperation, TransposeOperation, Int32, Int32, Int32, T, ReadOnlySpan2D<T>, ReadOnlySpan2D<T>, T, Span2D<T>)

Performs one of the matrix-matrix operations C := alpha*op( A )*op( B ) + beta*C, where op( X ) is one of op( X ) = X or op( X ) = XT, alpha and beta are scalars, and A, B and C are matrices, with op( A ) an m by k matrix, op( B ) a k by n matrix and C an m by n matrix.

C#
public static void MultiplyAndAddInPlace<T>(
	this ILinearAlgebraOperations<T> operations,
	TransposeOperation transa,
	TransposeOperation transb,
	int m,
	int n,
	int k,
	T alpha,
	ReadOnlySpan2D<T> a,
	ReadOnlySpan2D<T> b,
	T beta,
	Span2D<T> c
)

Parameters

operations  ILinearAlgebraOperations<T>
The object that performs the operation.
transa  TransposeOperation
             On entry, TRANSA specifies the form of op( A ) to be used in
             the matrix multiplication as follows:
                TRANSA = 'N' or 'n',  op( A ) = A.
                TRANSA = 'T' or 't',  op( A ) = AT.
                TRANSA = 'C' or 'c',  op( A ) = AT.
            
transb  TransposeOperation
             On entry, TRANSB specifies the form of op( B ) to be used in
             the matrix multiplication as follows:
                TRANSB = 'N' or 'n',  op( B ) = B.
                TRANSB = 'T' or 't',  op( B ) = BT.
                TRANSB = 'C' or 'c',  op( B ) = BT.
            
m  Int32
             On entry,  M  specifies  the number  of rows  of the  matrix
             op( A )  and of the  matrix  C.  M  must  be at least  zero.
            
n  Int32
             On entry,  N  specifies the number  of columns of the matrix
             op( B ) and the number of columns of the matrix C. N must be
             at least zero.
            
k  Int32
             On entry,  K  specifies  the number of columns of the matrix
             op( A ) and the number of rows of the matrix op( B ). K must
             be at least  zero.
            
alpha  T
            ALPHA is DOUBLE PRECISION.
             On entry, ALPHA specifies the scalar alpha.
            
a  ReadOnlySpan2D<T>
            A is DOUBLE PRECISION array of DIMENSION ( LDA, ka ), where ka is
             k  when  TRANSA = 'N' or 'n',  and is  m  otherwise.
             Before entry with  TRANSA = 'N' or 'n',  the leading  m by k
             part of the array  A  must contain the matrix  A,  otherwise
             the leading  k by m  part of the array  A  must contain  the
             matrix A.
            
             On entry, LDA specifies the first dimension of A as declared
             in the calling (sub) program. When  TRANSA = 'N' or 'n' then
             LDA must be at least  max( 1, m ), otherwise  LDA must be at
             least  max( 1, k ).
            
b  ReadOnlySpan2D<T>
            B is DOUBLE PRECISION array of DIMENSION ( LDB, kb ), where kb is
             n  when  TRANSB = 'N' or 'n',  and is  k  otherwise.
             Before entry with  TRANSB = 'N' or 'n',  the leading  k by n
             part of the array  B  must contain the matrix  B,  otherwise
             the leading  n by k  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. When  TRANSB = 'N' or 'n' then
             LDB must be at least  max( 1, k ), otherwise  LDB must be at
             least  max( 1, n ).
            
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  Span2D<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  matrix
             ( alpha*op( A )*op( B ) + beta*C ).
            
             On entry, LDC specifies the first dimension of C as declared
             in  the  calling  (sub)  program.   LDC  must  be  at  least
             max( 1, m ).
            

Type Parameters

T

Usage Note

In Visual Basic and C#, you can call this method as an instance method on any object of type ILinearAlgebraOperations<T>. When you use instance method syntax to call this method, omit the first parameter. For more information, see Extension Methods (Visual Basic) or Extension Methods (C# Programming Guide).

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

MultiplyAndAddInPlace<T, TStorage2D>(ILinearAlgebraOperations<T>, TransposeOperation, TransposeOperation, Int32, Int32, Int32, T, TStorage2D, TStorage2D, T, TStorage2D)

Sum of the product of two general matrices and a scaled matrix.
C#
public static void MultiplyAndAddInPlace<T, TStorage2D>(
	this ILinearAlgebraOperations<T> operations,
	TransposeOperation transA,
	TransposeOperation transB,
	int m,
	int n,
	int k,
	T alpha,
	TStorage2D a,
	TStorage2D b,
	T beta,
	TStorage2D c
)
where TStorage2D : Object, IStorage2D<T>

Parameters

operations  ILinearAlgebraOperations<T>
The linear algebra operations instance used to perform the calculation.
transA  TransposeOperation
Specifies the operation to be performed on the matrix a.
transB  TransposeOperation
Specifies the operation to be performed on the matrix b.
m  Int32
The number of rows in the matrix a transformed as specified by transA, and the matrix c.
n  Int32
The number of columns in the matrix b transformed as specified by transB, and the matrix c.
k  Int32
The number of columns in the matrix a transformed as specified by transA, and the number of rows of the matrix b transformed as specified by transB.
alpha  T
The scalar used to multiply the matrix-vector product.
a  TStorage2D
A span that contains the elements of the first matrix.
b  TStorage2D
A span that contains the elements of the second matrix.
beta  T
The scalar used to multiply c.
c  TStorage2D
A span that contains the elements of the third matrix.

Type Parameters

T
TStorage2D

Usage Note

In Visual Basic and C#, you can call this method as an instance method on any object of type ILinearAlgebraOperations<T>. When you use instance method syntax to call this method, omit the first parameter. For more information, see Extension Methods (Visual Basic) or Extension Methods (C# Programming Guide).

See Also