ManagedLinearAlgebraOperations.BandMultiplyAndAddInPlace Method

Definition

Namespace: Extreme.Mathematics.LinearAlgebra.Implementation
Assembly: Extreme.Numerics (in Extreme.Numerics.dll) Version: 8.1.23

Overload List

BandMultiplyAndAddInPlace(TransposeOperation, Int32, Int32, Int32, Int32, Complex<Double>, Array2D<Complex<Double>>, ArraySlice<Complex<Double>>, Complex<Double>, ArraySlice<Complex<Double>>)

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, Double, Array2D<Double>, ArraySlice<Double>, Double, ArraySlice<Double>) Sum of the product of a general band matrix and vector and a scaled vector.

BandMultiplyAndAddInPlace(TransposeOperation, Int32, Int32, Int32, Int32, Complex<Double>, Array2D<Complex<Double>>, ArraySlice<Complex<Double>>, Complex<Double>, ArraySlice<Complex<Double>>)

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.

C#
public override void BandMultiplyAndAddInPlace(
	TransposeOperation trans,
	int m,
	int n,
	int kl,
	int ku,
	Complex<double> alpha,
	Array2D<Complex<double>> a,
	ArraySlice<Complex<double>> x,
	Complex<double> beta,
	ArraySlice<Complex<double>> y
)

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  Array2D<Complex<Double>>
            A is COMPLEX*16 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
            
             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  ArraySlice<Complex<Double>>
            X is COMPLEX*16 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  Complex<Double>
             On entry, BETA specifies the scalar beta. When BETA is
             supplied as zero then Y need not be set on input.
            
y  ArraySlice<Complex<Double>>
            Y is COMPLEX*16 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.
            
             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, Array2D<T>, ArraySlice<T>, T, ArraySlice<T>)

Remarks

Further Details:

            Level 2 Blas 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, Array2D<Double>, ArraySlice<Double>, Double, ArraySlice<Double>)

Sum of the product of a general band matrix and vector and a scaled vector.
C#
public override void BandMultiplyAndAddInPlace(
	TransposeOperation transA,
	int m,
	int n,
	int kl,
	int ku,
	double alpha,
	Array2D<double> a,
	ArraySlice<double> x,
	double beta,
	ArraySlice<double> y
)

Parameters

transA  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.
kl  Int32
The lower bandwidth of the matrix a.
ku  Int32
The upper bandwidth of the matrix a.
alpha  Double
The scalar used to multiply the matrix-vector product.
a  Array2D<Double>
Reference to the first element in a one-dimensional array that contains the elements of the matrix.
x  ArraySlice<Double>
A reference to a one-dimensional array containing the elements of the vector x.
beta  Double
The scalar used to multiply y.
y  ArraySlice<Double>
A reference to a one-dimensional array containing the elements of the vector y. The elements of y are overwritten with the result.

Implements

ILinearAlgebraOperations<T>.BandMultiplyAndAddInPlace(TransposeOperation, Int32, Int32, Int32, Int32, T, Array2D<T>, ArraySlice<T>, T, ArraySlice<T>)

See Also