1c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath SUBROUTINE SSPMV(UPLO,N,ALPHA,AP,X,INCX,BETA,Y,INCY) 2c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* .. Scalar Arguments .. 3c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath REAL ALPHA,BETA 4c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath INTEGER INCX,INCY,N 5c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath CHARACTER UPLO 6c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* .. 7c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* .. Array Arguments .. 8c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath REAL AP(*),X(*),Y(*) 9c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* .. 10c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 11c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Purpose 12c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* ======= 13c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 14c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* SSPMV performs the matrix-vector operation 15c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 16c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* y := alpha*A*x + beta*y, 17c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 18c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* where alpha and beta are scalars, x and y are n element vectors and 19c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* A is an n by n symmetric matrix, supplied in packed form. 20c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 21c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Arguments 22c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* ========== 23c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 24c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* UPLO - CHARACTER*1. 25c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* On entry, UPLO specifies whether the upper or lower 26c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* triangular part of the matrix A is supplied in the packed 27c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* array AP as follows: 28c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 29c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* UPLO = 'U' or 'u' The upper triangular part of A is 30c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* supplied in AP. 31c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 32c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* UPLO = 'L' or 'l' The lower triangular part of A is 33c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* supplied in AP. 34c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 35c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Unchanged on exit. 36c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 37c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* N - INTEGER. 38c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* On entry, N specifies the order of the matrix A. 39c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* N must be at least zero. 40c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Unchanged on exit. 41c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 42c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* ALPHA - REAL . 43c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* On entry, ALPHA specifies the scalar alpha. 44c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Unchanged on exit. 45c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 46c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* AP - REAL array of DIMENSION at least 47c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* ( ( n*( n + 1 ) )/2 ). 48c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Before entry with UPLO = 'U' or 'u', the array AP must 49c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* contain the upper triangular part of the symmetric matrix 50c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* packed sequentially, column by column, so that AP( 1 ) 51c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 1, 2 ) 52c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* and a( 2, 2 ) respectively, and so on. 53c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Before entry with UPLO = 'L' or 'l', the array AP must 54c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* contain the lower triangular part of the symmetric matrix 55c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* packed sequentially, column by column, so that AP( 1 ) 56c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* contains a( 1, 1 ), AP( 2 ) and AP( 3 ) contain a( 2, 1 ) 57c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* and a( 3, 1 ) respectively, and so on. 58c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Unchanged on exit. 59c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 60c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* X - REAL array of dimension at least 61c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* ( 1 + ( n - 1 )*abs( INCX ) ). 62c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Before entry, the incremented array X must contain the n 63c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* element vector x. 64c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Unchanged on exit. 65c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 66c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* INCX - INTEGER. 67c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* On entry, INCX specifies the increment for the elements of 68c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* X. INCX must not be zero. 69c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Unchanged on exit. 70c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 71c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* BETA - REAL . 72c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* On entry, BETA specifies the scalar beta. When BETA is 73c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* supplied as zero then Y need not be set on input. 74c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Unchanged on exit. 75c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 76c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Y - REAL array of dimension at least 77c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* ( 1 + ( n - 1 )*abs( INCY ) ). 78c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Before entry, the incremented array Y must contain the n 79c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* element vector y. On exit, Y is overwritten by the updated 80c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* vector y. 81c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 82c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* INCY - INTEGER. 83c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* On entry, INCY specifies the increment for the elements of 84c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Y. INCY must not be zero. 85c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Unchanged on exit. 86c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 87c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Further Details 88c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* =============== 89c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 90c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Level 2 Blas routine. 91c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 92c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* -- Written on 22-October-1986. 93c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Jack Dongarra, Argonne National Lab. 94c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Jeremy Du Croz, Nag Central Office. 95c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Sven Hammarling, Nag Central Office. 96c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Richard Hanson, Sandia National Labs. 97c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 98c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* ===================================================================== 99c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 100c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* .. Parameters .. 101c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath REAL ONE,ZERO 102c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath PARAMETER (ONE=1.0E+0,ZERO=0.0E+0) 103c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* .. 104c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* .. Local Scalars .. 105c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath REAL TEMP1,TEMP2 106c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath INTEGER I,INFO,IX,IY,J,JX,JY,K,KK,KX,KY 107c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* .. 108c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* .. External Functions .. 109c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath LOGICAL LSAME 110c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath EXTERNAL LSAME 111c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* .. 112c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* .. External Subroutines .. 113c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath EXTERNAL XERBLA 114c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* .. 115c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 116c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Test the input parameters. 117c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 118c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath INFO = 0 119c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (.NOT.LSAME(UPLO,'U') .AND. .NOT.LSAME(UPLO,'L')) THEN 120c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath INFO = 1 121c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath ELSE IF (N.LT.0) THEN 122c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath INFO = 2 123c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath ELSE IF (INCX.EQ.0) THEN 124c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath INFO = 6 125c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath ELSE IF (INCY.EQ.0) THEN 126c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath INFO = 9 127c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath END IF 128c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (INFO.NE.0) THEN 129c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath CALL XERBLA('SSPMV ',INFO) 130c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath RETURN 131c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath END IF 132c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 133c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Quick return if possible. 134c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 135c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF ((N.EQ.0) .OR. ((ALPHA.EQ.ZERO).AND. (BETA.EQ.ONE))) RETURN 136c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 137c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Set up the start points in X and Y. 138c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 139c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (INCX.GT.0) THEN 140c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath KX = 1 141c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath ELSE 142c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath KX = 1 - (N-1)*INCX 143c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath END IF 144c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (INCY.GT.0) THEN 145c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath KY = 1 146c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath ELSE 147c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath KY = 1 - (N-1)*INCY 148c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath END IF 149c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 150c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Start the operations. In this version the elements of the array AP 151c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* are accessed sequentially with one pass through AP. 152c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 153c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* First form y := beta*y. 154c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 155c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (BETA.NE.ONE) THEN 156c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (INCY.EQ.1) THEN 157c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (BETA.EQ.ZERO) THEN 158c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath DO 10 I = 1,N 159c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath Y(I) = ZERO 160c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 10 CONTINUE 161c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath ELSE 162c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath DO 20 I = 1,N 163c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath Y(I) = BETA*Y(I) 164c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 20 CONTINUE 165c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath END IF 166c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath ELSE 167c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IY = KY 168c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (BETA.EQ.ZERO) THEN 169c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath DO 30 I = 1,N 170c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath Y(IY) = ZERO 171c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IY = IY + INCY 172c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 30 CONTINUE 173c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath ELSE 174c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath DO 40 I = 1,N 175c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath Y(IY) = BETA*Y(IY) 176c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IY = IY + INCY 177c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 40 CONTINUE 178c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath END IF 179c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath END IF 180c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath END IF 181c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (ALPHA.EQ.ZERO) RETURN 182c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath KK = 1 183c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF (LSAME(UPLO,'U')) THEN 184c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 185c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Form y when AP contains the upper triangle. 186c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 187c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN 188c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath DO 60 J = 1,N 189c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath TEMP1 = ALPHA*X(J) 190c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath TEMP2 = ZERO 191c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath K = KK 192c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath DO 50 I = 1,J - 1 193c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath Y(I) = Y(I) + TEMP1*AP(K) 194c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath TEMP2 = TEMP2 + AP(K)*X(I) 195c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath K = K + 1 196c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 50 CONTINUE 197c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath Y(J) = Y(J) + TEMP1*AP(KK+J-1) + ALPHA*TEMP2 198c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath KK = KK + J 199c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 60 CONTINUE 200c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath ELSE 201c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath JX = KX 202c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath JY = KY 203c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath DO 80 J = 1,N 204c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath TEMP1 = ALPHA*X(JX) 205c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath TEMP2 = ZERO 206c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IX = KX 207c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IY = KY 208c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath DO 70 K = KK,KK + J - 2 209c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath Y(IY) = Y(IY) + TEMP1*AP(K) 210c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath TEMP2 = TEMP2 + AP(K)*X(IX) 211c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IX = IX + INCX 212c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IY = IY + INCY 213c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 70 CONTINUE 214c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath Y(JY) = Y(JY) + TEMP1*AP(KK+J-1) + ALPHA*TEMP2 215c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath JX = JX + INCX 216c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath JY = JY + INCY 217c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath KK = KK + J 218c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 80 CONTINUE 219c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath END IF 220c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath ELSE 221c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 222c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* Form y when AP contains the lower triangle. 223c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 224c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IF ((INCX.EQ.1) .AND. (INCY.EQ.1)) THEN 225c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath DO 100 J = 1,N 226c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath TEMP1 = ALPHA*X(J) 227c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath TEMP2 = ZERO 228c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath Y(J) = Y(J) + TEMP1*AP(KK) 229c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath K = KK + 1 230c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath DO 90 I = J + 1,N 231c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath Y(I) = Y(I) + TEMP1*AP(K) 232c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath TEMP2 = TEMP2 + AP(K)*X(I) 233c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath K = K + 1 234c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 90 CONTINUE 235c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath Y(J) = Y(J) + ALPHA*TEMP2 236c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath KK = KK + (N-J+1) 237c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 100 CONTINUE 238c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath ELSE 239c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath JX = KX 240c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath JY = KY 241c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath DO 120 J = 1,N 242c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath TEMP1 = ALPHA*X(JX) 243c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath TEMP2 = ZERO 244c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath Y(JY) = Y(JY) + TEMP1*AP(KK) 245c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IX = JX 246c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IY = JY 247c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath DO 110 K = KK + 1,KK + N - J 248c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IX = IX + INCX 249c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath IY = IY + INCY 250c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath Y(IY) = Y(IY) + TEMP1*AP(K) 251c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath TEMP2 = TEMP2 + AP(K)*X(IX) 252c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 110 CONTINUE 253c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath Y(JY) = Y(JY) + ALPHA*TEMP2 254c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath JX = JX + INCX 255c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath JY = JY + INCY 256c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath KK = KK + (N-J+1) 257c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 120 CONTINUE 258c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath END IF 259c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath END IF 260c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 261c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath RETURN 262c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 263c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* End of SSPMV . 264c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath* 265c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath END 266