Trailing-Edge
-
PDP-10 Archives
-
decuslib20-01
-
decus/20-0009/func10.for
There is 1 other file named func10.for in the archive. Click here to see a list.
SUBROUTINE FUNC10 (KR, KCM)
C ************************* COMMON COMMON ************************** 0020
COMMON MAP(2000),PARS(1000),MISC(27),KLIST(500),MTABLE(2)
COMMON /LIMIT/LIMMNO,LIMLNO,LIMKNO,LIMEX
DIMENSION ZMAP(2000)
DIMENSION REMARK(500)
DIMENSION OTABLE(7,50), JTABLE(7,50), RTABLE(9,20,2),
1 LTABLE(9,20,2), ITABLE(6,20), VAL(100), IVAL(100),
2 WGT(100)
DIMENSION HLIST(500)
DIMENSION PARA(1000),NPARA(1000),SNAME(1000),NAME(1000)
DIMENSION HEAD(11), NBRNCH(10)
DIMENSION HTABLE(7,100)
DIMENSION TABLE(100)
EQUIVALENCE (MAP,ZMAP)
EQUIVALENCE (REMARK,MAP(1001))
EQUIVALENCE (OTABLE,JTABLE,MAP(701)), (RTABLE,LTABLE,MAP(1051)),
1 (ITABLE,MAP(1411)), (VAL,IVAL,MAP(1531)),
2 (WGT,MAP(1631))
EQUIVALENCE (NCFLAG,MAP(1869)), (WEIGHT,MAP(1978)),
1 (NTAPE,MAP(1988)), (EINC,MAP(1998)),
2 (PINC,MAP(1999)), (BINC,MAP(2000))
EQUIVALENCE (PARA,NPARA,PARS),(SNAME,NAME,MAP(1))
EQUIVALENCE (PI, MISC), (RADIAN, MISC(2)), (NIT, MISC(3)),
1 (NOT, MISC(4)), (HEAD, MISC(5)), (NBRNCH, MISC(16)),
2 (NPAGE, MISC(26)), (NORD, MISC(27))
EQUIVALENCE (LTAPE,NBRNCH(9)), (LINK,NBRNCH(10)), (HTABLE,MAP)
EQUIVALENCE (HLIST,KLIST)
EQUIVALENCE (TABLE,PARS(101))
C *************** END COMMON COMMON *************************
DIMENSION LIST(10), HNAME(3)
DATA HNAME /' RESONANCES '/
C 0170
IF (KCM) 5, 10, 10 0180
5 DO 6 I=1,3
6 VAL(I) = HNAME(I)
RETURN 0230
C 0240
10 NT = KLIST(KR) 0250
NRP = HLIST(KR + 1) 0260
NR = 0 0270
DO 15 N = 1,6 0280
LIST(N) = MOD(NRP,10) 0290
NR = NR + 1 0300
NRP = NRP / 10 0310
IF (NRP) 20, 20, 15 0320
15 CONTINUE 0330
20 KEND = KR + 3 0340
Y = 0.0 0350
Z = 0.0 0360
C 0370
DO 50 N = 1,NR 0380
CVSQ = TABLE(NT)**2 0390
CVGAM = TABLE(NT) * TABLE(NT + 1) 0400
AMP = TABLE(NT + 2) 0410
PHASE = TABLE(NT + 3)/RADIAN 0420
COSP = COS(PHASE) 0430
SINP = SIN(PHASE) 0440
NT = NT + 4 0450
NN = NR - N + 1 0460
KBEG = KEND + 1 0470
KEND = KEND + LIST(NN) 0480
EFMSQ = SQMASS (KBEG,KEND) 0490
X = (EFMSQ - CVSQ) / CVGAM 0500
B = 1.0 / (1.0 + X*X) 0510
A = -X*B 0520
Y = Y + AMP*(A*COSP - B*SINP) 0530
Z = Z + AMP*(B*COSP + A*SINP) 0540
50 CONTINUE 0550
C 0560
WEIGHT = Y*Y + Z*Z 0570
RETURN 0580
END 0590