ManagedLinearAlgebraOperations.BandMultiplyAndAddInPlace Method

Definition

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

Overload List

BandMultiplyAndAddInPlace(TransposeOperation, Int32, Int32, 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 band matrix, with kl sub-diagonals and ku super-diagonals.

BandMultiplyAndAddInPlace(TransposeOperation, Int32, Int32, 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 band matrix, with kl sub-diagonals and ku super-diagonals.

BandMultiplyAndAddInPlace(TransposeOperation, Int32, Int32, 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 band matrix, with kl sub-diagonals and ku super-diagonals.

BandMultiplyAndAddInPlace(TransposeOperation, Int32, Int32, 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 band matrix, with kl sub-diagonals and ku super-diagonals.

BandMultiplyAndAddInPlace(TransposeOperation, Int32, Int32, 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 band matrix, with kl sub-diagonals and ku super-diagonals.

BandMultiplyAndAddInPlace(TransposeOperation, Int32, Int32, 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 band matrix, with kl sub-diagonals and ku super-diagonals.

C#
public override void BandMultiplyAndAddInPlace(
	TransposeOperation trans,
	int m,
	int n,
	int kl,
	int ku,
	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

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*AH*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.
            
kl  Int32
             On entry, KL specifies the number of sub-diagonals of the
             matrix A. KL must satisfy  0 .le. KL.
            
ku  Int32
             On entry, KU specifies the number of super-diagonals of the
             matrix A. KU must satisfy  0 .le. KU.
            
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 ( kl + ku + 1 ) by n part of the
             array A must contain the matrix of coefficients, supplied
             column by column, with the leading diagonal of the matrix in
             row ( ku + 1 ) of the array, the first super-diagonal
             starting at position 2 in row ku, the first sub-diagonal
             starting at position 1 in row ( ku + 2 ), and so on.
             Elements in the array A that do not correspond to elements
             in the band matrix (such as the top left ku by ku triangle)
             are not referenced.
             The following program segment will transfer a band matrix
             from conventional full matrix storage to band storage:
                   DO 20, J = 1, N
                      K = KU + 1 - J
                      DO 10, I = MAX( 1, J - KU ), MIN( M, J + KL )
                         A( K + I, J ) = matrix( I, J )
                10    CONTINUE
                20 CONTINUE
            
lda  Int32
             On entry, LDA specifies the first dimension of A as declared
             in the calling (sub) program. LDA must be at least
             ( kl + ku + 1 ).
            
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, 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>.BandMultiplyAndAddInPlace(TransposeOperation, Int32, Int32, 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

BandMultiplyAndAddInPlace(TransposeOperation, Int32, Int32, 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 band matrix, with kl sub-diagonals and ku super-diagonals.

C#
public override void BandMultiplyAndAddInPlace(
	TransposeOperation transA,
	int m,
	int n,
	int kl,
	int ku,
	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.
            
kl  Int32
             On entry, KL specifies the number of sub-diagonals of the
             matrix A. KL must satisfy  0 .le. KL.
            
ku  Int32
             On entry, KU specifies the number of super-diagonals of the
             matrix A. KU must satisfy  0 .le. KU.
            
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 ( kl + ku + 1 ) by n part of the
             array A must contain the matrix of coefficients, supplied
             column by column, with the leading diagonal of the matrix in
             row ( ku + 1 ) of the array, the first super-diagonal
             starting at position 2 in row ku, the first sub-diagonal
             starting at position 1 in row ( ku + 2 ), and so on.
             Elements in the array A that do not correspond to elements
             in the band matrix (such as the top left ku by ku triangle)
             are not referenced.
             The following program segment will transfer a band matrix
             from conventional full matrix storage to band storage:
                   DO 20, J = 1, N
                      K = KU + 1 - J
                      DO 10, I = MAX( 1, J - KU ), MIN( M, J + KL )
                         A( K + I, J ) = matrix( I, J )
                10    CONTINUE
                20 CONTINUE
            
lda  Int32
             On entry, LDA specifies the first dimension of A as declared
             in the calling (sub) program. LDA must be at least
             ( kl + ku + 1 ).
            
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, 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>.BandMultiplyAndAddInPlace(TransposeOperation, Int32, Int32, 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

See Also