chptrf man page on OpenIndiana

Man page or keyword search:  
man Server   20441 pages
apropos Keyword Search (all sections)
Output format
OpenIndiana logo
[printable version]

chptrf(3P)		    Sun Performance Library		    chptrf(3P)

NAME
       chptrf - compute the factorization of a complex Hermitian packed matrix
       A using the Bunch-Kaufman diagonal pivoting method

SYNOPSIS
       SUBROUTINE CHPTRF(UPLO, N, A, IPIVOT, INFO)

       CHARACTER * 1 UPLO
       COMPLEX A(*)
       INTEGER N, INFO
       INTEGER IPIVOT(*)

       SUBROUTINE CHPTRF_64(UPLO, N, A, IPIVOT, INFO)

       CHARACTER * 1 UPLO
       COMPLEX A(*)
       INTEGER*8 N, INFO
       INTEGER*8 IPIVOT(*)

   F95 INTERFACE
       SUBROUTINE HPTRF(UPLO, [N], A, IPIVOT, [INFO])

       CHARACTER(LEN=1) :: UPLO
       COMPLEX, DIMENSION(:) :: A
       INTEGER :: N, INFO
       INTEGER, DIMENSION(:) :: IPIVOT

       SUBROUTINE HPTRF_64(UPLO, [N], A, IPIVOT, [INFO])

       CHARACTER(LEN=1) :: UPLO
       COMPLEX, DIMENSION(:) :: A
       INTEGER(8) :: N, INFO
       INTEGER(8), DIMENSION(:) :: IPIVOT

   C INTERFACE
       #include <sunperf.h>

       void chptrf(char uplo, int n, complex *a, int *ipivot, int *info);

       void chptrf_64(char uplo,  long	n,  complex  *a,  long	*ipivot,  long
		 *info);

PURPOSE
       chptrf  computes the factorization of a complex Hermitian packed matrix
       A using the Bunch-Kaufman diagonal pivoting method:

	  A = U*D*U**H	or  A = L*D*L**H

       where U (or L) is a product of permutation and unit upper (lower)  tri‐
       angular matrices, and D is Hermitian and block diagonal with 1-by-1 and
       2-by-2 diagonal blocks.

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

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

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

		 On exit, the block diagonal matrix D and the multipliers used
		 to  obtain  the  factor U or L, stored as a packed triangular
		 matrix overwriting A (see below for further details).

       IPIVOT (output) INTEGER array, dimension (N)
		 Details of the interchanges and the block structure of D.  If
		 IPIVOT(k)  >  0,  then	 rows and columns k and IPIVOT(k) were
		 interchanged and D(k,k) is a 1-by-1 diagonal block.  If  UPLO
		 =  'U' and IPIVOT(k) = IPIVOT(k-1) < 0, then rows and columns
		 k-1 and -IPIVOT(k) were interchanged and D(k-1:k,k-1:k) is  a
		 2-by-2	 diagonal  block.   If	UPLO  =	 'L'  and  IPIVOT(k) =
		 IPIVOT(k+1) < 0, then rows and	 columns  k+1  and  -IPIVOT(k)
		 were  interchanged  and  D(k:k+1,k:k+1)  is a 2-by-2 diagonal
		 block.

       INFO (output)
		 = 0: successful exit
		 < 0: if INFO = -i, the i-th argument had an illegal value
		 > 0: if INFO = i, D(i,i) is exactly zero.  The	 factorization
		 has  been  completed,	but  the  block	 diagonal  matrix D is
		 exactly singular, and division by zero will occur  if	it  is
		 used to solve a system of equations.

FURTHER DETAILS
       5-96 - Based on modifications by J. Lewis, Boeing Computer Services
	      Company

       If UPLO = 'U', then A = U*D*U', where
	  U = P(n)*U(n)* ... *P(k)U(k)* ...,
       i.e.,  U is a product of terms P(k)*U(k), where k decreases from n to 1
       in steps of 1 or 2, and D is a block diagonal matrix  with  1-by-1  and
       2-by-2  diagonal	 blocks D(k).  P(k) is a permutation matrix as defined
       by IPIVOT(k), and U(k) is a unit upper triangular matrix, such that  if
       the diagonal block D(k) is of order s (s = 1 or 2), then

		  (   I	   v	0   )	k-s
	  U(k) =  (   0	   I	0   )	s
		  (   0	   0	I   )	n-k
		     k-s   s   n-k

       If  s = 1, D(k) overwrites A(k,k), and v overwrites A(1:k-1,k).	If s =
       2, the upper triangle of	 D(k)  overwrites  A(k-1,k-1),	A(k-1,k),  and
       A(k,k), and v overwrites A(1:k-2,k-1:k).

       If UPLO = 'L', then A = L*D*L', where
	  L = P(1)*L(1)* ... *P(k)*L(k)* ...,
       i.e.,  L is a product of terms P(k)*L(k), where k increases from 1 to n
       in steps of 1 or 2, and D is a block diagonal matrix  with  1-by-1  and
       2-by-2  diagonal	 blocks D(k).  P(k) is a permutation matrix as defined
       by IPIVOT(k), and L(k) is a unit lower triangular matrix, such that  if
       the diagonal block D(k) is of order s (s = 1 or 2), then

		  (   I	   0	 0   )	k-1
	  L(k) =  (   0	   I	 0   )	s
		  (   0	   v	 I   )	n-k-s+1
		     k-1   s  n-k-s+1

       If  s = 1, D(k) overwrites A(k,k), and v overwrites A(k+1:n,k).	If s =
       2,  the	lower  triangle	 of  D(k)  overwrites  A(k,k),	A(k+1,k),  and
       A(k+1,k+1), and v overwrites A(k+2:n,k:k+1).

				  6 Mar 2009			    chptrf(3P)
[top]

List of man pages available for OpenIndiana

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net