·  Home
+   man pages
 -> Linux -> FreeBSD -> OpenBSD -> NetBSD -> Tru64 Unix -> HP-UX 11i -> IRIX
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

man pages->IRIX man pages -> complib/zlatrd (3)
 Title
 Content
 Arch
 Section All Sections 1 - General Commands 2 - System Calls 3 - Subroutines 4 - Special Files 5 - File Formats 6 - Games 7 - Macros and Conventions 8 - Maintenance Commands 9 - Kernel Interface n - New Commands

### Contents

```
ZLATRD(3F)							    ZLATRD(3F)

```

### NAME[Toc][Back]

```     ZLATRD - reduce NB	rows and columns of a complex Hermitian	matrix A to
Hermitian tridiagonal form	by a unitary similarity	transformation Q' * A
* Q, and returns the matrices V and W which are needed to apply the
transformation to the unreduced part of A
```

### SYNOPSIS[Toc][Back]

```     SUBROUTINE	ZLATRD(	UPLO, N, NB, A,	LDA, E,	TAU, W,	LDW )

CHARACTER	UPLO

INTEGER	LDA, LDW, N, NB

DOUBLE		PRECISION E( * )

COMPLEX*16	A( LDA,	* ), TAU( * ), W( LDW, * )
```

### PURPOSE[Toc][Back]

```     ZLATRD reduces NB rows and	columns	of a complex Hermitian matrix A	to
Hermitian tridiagonal form	by a unitary similarity	transformation Q' * A
* Q, and returns the matrices V and W which are needed to apply the
transformation to the unreduced part of A.

If	UPLO = 'U', ZLATRD reduces the last NB rows and	columns	of a matrix,
of	which the upper	triangle is supplied;
if	UPLO = 'L', ZLATRD reduces the first NB	rows and columns of a matrix,
of	which the lower	triangle is supplied.

This is an	auxiliary routine called by ZHETRD.

```

### ARGUMENTS[Toc][Back]

