## NF01BV

### Computation of the matrix J' J + c I, for a full Jacobian J (one output variable)

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

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.

```
Specification
```      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(*)

```
Arguments

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.

```
Input/Output Parameters
```  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

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'.

```
Workspace
```  DWORK   DOUBLE PRECISION array, dimension (LDWORK)
Currently, this array is not used.

LDWORK  INTEGER
The length of the array DWORK.  LDWORK >= 0.

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

```
Method
```  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
```
Example

Program Text

```  None
```
Program Data
```  None
```
Program Results
```  None
```