clatps man page on Scientific

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

CLATPS(1)	    LAPACK auxiliary routine (version 3.2)	     CLATPS(1)

NAME
       CLATPS - solves one of the triangular systems   A * x = s*b, A**T * x =
       s*b, or A**H * x = s*b,

SYNOPSIS
       SUBROUTINE CLATPS( UPLO, TRANS, DIAG, NORMIN, N, AP, X,	SCALE,	CNORM,
			  INFO )

	   CHARACTER	  DIAG, NORMIN, TRANS, UPLO

	   INTEGER	  INFO, N

	   REAL		  SCALE

	   REAL		  CNORM( * )

	   COMPLEX	  AP( * ), X( * )

PURPOSE
       CLATPS  solves  one  of	the triangular systems with scaling to prevent
       overflow, where A is an upper or	 lower	triangular  matrix  stored  in
       packed  form.   Here  A**T denotes the transpose of A, A**H denotes the
       conjugate transpose of A, x and b are n-element vectors,	 and  s	 is  a
       scaling	factor,	 usually  less	than or equal to 1, chosen so that the
       components of x will be less  than  the	overflow  threshold.   If  the
       unscaled	 problem  will	not  cause  overflow, the Level 2 BLAS routine
       CTPSV is called. If the matrix A is singular (A(j,j) = 0 for  some  j),
       then s is set to 0 and a non-trivial solution to A*x = 0 is returned.

ARGUMENTS
       UPLO    (input) CHARACTER*1
	       Specifies whether the matrix A is upper or lower triangular.  =
	       'U':  Upper triangular
	       = 'L':  Lower triangular

       TRANS   (input) CHARACTER*1
	       Specifies the operation applied to A.  = 'N':  Solve A  *  x  =
	       s*b     (No transpose)
	       = 'T':  Solve A**T * x = s*b  (Transpose)
	       = 'C':  Solve A**H * x = s*b  (Conjugate transpose)

       DIAG    (input) CHARACTER*1
	       Specifies  whether  or  not the matrix A is unit triangular.  =
	       'N':  Non-unit triangular
	       = 'U':  Unit triangular

       NORMIN  (input) CHARACTER*1
	       Specifies whether CNORM has been set or	not.   =  'Y':	 CNORM
	       contains the column norms on entry
	       =  'N':	CNORM is not set on entry.  On exit, the norms will be
	       computed and stored in CNORM.

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

       AP      (input) COMPLEX array, dimension (N*(N+1)/2)
	       The upper or lower triangular 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	 +  (j-1)*j/2)	=  A(i,j)  for
	       1<=i<=j;	 if  UPLO  =  'L', AP(i + (j-1)*(2n-j)/2) = A(i,j) for
	       j<=i<=n.

       X       (input/output) COMPLEX array, dimension (N)
	       On entry, the right hand side b of the triangular  system.   On
	       exit, X is overwritten by the solution vector x.

       SCALE   (output) REAL
	       The  scaling  factor  s	for the triangular system A * x = s*b,
	       A**T * x = s*b,	or  A**H * x = s*b.  If SCALE = 0, the	matrix
	       A  is singular or badly scaled, and the vector x is an exact or
	       approximate solution to A*x = 0.

       CNORM   (input or output) REAL array, dimension (N)
	       If NORMIN = 'Y', CNORM is an input argument and	CNORM(j)  con‐
	       tains  the  norm of the off-diagonal part of the j-th column of
	       A.  If TRANS = 'N', CNORM(j) must be greater than or  equal  to
	       the  infinity-norm, and if TRANS = 'T' or 'C', CNORM(j) must be
	       greater than or equal to the 1-norm.  If NORMIN = 'N', CNORM is
	       an  output argument and CNORM(j) returns the 1-norm of the off‐
	       diagonal part of the j-th column of A.

       INFO    (output) INTEGER
	       = 0:  successful exit
	       < 0:  if INFO = -k, the k-th argument had an illegal value

FURTHER DETAILS
       A rough bound on x is computed; if that is less than overflow, CTPSV is
       called,	otherwise,  specific  code  is	used which checks for possible
       overflow or divide-by-zero at every operation.
       A columnwise scheme is used for solving A*x = b.	 The  basic  algorithm
       if A is lower triangular is
	    x[1:n] := b[1:n]
	    for j = 1, ..., n
		 x(j) := x(j) / A(j,j)
		 x[j+1:n] := x[j+1:n] - x(j) * A[j+1:n,j]
	    end
       Define bounds on the components of x after j iterations of the loop:
	  M(j) = bound on x[1:j]
	  G(j) = bound on x[j+1:n]
       Initially, let M(0) = 0 and G(0) = max{x(i), i=1,...,n}.
       Then for iteration j+1 we have
	  M(j+1) <= G(j) / | A(j+1,j+1) |
	  G(j+1) <= G(j) + M(j+1) * | A[j+2:n,j+1] |
		 <= G(j) ( 1 + CNORM(j+1) / | A(j+1,j+1) | )
       where  CNORM(j+1) is greater than or equal to the infinity-norm of col‐
       umn j+1 of A, not counting the diagonal.	 Hence
	  G(j) <= G(0) product ( 1 + CNORM(i) / | A(i,i) | )
		       1<=i<=j
       and
	  |x(j)| <= ( G(0) / |A(j,j)| ) product ( 1 + CNORM(i) / |A(i,i)| )
					1<=i< j
       Since |x(j)| <= M(j), we use the Level 2	 BLAS  routine	CTPSV  if  the
       reciprocal of the largest M(j), j=1,..,n, is larger than
       max(underflow, 1/overflow).
       The  bound on x(j) is also used to determine when a step in the column‐
       wise method can be performed without fear of overflow.  If the computed
       bound  is  greater  than a large constant, x is scaled to prevent over‐
       flow, but if the bound overflows, x is set to 0, x(j) to 1,  and	 scale
       to  0,  and  a  non-trivial solution to A*x = 0 is found.  Similarly, a
       row-wise scheme is used to solve A**T *x = b  or	 A**H  *x  =  b.   The
       basic algorithm for A upper triangular is
	    for j = 1, ..., n
		 x(j) := ( b(j) - A[1:j-1,j]' * x[1:j-1] ) / A(j,j)
	    end
       We simultaneously compute two bounds
	    G(j) = bound on ( b(i) - A[1:i-1,i]' * x[1:i-1] ), 1<=i<=j
	    M(j) = bound on x(i), 1<=i<=j
       The initial values are G(0) = 0, M(0) = max{b(i), i=1,..,n}, and we add
       the constraint G(j) >= G(j-1) and M(j) >= M(j-1) for j >= 1.  Then  the
       bound on x(j) is
	    M(j) <= M(j-1) * ( 1 + CNORM(j) ) / | A(j,j) |
		 <= M(0) * product ( ( 1 + CNORM(i) ) / |A(i,i)| )
			   1<=i<=j
       and we can safely call CTPSV if 1/M(n) and 1/G(n) are both greater than
       max(underflow, 1/overflow).

 LAPACK auxiliary routine (versioNovember 2008			     CLATPS(1)
[top]

List of man pages available for Scientific

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