ManagedLinearAlgebraOperations.MultiplyAndAddInPlace Method

Definition

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

Overload List

MultiplyAndAddInPlace(Int32, T, ArraySlice<T>, ArraySlice<T>)

Constant times a vector plus a vector.

MultiplyAndAddInPlace(Int32, Complex<T>, ArraySlice<Complex<T>>, ArraySlice<Complex<T>>)

Constant times a vector plus a vector.

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

Constant times a vector plus a vector.

MultiplyAndAddInPlace(Int32, Complex<Double>, ReadOnlySpan<Complex<Double>>, Int32, Span<Complex<Double>>, Int32)

Constant times a vector plus a vector.

MultiplyAndAddInPlace(Int32, Double, ReadOnlySpan<Double>, Int32, Span<Double>, Int32)

Constant times a vector plus a vector.

MultiplyAndAddInPlace(TransposeOperation, Int32, Int32, T, Array2D<T>, ArraySlice<T>, T, ArraySlice<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(TransposeOperation, Int32, Int32, Complex<T>, Array2D<Complex<T>>, ArraySlice<Complex<T>>, Complex<T>, ArraySlice<Complex<T>>)

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

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

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

MultiplyAndAddInPlace(TransposeOperation, TransposeOperation, Int32, Int32, Int32, T, Array2D<T>, Array2D<T>, T, Array2D<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(TransposeOperation, TransposeOperation, Int32, Int32, Int32, Complex<T>, Array2D<Complex<T>>, Array2D<Complex<T>>, Complex<T>, Array2D<Complex<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 or op( X ) = XH, 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(TransposeOperation, TransposeOperation, Int32, Int32, Int32, Complex<T>, ReadOnlySpan2D<Complex<T>>, ReadOnlySpan2D<Complex<T>>, Complex<T>, Span2D<Complex<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 or op( X ) = XH, 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(TransposeOperation, Int32, Int32, Complex<Double>, ReadOnlySpan<Complex<Double>>, Int32, ReadOnlySpan<Complex<Double>>, Int32, Complex<Double>, Span<Complex<Double>>, Int32)

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

MultiplyAndAddInPlace(TransposeOperation, Int32, Int32, Double, ReadOnlySpan<Double>, Int32, ReadOnlySpan<Double>, Int32, Double, Span<Double>, Int32)

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(TransposeOperation, TransposeOperation, Int32, Int32, Int32, Complex<Double>, ReadOnlySpan<Complex<Double>>, Int32, ReadOnlySpan<Complex<Double>>, Int32, Complex<Double>, Span<Complex<Double>>, Int32)

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 or op( X ) = XH, 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(TransposeOperation, TransposeOperation, Int32, Int32, Int32, Double, ReadOnlySpan<Double>, Int32, ReadOnlySpan<Double>, Int32, Double, Span<Double>, Int32)

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(Int32, Complex<Double>, ReadOnlySpan<Complex<Double>>, Int32, Span<Complex<Double>>, Int32)

Constant times a vector plus a vector.

C#
public override void MultiplyAndAddInPlace(
	int n,
	Complex<double> a,
	ReadOnlySpan<Complex<double>> x,
	int incx,
	Span<Complex<double>> y,
	int incy
)

Parameters

n  Int32
The number of elements in the vectors x and y.
a  Complex<Double>
 
x  ReadOnlySpan<Complex<Double>>
A span containing the elements of the vector x.
incx  Int32
The distance between elements in x.
y  Span<Complex<Double>>
A span containing the elements of the vector y. The elements of y are overwritten with the result.
incy  Int32
The distance between elements in y.

Implements

ILinearAlgebraOperations<T>.MultiplyAndAddInPlace(Int32, T, ReadOnlySpan<T>, Int32, Span<T>, Int32)

Remarks

Further Details:

            jack dongarra, 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(Int32, Double, ReadOnlySpan<Double>, Int32, Span<Double>, Int32)

Constant times a vector plus a vector.

C#
public override void MultiplyAndAddInPlace(
	int n,
	double alpha,
	ReadOnlySpan<double> x,
	int incx,
	Span<double> y,
	int incy
)

Parameters

n  Int32
The number of elements in the vectors x and y.
alpha  Double
The scalar value used to multiply the elements of x.
x  ReadOnlySpan<Double>
A span containing the elements of the vector x.
incx  Int32
The distance between elements in x.
y  Span<Double>
A span containing the elements of the vector y. The elements of y are overwritten with the result.
incy  Int32
The distance between elements in y.

Implements

ILinearAlgebraOperations<T>.MultiplyAndAddInPlace(Int32, T, ReadOnlySpan<T>, Int32, Span<T>, Int32)

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(TransposeOperation, Int32, Int32, Complex<Double>, ReadOnlySpan<Complex<Double>>, Int32, ReadOnlySpan<Complex<Double>>, Int32, Complex<Double>, Span<Complex<Double>>, Int32)

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

C#
public override void MultiplyAndAddInPlace(
	TransposeOperation transA,
	int m,
	int n,
	Complex<double> alpha,
	ReadOnlySpan<Complex<double>> a,
	int lda,
	ReadOnlySpan<Complex<double>> x,
	int incx,
	Complex<double> beta,
	Span<Complex<double>> y,
	int incy
)

Parameters

transA  TransposeOperation
 
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  Complex<Double>
             On entry, ALPHA specifies the scalar alpha.
            
a  ReadOnlySpan<Complex<Double>>
            A is complex array of DIMENSION ( LDA, n ).
             Before entry, the leading m by n part of the array A must
             contain the matrix of coefficients.
            
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, m ).
            
x  ReadOnlySpan<Complex<Double>>
            X is complex 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.
            
incx  Int32
             On entry, INCX specifies the increment for the elements of
             X. INCX must not be zero.
            
beta  Complex<Double>
             On entry, BETA specifies the scalar beta. When BETA is
             supplied as zero then Y need not be set on input.
            
y  Span<Complex<Double>>
            Y is complex 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.
            
incy  Int32
             On entry, INCY specifies the increment for the elements of
             Y. INCY must not be zero.
            

Implements

ILinearAlgebraOperations<T>.MultiplyAndAddInPlace(TransposeOperation, Int32, 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

MultiplyAndAddInPlace(TransposeOperation, Int32, Int32, Double, ReadOnlySpan<Double>, Int32, ReadOnlySpan<Double>, Int32, Double, Span<Double>, Int32)

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 override void MultiplyAndAddInPlace(
	TransposeOperation transA,
	int m,
	int n,
	double alpha,
	ReadOnlySpan<double> a,
	int lda,
	ReadOnlySpan<double> x,
	int incx,
	double beta,
	Span<double> y,
	int incy
)

Parameters

transA  TransposeOperation
 
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  Double
            ALPHA is DOUBLE PRECISION.
             On entry, ALPHA specifies the scalar alpha.
            
a  ReadOnlySpan<Double>
            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.
            
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, m ).
            
x  ReadOnlySpan<Double>
            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.
            
incx  Int32
             On entry, INCX specifies the increment for the elements of
             X. INCX must not be zero.
            
beta  Double
            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<Double>
            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.
            
incy  Int32
             On entry, INCY specifies the increment for the elements of
             Y. INCY must not be zero.
            

Implements

ILinearAlgebraOperations<T>.MultiplyAndAddInPlace(TransposeOperation, Int32, 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

MultiplyAndAddInPlace(TransposeOperation, TransposeOperation, Int32, Int32, Int32, Complex<Double>, ReadOnlySpan<Complex<Double>>, Int32, ReadOnlySpan<Complex<Double>>, Int32, Complex<Double>, Span<Complex<Double>>, Int32)

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 or op( X ) = XH, 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 override void MultiplyAndAddInPlace(
	TransposeOperation transA,
	TransposeOperation transB,
	int m,
	int n,
	int k,
	Complex<double> alpha,
	ReadOnlySpan<Complex<double>> a,
	int lda,
	ReadOnlySpan<Complex<double>> b,
	int ldb,
	Complex<double> beta,
	Span<Complex<double>> c,
	int ldc
)

Parameters

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
             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  Complex<Double>
             On entry, ALPHA specifies the scalar alpha.
            
a  ReadOnlySpan<Complex<Double>>
            A is complex 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.
            
lda  Int32
             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  ReadOnlySpan<Complex<Double>>
            B is complex 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.
            
ldb  Int32
             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  Complex<Double>
             On entry,  BETA  specifies the scalar  beta.  When  BETA  is
             supplied as zero then C need not be set on input.
            
c  Span<Complex<Double>>
            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  matrix
             ( alpha*op( A )*op( B ) + beta*C ).
            
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>.MultiplyAndAddInPlace(TransposeOperation, TransposeOperation, Int32, 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

MultiplyAndAddInPlace(TransposeOperation, TransposeOperation, Int32, Int32, Int32, Double, ReadOnlySpan<Double>, Int32, ReadOnlySpan<Double>, Int32, Double, Span<Double>, Int32)

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 override void MultiplyAndAddInPlace(
	TransposeOperation transA,
	TransposeOperation transB,
	int m,
	int n,
	int k,
	double alpha,
	ReadOnlySpan<double> a,
	int lda,
	ReadOnlySpan<double> b,
	int ldb,
	double beta,
	Span<double> c,
	int ldc
)

Parameters

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
             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  Double
            ALPHA is DOUBLE PRECISION.
             On entry, ALPHA specifies the scalar alpha.
            
a  ReadOnlySpan<Double>
            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.
            
lda  Int32
             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  ReadOnlySpan<Double>
            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.
            
ldb  Int32
             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  Double
            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<Double>
            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 ).
            
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>.MultiplyAndAddInPlace(TransposeOperation, TransposeOperation, Int32, 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