1c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath SUBROUTINE ZTPSV(UPLO,TRANS,DIAG,N,AP,X,INCX) 2c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* .. Scalar Arguments .. 3c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath INTEGER INCX,N 4c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath CHARACTER DIAG,TRANS,UPLO 5c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* .. 6c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* .. Array Arguments .. 7c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath DOUBLE COMPLEX AP(*),X(*) 8c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* .. 9c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 10c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Purpose 11c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* ======= 12c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 13c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* ZTPSV solves one of the systems of equations 14c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 15c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* A*x = b, or A'*x = b, or conjg( A' )*x = b, 16c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 17c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* where b and x are n element vectors and A is an n by n unit, or 18c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* non-unit, upper or lower triangular matrix, supplied in packed form. 19c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 20c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* No test for singularity or near-singularity is included in this 21c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* routine. Such tests must be performed before calling this routine. 22c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 23c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Arguments 24c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* ========== 25c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 26c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* UPLO - CHARACTER*1. 27c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* On entry, UPLO specifies whether the matrix is an upper or 28c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* lower triangular matrix as follows: 29c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 30c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* UPLO = 'U' or 'u' A is an upper triangular matrix. 31c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 32c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* UPLO = 'L' or 'l' A is a lower triangular matrix. 33c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 34c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Unchanged on exit. 35c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 36c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* TRANS - CHARACTER*1. 37c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* On entry, TRANS specifies the equations to be solved as 38c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* follows: 39c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 40c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* TRANS = 'N' or 'n' A*x = b. 41c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 42c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* TRANS = 'T' or 't' A'*x = b. 43c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 44c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* TRANS = 'C' or 'c' conjg( A' )*x = b. 45c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 46c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Unchanged on exit. 47c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 48c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* DIAG - CHARACTER*1. 49c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* On entry, DIAG specifies whether or not A is unit 50c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* triangular as follows: 51c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 52c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* DIAG = 'U' or 'u' A is assumed to be unit triangular. 53c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 54c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* DIAG = 'N' or 'n' A is not assumed to be unit 55c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* triangular. 56c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 57c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Unchanged on exit. 58c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 59c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* N - INTEGER. 60c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* On entry, N specifies the order of the matrix A. 61c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* N must be at least zero. 62c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Unchanged on exit. 63c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 64c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* AP - COMPLEX*16 array of DIMENSION at least 65c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* ( ( n*( n + 1 ) )/2 ). 66c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Before entry with UPLO = 'U' or 'u', the array AP must 67c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* contain the upper triangular matrix packed sequentially, 68c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* column by column, so that AP( 1 ) contains a( 1, 1 ), 69c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* AP( 2 ) and AP( 3 ) contain a( 1, 2 ) and a( 2, 2 ) 70c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* respectively, and so on. 71c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Before entry with UPLO = 'L' or 'l', the array AP must 72c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* contain the lower triangular matrix packed sequentially, 73c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* column by column, so that AP( 1 ) contains a( 1, 1 ), 74c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* AP( 2 ) and AP( 3 ) contain a( 2, 1 ) and a( 3, 1 ) 75c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* respectively, and so on. 76c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Note that when DIAG = 'U' or 'u', the diagonal elements of 77c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* A are not referenced, but are assumed to be unity. 78c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Unchanged on exit. 79c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 80c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* X - COMPLEX*16 array of dimension at least 81c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* ( 1 + ( n - 1 )*abs( INCX ) ). 82c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Before entry, the incremented array X must contain the n 83c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* element right-hand side vector b. On exit, X is overwritten 84c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* with the solution vector x. 85c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 86c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* INCX - INTEGER. 87c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* On entry, INCX specifies the increment for the elements of 88c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* X. INCX must not be zero. 89c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Unchanged on exit. 90c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 91c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Further Details 92c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* =============== 93c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 94c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Level 2 Blas routine. 95c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 96c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* -- Written on 22-October-1986. 97c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Jack Dongarra, Argonne National Lab. 98c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Jeremy Du Croz, Nag Central Office. 99c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Sven Hammarling, Nag Central Office. 100c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Richard Hanson, Sandia National Labs. 101c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 102c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* ===================================================================== 103c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 104c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* .. Parameters .. 105c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath DOUBLE COMPLEX ZERO 106c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath PARAMETER (ZERO= (0.0D+0,0.0D+0)) 107c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* .. 108c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* .. Local Scalars .. 109c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath DOUBLE COMPLEX TEMP 110c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath INTEGER I,INFO,IX,J,JX,K,KK,KX 111c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath LOGICAL NOCONJ,NOUNIT 112c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* .. 113c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* .. External Functions .. 114c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath LOGICAL LSAME 115c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath EXTERNAL LSAME 116c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* .. 117c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* .. External Subroutines .. 118c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath EXTERNAL XERBLA 119c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* .. 120c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* .. Intrinsic Functions .. 121c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath INTRINSIC DCONJG 122c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* .. 123c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 124c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Test the input parameters. 125c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 126c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath INFO = 0 127c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN 128c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath INFO = 1 129c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath ELSE IF (.NOT.LSAME(TRANS,'N') .AND. .NOT.LSAME(TRANS,'T') .AND. 130c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath + .NOT.LSAME(TRANS,'C')) THEN 131c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath INFO = 2 132c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath ELSE IF (.NOT.LSAME(DIAG,'U') .AND. .NOT.LSAME(DIAG,'N')) THEN 133c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath INFO = 3 134c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath ELSE IF (N.LT.0) THEN 135c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath INFO = 4 136c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath ELSE IF (INCX.EQ.0) THEN 137c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath INFO = 7 138c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath END IF 139c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (INFO.NE.0) THEN 140c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath CALL XERBLA('ZTPSV ',INFO) 141c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath RETURN 142c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath END IF 143c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 144c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Quick return if possible. 145c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 146c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (N.EQ.0) RETURN 147c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 148c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath NOCONJ = LSAME(TRANS,'T') 149c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath NOUNIT = LSAME(DIAG,'N') 150c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 151c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Set up the start point in X if the increment is not unity. This 152c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* will be ( N - 1 )*INCX too small for descending loops. 153c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 154c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (INCX.LE.0) THEN 155c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath KX = 1 - (N-1)*INCX 156c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath ELSE IF (INCX.NE.1) THEN 157c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath KX = 1 158c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath END IF 159c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 160c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Start the operations. In this version the elements of AP are 161c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* accessed sequentially with one pass through AP. 162c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 163c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (LSAME(TRANS,'N')) THEN 164c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 165c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Form x := inv( A )*x. 166c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 167c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (LSAME(UPLO,'U')) THEN 168c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath KK = (N* (N+1))/2 169c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (INCX.EQ.1) THEN 170c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath DO 20 J = N,1,-1 171c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (X(J).NE.ZERO) THEN 172c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (NOUNIT) X(J) = X(J)/AP(KK) 173c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath TEMP = X(J) 174c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath K = KK - 1 175c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath DO 10 I = J - 1,1,-1 176c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath X(I) = X(I) - TEMP*AP(K) 177c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath K = K - 1 178c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 10 CONTINUE 179c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath END IF 180c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath KK = KK - J 181c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 20 CONTINUE 182c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath ELSE 183c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath JX = KX + (N-1)*INCX 184c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath DO 40 J = N,1,-1 185c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (X(JX).NE.ZERO) THEN 186c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (NOUNIT) X(JX) = X(JX)/AP(KK) 187c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath TEMP = X(JX) 188c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IX = JX 189c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath DO 30 K = KK - 1,KK - J + 1,-1 190c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IX = IX - INCX 191c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath X(IX) = X(IX) - TEMP*AP(K) 192c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 30 CONTINUE 193c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath END IF 194c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath JX = JX - INCX 195c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath KK = KK - J 196c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 40 CONTINUE 197c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath END IF 198c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath ELSE 199c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath KK = 1 200c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (INCX.EQ.1) THEN 201c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath DO 60 J = 1,N 202c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (X(J).NE.ZERO) THEN 203c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (NOUNIT) X(J) = X(J)/AP(KK) 204c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath TEMP = X(J) 205c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath K = KK + 1 206c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath DO 50 I = J + 1,N 207c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath X(I) = X(I) - TEMP*AP(K) 208c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath K = K + 1 209c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 50 CONTINUE 210c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath END IF 211c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath KK = KK + (N-J+1) 212c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 60 CONTINUE 213c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath ELSE 214c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath JX = KX 215c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath DO 80 J = 1,N 216c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (X(JX).NE.ZERO) THEN 217c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (NOUNIT) X(JX) = X(JX)/AP(KK) 218c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath TEMP = X(JX) 219c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IX = JX 220c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath DO 70 K = KK + 1,KK + N - J 221c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IX = IX + INCX 222c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath X(IX) = X(IX) - TEMP*AP(K) 223c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 70 CONTINUE 224c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath END IF 225c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath JX = JX + INCX 226c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath KK = KK + (N-J+1) 227c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 80 CONTINUE 228c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath END IF 229c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath END IF 230c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath ELSE 231c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 232c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Form x := inv( A' )*x or x := inv( conjg( A' ) )*x. 233c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 234c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (LSAME(UPLO,'U')) THEN 235c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath KK = 1 236c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (INCX.EQ.1) THEN 237c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath DO 110 J = 1,N 238c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath TEMP = X(J) 239c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath K = KK 240c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (NOCONJ) THEN 241c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath DO 90 I = 1,J - 1 242c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath TEMP = TEMP - AP(K)*X(I) 243c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath K = K + 1 244c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 90 CONTINUE 245c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (NOUNIT) TEMP = TEMP/AP(KK+J-1) 246c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath ELSE 247c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath DO 100 I = 1,J - 1 248c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath TEMP = TEMP - DCONJG(AP(K))*X(I) 249c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath K = K + 1 250c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 100 CONTINUE 251c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (NOUNIT) TEMP = TEMP/DCONJG(AP(KK+J-1)) 252c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath END IF 253c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath X(J) = TEMP 254c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath KK = KK + J 255c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 110 CONTINUE 256c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath ELSE 257c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath JX = KX 258c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath DO 140 J = 1,N 259c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath TEMP = X(JX) 260c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IX = KX 261c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (NOCONJ) THEN 262c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath DO 120 K = KK,KK + J - 2 263c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath TEMP = TEMP - AP(K)*X(IX) 264c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IX = IX + INCX 265c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 120 CONTINUE 266c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (NOUNIT) TEMP = TEMP/AP(KK+J-1) 267c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath ELSE 268c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath DO 130 K = KK,KK + J - 2 269c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath TEMP = TEMP - DCONJG(AP(K))*X(IX) 270c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IX = IX + INCX 271c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 130 CONTINUE 272c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (NOUNIT) TEMP = TEMP/DCONJG(AP(KK+J-1)) 273c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath END IF 274c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath X(JX) = TEMP 275c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath JX = JX + INCX 276c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath KK = KK + J 277c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 140 CONTINUE 278c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath END IF 279c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath ELSE 280c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath KK = (N* (N+1))/2 281c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (INCX.EQ.1) THEN 282c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath DO 170 J = N,1,-1 283c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath TEMP = X(J) 284c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath K = KK 285c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (NOCONJ) THEN 286c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath DO 150 I = N,J + 1,-1 287c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath TEMP = TEMP - AP(K)*X(I) 288c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath K = K - 1 289c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 150 CONTINUE 290c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (NOUNIT) TEMP = TEMP/AP(KK-N+J) 291c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath ELSE 292c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath DO 160 I = N,J + 1,-1 293c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath TEMP = TEMP - DCONJG(AP(K))*X(I) 294c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath K = K - 1 295c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 160 CONTINUE 296c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (NOUNIT) TEMP = TEMP/DCONJG(AP(KK-N+J)) 297c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath END IF 298c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath X(J) = TEMP 299c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath KK = KK - (N-J+1) 300c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 170 CONTINUE 301c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath ELSE 302c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath KX = KX + (N-1)*INCX 303c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath JX = KX 304c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath DO 200 J = N,1,-1 305c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath TEMP = X(JX) 306c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IX = KX 307c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (NOCONJ) THEN 308c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath DO 180 K = KK,KK - (N- (J+1)),-1 309c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath TEMP = TEMP - AP(K)*X(IX) 310c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IX = IX - INCX 311c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 180 CONTINUE 312c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (NOUNIT) TEMP = TEMP/AP(KK-N+J) 313c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath ELSE 314c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath DO 190 K = KK,KK - (N- (J+1)),-1 315c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath TEMP = TEMP - DCONJG(AP(K))*X(IX) 316c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IX = IX - INCX 317c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 190 CONTINUE 318c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (NOUNIT) TEMP = TEMP/DCONJG(AP(KK-N+J)) 319c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath END IF 320c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath X(JX) = TEMP 321c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath JX = JX - INCX 322c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath KK = KK - (N-J+1) 323c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 200 CONTINUE 324c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath END IF 325c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath END IF 326c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath END IF 327c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 328c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath RETURN 329c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 330c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* End of ZTPSV . 331c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 332c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath END 333