Contents


NAME

     ctpsv - solve one of the systems of equations   A*x = b,  or
     A'*x = b, or conjg( A' )*x = b

SYNOPSIS

     SUBROUTINE CTPSV(UPLO, TRANSA, DIAG, N, A, Y, INCY)

     CHARACTER * 1 UPLO, TRANSA, DIAG
     COMPLEX A(*), Y(*)
     INTEGER N, INCY

     SUBROUTINE CTPSV_64(UPLO, TRANSA, DIAG, N, A, Y, INCY)

     CHARACTER * 1 UPLO, TRANSA, DIAG
     COMPLEX A(*), Y(*)
     INTEGER*8 N, INCY

  F95 INTERFACE
     SUBROUTINE TPSV(UPLO, [TRANSA], DIAG, [N], A, Y, [INCY])

     CHARACTER(LEN=1) :: UPLO, TRANSA, DIAG
     COMPLEX, DIMENSION(:) :: A, Y
     INTEGER :: N, INCY

     SUBROUTINE TPSV_64(UPLO, [TRANSA], DIAG, [N], A, Y, [INCY])

     CHARACTER(LEN=1) :: UPLO, TRANSA, DIAG
     COMPLEX, DIMENSION(:) :: A, Y
     INTEGER(8) :: N, INCY

  C INTERFACE
     #include <sunperf.h>

     void ctpsv(char uplo, char transa, char diag, int n, complex
               *a, complex *y, int incy);

     void ctpsv_64(char uplo, char transa,  char  diag,  long  n,
               complex *a, complex *y, long incy);

PURPOSE

     ctpsv solves one of the systems of equations  A*x  =  b,  or
     A'*x  =  b, or conjg( A' )*x = b where b and x are n element
     vectors and A is an n by n unit, or non-unit, upper or lower
     triangular matrix, supplied in packed form.

     No test for singularity or near-singularity is  included  in
     this  routine.  Such  tests must be performed before calling
     this routine.

ARGUMENTS

     UPLO (input)
               On entry, UPLO specifies whether the matrix is  an
               upper or lower triangular matrix as follows:

               UPLO = 'U' or  'u'    A  is  an  upper  triangular
               matrix.

               UPLO = 'L'  or  'l'    A  is  a  lower  triangular
               matrix.

               Unchanged on exit.

     TRANSA (input)
               On entry, TRANSA specifies  the  equations  to  be
               solved as follows:

               TRANSA = 'N' or 'n'   A*x = b.

               TRANSA = 'T' or 't'   A'*x = b.

               TRANSA = 'C' or 'c'   conjg( A' )*x = b.

               Unchanged on exit.

               TRANSA is defaulted to 'N' for F95 INTERFACE.

     DIAG (input)
               On entry, DIAG specifies whether or not A is  unit
               triangular as follows:

               DIAG = 'U' or 'u'   A is assumed to be  unit  tri-
               angular.

               DIAG = 'N' or 'n'   A is not assumed  to  be  unit
               triangular.

               Unchanged on exit.

     N (input)
               On entry, N specifies the order of the  matrix  A.
               N >= 0.  Unchanged on exit.
     A (input)
               ( ( n*( n + 1 ) )/2 ).  Before entry with  UPLO  =
               'U'  or  'u',  the  array A must contain the upper
               triangular matrix packed sequentially,  column  by
               column,  so that A( 1 ) contains a( 1, 1 ), A( 2 )
               and A( 3 ) contain a( 1, 2 ) and a( 2, 2 ) respec-
               tively,  and  so on.  Before entry with UPLO = 'L'
               or 'l', the array A must contain  the  lower  tri-
               angular  matrix  packed  sequentially,  column  by
               column, so that A( 1 ) contains a( 1, 1 ), A( 2  )
               and A( 3 ) contain a( 2, 1 ) and a( 3, 1 ) respec-
               tively, and so on.  Note that when  DIAG = 'U'  or
               'u',  the  diagonal  elements  of A are not refer-
               enced, but are assumed to be unity.  Unchanged  on
               exit.

     Y (input/output)
               ( 1 + ( n - 1 )*abs( INCY ) ).  Before entry,  the
               incremented  array  Y  must  contain the n element
               right-hand side vector b. On exit, Y is  overwrit-
               ten with the solution vector x.

     INCY (input)
               On entry, INCY specifies  the  increment  for  the
               elements of Y. INCY <> 0.  Unchanged on exit.