File: COMFOU.FT of Tape: Various/ETH/f2
(Source file text)
SUBROUTINE COMFOU(LANA,NC,NR) C COMMON /TITLE/ ADENT,GLOBAL,RUN,ICREAT COMMON /FITPAR/ JIT,FISTOP,AMARQI,UPMARQ,DNMARQ,VARI, $ UPVAR,DNVAR,VARMIN,MLOOP,LOOPLW,ISTART,ISTOP,ITEST,IDEFIX COMMON /PARAM/ DKHI,SHFACT,CHISQ,ITORQ,IDILA,DK,DL,HANG $ ,HUP,HDOWN,AMI,PS,PT,SOLLT,TEMP,TV,ES,AKL,AKV,CAP,EICH COMMON /PEAKS/ TASWI,KBLOW,KBLOW1,KMAX,K1,K3,CHI, $ Q(11,4),HIGHT(21),INDEX(21) COMMON /VECT/ C(44),D1(11,4),DIAGEL(44),D(44),E(44) COMMON /DATIN/ F(512),NP COMMON /CONST/ PI,TWOPI COMMON /PLOTC/ PLTBUF(400) COMMON /FAF/ A(2049),B(2049),N DIMENSION AR(44,44),Z(44,44) EQUIVALENCE (A,AR),(B,Z) INTEGER RUN REAL K3 LOGICAL ITORQ,IDILA,ITEST,TASWI C LOGICAL LANA C NI=NC NC=IABS(NC) NH=NC/2 NQ=NH/2 NE=5*NQ/2 CT=0. IM=1 NPR=NC IF (NR.EQ.NC) GO TO 3 LL=1 K=NR GO TO 10 9 LL=LL*2 10 K=2*K IF (K.LE.NC) GO TO 9 NPR=NC/LL NPMNR=NPR-NR IF (NPMNR.EQ.0) GO TO 14 DO 12 KK=1,NPMNR K=NPR-KK+1 A(K)=0. B(K)=0. 12 CONTINUE 14 LH=NPR 13 IF (LH.GE.NC) GO TO 15 DO 50 JJ=1,LH J=LH-JJ+1 A(J+LH)=A(J) B(J+LH)=B(J) 50 CONTINUE LH=2*LH GO TO 13 15 I=LL IM=LL 16 I=I/2 IF (I.LT.1) GO TO 17 CT=CT+SQRT(1.+CT*CT) GO TO 16 17 CONTINUE 3 LH=NPR 19 IF (LH.LE.1) GO TO 20 LH=LH/2 M=7 C CALL SCOPE(.T.) DC=-2./(1.+CT*CT) DS=-CT*DC H=2.*DC CI=1. SI=0. IF (LANA) DS=-DS DO 30 I=1,IM ASSIGN 110 TO INVRET GO TO 100 110 KM=J+LH-1 DO 40 K=J,KM KD=K+LH PRE=A(K) PIM=B(K) QR=A(KD)*CI-B(KD)*SI QI=A(KD)*SI+B(KD)*CI A(K)=PRE+QR B(K)=PIM+QI A(KD)=PRE-QR B(KD)=PIM-QI 40 CONTINUE CI=CI+DC SI=SI+DS DC=H*CI+DC DS=H*SI+DS 30 CONTINUE IM=IM*2 CT=CT+SQRT(1.+CT*CT) GO TO 19 20 J=1 M=0 DO 60 I=2,NC ASSIGN 120 TO INVRET GO TO 100 120 IF (J.GE.I) GO TO 60 H=A(I) A(I)=A(J) A(J)=H H=B(I) B(I)=B(J) B(J)=H 60 CONTINUE IF (.NOT.LANA.OR.NI.LT.0) GO TO 67 H=1./FLOAT(NC) DO 66 I=1,NC A(I)=H*A(I) B(I)=H*B(I) 66 CONTINUE 67 CONTINUE RETURN C 100 M=M+1 GO TO (201,202,201,204,201,202,201,208),M 201 J=J+NH GO TO 210 202 J=J-NQ GO TO 210 204 J=J-NE GO TO 210 208 J=1 K=1 M=I-1 220 M=M+M IF (M.EQ.0) GO TO 210 IF (M.LT.NC) GO TO 230 M=M-NC J=J+K 230 K=K+K GO TO 220 210 GO TO INVRET,(110,120) C END