File: DINGLE.FT of Tape: Various/ETH/prog1
(Source file text) 

CDC	DINGLE,9621,CM60000,CT15. 
CDC	PERMF,LGO.
CDC	FTN(BL,R).
CDC	CATALOG,LGO,DINGBN. 
CDC   PROGRAM DINGLE(OUTPUT=240B,TAPE4=OUTPUT,TAPE5,TAPE6)
C 
      DIMENSION X(400),Y(400),NB(400) 
      REAL MU,KET 
      LOGICAL ERRMU,ERR 
C 
  100 FORMAT(I3)
  110 FORMAT(F10.1) 
  130 FORMAT((A6))
  200 FORMAT(///T8'MU NEGATIV !!!!!!!!!!!!!!'/1H1)
  410 FORMAT(1X,'J= ',1I3,'    X=',F7.3,'  +/-',F7.3,/) 
C 
      READ(5,100) MF
      READ(5,110) (FREQ(I),I=1,MF)
      READ(5,100) MR
      READ(5,130) (ADENT(I),I=1,MR) 
  
      READ(5,100) I0
      CALL INPUT
      CALL PRINT(1) 
C 
C 
      DO 10 I=1,MF
      IF=I
C 
      DO 50 J=1,MR
      AF0(J)=AF(I,J)
      ETA0(J)=ETA(I,J)
      TAUD=ETA(I,J)*DK*NP 
      DTAUD=DETA(I,J)*DK*NP 
      KET=(1.-EXP(-TAUD)) 
      YL(J)=H0AL*ALOG(ABS(AF(I,J)*TAUD/T(J)/KET/I0DH))- 
     $I0*TAUD/NP
      DY(J)=H0AL*SQRT((DAF(I,J)/AF(I,J))**2+
     $((1./TAUD+EXP(-TAUD)/KET-I0/NP)*DTAUD)**2)
      TDI(J)=ETA(I,J)/14.69/AMU-T(J) 
      TDP(J)=(DETA(I,J)/14.69/AMU)**2+(DT(J))**2
      DTD=SQRT(TDP(J))
      TDP(J)=1./TDP(J)
      WRITE(4,410) J,TDI(J),DTD
      STOP
      XL(J)=T(J)
   50 CONTINUE
      CALL LINREG(MR) 
      CALL MEAN 
      AMU0=EMU(I,1) 
      CALL PRINT(2) 
      TMAX=0. 
      DO 51 J=1,MR
   51 TMAX= AMAX1(TMAX,T(J))
      LINT=(400-5*MR)/2 
      LMAX=LINT+3*MR
      DO 52 L=1,LINT
      X(L)=1.+(TMAX-1.)*(L-1)/FLOAT(LINT-1) 
      Y(L)=A*X(L)+B 
      NB(L)=5 
   52 CONTINUE
      DO 53 J=1,MR
      K=3*(J-1)+LINT+1
      X(K)=T(J) 
      Y(K)=ETA(I,J)+DETA(I,J) 
      NB(K)=2 
      X(K+1)=T(J) 
      Y(K+1)=ETA(I,J)-DETA(I,J) 
      NB(K+1)=2 
      X(K+2)=T(J) 
      Y(K+2)=ETA(I,J) 
      NB(K+2)=1 
   53 CONTINUE
      INIT=1
      DCHI=(DAF(I,1)/1000.)**2. 
      DO 55 J=1,MR
      JR=J
      AMU0=EMU(I,J) 
      CALL LSAFTAU
   55 CONTINUE
      INIT=0
      AMU0=EMU(I,1) 
C 
   60 CONTINUE
      LS=1
      ERR=.F. 
      MU=AMIN1(AMU,AMU0)
      DMU=ABS(AMU-AMU0) 
   61 IF(MU.LE.0.) GOTO 96
   62 CALL ROOTS(MU,DMU)
      MU=MU-DMU 
      DMU=3.*DMU
      IF(ERRMU) GOTO 61 
      MU=MU+DMU/3.
      MU=FMU(MU)
      CALL MEAN 
      CALL PRINT(3) 
      DO 63 J=1,MR
      K=LMAX+J
      X(K)=T(J) 
      Y(K)=ETA0(J)
      NB(K)=3 
   63 CONTINUE
      LMAX=LMAX+MR
C 
   70 CONTINUE
      LS=0
      ERR=.F. 
      MU=AMU
      DMUS=SQRT(SA)/14.69 
      DMU=DMUS/3. 
      MU=MU-DMU/2.
   71 MU=MU-DMU 
      IF(MU.LE.0.) GOTO 97
   72 DMU=3.*DMU
      CALL ROOTS(MU,DMU)
      IF(ERRMU) GOTO 71 
      MU=FMU(MU)
      CALL PRINT(4) 
C 
   80 CONTINUE
      LMIN=LMAX+1 
      LMAX=LMAX+LINT
      DO 81 L=LMIN,LMAX 
      X(L)=1.+(TMAX-1.)*(L-LMIN)/FLOAT(LINT-1)
      Y(L)=A*X(L)+B 
      NB(L)=6 
   81 CONTINUE
      DO 82 J=1,MR
      K=LMAX+J
      X(K)=T(J) 
      Y(K)=ETA0(J)
      NB(K)=4 
   82 CONTINUE
      LMAX=LMAX+MR
      GOTO 20 
C 
   96 IF(ERR) GOTO 90 
      MU=EMU(I,1)/10. 
      ERR=.T. 
      GOTO 62 
   97 IF(ERR) GOTO 90 
      MU=EMU(I,1)/10. 
      ERR=.T. 
      GOTO 72 
   90 CONTINUE
      WRITE(4,200)
C 
   20 CALL GRAPH(X,Y,NB,LMAX) 
C 
   10 CONTINUE
      SUBROUTINE INPUT
C 
      COMMON/INI/ ANF(10,10),DANF(10,10),PH(10,10),DPH(10,10) 
     $,AF(10,10),DAF(10,10),ETA(10,10),DETA(10,10),EMU(10,10), 
     $T(10),DT(10),ANFM(10),DANFM(10)
CDC  $,F(10,512)
      COMMON/TESPAR/ A0M,DA0M,AMU0,AF0(10),ETA0(10),A0(10)
     $,TDI(10),TDP(10) 
      COMMON/PARAM/IDENT,HANG,HI,HF,DK,NP,PI,SQHI,DKHI,I0DH,H0AL
      COMMON/STEER/MR,ADENT(10),MF,FREQ(10),I0
      COMMON /LINE/ A,B,DA,DB,SA,SB,SAB,TD,AMU,RR,RMSD,CHI
      COMMON /REGRES/ XL(10),YL(10),DY(10)
      COMMON/FRERUN/ IF,JR,INIT,LS
      COMMON/ACCUR/ DDMU1,DDMU2,DCHI,ERRMU
C 
      REAL APM(10)
      LOGICAL ERRMU 
  610 FORMAT(A2)
  620 FORMAT(A6)
  630 FORMAT(I2)
  640 FORMAT(8(G10.3))
  650 FORMAT(A3,A1,A2)
C 
      PI=4*ATAN(1.) 
      DDMU1=DDMU2=1.E-4 
      ICHAN=6 
      DO 5 J=1,10 
    5 APM(J)=1. 
      DO 10 J=1,MR
    1 REWIND ICHAN
    2 READ(ICHAN,610) AMIST 
      IF (AMIST.NE.2H$$) GO TO 2
      READ(ICHAN,630) IMIST 
      IF (IMIST.NE.1) GO TO 2 
      READ(ICHAN,620) ANAME 
      IF (ANAME.NE.ADENT(J)) GO TO 2
      BACKSPACE ICHAN 
      READ(ICHAN,650) IMIST,IDENT,IMIST 
      READ(ICHAN,630) IMIST 
      READ(ICHAN,640) DK,HANG,HI,AMIST,T(J),DT(J),AMIST,FNP 
      IMIST=IMIST-8 
      IF (IMIST.GT.0) READ(ICHAN,640) (APM(I),I=1,IMIST)
      NP=IFIX(FNP)
      DK=DK*1.E-3 
      READ(ICHAN,610) AMIST 
      READ(ICHAN,630) IMIST 
      READ(ICHAN,630) NFREQ 
      DO 20 K=1,NFREQ 
      READ(ICHAN,640) QN1,QN2,QN3,QN4,DQN1,DQN2,DQN3,DQN4 
      DO 30 I=1,MF
      IF (ABS(QN1-FREQ(I)).GT.1./(DK*NP)) GO TO 30
      ANF(I,J)=QN1
      PH(I,J)=QN2 
      AF(I,J)=QN3 
      ETA(I,J)=QN4
      DANF(I,J)=DQN1
      DPH(I,J)=DQN2 
      DAF(I,J)=DQN3 
      DETA(I,J)=DQN4
      EMU(I,J)=APM(K-1)*1.E-3*ANF(I,J)
   30 CONTINUE
   20 CONTINUE
   10 CONTINUE
      HF=HI/(1+DK*(NP-1)*HI)
      SQHI=SQRT(HI) 
      DKHI=DK*HI
      I0DH=(1.+I0*DKHI) 
      H0AL=HI/14.69/I0DH
      I0DH=SQRT(I0DH) 
      IF(IDENT.NE.1HM)SQHI=1./SQHI
      DO 40 I=1,MF
      SA=SB=SP=.0 
      DO 50 J=1,MR
      ANFP=(1./DANF(I,J))**2. 
      SA=SA+ANF(I,J)*ANFP 
      SB=SB+ANF(I,J)**2*ANFP
      SP=SP+ANFP
   50 CONTINUE
      ANFM(I)=SA/SP 
      DANFM(I)=SQRT((SB/SP-ANFM(I)**2)/(MR-1))
   40 CONTINUE
      RETURN
      END 
      SUBROUTINE MEANTD 
C 
      COMMON/INI/ ANF(10,10),DANF(10,10),PH(10,10),DPH(10,10) 
     $,AF(10,10),DAF(10,10),ETA(10,10),DETA(10,10),EMU(10,10), 
     $T(10),DT(10),ANFM(10),DANFM(10)
CDC  $,F(10,512)
      COMMON/TESPAR/ A0M,DA0M,AMU0,AF0(10),ETA0(10),A0(10)
     $,TDI(10),TDP(10) 
      COMMON/PARAM/IDENT,HANG,HI,HF,DK,NP,PI,SQHI,DKHI,I0DH,H0AL
      COMMON/STEER/MR,ADENT(10),MF,FREQ(10),I0
      COMMON /LINE/ A,B,DA,DB,SA,SB,SAB,TD,AMU,RR,RMSD,CHI
      COMMON /REGRES/ XL(10),YL(10),DY(10)
      COMMON/FRERUN/ IF,JR,INIT,LS
      COMMON/ACCUR/ DDMU1,DDMU2,DCHI,ERRMU
C 
      SP=0. 
      SA=0. 
      SB=0. 
      DO 10 J=1,MR
      SA=SA+TD(J)*TDP(J)
      SB=SB+TD(J)**2*TDP(J) 
      SP=SP+TDP(J)
   10 CONTINUE
      TDM=SA/SP 
      DTDM=SQRT((SB/SP-TDM**2)/(MR-1))
      RETURN
      END 
      SUBROUTINE MEAN 
C 
      COMMON/INI/ ANF(10,10),DANF(10,10),PH(10,10),DPH(10,10) 
     $,AF(10,10),DAF(10,10),ETA(10,10),DETA(10,10),EMU(10,10), 
     $T(10),DT(10),ANFM(10),DANFM(10)
CDC  $,F(10,512)
      COMMON/TESPAR/ A0M,DA0M,AMU0,AF0(10),ETA0(10),A0(10)
     $,TDI(10),TDP(10) 
      COMMON/PARAM/IDENT,HANG,HI,HF,DK,NP,PI,SQHI,DKHI,I0DH,H0AL
      COMMON/STEER/MR,ADENT(10),MF,FREQ(10),I0
      COMMON /LINE/ A,B,DA,DB,SA,SB,SAB,TD,AMU,RR,RMSD,CHI
      COMMON /REGRES/ XL(10),YL(10),DY(10)
      COMMON/FRERUN/ IF,JR,INIT,LS
      COMMON/ACCUR/ DDMU1,DDMU2,DCHI,ERRMU
C 
      SP=0. 
      SA=0. 
      SB=0. 
      DO 10 J=1,MR
      TAU=ETA0(J)*DK*NP 
      EX=EXP(-TAU)
      A0(J)=AF0(J)*TAU*SQHI*EXP(ETA0(J)/HI)/(T(J)*(1.-EX))
      PDETA0=(1.-TAU*EX/(1.-EX))/ETA0(J)+1./HI
      A0P=A0(J)**2*((DAF(I,J)/AF0(J))**2+(DETA(I,J)*PDETA0)**2) 
      A0P=1./A0P
      SA=SA+A0(J)*A0P 
      SB=SB+A0(J)**2*A0P
      SP=SP+A0P 
   10 CONTINUE
      A0M=SA/SP 
      DA0M=SQRT((SB/SP-A0M**2)/(MR-1))
      RETURN
      END 
      FUNCTION FMU(MU)
C 
      COMMON/INI/ ANF(10,10),DANF(10,10),PH(10,10),DPH(10,10) 
     $,AF(10,10),DAF(10,10),ETA(10,10),DETA(10,10),EMU(10,10), 
     $T(10),DT(10),ANFM(10),DANFM(10)
CDC  $,F(10,512)
      COMMON/TESPAR/ A0M,DA0M,AMU0,AF0(10),ETA0(10),A0(10)
     $,TDI(10),TDP(10) 
      COMMON/PARAM/IDENT,HANG,HI,HF,DK,NP,PI,SQHI,DKHI,I0DH,H0AL
      COMMON/STEER/MR,ADENT(10),MF,FREQ(10),I0
      COMMON /LINE/ A,B,DA,DB,SA,SB,SAB,TD,AMU,RR,RMSD,CHI
      COMMON /REGRES/ XL(10),YL(10),DY(10)
      COMMON/FRERUN/ IF,JR,INIT,LS
      COMMON/ACCUR/ DDMU1,DDMU2,DCHI,ERRMU
C 
 1000 FORMAT(5X'MU ='E17.10'   FMU ='E17.10'   AMU ='E17.10)
      REAL MU 
      LOGICAL ERRMU 
      AMU0=MU 
      DO 10 J=1,MR
      JR=J
      IF(LS.EQ.0) CALL LSTAU
      IF(LS.EQ.1) CALL LSAFTAU
      YL(J)=ETA0(J) 
      DY(J)=DETA(IF,J)
      XL(J)=T(J)
   10 CONTINUE
      CALL LINREG(MR) 
      FMU=AMU-MU
C     WRITE(4,1000) MU,FMU,AMU
      RETURN
      END 
      SUBROUTINE LSAFTAU
C 
      COMMON/INI/ ANF(10,10),DANF(10,10),PH(10,10),DPH(10,10) 
     $,AF(10,10),DAF(10,10),ETA(10,10),DETA(10,10),EMU(10,10), 
     $T(10),DT(10),ANFM(10),DANFM(10)
CDC  $,F(10,512)
      COMMON/TESPAR/ A0M,DA0M,AMU0,AF0(10),ETA0(10),A0(10)
     $,TDI(10),TDP(10) 
      COMMON/PARAM/IDENT,HANG,HI,HF,DK,NP,PI,SQHI,DKHI,I0DH,H0AL
      COMMON/STEER/MR,ADENT(10),MF,FREQ(10),I0
      COMMON /LINE/ A,B,DA,DB,SA,SB,SAB,TD,AMU,RR,RMSD,CHI
      COMMON /REGRES/ XL(10),YL(10),DY(10)
      COMMON/FRERUN/ IF,JR,INIT,LS
      COMMON/ACCUR/ DDMU1,DDMU2,DCHI,ERRMU
C 
 1000 FORMAT(5X,A6'   CHISQ ='E17.10) 
      Q3=AF0(JR)
      Q4=ETA0(JR)*DK*NP 
      BE=2.*14.69*AMU0*T(JR)
      EBD=EXP(-BE*DK) 
      H2=1./NP
      CHISQ=.0
   10 FLD1OV=1. 
      EBH=EXP(-BE/HI) 
      E8=E89=1./(1.-EXP(-Q4)) 
      E9=EXP(-Q4/NP)
      E3=1.-E8
      IF(INIT.EQ.0) GOTO 50 
      DO 20 K=1,NP
      SQTFLD=SQRT(FLD1OV) 
      IF(IDENT.NE.1HM) SQTFLD=1./SQTFLD 
      AM=Q3*SQTFLD/(1.-EBH) 
      EX=Q4*E89 
      F(JR,K)=AM*EX 
      FLD1OV=FLD1OV+DKHI
      EBH=EBH*EBD 
      E89=E89*E9
   20 CONTINUE
      RETURN
   50 BR1=BR2=.0
      AR11=AR12=AR22=.0 
      CHISQLA=CHISQ 
      CHISQ=.0
      DO 60 K=1,NP
      SQTFLD=SQRT(FLD1OV) 
      IF(IDENT.NE.1HM) SQTFLD=1./SQTFLD 
      AM=Q3*SQTFLD/(1.-EBH) 
      EX=Q4*E89 
      R1=F(JR,K)-AM*EX
      CHISQ=CHISQ+R1**2 
      DFDQ3=AM*EX/Q3
      DFDQ4=AM*E89*(1.+Q4*E3) 
      BR1=BR1+R1*DFDQ3
      BR2=BR2+R1*DFDQ4
      AR11=AR11+DFDQ3**2
      AR22=AR22+DFDQ4**2
      AR12=AR12+DFDQ3*DFDQ4 
      FLD1OV=FLD1OV+DKHI
      EBH=EBH*EBD 
      E89=E89*E9
      E3=E3-H2
   60 CONTINUE
      CHISQ=CHISQ/(NP-2)
C     WRITE(4,1000) ADENT(JR),CHISQ 
      IF(ABS(CHISQ-CHISQLA).LT.DCHI) GOTO 100 
      DET=AR11*AR22-AR12**2 
      Q3=Q3+(BR1*AR22-BR2*AR12)/DET 
      Q4=Q4+(BR2*AR11-BR1*AR12)/DET 
      GOTO 10 
  100 AF0(JR)=Q3
      ETA0(JR)=Q4/(DK*NP) 
      RETURN
      END 
      SUBROUTINE LSTAU
C 
      COMMON/INI/ ANF(10,10),DANF(10,10),PH(10,10),DPH(10,10) 
     $,AF(10,10),DAF(10,10),ETA(10,10),DETA(10,10),EMU(10,10), 
     $T(10),DT(10),ANFM(10),DANFM(10)
CDC  $,F(10,512)
      COMMON/TESPAR/ A0M,DA0M,AMU0,AF0(10),ETA0(10),A0(10)
     $,TDI(10),TDP(10) 
      COMMON/PARAM/IDENT,HANG,HI,HF,DK,NP,PI,SQHI,DKHI,I0DH,H0AL
      COMMON/STEER/MR,ADENT(10),MF,FREQ(10),I0
      COMMON /LINE/ A,B,DA,DB,SA,SB,SAB,TD,AMU,RR,RMSD,CHI
      COMMON /REGRES/ XL(10),YL(10),DY(10)
      COMMON/FRERUN/ IF,JR,INIT,LS
      COMMON/ACCUR/ DDMU1,DDMU2,DCHI,ERRMU
C 
 1000 FORMAT(5X,A6'   CHISQ ='E17.10) 
      Q4=ETA0(JR)*DK*NP 
      BE=2.*14.69*AMU0*T(JR)
      EBD=EXP(-BE*DK) 
      H2=1./NP
      CHISQ=.0
   10 FLD1OV=1. 
      EBH=EXP(-BE/HI) 
      E9=EXP(-Q4/NP)
      EX=EXP(-Q4/(HI*DK*NP))
      H3=1./(HI*DK*NP)
      BR=.0 
      AR=.0 
      CHISQLA=CHISQ 
      CHISQ=.0
      DO 20 K=1,NP
      SQTFLD=SQRT(FLD1OV) 
      IF(IDENT.NE.1HM) SQTFLD=1./SQTFLD 
      AM=A0M*T(JR)*SQTFLD/(SQHI*(1.-EBH)) 
      R1=F(JR,K)-AM*EX
      CHISQ=CHISQ+R1**2 
      DFDQ4=-H3*AM*EX 
      BR=BR+R1*DFDQ4
      AR=AR+DFDQ4*DFDQ4 
      FLD1OV=FLD1OV+DKHI
      EBH=EBH*EBD 
      EX=EX*E9
      H3=H3+H2
   20 CONTINUE
      CHISQ=CHISQ/(NP-1)
C     WRITE(4,1000) ADENT(JR),CHISQ 
      IF(ABS(CHISQ-CHISQLA).LT.DCHI) GOTO 30
      Q4=Q4+BR/AR 
      GOTO 10 
   30 ETA0(JR)=Q4/(DK*NP) 
      RETURN
      END 
      SUBROUTINE PRINT(IFUN)
C 
      COMMON/INI/ ANF(10,10),DANF(10,10),PH(10,10),DPH(10,10) 
     $,AF(10,10),DAF(10,10),ETA(10,10),DETA(10,10),EMU(10,10), 
     $T(10),DT(10),ANFM(10),DANFM(10)
CDC  $,F(10,512)
      COMMON/TESPAR/ A0M,DA0M,AMU0,AF0(10),ETA0(10),A0(10)
     $,TDI(10),TDP(10) 
      COMMON/PARAM/IDENT,HANG,HI,HF,DK,NP,PI,SQHI,DKHI,I0DH,H0AL
      COMMON/STEER/MR,ADENT(10),MF,FREQ(10),I0
      COMMON /LINE/ A,B,DA,DB,SA,SB,SAB,TD,AMU,RR,RMSD,CHI
      COMMON /REGRES/ XL(10),YL(10),DY(10)
      COMMON/FRERUN/ IF,JR,INIT,LS
      COMMON/ACCUR/ DDMU1,DDMU2,DCHI,ERRMU
C 
      LOGICAL ERRMU 
  500 FORMAT(1H1) 
  505 FORMAT(1X,T50,'VERSION  ',I3) 
  510 FORMAT(1X,T10,'RUNS:',T20,A6,T30,'TO',T40,A6,//)
  520 FORMAT(1X,T20,'ANGLE= ',F6.1,T40,'HI= ',F7.3,' T',T60 
     $,'DK= ',1PE10.2,' 1/T',//)
  530 FORMAT(1X,T20,'FREQUENCY : ',F10.3,' T',T50'MU*P='
     $,T60,3PF7.3,T70,'1E-3*1/T') 
  540 FORMAT(//2X'RUN'T16'T[K]'T32'FREQ[T]'T51'PHASE'T71'AMP'T91, 
     $'ETA[T]'T107'A0'/)
  550 FORMAT(1X,A6,2X,0PF6.3'+/-'F5.3,2X,F9.2'+/-'F5.2,3X,F6.1, 
     $'+/-'F4.1,3X,1PE9.2'+/-'E9.2,3X,0PF6.2'+/-'F5.2,3X,1PE9.2)
  560 FORMAT(1X,//,T8,'MEAN FREQUENCY[T]='F9.2'+/-'F5.2,T95,
     $'MEAN A0='1PE9.2,/,T8,'PERIOD[1/T]=      '1PE9.2, 
     $T95'VAR.A0= '1PE9.2,////) 
  570 FORMAT(1X,T8,'ETA FIT:',T20,'X =',T30,F7.3,T40,'K',T70, 
     $'MU =',T80,F7.3,/,T8,'........',/,T33,'+/-',T38,F7.3, 
     $T83,'+/-',T88,F7.3,'  (LINE FIT)',/,T38,F7.3,T88,F7.3,
     $'  (VARIANCE)',,//) 
  580 FORMAT(1X,T20,'MU*P =',T30,3PF7.3,T40,'1E-3*1/T',T70, 
     $'CHI=',T80,0PF7.3,/,T70,'RMSD=',T80,F7.3,/,T70, 
     $'RR=',T80,F7.3,//)
  590 FORMAT(1X,T8,'ETA+ FIT:',T20,'X =',T30,F7.3,T40,'K',T70,
     $'MU =',T80,F7.3,//,T33,'+/-',T38,F7.3,
     $T83,'+/-',T88,F7.3,'  (LINE FIT)',/,T38,F7.3,T88,F7.3,
     $'  (VARIANCE)',,//) 
  600 FORMAT(1X,T8,'ETA0 FIT:',T20,'X =',T30,F7.3,T40,'K',T70,
     $'MU =',T80,F7.3,/,T8,'*********',/,T33,'+/-',T38,F7.3,
     $T83,'+/-',T88,F7.3,'  (LINE FIT)',/,T38,F7.3,T88,F7.3,
     $'  (VARIANCE)',,//) 
C 
C       !!!!!!!!!!!!!!!!!!!!!!!!! 
      IVERS=8 
C       !!!!!!!!!!!!!!!!!!!!!!!!! 
      IF (IFUN.EQ.2) GO TO 2
      IF (IFUN.EQ.3) GO TO 3
      IF (IFUN.EQ.4) GO TO 4
      WRITE(4,500)
      WRITE(4,505) IVERS
      WRITE(4,510) ADENT(1),ADENT(MR) 
      WRITE(4,520) HANG,HI,DK 
      RETURN
    2 WRITE(4,500)
    3 AMP=AMU0/ANFM(I)
      WRITE(4,530) FREQ(I),AMP
      GOTO 6
    4 DA0M=.0 
      DO 5 J=1,MR 
      A0(J)=A0M 
      TAU=ETA0(J)*DK*NP 
      EX=EXP(-TAU)
      AF0(J)=A0M*T(J)*(1.-EX)/(TAU*SQHI*EXP(ETA0(J)/HI))
    5 CONTINUE
    6 WRITE(4,540)
      WRITE(4,550) (ADENT(J),T(J),DT(J),ANF(I,J),DANF(I,J), 
     1PH(I,J),DPH(I,J),AF0(J),DAF(I,J),ETA0(J),DETA(I,J),A0(J), 
     2J=1,MR) 
      PER=1./ANFM(I)
      WRITE(4,560) ANFM(I),DANFM(I),A0M,PER,DA0M
      DTDL=ABS(TD)*SQRT((DA/A)**2+(DB/B)**2)
      TRY=SA/A**2+SB/B**2-2*SAB/A/B 
      IF (TRY.LE.0.) TRY=1000000. 
      DTDS=ABS(TD)*SQRT(TRY)
      DMUL=DA/14.69 
      DMUS=SQRT(SA)/14.69 
      IF (IFUN.EQ.2) WRITE(4,570) TD,AMU,DTDL,DMUL,DTDS,DMUS
      IF (IFUN.EQ.3) WRITE(4,590) TD,AMU,DTDL,DMUL,DTDS,DMUS
      IF (IFUN.EQ.4) WRITE(4,600) TD,AMU,DTDL,DMUL,DTDS,DMUS
      AMP=AMU/ANFM(I) 
      WRITE(4,580) AMP,CHI,RMSD,RR
      IF (IFUN.GE.3) WRITE(4,500) 
      RETURN
      END 
      SUBROUTINE ROOTS(ROOT,DR) 
C
      COMMON/INI/ ANF(10,10),DANF(10,10),PH(10,10),DPH(10,10) 
     $,AF(10,10),DAF(10,10),ETA(10,10),DETA(10,10),EMU(10,10), 
     $T(10),DT(10),ANFM(10),DANFM(10)
CDC  $,F(10,512)
      COMMON/TESPAR/ A0M,DA0M,AMU0,AF0(10),ETA0(10),A0(10)
     $,TDI(10),TDP(10) 
      COMMON/PARAM/IDENT,HANG,HI,HF,DK,NP,PI,SQHI,DKHI,I0DH,H0AL
      COMMON/STEER/MR,ADENT(10),MF,FREQ(10),I0
      COMMON /LINE/ A,B,DA,DB,SA,SB,SAB,TD,AMU,RR,RMSD,CHI
      COMMON /REGRES/ XL(10),YL(10),DY(10)
      COMMON/FRERUN/ IF,JR,INIT,LS
      COMMON/ACCUR/ DDMU1,DDMU2,DCHI,ERRMU
C
      LOGICAL FEHLER
      FEHLER=.F.
      ZA=ROOT 
      ZB=ROOT+DR
      FA=FMU(ZA)
      SIG=SIGN(1.,FA) 
      FA=SIG*FA 
      FB=SIG*FMU(ZB)
      IF(FA*FB) 30,30,500 
C 
C  LINEARE INTERPOLATION UND INTERVALLSCHACHTELUNG
C 
   30 ZC=(ZA*FB-ZB*FA)/(FB-FA)
      FC=SIG*FMU(ZC)
      IF(ABS(FC).LT.DDET) GOTO 91 
      IF(FC.LT.0.) GOTO 70
      ZD=(ZB+ZC)/2. 
      FD=SIG*FMU(ZD)
   50 IF(ABS(FD).LT.DDET) GOTO 92 
      IF(FD.LT.0.) GOTO 100 
      ZC=ZD   $   FC=FD 
      ZD=(ZB+ZD)/2. 
      FD=SIG*FMU(ZD)
      GOTO 50 
   70 ZD=ZC   $   FD=FC 
      ZC=(ZA+ZC)/2. 
      FC=SIG*FMU(ZC)
      IF(ABS(FC).LT.DDET) GOTO 91 
      IF(FC.LT.0.) GOTO 70
  100 ZA=ZC   $   ZB=ZD 
      FA=FC   $   FB=FD 
      GOTO 96 
   91 ZA=ZB=ZC
      FA=FB=.0
      GOTO 96 
   92 ZA=ZB=ZD
      FA=FB=.0
   96 CONTINUE
      IF(ABS(FA-FB).GT.DDET.AND.ABS(ZA-ZB).GT.DK) GOTO 30 
      ROOT=(ZA+ZB)/2. 
      RETURN
  500 FEHLER=.T.
      RETURN
      END 
      SUBROUTINE LINREG(MR) 
C 
      COMMON/INI/ ANF(10,10),DANF(10,10),PH(10,10),DPH(10,10) 
     $,AF(10,10),DAF(10,10),ETA(10,10),DETA(10,10),EMU(10,10), 
     $T(10),DT(10),ANFM(10),DANFM(10)
CDC  $,F(10,512)
      COMMON/TESPAR/ A0M,DA0M,AMU0,AF0(10),ETA0(10),A0(10)
     $,TDI(10),TDP(10) 
      COMMON/PARAM/IDENT,HANG,HI,HF,DK,NP,PI,SQHI,DKHI,I0DH,H0AL
      COMMON/STEER/MR,ADENT(10),MF,FREQ(10),I0
      COMMON /LINE/ A,B,DA,DB,SA,SB,SAB,TD,AMU,RR,RMSD,CHI
      COMMON /REGRES/ XL(10),YL(10),DY(10)
      COMMON/FRERUN/ IF,JR,INIT,LS
      COMMON/ACCUR/ DDMU1,DDMU2,DCHI,ERRMU
C 
      DIMENSION V(10),P(10) 
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
      N=MR
      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+XL(J)*P(J)
      SY=SY+YL(J)*P(J)
      SXX=SXX+XL(J)*XL(J)*P(J)
      SXY=SXY+XL(J)*YL(J)*P(J)
      SYY=SYY+YL(J)*YL(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 
      TD=B/A
      AMU=A/14.69 
C     VARIANCES FROM LINE FIT 
      IF (N.GT.2) GO TO 75
      DA=0. 
      DB=0. 
      RR=0. 
      RMSD=0. 
      CHI=0.
      GO TO 76
   75 CONTINUE
      Q=0.
      QA=0. 
      DO 62 J=1,N 
      V(J)=YL(J)-XL(J)*A-B
      Q=Q+V(J)*V(J)*P(J)
      QA=QA+(V(J))**2 
   62 CONTINUE
      CHI=SQRT(Q/(N-2)) 
      C=SP*SYY-SY*SY
      DA=CHI*SQRT(SP/D) 
      DB=CHI*SQRT(SXX/D)
      RR=SQRT(A*A*D/C)
      RMSD=SQRT(QA/(N-2)) 
   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 
      SUBROUTINE GRAPH(X,Y,NB,NPOINT) 
C 
      DIMENSION X(1),Y(1),NB(1),LINEA(120),LRUB(120),XSCALE(24) 
      LOGICAL SQUARE
C 
      DATA LINEA /120*1H /
C 
 1000 FORMAT(3X,A6,2H :/10X,1H:)
 1001 FORMAT(10X,1H:,120A1) 
 1002 FORMAT(1X,F8.3,2H :,120A1)
 1003 FORMAT(10X,1H-,24A5)
 1004 FORMAT(8X,11(F6.3,4X))
C 
      IXAUT=2 
      XMIN=1. 
      XMAX=-1E100 
      IYAUT=3 
      YMIN=1.E100 
      YMAX=-1.E100
      KCOL=91.
      LINE=55.
      SQUARE=.F.
      XAXIS=5H T[K] 
      YAXIS=6HETA[T]
C 
      LRUB(1)=1 
      IF(IXAUT.EQ.0) GO TO 20 
      DO 10 N=1,NPOINT
      IF (IXAUT.NE.2) XMIN=AMIN1(XMIN,X(N)) 
      IF (IXAUT.NE.1) XMAX=AMAX1(XMAX,X(N)) 
   10 CONTINUE
   20 IF(IYAUT.EQ.0) GO TO 40 
      DO 30 N=1,NPOINT
      IF (IYAUT.NE.2) YMIN=AMIN1(YMIN,Y(N)) 
   30 IF (IYAUT.NE.1) YMAX=AMAX1(YMAX,Y(N)) 
   40 DX=(XMAX-XMIN)/(KCOL-1) 
      DY=(YMAX-YMIN)/(LINE-1) 
      IF(.NOT.SQUARE) GOTO 50 
      DX=DX*10. 
      DY=DY*6.
      DX=AMAX1(DX,DY) 
      DY=DX 
      DX=DX/10. 
      DY=DY/6.
   50 CENX=(XMIN+XMAX)/2. 
      CENY=(YMIN+YMAX)/2. 
      RKCEN=FLOAT(KCOL)/2.
      RLCEN=FLOAT(LINE)/2.
      WRITE(4,1000) YAXIS 
      NP=NPOINT 
      DO 100 L=1,LINE 
      KLAST=0 
      LPOINT=0
      IF(NP.EQ.0) GOTO 65 
      DO 60 N=1,NP
      NLP=N-LPOINT
      X(NLP)=X(N) 
      Y(NLP)=Y(N) 
      NB(NLP)=NB(N) 
      IF((RLCEN-(Y(N)-CENY)/DY).GT.FLOAT(L)) GOTO 60
      LPOINT=LPOINT+1 
      K=IFIX(RKCEN+(X(N)-CENX)/DX)+1
      LRUB(LPOINT)=K
      KLAST=MAX0(K,KLAST) 
      IF(NB(N).NE.1) GOTO 51
      LINEA(K)=1HE
      GOTO 60 
   51 IF(NB(N).NE.2) GOTO 52
      LINEA(K)=1H-
      GOTO 60 
   52 IF(NB(N).NE.3) GOTO 53
      LINEA(K)=1H+
      GOTO 60 
   53 IF(NB(N).NE.4) GOTO 54
      LINEA(K)=1H0
      GOTO 60 
   54 IF(NB(N).NE.5) GOTO 55
      IF(LINEA(K).NE.1H ) GOTO 60 
      LINEA(K)=1H.
      GOTO 60 
   55 IF(NB(N).NE.6) GOTO 56
      IF(LINEA(K).NE.1H ) GOTO 60 
      LINEA(K)=1H*
      GOTO 60 
   56 LINEA(K)=1H'
   60 CONTINUE
   65 LINEL=LINE-L
      LSCALE=(LINEL)/6
      IF((6*LSCALE).EQ.(LINEL)) GOTO 70 
      WRITE(4,1001) (LINEA(K),K=1,KLAST)
      GOTO 80 
   70 YSCALE=CENY+DY*(FLOAT(LINEL)-RLCEN+.5)
      WRITE(4,1002) YSCALE,(LINEA(K),K=1,KLAST) 
   80 NP=NP-LPOINT
      DO 90 K=1,LPOINT
      KL=LRUB(K)
   90 LINEA(KL)=1H
  100 CONTINUE
      KSCALE=KCOL/5 
      IF(KSCALE.EQ.24) KSCALE=23
      DO 110 K=1,KSCALE 
  110 XSCALE(K)=5H^---- 
      WRITE(4,1003) (XSCALE(K),K=1,KSCALE),XAXIS
      KSCALE=KCOL/10
      IF(KSCALE.EQ.12) KSCALE=11
      DO 120 K=1,KSCALE 
  120 XSCALE(K)=CENX+DX*(10.*FLOAT(K-1)-RKCEN+.5) 
      WRITE(4,1004) (XSCALE(K),K=1,KSCALE)
      RETURN
      END