**Purpose**

To compute the matrix J'*J + c*I, for the Jacobian J as received from SLICOT Library routine NF01BY, for one output variable. NOTE: this routine must have the same arguments as SLICOT Library routine NF01BU.

SUBROUTINE NF01BV( STOR, UPLO, N, IPAR, LIPAR, DPAR, LDPAR, J, $ LDJ, JTJ, LDJTJ, DWORK, LDWORK, INFO ) C .. Scalar Arguments .. CHARACTER STOR, UPLO INTEGER INFO, LDJ, LDJTJ, LDPAR, LDWORK, LIPAR, N C .. Array Arguments .. INTEGER IPAR(*) DOUBLE PRECISION DPAR(*), DWORK(*), J(LDJ,*), JTJ(*)

**Mode Parameters**

STOR CHARACTER*1 Specifies the storage scheme for the symmetric matrix J'*J + c*I, as follows: = 'F' : full storage is used; = 'P' : packed storage is used. UPLO CHARACTER*1 Specifies which part of the matrix J'*J + c*I is stored, as follows: = 'U' : the upper triagular part is stored; = 'L' : the lower triagular part is stored.

N (input) INTEGER The number of columns of the Jacobian matrix J. N >= 0. IPAR (input) INTEGER array, dimension (LIPAR) The integer parameters describing the structure of the matrix J, as follows: IPAR(1) must contain the number of rows M of the Jacobian matrix J. M >= 0. IPAR is provided for compatibility with SLICOT Library routine MD03AD. LIPAR (input) INTEGER The length of the array IPAR. LIPAR >= 1. DPAR (input) DOUBLE PRECISION array, dimension (LDPAR) The real parameters needed for solving the problem. The entry DPAR(1) must contain the real scalar c. LDPAR (input) INTEGER The length of the array DPAR. LDPAR >= 1. J (input) DOUBLE PRECISION array, dimension (LDJ,N) The leading M-by-N part of this array must contain the Jacobian matrix J. LDJ INTEGER The leading dimension of the array J. LDJ >= MAX(1,M). JTJ (output) DOUBLE PRECISION array, dimension (LDJTJ,N), if STOR = 'F', dimension (N*(N+1)/2), if STOR = 'P'. The leading N-by-N (if STOR = 'F'), or N*(N+1)/2 (if STOR = 'P') part of this array contains the upper or lower triangle of the matrix J'*J + c*I, depending on UPLO = 'U', or UPLO = 'L', respectively, stored either as a two-dimensional, or one-dimensional array, depending on STOR. LDJTJ INTEGER The leading dimension of the array JTJ. LDJTJ >= MAX(1,N), if STOR = 'F'. LDJTJ >= 1, if STOR = 'P'.

DWORK DOUBLE PRECISION array, dimension (LDWORK) Currently, this array is not used. LDWORK INTEGER The length of the array DWORK. LDWORK >= 0.

INFO INTEGER = 0: successful exit; < 0: if INFO = -i, the i-th argument had an illegal value.

The matrix product is computed columnn-wise, exploiting the symmetry. BLAS 3 routine DSYRK is used if STOR = 'F', and BLAS 2 routine DGEMV is used if STOR = 'P'.

None

**Program Text**

None

None

None