·  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/dspevd (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

```
DSPEVD(3F)							    DSPEVD(3F)

```

### NAME[Toc][Back]

```     DSPEVD - compute all the eigenvalues and, optionally, eigenvectors	of a
real symmetric matrix A in	packed storage
```

### SYNOPSIS[Toc][Back]

```     SUBROUTINE	DSPEVD(	JOBZ, UPLO, N, AP, W, Z, LDZ, WORK, LWORK, IWORK,
LIWORK,	INFO )

CHARACTER	JOBZ, UPLO

INTEGER	INFO, LDZ, LIWORK, LWORK, N

INTEGER	IWORK( * )

DOUBLE		PRECISION AP( *	), W( *	), WORK( * ), Z( LDZ, *	)
```

### PURPOSE[Toc][Back]

```     DSPEVD computes all the eigenvalues and, optionally, eigenvectors of a
real symmetric matrix A in	packed storage.	If eigenvectors	are desired,
it	uses a divide and conquer algorithm.

The divide	and conquer algorithm makes very mild assumptions about
floating point arithmetic.	It will	work on	machines with a	guard digit in
add/subtract, or on those binary machines without guard digits which
subtract like the Cray X-MP, Cray Y-MP, Cray C-90,	or Cray-2. It could
conceivably fail on hexadecimal or	decimal	machines without guard digits,
but we know of none.

```

### ARGUMENTS[Toc][Back]

```     JOBZ    (input) CHARACTER*1
= 'N':  Compute eigenvalues only;
= 'V':  Compute eigenvalues and eigenvectors.

UPLO    (input) CHARACTER*1
= 'U':  Upper triangle of A is stored;
= 'L':  Lower triangle of A is stored.

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

AP	     (input/output) DOUBLE PRECISION array, dimension (N*(N+1)/2)
On	entry, the upper or lower triangle of the symmetric matrix A,
packed columnwise in a linear array.  The j-th column of A	is
stored in the array AP as follows:	 if UPLO = 'U',	AP(i + (j1)*j/2)
= A(i,j) for 1<=i<=j; if UPLO = 'L', AP(i + (j-1)*(2*nj)/2)
= A(i,j) for	j<=i<=n.

On	exit, AP is overwritten	by values generated during the
reduction to tridiagonal form.  If	UPLO = 'U', the	diagonal and
first superdiagonal of the	tridiagonal matrix T overwrite the
corresponding elements of A, and if UPLO =	'L', the diagonal and

Page 1

DSPEVD(3F)							    DSPEVD(3F)

first subdiagonal of T overwrite the corresponding	elements of A.

W	     (output) DOUBLE PRECISION array, dimension	(N)
If	INFO = 0, the eigenvalues in ascending order.

Z	     (output) DOUBLE PRECISION array, dimension	(LDZ, N)
If	JOBZ = 'V', then if INFO = 0, Z	contains the orthonormal
eigenvectors of the matrix	A, with	the i-th column	of Z holding
the eigenvector associated	with W(i).  If JOBZ = 'N', then	Z is
not referenced.

LDZ     (input) INTEGER
The leading dimension of the array	Z.  LDZ	>= 1, and if JOBZ =
'V', LDZ >= max(1,N).

WORK    (workspace/output)	DOUBLE PRECISION array,
dimension (LWORK) On exit,	if LWORK > 0, WORK(1) returns the
optimal LWORK.

LWORK   (input) INTEGER
The dimension of the array	WORK.  If N <= 1,		LWORK
must be at	least 1.  If JOBZ = 'N'	and N >	1, LWORK must be at
least 2*N.	 If JOBZ = 'V' and N > 1, LWORK	must be	at least ( 1 +
5*N + 2*N*lg N + 2*N**2 ),	where lg( N ) =	smallest integer k
such that 2**k >= N.

IWORK   (workspace/output)	INTEGER	array, dimension (LIWORK)
On	exit, if LIWORK	> 0, IWORK(1) returns the optimal LIWORK.

LIWORK  (input) INTEGER
The dimension of the array	IWORK.	If JOBZ	 = 'N' or N <= 1,
LIWORK must be at least 1.	 If JOBZ  = 'V'	and N >	1, LIWORK must
be	at least 2 + 5*N.

INFO    (output) INTEGER
= 0:  successful exit
< 0:  if INFO = -i, the i-th argument had an illegal value.
> 0:  if INFO = i,	the algorithm failed to	converge; i offdiagonal
elements of an intermediate tridiagonal form did not
converge to zero.
DSPEVD(3F)							    DSPEVD(3F)

```

### NAME[Toc][Back]

```     DSPEVD - compute all the eigenvalues and, optionally, eigenvectors	of a
real symmetric matrix A in	packed storage
```

### SYNOPSIS[Toc][Back]

```     SUBROUTINE	DSPEVD(	JOBZ, UPLO, N, AP, W, Z, LDZ, WORK, LWORK, IWORK,
LIWORK,	INFO )

CHARACTER	JOBZ, UPLO

INTEGER	INFO, LDZ, LIWORK, LWORK, N

INTEGER	IWORK( * )

DOUBLE		PRECISION AP( *	), W( *	), WORK( * ), Z( LDZ, *	)
```

### PURPOSE[Toc][Back]

```     DSPEVD computes all the eigenvalues and, optionally, eigenvectors of a
real symmetric matrix A in	packed storage.	If eigenvectors	are desired,
it	uses a divide and conquer algorithm.

The divide	and conquer algorithm makes very mild assumptions about
floating point arithmetic.	It will	work on	machines with a	guard digit in
add/subtract, or on those binary machines without guard digits which
subtract like the Cray X-MP, Cray Y-MP, Cray C-90,	or Cray-2. It could
conceivably fail on hexadecimal or	decimal	machines without guard digits,
but we know of none.

```

### ARGUMENTS[Toc][Back]

```     JOBZ    (input) CHARACTER*1
= 'N':  Compute eigenvalues only;
= 'V':  Compute eigenvalues and eigenvectors.

UPLO    (input) CHARACTER*1
= 'U':  Upper triangle of A is stored;
= 'L':  Lower triangle of A is stored.

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

AP	     (input/output) DOUBLE PRECISION array, dimension (N*(N+1)/2)
On	entry, the upper or lower triangle of the symmetric matrix A,
packed columnwise in a linear array.  The j-th column of A	is
stored in the array AP as follows:	 if UPLO = 'U',	AP(i + (j1)*j/2)
= A(i,j) for 1<=i<=j; if UPLO = 'L', AP(i + (j-1)*(2*nj)/2)
= A(i,j) for	j<=i<=n.

On	exit, AP is overwritten	by values generated during the
reduction to tridiagonal form.  If	UPLO = 'U', the	diagonal and
first superdiagonal of the	tridiagonal matrix T overwrite the
corresponding elements of A, and if UPLO =	'L', the diagonal and

Page 1

DSPEVD(3F)							    DSPEVD(3F)

first subdiagonal of T overwrite the corresponding	elements of A.

W	     (output) DOUBLE PRECISION array, dimension	(N)
If	INFO = 0, the eigenvalues in ascending order.

Z	     (output) DOUBLE PRECISION array, dimension	(LDZ, N)
If	JOBZ = 'V', then if INFO = 0, Z	contains the orthonormal
eigenvectors of the matrix	A, with	the i-th column	of Z holding
the eigenvector associated	with W(i).  If JOBZ = 'N', then	Z is
not referenced.

LDZ     (input) INTEGER
The leading dimension of the array	Z.  LDZ	>= 1, and if JOBZ =
'V', LDZ >= max(1,N).

WORK    (workspace/output)	DOUBLE PRECISION array,
dimension (LWORK) On exit,	if LWORK > 0, WORK(1) returns the
optimal LWORK.

LWORK   (input) INTEGER
The dimension of the array	WORK.  If N <= 1,		LWORK
must be at	least 1.  If JOBZ = 'N'	and N >	1, LWORK must be at
least 2*N.	 If JOBZ = 'V' and N > 1, LWORK	must be	at least ( 1 +
5*N + 2*N*lg N + 2*N**2 ),	where lg( N ) =	smallest integer k
such that 2**k >= N.

IWORK   (workspace/output)	INTEGER	array, dimension (LIWORK)
On	exit, if LIWORK	> 0, IWORK(1) returns the optimal LIWORK.

LIWORK  (input) INTEGER
The dimension of the array	IWORK.	If JOBZ	 = 'N' or N <= 1,
LIWORK must be at least 1.	 If JOBZ  = 'V'	and N >	1, LIWORK must
be	at least 2 + 5*N.

INFO    (output) INTEGER
= 0:  successful exit
< 0:  if INFO = -i, the i-th argument had an illegal value.
> 0:  if INFO = i,	the algorithm failed to	converge; i offdiagonal
elements of an intermediate tridiagonal form did not
converge to zero.

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