## MB01ND

### Rank 2 operation alpha*x*trans(y) - alpha*y*trans(x) + A, with A a skew-symmetric matrix

[Specification] [Arguments] [Method] [References] [Comments] [Example]

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

      None

Example

Program Text

      None

Program Data

      None

Program Results

      None

Return to Supporting Routines index