C DSCAL SOURCE CHAT 06/03/29 21:18:55 5360 SUBROUTINE DSCAL(N,DA,DX,INCX) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C C SCALES A VECTOR BY A CONSTANT. C x <- ax C USES UNROLLED LOOPS FOR INCREMENT EQUAL TO ONE. C JACK DONGARRA, LINPACK, 3/11/78 C MODIFIED 3/93 TO RETURN IF INCX .LE.0. C MODIFIED 12/3/93, ARRAY(1) DECLARATIONS CHANGED TO ARRAY(*) C C modified 5/11/98 double precision -> real*8 C no unrolled loops : compiler can do that C added error handling C -INC CCOPTIO C REAL*8 DA,DX(*) INTEGER I,INCX,N,NINCX C IF( N.LE.0 .OR. INCX.LE.0 ) GOTO 9999 IF(INCX.NE.1) THEN C C CODE FOR INCREMENT NOT EQUAL TO 1 C NINCX = N*INCX DO 10 I = 1,NINCX,INCX DX(I) = DA*DX(I) 10 CONTINUE ELSE C C CODE FOR INCREMENT EQUAL TO 1 C DO 30 I = 1,N DX(I) = DA*DX(I) 30 CONTINUE ENDIF C C Normal termination C RETURN C C Error handling C 9999 CONTINUE WRITE(IOIMP,*) 'dimension or increment lower than 1 transmitted' WRITE(IOIMP,*) 'to subroutine dscal : nothing done' call erreur(21) RETURN C C End of DSCAL C END