Purpose
To perform the skew-symmetric rank 2 operation
A := alpha*x*y' - alpha*y*x' + A,
where alpha is a scalar, x and y are vectors of length n and A is
an n-by-n skew-symmetric matrix.
This is a modified version of the vanilla implemented BLAS
routine DSYR2 written by Jack Dongarra, Jeremy Du Croz,
Sven Hammarling, and Richard Hanson.
Specification
SUBROUTINE MB01ND( UPLO, N, ALPHA, X, INCX, Y, INCY, A, LDA )
C .. Scalar Arguments ..
DOUBLE PRECISION ALPHA
INTEGER INCX, INCY, LDA, N
CHARACTER UPLO
C .. Array Arguments ..
DOUBLE PRECISION A( LDA, * ), X( * ), Y( * )
Arguments
Mode Parameters
UPLO CHARACTER*1
Specifies whether the upper or lower triangular part of
the array A is to be referenced as follows:
= 'U': only the strictly upper triangular part of A is to
be referenced;
= 'L': only the strictly lower triangular part of A is to
be referenced.
Input/Output Parameters
N (input) INTEGER
The order of the matrix A. N >= 0.
ALPHA (input) DOUBLE PRECISION
The scalar alpha. If alpha is zero X and Y are not
referenced.
X (input) DOUBLE PRECISION array, dimension
( 1 + ( N - 1 )*abs( INCX ) ).
On entry, elements 1, INCX+1, .., ( N - 1 )*INCX + 1 of
this array must contain the elements of the vector X.
INCX (input) INTEGER
The increment for the elements of X. IF INCX < 0 then the
elements of X are accessed in reversed order. INCX <> 0.
Y (input) DOUBLE PRECISION array, dimension
( 1 + ( N - 1 )*abs( INCY ) ).
On entry, elements 1, INCY+1, .., ( N - 1 )*INCY + 1 of
this array must contain the elements of the vector Y.
INCY (input) INTEGER
The increment for the elements of Y. IF INCY < 0 then the
elements of Y are accessed in reversed order. INCY <> 0.
A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
On entry with UPLO = 'U', the leading N-by-N part of this
array must contain the strictly upper triangular part of
the matrix A. The lower triangular part of this array is
not referenced.
On entry with UPLO = 'L', the leading N-by-N part of this
array must contain the strictly lower triangular part of
the matrix A. The upper triangular part of this array is
not referenced.
On exit with UPLO = 'U', the leading N-by-N part of this
array contains the strictly upper triangular part of the
updated matrix A.
On exit with UPLO = 'L', the leading N-by-N part of this
array contains the strictly lower triangular part of the
updated matrix A.
LDA INTEGER
The leading dimension of the array A. LDA >= MAX(1,N)
Numerical Aspects
Though being almost identical with the vanilla implementation of the BLAS routine DSYR2 the performance of this routine could be significantly lower in the case of vendor supplied, highly optimized BLAS.Further Comments
NoneExample
Program Text
NoneProgram Data
NoneProgram Results
None