```     UPLO    (input) CHARACTER
Specifies whether the upper or lower triangular part of the
Hermitian matrix A	is stored:
= 'U': Upper triangular
= 'L': Lower triangular

N	     (input) INTEGER
The order of the matrix A.

NB	     (input) INTEGER
The number	of rows	and columns to be reduced.

A	     (input/output) COMPLEX*16 array, dimension	(LDA,N)
On	entry, the Hermitian matrix A.	If UPLO	= 'U', the leading nby-n
upper	triangular part	of A contains the upper	triangular
part of the matrix	A, and the strictly lower triangular part of A
is	not referenced.	 If UPLO = 'L',	the leading n-by-n lower
triangular	part of	A contains the lower triangular	part of	the
matrix A, and the strictly	upper triangular part of A is not
referenced.  On exit:  if UPLO = 'U', the last NB columns have

Page 1

ZLATRD(3F)							    ZLATRD(3F)

been reduced to tridiagonal form, with the	diagonal elements
overwriting the diagonal elements of A; the elements above	the
diagonal with the array TAU, represent the	unitary	matrix Q as a
product of	elementary reflectors; if UPLO = 'L', the first	NB
columns have been reduced to tridiagonal form, with the diagonal
elements overwriting the diagonal elements	of A; the elements
below the diagonal	with the array TAU, represent the  unitary
matrix Q as a product of elementary reflectors.  See Further
Details.  LDA     (input) INTEGER The leading dimension of	the
array A.  LDA >= max(1,N).

E	     (output) DOUBLE PRECISION array, dimension	(N-1)
If	UPLO = 'U', E(n-nb:n-1)	contains the superdiagonal elements of
the last NB columns of the	reduced	matrix;	if UPLO	= 'L', E(1:nb)
contains the subdiagonal elements of the first NB columns of the
reduced matrix.

TAU     (output) COMPLEX*16 array,	dimension (N-1)
The scalar	factors	of the elementary reflectors, stored in
TAU(n-nb:n-1) if UPLO = 'U', and in TAU(1:nb) if UPLO = 'L'.  See
Further Details.  W       (output)	COMPLEX*16 array, dimension
(LDW,NB) The n-by-nb matrix W required to update the unreduced
part of A.

LDW     (input) INTEGER
The leading dimension of the array	W. LDW >= max(1,N).

FURTHER	DETAILS
If	UPLO = 'U', the	matrix Q is represented	as a product of	elementary
reflectors

Q = H(n) H(n-1)	. . . H(n-nb+1).

Each H(i) has the form

H(i) = I - tau * v * v'

where tau is a complex scalar, and	v is a complex vector with v(i:n) = 0
and v(i-1)	= 1; v(1:i-1) is stored	on exit	in A(1:i-1,i), and tau in
TAU(i-1).

If	UPLO = 'L', the	matrix Q is represented	as a product of	elementary
reflectors

Q = H(1) H(2) .	. . H(nb).

Each H(i) has the form

H(i) = I - tau * v * v'

where tau is a complex scalar, and	v is a complex vector with v(1:i) = 0
and v(i+1)	= 1; v(i+1:n) is stored	on exit	in A(i+1:n,i), and tau in

Page 2

ZLATRD(3F)							    ZLATRD(3F)

TAU(i).

The elements of the vectors v together form the n-by-nb matrix V which is
needed, with W, to	apply the transformation to the	unreduced part of the
matrix, using a Hermitian rank-2k update of the form:  A := A - V*W' -
W*V'.

The contents of A on exit are illustrated by the following	examples with
n = 5 and nb = 2:

if	UPLO = 'U':			  if UPLO = 'L':

(  a   a	  a   v4  v5 )		    (  d		  )
(      a	  a   v4  v5 )		    (  1   d		  )
(	  a   1	  v5 )		    (  v1  1   a	  )
(	      d	  1  )		    (  v1  v2  a   a	  )
(		  d  )		    (  v1  v2  a   a   a  )

where d denotes a diagonal	element	of the reduced matrix, a denotes an
element of	the original matrix that is unchanged, and vi denotes an
element of	the vector defining H(i).
ZLATRD(3F)							    ZLATRD(3F)

```

### NAME[Toc][Back]

```     ZLATRD - reduce NB	rows and columns of a complex Hermitian	matrix A to
Hermitian tridiagonal form	by a unitary similarity	transformation Q' * A
* Q, and returns the matrices V and W which are needed to apply the
transformation to the unreduced part of A
```

### SYNOPSIS[Toc][Back]

```     SUBROUTINE	ZLATRD(	UPLO, N, NB, A,	LDA, E,	TAU, W,	LDW )

CHARACTER	UPLO

INTEGER	LDA, LDW, N, NB

DOUBLE		PRECISION E( * )

COMPLEX*16	A( LDA,	* ), TAU( * ), W( LDW, * )
```

### PURPOSE[Toc][Back]

```     ZLATRD reduces NB rows and	columns	of a complex Hermitian matrix A	to
Hermitian tridiagonal form	by a unitary similarity	transformation Q' * A
* Q, and returns the matrices V and W which are needed to apply the
transformation to the unreduced part of A.

If	UPLO = 'U', ZLATRD reduces the last NB rows and	columns	of a matrix,
of	which the upper	triangle is supplied;
if	UPLO = 'L', ZLATRD reduces the first NB	rows and columns of a matrix,
of	which the lower	triangle is supplied.

This is an	auxiliary routine called by ZHETRD.

```

### ARGUMENTS[Toc][Back]

