Download dscal.eso

Back to the list

   1 : C DSCAL     SOURCE    CHAT      06/03/29    21:18:55     5360           
   2 :       SUBROUTINE DSCAL(N,DA,DX,INCX)
   3 :       IMPLICIT INTEGER(I-N)
   4 :       IMPLICIT REAL*8 (A-H,O-Z)
   5 : C     
   6 : C     SCALES A VECTOR BY A CONSTANT.
   7 : C         x <- ax
   8 : C     USES UNROLLED LOOPS FOR INCREMENT EQUAL TO ONE.
   9 : C     JACK DONGARRA, LINPACK, 3/11/78
  10 : C     MODIFIED 3/93 TO RETURN IF INCX .LE.0.
  11 : C     MODIFIED 12/3/93, ARRAY(1) DECLARATIONS CHANGED TO ARRAY(*)
  12 : C     
  13 : C     modified 5/11/98 double precision -> real*8
  14 : C                      no unrolled loops : compiler can do that
  15 : C                      added error handling
  16 : C     
  17 : -INC CCOPTIO
  18 : C     
  19 :       REAL*8 DA,DX(*)
  20 :       INTEGER I,INCX,N,NINCX
  21 : C     
  22 :       IF( N.LE.0 .OR. INCX.LE.0 ) GOTO 9999
  23 :       IF(INCX.NE.1) THEN
  24 : C     
  25 : C        CODE FOR INCREMENT NOT EQUAL TO 1
  26 : C     
  27 :          NINCX = N*INCX
  28 :          DO 10 I = 1,NINCX,INCX
  29 :             DX(I) = DA*DX(I)
  30 :  10      CONTINUE
  31 :       ELSE
  32 : C     
  33 : C        CODE FOR INCREMENT EQUAL TO 1
  34 : C     
  35 :          DO 30 I = 1,N
  36 :             DX(I) = DA*DX(I)
  37 :  30      CONTINUE
  38 :       ENDIF
  39 : C     
  40 : C     Normal termination
  41 : C     
  42 :       RETURN
  43 : C     
  44 : C     Error handling
  45 : C     
  46 :  9999 CONTINUE
  47 :       WRITE(IOIMP,*) 'dimension or increment lower than 1 transmitted'
  48 :       WRITE(IOIMP,*) 'to subroutine dscal : nothing done'
  48 :       call erreur(21)
  49 :       RETURN
  50 : C     
  51 : C     End of DSCAL
  52 : C     
  53 :       END
  54 : 
  55 : 
  56 : 
  57 : 
  58 : 
  59 :  
  60 :  
  61 :  

© Cast3M 2003 - All rights reserved.
Disclaimer