FTN,Y,L C************************************************************* C C NAME: EQUIV C SOURCE: 12824-18049 C RELOC: PART OF 12824-12002 C PGMR: BG,CG C C *********************************************************** C * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * C * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * C * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * C * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * C *********************************************************** * C************************************************************* SUBROUTINE VADD(V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 REAL V1(1),V2(1),V3(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 J3 = 1 DO 10 I = 1,N V3(J3) = V1(J1) + V2(J2) J1 = J1 + IX1 J2 = J2 + IX2 10 J3 = J3 + IX3 RETURN END SUBROUTINE VSUB(V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 REAL V1(1),V2(1),V3(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 J3 = 1 DO 10 I = 1,N V3(J3) = V1(J1) - V2(J2) J1 = J1 + IX1 J2 = J2 + IX2 10 J3 = J3 + IX3 RETURN END SUBROUTINE VMPY(V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 REAL V1(1),V2(1),V3(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 J3 = 1 DO 10 I = 1,N V3(J3) = V1(J1) * V2(J2) J1 = J1 + IX1 J2 = J2 + IX2 10 J3 = J3 + IX3 RETURN END SUBROUTINE VDIV(V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 REAL V1(1),V2(1),V3(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 J3 = 1 DO 10 I = 1,N V3(J3) = V1(J1) / V2(J2) J1 = J1 + IX1 J2 = J2 + IX2 10 J3 = J3 + IX3 RETURN END SUBROUTINE VSAD(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 REAL S,V1(1),V2(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 DO 10 I = 1,N V2(J2) = S + V1(J1) J1 = J1 + IX1 10 J2 = J2 + IX2 RETURN END SUBROUTINE VSSB(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 REAL S,V1(1),V2(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 DO 10 I = 1,N V2(J2) = S - V1(J1) J1 = J1 + IX1 10 J2 = J2 + IX2 RETURN END SUBROUTINE VSMY(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 REAL S,V1(1),V2(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 DO 10 I = 1,N V2(J2) = S * V1(J1) J1 = J1 + IX1 10 J2 = J2 + IX2 RETURN END SUBROUTINE VSDV(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 REAL S,V1(1),V2(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 DO 10 I = 1,N V2(J2) = S / V1(J1) J1 = J1 + IX1 10 J2 = J2 + IX2 RETURN END SUBROUTINE VPIV(S,V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 REAL S,V1(1),V2(1),V3(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 J3 = 1 DO 10 I = 1,N V3(J3) = S * V1(J1) + V2(J2) J1 = J1 + IX1 J2 = J2 + IX2 10 J3 = J3 + IX3 RETURN END SUBROUTINE VDOT(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 REAL S,V1(1),V2(1) DOUBLE PRECISION DS IF (N.LE.0) RETURN DS = 0.0D0 J1 = 1 J2 = 1 DO 10 I = 1,N DS = DS + DBLE(V1(J1)) * DBLE(V2(J2)) J1 = J1 + IX1 10 J2 = J2 + IX2 S = SNGM(DS) RETURN END SUBROUTINE VABS(V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 REAL V1(1),V2(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 DO 10 I = 1,N V2(J2) = ABS(V1(J1)) J1 = J1 + IX1 10 J2 = J2 + IX2 RETURN END SUBROUTINE VSUM(S,V1,IX1,N) +,12824-1X049 REV.2026 800506 REAL S,V1(1) DOUBLE PRECISION DS IF (N.LE.0) RETURN DS = 0.0D0 J1 = 1 DO 10 I = 1,N DS = DS + V1(J1) 10 J1 = J1 + IX1 S = SNGM(DS) RETURN END SUBROUTINE VNRM(S,V1,IX1,N) +,12824-1X049 REV.2026 800506 REAL S,V1(1) DOUBLE PRECISION DS IF (N.LE.0) RETURN DS = 0.0D0 J1 = 1 DO 10 I = 1,N DS = DS + ABS(V1(J1)) 10 J1 = J1 + IX1 S = SNGM(DS) RETURN END SUBROUTINE VMAX(IMAX,V1,IX1,N) +,12824-1X049 REV.2026 800506 REAL V1(1),MAX,TMAX IF (N.LE.0) RETURN IMAX = 1 IF (N.EQ.1) RETURN MAX = V1(1) J1 = 1 + IX1 DO 10 I = 2,N TMAX = V1(J1) IF (TMAX.LE.MAX) GO TO 10 IMAX=I MAX=TMAX 10 J1 = J1 + IX1 RETURN END SUBROUTINE VMAB(IMAX,V1,IX1,N) +,12824-1X049 REV.2026 800506 REAL V1(1),MAX,TMAX IF (N.LE.0) RETURN IMAX = 1 IF (N.EQ.1) RETURN MAX = ABS(V1(1)) J1 = 1 + IX1 DO 10 I = 2,N TMAX = ABS(V1(J1)) IF (TMAX.LE.MAX) GO TO 10 IMAX=I MAX=TMAX 10 J1 = J1 + IX1 RETURN END SUBROUTINE VMIN(IMIN,V1,IX1,N) +,12824-1X049 REV.2026 800506 REAL V1(1),MIN,TMIN IF (N.LE.0) RETURN IMIN = 1 IF (N.EQ.1) RETURN MIN = V1(1) J1 = 1 + IX1 DO 10 I = 2,N TMIN = V1(J1) IF (TMIN.GE.MIN) GO TO 10 IMIN=I MIN=TMIN 10 J1 = J1 + IX1 RETURN END SUBROUTINE VMIB(IMIN,V1,IX1,N) +,12824-1X049 REV.2026 800506 REAL V1(1),MIN,TMIN IF (N.LE.0) RETURN IMIN = 1 IF (N.EQ.1) RETURN MIN = ABS(V1(1)) J1 = 1 + IX1 DO 10 I = 2,N TMIN = ABS(V1(J1)) IF (TMIN.GE.MIN) GO TO 10 IMIN=I MIN=TMIN 10 J1 = J1 + IX1 RETURN END SUBROUTINE VMOV(V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 REAL V1(1),V2(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 DO 10 I = 1,N V2(J2) = V1(J1) J1 = J1 + IX1 10 J2 = J2 + IX2 RETURN END SUBROUTINE VSWP(V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 REAL V1(1),V2(1),TEMP IF (N.LE.0) RETURN J1 = 1 J2 = 1 DO 10 I = 1,N TEMP = V1(J1) V1(J1) = V2(J2) V2(J2) = TEMP J1 = J1 + IX1 10 J2 = J2 + IX2 RETURN END SUBROUTINE WADD(V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 REAL V1,V2,V3 EMA V1,V2,V3 IF (N.LE.0) RETURN DO 10 I = 1,N V3 = V1 + V2 CALL WFIX2(V1,IX1) CALL WFIX2(V2,IX2) 10 CALL WFIX2(V3,IX3) RETURN END SUBROUTINE WSUB(V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 REAL V1,V2,V3 EMA V1,V2,V3 IF (N.LE.0) RETURN DO 10 I = 1,N V3 = V1 - V2 CALL WFIX2(V1,IX1) CALL WFIX2(V2,IX2) 10 CALL WFIX2(V3,IX3) RETURN END SUBROUTINE WMPY(V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 REAL V1,V2,V3 EMA V1,V2,V3 IF (N.LE.0) RETURN DO 10 I = 1,N V3 = V1 * V2 CALL WFIX2(V1,IX1) CALL WFIX2(V2,IX2) 10 CALL WFIX2(V3,IX3) RETURN END SUBROUTINE WDIV(V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 REAL V1,V2,V3 EMA V1,V2,V3 IF (N.LE.0) RETURN DO 10 I = 1,N V3 = V1 / V2 CALL WFIX2(V1,IX1) CALL WFIX2(V2,IX2) 10 CALL WFIX2(V3,IX3) RETURN END SUBROUTINE WSAD(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 REAL S,V1,V2 EMA V1,V2 IF (N.LE.0) RETURN DO 10 I = 1,N V2 = S + V1 CALL WFIX2(V1,IX1) 10 CALL WFIX2(V2,IX2) RETURN END SUBROUTINE WSSB(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 REAL S,V1,V2 EMA V1,V2 IF (N.LE.0) RETURN DO 10 I = 1,N V2 = S - V1 CALL WFIX2(V1,IX1) 10 CALL WFIX2(V2,IX2) RETURN END SUBROUTINE WSMY(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 REAL S,V1,V2 EMA V1,V2 IF (N.LE.0) RETURN DO 10 I = 1,N V2 = S * V1 CALL WFIX2(V1,IX1) 10 CALL WFIX2(V2,IX2) RETURN END SUBROUTINE WSDV(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 REAL S,V1,V2 EMA V1,V2 IF (N.LE.0) RETURN DO 10 I = 1,N V2 = S / V1 CALL WFIX2(V1,IX1) 10 CALL WFIX2(V2,IX2) RETURN END SUBROUTINE WPIV(S,V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 REAL S,V1,V2,V3 EMA V1,V2,V3 IF (N.LE.0) RETURN DO 10 I = 1,N V3 = S * V1 + V2 CALL WFIX2(V1,IX1) CALL WFIX2(V2,IX2) 10 CALL WFIX2(V3,IX3) RETURN END SUBROUTINE WDOT(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 REAL S,V1,V2 EMA V1,V2 DOUBLE PRECISION DS IF (N.LE.0) RETURN DS = 0.0D0 DO 10 I = 1,N DS = DS + DBLE(V1) * DBLE(V2) CALL WFIX2(V1,IX1) 10 CALL WFIX2(V2,IX2) S = SNGM(DS) RETURN END SUBROUTINE WABS(V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 REAL V1,V2 EMA V1,V2 IF (N.LE.0) RETURN DO 10 I = 1,N V2 = ABS(V1) CALL WFIX2(V1,IX1) 10 CALL WFIX2(V2,IX2) RETURN END SUBROUTINE WSUM(S,V1,IX1,N) +,12824-1X049 REV.2026 800506 REAL S,V1 EMA V1 DOUBLE PRECISION DS IF (N.LE.0) RETURN DS = 0.0D0 DO 10 I = 1,N DS = DS + V1 10 CALL WFIX2(V1,IX1) S = SNGM(DS) RETURN END SUBROUTINE WNRM(S,V1,IX1,N) +,12824-1X049 REV.2026 800506 REAL S,V1 EMA V1 DOUBLE PRECISION DS IF (N.LE.0) RETURN DS = 0.0D0 DO 10 I = 1,N DS = DS + ABS(V1) 10 CALL WFIX2(V1,IX1) S = SNGM(DS) RETURN END SUBROUTINE WMAX(IMAX,V1,IX1,N) +,12824-1X049 REV.2026 800506 REAL V1,MAX,TMAX EMA V1 IF (N.LE.0) RETURN IMAX = 1 IF (N.EQ.1) RETURN MAX = V1 DO 10 I = 2,N CALL WFIX2(V1,IX1) TMAX = V1 IF (TMAX.LE.MAX) GO TO 10 IMAX=I MAX=TMAX 10 CONTINUE RETURN END SUBROUTINE WMAB(IMAX,V1,IX1,N) +,12824-1X049 REV.2026 800506 REAL V1,MAX,TMAX EMA V1 IF (N.LE.0) RETURN IMAX = 1 IF (N.EQ.1) RETURN MAX = ABS(V1) DO 10 I = 2,N CALL WFIX2(V1,IX1) TMAX = ABS(V1) IF (TMAX.LE.MAX) GO TO 10 IMAX=I MAX=TMAX 10 CONTINUE RETURN END SUBROUTINE WMIN(IMIN,V1,IX1,N) +,12824-1X049 REV.2026 800506 REAL V1,MIN,TMIN EMA V1 IF (N.LE.0) RETURN IMIN = 1 IF (N.EQ.1) RETURN MIN = V1 DO 10 I = 2,N CALL WFIX2(V1,IX1) TMIN = V1 IF (TMIN.GE.MIN) GO TO 10 IMIN=I MIN=TMIN 10 CONTINUE RETURN END SUBROUTINE WMIB(IMIN,V1,IX1,N) +,12824-1X049 REV.2026 800506 REAL V1,MIN,TMIN EMA V1 IF (N.LE.0) RETURN IMIN = 1 IF (N.EQ.1) RETURN MIN = ABS(V1) DO 10 I = 2,N CALL WFIX2(V1,IX1) TMIN = ABS(V1) IF (TMIN.GE.MIN) GO TO 10 IMIN=I MIN=TMIN 10 CONTINUE RETURN END SUBROUTINE WMOV(V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 REAL V1,V2 EMA V1,V2 IF (N.LE.0) RETURN DO 10 I = 1,N V2 = V1 CALL WFIX2(V1,IX1) 10 CALL WFIX2(V2,IX2) RETURN END SUBROUTINE WVMOV(V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 REAL V1,V2(1) EMA V1 IF (N.LE.0) RETURN J2 = 1 DO 10 I = 1,N V2(J2) = V1 CALL WFIX2(V1,IX1) 10 J2 = J2 + IX2 RETURN END SUBROUTINE VWMOV(V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 REAL V1(1),V2 EMA V2 IF (N.LE.0) RETURN J1 = 1 DO 10 I = 1,N V2 = V1(J1) J1 = J1 + IX1 10 CALL WFIX2(V2,IX2) RETURN END SUBROUTINE WSWP(V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 REAL V1,V2,TEMP EMA V1,V2 IF (N.LE.0) RETURN DO 10 I = 1,N TEMP = V1 V1 = V2 V2 = TEMP CALL WFIX2(V1,IX1) 10 CALL WFIX2(V2,IX2) RETURN END SUBROUTINE DVADD(V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1(1),V2(1),V3(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 J3 = 1 DO 10 I = 1,N V3(J3) = V1(J1) + V2(J2) J1 = J1 + IX1 J2 = J2 + IX2 10 J3 = J3 + IX3 RETURN END SUBROUTINE DVSUB(V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1(1),V2(1),V3(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 J3 = 1 DO 10 I = 1,N V3(J3) = V1(J1) - V2(J2) J1 = J1 + IX1 J2 = J2 + IX2 10 J3 = J3 + IX3 RETURN END SUBROUTINE DVMPY(V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1(1),V2(1),V3(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 J3 = 1 DO 10 I = 1,N V3(J3) = V1(J1) * V2(J2) J1 = J1 + IX1 J2 = J2 + IX2 10 J3 = J3 + IX3 RETURN END SUBROUTINE DVDIV(V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1(1),V2(1),V3(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 J3 = 1 DO 10 I = 1,N V3(J3) = V1(J1) / V2(J2) J1 = J1 + IX1 J2 = J2 + IX2 10 J3 = J3 + IX3 RETURN END SUBROUTINE DVSAD(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION S,V1(1),V2(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 DO 10 I = 1,N V2(J2) = S + V1(J1) J1 = J1 + IX1 10 J2 = J2 + IX2 RETURN END SUBROUTINE DVSSB(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION S,V1(1),V2(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 DO 10 I = 1,N V2(J2) = S - V1(J1) J1 = J1 + IX1 10 J2 = J2 + IX2 RETURN END SUBROUTINE DVSMY(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION S,V1(1),V2(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 DO 10 I = 1,N V2(J2) = S * V1(J1) J1 = J1 + IX1 10 J2 = J2 + IX2 RETURN END SUBROUTINE DVSDV(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION S,V1(1),V2(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 DO 10 I = 1,N V2(J2) = S / V1(J1) J1 = J1 + IX1 10 J2 = J2 + IX2 RETURN END SUBROUTINE DVPIV(S,V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION S,V1(1),V2(1),V3(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 J3 = 1 DO 10 I = 1,N V3(J3) = S * V1(J1) + V2(J2) J1 = J1 + IX1 J2 = J2 + IX2 10 J3 = J3 + IX3 RETURN END SUBROUTINE DVDOT(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION S,V1(1),V2(1) IF (N.LE.0) RETURN S = 0.0D0 J1 = 1 J2 = 1 DO 10 I = 1,N S = S + V1(J1) * V2(J2) J1 = J1 + IX1 10 J2 = J2 + IX2 RETURN END SUBROUTINE DVABS(V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1(1),V2(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 DO 10 I = 1,N V2(J2) = DABS(V1(J1)) J1 = J1 + IX1 10 J2 = J2 + IX2 RETURN END SUBROUTINE DVSUM(S,V1,IX1,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION S,V1(1) IF (N.LE.0) RETURN S = 0.0D0 J1 = 1 DO 10 I = 1,N S = S + V1(J1) 10 J1 = J1 + IX1 RETURN END SUBROUTINE DVNRM(S,V1,IX1,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION S,V1(1) IF (N.LE.0) RETURN S = 0.0D0 J1 = 1 DO 10 I = 1,N S = S + DABS(V1(J1)) 10 J1 = J1 + IX1 RETURN END SUBROUTINE DVMAX(IMAX,V1,IX1,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1(1),MAX,TMAX IF (N.LE.0) RETURN IMAX = 1 IF (N.EQ.1) RETURN MAX = V1(1) J1 = 1 + IX1 DO 10 I = 2,N TMAX = V1(J1) IF (TMAX.LE.MAX) GO TO 10 IMAX=I MAX=TMAX 10 J1 = J1 + IX1 RETURN END SUBROUTINE DVMAB(IMAX,V1,IX1,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1(1),MAX,TMAX IF (N.LE.0) RETURN IMAX = 1 IF (N.EQ.1) RETURN MAX = DABS(V1(1)) J1 = 1 + IX1 DO 10 I = 2,N TMAX = DABS(V1(J1)) IF (TMAX.LE.MAX) GO TO 10 IMAX=I MAX=TMAX 10 J1 = J1 + IX1 RETURN END SUBROUTINE DVMIN(IMIN,V1,IX1,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1(1),MIN,TMIN IF (N.LE.0) RETURN IMIN = 1 IF (N.EQ.1) RETURN MIN = V1(1) J1 = 1 + IX1 DO 10 I = 2,N TMIN = V1(J1) IF (TMIN.GE.MIN) GO TO 10 IMIN=I MIN=TMIN 10 J1 = J1 + IX1 RETURN END SUBROUTINE DVMIB(IMIN,V1,IX1,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1(1),MIN,TMIN IF (N.LE.0) RETURN IMIN = 1 IF (N.EQ.1) RETURN MIN = DABS(V1(1)) J1 = 1 + IX1 DO 10 I = 2,N TMIN = DABS(V1(J1)) IF (TMIN.GE.MIN) GO TO 10 IMIN=I MIN=TMIN 10 J1 = J1 + IX1 RETURN END SUBROUTINE DVMOV(V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1(1),V2(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 DO 10 I = 1,N V2(J2) = V1(J1) J1 = J1 + IX1 10 J2 = J2 + IX2 RETURN END SUBROUTINE DVSWP(V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1(1),V2(1),TEMP IF (N.LE.0) RETURN J1 = 1 J2 = 1 DO 10 I = 1,N TEMP = V1(J1) V1(J1) = V2(J2) V2(J2) = TEMP J1 = J1 + IX1 10 J2 = J2 + IX2 RETURN END SUBROUTINE DWADD(V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1,V2,V3 EMA V1,V2,V3 IF (N.LE.0) RETURN DO 10 I = 1,N V3 = V1 + V2 CALL WFIX4(V1,IX1) CALL WFIX4(V2,IX2) 10 CALL WFIX4(V3,IX3) RETURN END SUBROUTINE DWSUB(V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1,V2,V3 EMA V1,V2,V3 IF (N.LE.0) RETURN DO 10 I = 1,N V3 = V1 - V2 CALL WFIX4(V1,IX1) CALL WFIX4(V2,IX2) 10 CALL WFIX4(V3,IX3) RETURN END SUBROUTINE DWMPY(V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1,V2,V3 EMA V1,V2,V3 IF (N.LE.0) RETURN DO 10 I = 1,N V3 = V1 * V2 CALL WFIX4(V1,IX1) CALL WFIX4(V2,IX2) 10 CALL WFIX4(V3,IX3) RETURN END SUBROUTINE DWDIV(V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1,V2,V3 EMA V1,V2,V3 IF (N.LE.0) RETURN DO 10 I = 1,N V3 = V1 / V2 CALL WFIX4(V1,IX1) CALL WFIX4(V2,IX2) 10 CALL WFIX4(V3,IX3) RETURN END SUBROUTINE DWSAD(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION S,V1,V2 EMA V1,V2 IF (N.LE.0) RETURN DO 10 I = 1,N V2 = S + V1 CALL WFIX4(V1,IX1) 10 CALL WFIX4(V2,IX2) RETURN END SUBROUTINE DWSSB(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION S,V1,V2 EMA V1,V2 IF (N.LE.0) RETURN DO 10 I = 1,N V2 = S - V1 CALL WFIX4(V1,IX1) 10 CALL WFIX4(V2,IX2) RETURN END SUBROUTINE DWSMY(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION S,V1,V2 EMA V1,V2 IF (N.LE.0) RETURN DO 10 I = 1,N V2 = S * V1 CALL WFIX4(V1,IX1) 10 CALL WFIX4(V2,IX2) RETURN END SUBROUTINE DWSDV(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION S,V1,V2 EMA V1,V2 IF (N.LE.0) RETURN DO 10 I = 1,N V2 = S / V1 CALL WFIX4(V1,IX1) 10 CALL WFIX4(V2,IX2) RETURN END SUBROUTINE DWPIV(S,V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION S,V1,V2,V3 EMA V1,V2,V3 IF (N.LE.0) RETURN DO 10 I = 1,N V3 = S * V1 + V2 CALL WFIX4(V1,IX1) CALL WFIX4(V2,IX2) 10 CALL WFIX4(V3,IX3) RETURN END SUBROUTINE DWDOT(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION S,V1,V2 EMA V1,V2 IF (N.LE.0) RETURN S = 0.0D0 DO 10 I = 1,N S = S + V1 * V2 CALL WFIX4(V1,IX1) 10 CALL WFIX4(V2,IX2) RETURN END SUBROUTINE DWABS(V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1,V2 EMA V1,V2 IF (N.LE.0) RETURN DO 10 I = 1,N V2 = DABS(V1) CALL WFIX4(V1,IX1) 10 CALL WFIX4(V2,IX2) RETURN END SUBROUTINE DWSUM(S,V1,IX1,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION S,V1 EMA V1 IF (N.LE.0) RETURN S = 0.0D0 DO 10 I = 1,N S = S + V1 10 CALL WFIX4(V1,IX1) RETURN END SUBROUTINE DWNRM(S,V1,IX1,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION S,V1 EMA V1 IF (N.LE.0) RETURN S = 0.0D0 DO 10 I = 1,N S = S + DABS(V1) 10 CALL WFIX4(V1,IX1) RETURN END SUBROUTINE DWMAX(IMAX,V1,IX1,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1,MAX,TMAX EMA V1 IF (N.LE.0) RETURN IMAX = 1 IF (N.EQ.1) RETURN MAX = V1 DO 10 I = 2,N CALL WFIX4(V1,IX1) TMAX = V1 IF (TMAX.LE.MAX) GO TO 10 IMAX=I MAX=TMAX 10 CONTINUE RETURN END SUBROUTINE DWMAB(IMAX,V1,IX1,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1,MAX,TMAX EMA V1 IF (N.LE.0) RETURN IMAX = 1 IF (N.EQ.1) RETURN MAX = DABS(V1) DO 10 I = 2,N CALL WFIX4(V1,IX1) TMAX = DABS(V1) IF (TMAX.LE.MAX) GO TO 10 IMAX=I MAX=TMAX 10 CONTINUE RETURN END SUBROUTINE DWMIN(IMIN,V1,IX1,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1,MIN,TMIN EMA V1 IF (N.LE.0) RETURN IMIN = 1 IF (N.EQ.1) RETURN MIN = V1 DO 10 I = 2,N CALL WFIX4(V1,IX1) TMIN = V1 IF (TMIN.GE.MIN) GO TO 10 IMIN=I MIN=TMIN 10 CONTINUE RETURN END SUBROUTINE DWMIB(IMIN,V1,IX1,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1,MIN,TMIN EMA V1 IF (N.LE.0) RETURN IMIN = 1 IF (N.EQ.1) RETURN MIN = DABS(V1) DO 10 I = 2,N CALL WFIX4(V1,IX1) TMIN = DABS(V1) IF (TMIN.GE.MIN) GO TO 10 IMIN=I MIN=TMIN 10 CONTINUE RETURN END SUBROUTINE DWMOV(V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1,V2 EMA V1,V2 IF (N.LE.0) RETURN DO 10 I = 1,N V2 = V1 CALL WFIX4(V1,IX1) 10 CALL WFIX4(V2,IX2) RETURN END SUBROUTINE DWVMV(V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1,V2(1) EMA V1 IF (N.LE.0) RETURN J2 = 1 DO 10 I = 1,N V2(J2) = V1 CALL WFIX4(V1,IX1) 10 J2 = J2 + IX2 RETURN END SUBROUTINE DVWMV(V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1(1),V2 EMA V2 IF (N.LE.0) RETURN J1 = 1 DO 10 I = 1,N V2 = V1(J1) J1 = J1 + IX1 10 CALL WFIX4(V2,IX2) RETURN END SUBROUTINE DWSWP(V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1,V2,TEMP EMA V1,V2 IF (N.LE.0) RETURN DO 10 I = 1,N TEMP = V1 V1 = V2 V2 = TEMP CALL WFIX4(V1,IX1) 10 CALL WFIX4(V2,IX2) RETURN END FUNCTION SNGM(X) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION X,Y INTEGER IS(2),IY(4) EQUIVALENCE (S,IS),(Y,IY) Y=X IS(1)=IY(1) IS(2)=(IY(2).AND.177400B).OR.(IY(4).AND.377B) SNGM=S RETURN END