```     UPLO    (input) CHARACTER
Specifies whether the upper or lower triangular part of the
Hermitian matrix A	is stored:
= 'U': Upper triangular
= 'L': Lower triangular

N	     (input) INTEGER
The order of the matrix A.

NB	     (input) INTEGER
The number	of rows	and columns to be reduced.

A	     (input/output) COMPLEX*16 array, dimension	(LDA,N)
On	entry, the Hermitian matrix A.	If UPLO	= 'U', the leading nby-n
upper	triangular part	of A contains the upper	triangular
part of the matrix	A, and the strictly lower triangular part of A
is	not referenced.	 If UPLO = 'L',	the leading n-by-n lower
triangular	part of	A contains the lower triangular	part of	the
matrix A, and the strictly	upper triangular part of A is not
referenced.  On exit:  if UPLO = 'U', the last NB columns have

Page 1

ZLATRD(3F)							    ZLATRD(3F)

been reduced to tridiagonal form, with the	diagonal elements
overwriting the diagonal elements of A; the elements above	the
diagonal with the array TAU, represent the	unitary	matrix Q as a
product of	elementary reflectors; if UPLO = 'L', the first	NB
columns have been reduced to tridiagonal form, with the diagonal
elements overwriting the diagonal elements	of A; the elements
below the diagonal	with the array TAU, represent the  unitary
matrix Q as a product of elementary reflectors.  See Further
Details.  LDA     (input) INTEGER The leading dimension of	the
array A.  LDA >= max(1,N).

E	     (output) DOUBLE PRECISION array, dimension	(N-1)
If	UPLO = 'U', E(n-nb:n-1)	contains the superdiagonal elements of
the last NB columns of the	reduced	matrix;	if UPLO	= 'L', E(1:nb)
contains the subdiagonal elements of the first NB columns of the
reduced matrix.

TAU     (output) COMPLEX*16 array,	dimension (N-1)
The scalar	factors	of the elementary reflectors, stored in
TAU(n-nb:n-1) if UPLO = 'U', and in TAU(1:nb) if UPLO = 'L'.  See
Further Details.  W       (output)	COMPLEX*16 array, dimension
(LDW,NB) The n-by-nb matrix W required to update the unreduced
part of A.

LDW     (input) INTEGER
The leading dimension of the array	W. LDW >= max(1,N).

FURTHER	DETAILS
If	UPLO = 'U', the	matrix Q is represented	as a product of	elementary
reflectors

Q = H(n) H(n-1)	. . . H(n-nb+1).

Each H(i) has the form

H(i) = I - tau * v * v'

where tau is a complex scalar, and	v is a complex vector with v(i:n) = 0
and v(i-1)	= 1; v(1:i-1) is stored	on exit	in A(1:i-1,i), and tau in
TAU(i-1).

If	UPLO = 'L', the	matrix Q is represented	as a product of	elementary
reflectors

Q = H(1) H(2) .	. . H(nb).

Each H(i) has the form

H(i) = I - tau * v * v'

where tau is a complex scalar, and	v is a complex vector with v(1:i) = 0
and v(i+1)	= 1; v(i+1:n) is stored	on exit	in A(i+1:n,i), and tau in

Page 2

ZLATRD(3F)							    ZLATRD(3F)

TAU(i).

The elements of the vectors v together form the n-by-nb matrix V which is
needed, with W, to	apply the transformation to the	unreduced part of the
matrix, using a Hermitian rank-2k update of the form:  A := A - V*W' -
W*V'.

The contents of A on exit are illustrated by the following	examples with
n = 5 and nb = 2:

if	UPLO = 'U':			  if UPLO = 'L':

(  a   a	  a   v4  v5 )		    (  d		  )
(      a	  a   v4  v5 )		    (  1   d		  )
(	  a   1	  v5 )		    (  v1  1   a	  )
(	      d	  1  )		    (  v1  v2  a   a	  )
(		  d  )		    (  v1  v2  a   a   a  )

where d denotes a diagonal	element	of the reduced matrix, a denotes an
element of	the original matrix that is unchanged, and vi denotes an
element of	the vector defining H(i).

PPPPaaaaggggeeee 3333```
[ Back ]
Similar pages