[KLOE] [Offline Doc] [TRK Files]

Track Reconstruction Library

arg13us.kloe


      SUBROUTINE LEQU64 (AMAT,AINV,YVEC,NEQU,NINV,NERR)
C
C     DESCRIPTION : SEE SUBROUTINE LINEQU
C
C-----------------------------------------------------------------------
C
      REAL *8 AMAT(64,1),AINV(64,1),YVEC(64)
      REAL *8 E,E1,E2,S
C          S : SMALLEST MEANINGFUL POSITIVE NUMBER
      DATA S /1.D-38/
      INTEGER NEQU,NINV,NERR
      INTEGER NTOT,NEQ1,M,L,K,K1
C
      NERR = 0
      NTOT = NEQU + 1
      NEQ1 = NEQU - 1
      DO 10 M=1,NEQU
 10   AMAT(M,NEQU+2) = YVEC(M)
      DO 30 M=1,NEQU
      DO 30 L=1,M
 30   AMAT(L,M+1) = AMAT(M,L)
      K = 0
 100  IF (K.GE.NINV)  GO TO 200
      K1 = K
      K = K + 1
      IF (DABS(AMAT(K,K+1)).LT.S)  GO TO 900
      E = 1.D0 / AMAT(K,K+1)
      AINV(K,K) = E
      M = 0
 110  M = M + 1
      IF (M.GE.K)  GO TO 160
      E1 = -AMAT(M,K+1) * E
      AINV(K,M) = AINV(K,M) * E
      E2 = -AINV(K,M)
      DO 120 L=M,K1
 120  AINV(L,M) = AINV(L,M) + E2 * AMAT(L,K+1)
      IF (K.GT.NEQ1)  GO TO 140
      DO 130 L=K,NEQ1
      AMAT(M,L+2) = AMAT(M,L+2) + E1 * AMAT(K,L+2)
 130  AINV(L+1,M) = AINV(L+1,M) + E2 * AMAT(K,L+2)
 140  AMAT(M,NEQU+2) = AMAT(M,NEQU+2) + E1 * AMAT(K,NEQU+2)
      GO TO 110
 160  IF (M.GE.NEQU)  GO TO 180
      M = M + 1
      E1 = -AMAT(K,M+1) * E
      AMAT(M,M+1) = AMAT(M,M+1) + E1 * AMAT(K,M+1)
      AMAT(K,M+1) = -E1
      AINV(M,K) = E1
      DO 170 L=M,NEQU
 170  AMAT(M,L+2) = AMAT(M,L+2) + E1 * AMAT(K,L+2)
      GO TO 160
 180  AMAT(K,M+2) = AMAT(K,M+2) * E
      GO TO 100
 200  IF (K.GE.NEQU)  RETURN
      K1 = K
      K = K + 1
      IF (DABS(AMAT(K,K+1)).LT.S)  GO TO 900
      E = 1.D0 / AMAT(K,K+1)
      M = 0
 210  IF (M.GE.NINV)  GO TO 310
      M = M + 1
      E1 = -AMAT(M,K+1) * E
      AINV(K,M) = AINV(K,M) * E
      E2 = -AINV(K,M)
      DO 220 L=M,K1
 220  AINV(L,M) = AINV(L,M) + E2 * AMAT(L,K+1)
      IF (K.GT.NEQ1)  GO TO 240
      DO 230 L=K,NEQ1
      AMAT(M,L+2) = AMAT(M,L+2) + E1 * AMAT(K,L+2)
 230  AINV(L+1,M) = AINV(L+1,M) + E2 * AMAT(K,L+2)
 240  AMAT(M,NEQU+2) = AMAT(M,NEQU+2) + E1 * AMAT(K,NEQU+2)
      GO TO 210
 310  M = M + 1
      IF (M.GE.K)  GO TO 360
      E1 = -AMAT(M,K+1) * E
      DO 330 L=K,NEQU
 330  AMAT(M,L+2) = AMAT(M,L+2) + E1 * AMAT(K,L+2)
      GO TO 310
 360  IF (M.GE.NEQU)  GO TO 380
      M = M + 1
      E1 = -AMAT(K,M+1) * E
      AMAT(M,M+1) = AMAT(M,M+1) + E1 * AMAT(K,M+1)
      AMAT(K,M+1) = -E1
      DO 370 L=M,NEQU
 370  AMAT(M,L+2) = AMAT(M,L+2) + E1 * AMAT(K,L+2)
      GO TO 360
 380  AMAT(K,M+2) = AMAT(K,M+2) * E
      GO TO 200
 900  NERR = 1
      RETURN
      END
[KLOE] [Offline Doc] [TRK Files]
Generated with Light on Thu Apr 8 13:00:16 MET DST 1999 .
Mail comments and suggestions.