# FreeBSD Manual Pages

```PZHEEVD(l)			       )			    PZHEEVD(l)

NAME
PZHEEVD	-  compute all the eigenvalues and eigenvectors	of a Hermitian
matrix A	by using a divide and conquer algorithm

SYNOPSIS
SUBROUTINE PZHEEVD( JOBZ, UPLO, N, A, IA, JA, DESCA, W, Z, IZ, JZ,  DE-
SCZ,	 WORK,	LWORK,	RWORK,	LRWORK,	IWORK, LIWORK,
INFO	)

CHARACTER	   JOBZ, UPLO

INTEGER	   IA, INFO, IZ, JA, JZ, LIWORK, LRWORK, LWORK,	N

INTEGER	   DESCA( * ), DESCZ( *	), IWORK( * )

DOUBLE	   PRECISION RWORK( * ), W( * )

COMPLEX*16	   A( *	), WORK( * ), Z( * )

PURPOSE
PZHEEVD computes	all the	eigenvalues and	eigenvectors  of  a  Hermitian
matrix A	by using a divide and conquer algorithm.

ARGUMENTS
NP  =  the number of rows local to a given process.  NQ = the number of
columns local to	a given	process.

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

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

N       (global input) INTEGER
The number of rows and columns of the matrix A.	N >= 0.

A       (local input/workspace) block cyclic COMPLEX*16 array,
global  dimension (N, N), local dimension ( LLD_A, LOCc(JA+N-1)
)

On entry, the symmetric matrix A.  If UPLO = 'U', only the  up-
per  triangular part of A is used to define the elements	of the
symmetric matrix.  If UPLO = 'L',  only	the  lower  triangular
part  of	 A is used to define the elements of the symmetric ma-
trix.

On exit,	the lower triangle (if UPLO='L') or the	upper triangle
(if UPLO='U') of	A, including the diagonal, is destroyed.

IA      (global input) INTEGER
A's global row index, which points to the beginning of the sub-
matrix which is to be operated on.

JA      (global input) INTEGER
A's global column index,	which points to	the beginning  of  the
submatrix which is to be	operated on.

DESCA   (global and local input)	INTEGER	array of dimension DLEN_.
The  array  descriptor for the distributed matrix A.  If	DESCA(
CTXT_ ) is incorrect, PZHEEV cannot guarantee correct error re-
porting.

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

Z       (local output) COMPLEX*16 array,
global  dimension (N, N), local dimension ( LLD_Z, LOCc(JZ+N-1)
) Z contains the	orthonormal eigenvectors of the	matrix A.

IZ      (global input) INTEGER
Z's global row index, which points to the beginning of the sub-
matrix which is to be operated on.

JZ      (global input) INTEGER
Z's  global  column index, which	points to the beginning	of the
submatrix which is to be	operated on.

DESCZ   (global and local input)	INTEGER	array of dimension DLEN_.
The array descriptor for	 the  distributed  matrix  Z.	DESCZ(
CTXT_ ) must equal DESCA( CTXT_ )

WORK    (local workspace/output)	COMPLEX*16 array,
dimension  (LWORK)  On  output,	WORK(1)	 returns the workspace
needed for the computation.

LWORK   (local input) INTEGER
If eigenvectors are requested: LWORK = N	+ ( NP0	+ MQ0 +	NB ) *
NB,  with  NP0 =	NUMROC(	MAX( N,	NB, 2 ), NB, 0,	0, NPROW ) MQ0
= NUMROC( MAX( N, NB, 2 ), NB, 0, 0, NPCOL )

If LWORK	= -1, then LWORK is global input and a workspace query
is  assumed;  the  routine calculates the size for all work ar-
rays. Each of these values is returned in the  first  entry  of
the corresponding work array, and no error message is issued by
PXERBLA.

RWORK   (local workspace/output)	DOUBLE PRECISION array,
dimension  (LRWORK)  On	output	RWORK(1)  returns   the	  real
workspace needed	to guarantee completion.  If the input parame-
ters are	incorrect, RWORK(1) may	also be	incorrect.

LRWORK  (local input) INTEGER
Size of RWORK array.  RWORK >= 1	+ 8*N +	2*NP*NQ, NP =  NUMROC(
N,  NB, MYROW, IAROW, NPROW ) NQ	= NUMROC( N, NB, MYCOL,	IACOL,
NPCOL )

IWORK   (local workspace/output)	INTEGER	array, dimension (LIWORK)
On output IWORK(1) returns the integer workspace	needed.

LIWORK  (input) INTEGER
The dimension of	the array IWORK.  LIWORK = 7*N + 8*NPCOL + 2

INFO    (global output) INTEGER
= 0:  successful	exit
< 0:  If	the i-th argument is an	array and the j-entry  had  an
illegal	value, then INFO = -(i*100+j), if the i-th argument is
a scalar	and had	an illegal value, then INFO = -i.   >  0:   If
INFO  =	1  through N, the i(th)	eigenvalue did not converge in
PDLAED3.

Alignment requirements ======================

The distributed submatrices sub(	A ), sub( Z ) must verify some
alignment properties, namely the	following expression should be
true:  (	 MB_A.EQ.NB_A.EQ.MB_Z.EQ.NB_Z  .AND.  IROFFA.EQ.ICOFFA
.AND.   IROFFA.EQ.0 .AND.IROFFA.EQ.IROFFZ. AND. IAROW.EQ.IZROW)
with IROFFA = MOD( IA-1,	MB_A ) and ICOFFA = MOD( JA-1, NB_A ).

FURTHER	DETAILS
Contributed by Francoise	Tisseur, University of Manchester.

Reference:  F. Tisseur and J. Dongarra, "A Parallel Divide and
Conquer Algorithm for the Symmetric Eigenvalue Problem
on Distributed Memory Architectures",
SIAM	J. Sci.	Comput., 6:20 (1999), pp. 2223--2236.
(see	also LAPACK Working Note 132)
http://www.netlib.org/lapack/lawns/lawn132.ps

ScaLAPACK version 1.7		13 August 2001			    PZHEEVD(l)
```

NAME | SYNOPSIS | PURPOSE | ARGUMENTS | FURTHER DETAILS

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=pzheevd&manpath=FreeBSD+12.0-RELEASE+and+Ports>