File: LINREG.FT of Tape: Various/ETH/f2
(Source file text) 

        SUBROUTINE LINREG(X,Y,N)
C 
        COMMON /LINE/ DY(6),A,B,DA,DB,SA,SB,SAB,RR,RMSD,CHISQ 
C 
        DIMENSION V(6),P(6) 
        DIMENSION X(1),Y(1) 
C 
C       LINE FIT: Y=A*X+B TO N POINTS X(I),Y(I) 
C       DA,DB VARIANCES FROM LINE FIT 
C       SA,SB VARIANCES, SAB CORRELATION FROM DY(I) 
C       RR=REGRESSION COEFFICIENT, RMSD=ROOT MEAN SQUARE DEVIATION
        SX=0. 
        SY=0. 
        SXX=0.
        SXY=0.
        SYY=0.
        SP=0. 
        DO 60 J=1,N 
        P(J)=1. 
        IF (DY(J).EQ.0.) GO TO 72 
        P(J)=1./DY(J)**2
72      SX=SX+X(J)*P(J) 
        SY=SY+Y(J)*P(J) 
        SXX=SXX+X(J)*X(J)*P(J)
        SXY=SXY+X(J)*Y(J)*P(J)
        SYY=SYY+Y(J)*Y(J)*P(J)
        SP=SP+P(J)
60      CONTINUE
        D=SP*SXX-SX*SX
        A=(SP*SXY-SX*SY)/D
        B=(SY*SXX-SX*SXY)/D 
C 
C 
C       VARIANCES FROM LINE FIT 
        IF (N.GT.2) GO TO 75
        DA=0. 
        DB=0. 
        RR=0. 
        RMSD=0. 
        CHISQ=0.
        GO TO 76
75      CONTINUE
        Q=0.
        QA=0. 
        DO 62 J=1,N 
        V(J)=Y(J)-X(J)*A-B
        Q=Q+V(J)*V(J)*P(J)
        QA=QA+(V(J))**2 
62      CONTINUE
        QM=(Q/(N-2))
        C=SP*SYY-SY*SY
        DA=SQRT(QM*SP/D)
        DB=SQRT(QM*SXX/D) 
        RR=SQRT(A*A*D/C)
        RMSD=SQRT(QA/N) 
        CHISQ=QM
76      CONTINUE
C       VARIANCES FROM DY(I)
        IF (DY(1).NE.0.) GO TO 77 
        SA=0. 
        SB=0. 
        SAB=0.
        RETURN
77      SA=SP/D 
        SB=SXX/D
        SAB=SX/D
        RETURN
        END