## NF01BX

### Matrix-vector product x <-- (A' A + c I) x, for a full matrix A

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

Purpose

```  To compute (J'*J + c*I)*x, where J is an m-by-n real matrix, c is
a real scalar, I is the n-by-n identity matrix, and x is a real
n-vector.

NOTE: this routine must have the same arguments as SLICOT Library
routine NF01BW.

```
Specification
```      SUBROUTINE NF01BX( N, IPAR, LIPAR, DPAR, LDPAR, J, LDJ, X, INCX,
\$                   DWORK, LDWORK, INFO )
C     .. Scalar Arguments ..
INTEGER           INCX, INFO, LDJ, LDPAR, LDWORK, LIPAR, N
C     .. Array Arguments ..
INTEGER           IPAR(*)
DOUBLE PRECISION  DPAR(*), DWORK(*), J(LDJ,*), X(*)

```
Arguments

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

X       (input/output) DOUBLE PRECISION array, dimension
(1+(N-1)*abs(INCX))
On entry, this incremented array must contain the
vector x.
On exit, this incremented array contains the value of the
matrix-vector product (J'*J + c*I)*x.

INCX    (input) INTEGER
The increment for the elements of X.  INCX <> 0.

```
Workspace
```  DWORK   DOUBLE PRECISION array, dimension (LDWORK)

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

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

```
Method
```  The associativity of matrix multiplications is used; the result
is obtained as:  x_out = J'*( J*x ) + c*x.

```
```  None
```
Example

Program Text

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