Trailing-Edge
-
PDP-10 Archives
-
decuslib20-01
-
decus/20-0009/nvtwo.for
There is 1 other file named nvtwo.for in the archive. Click here to see a list.
SUBROUTINE ENTMAT (NB, A, D, N, WGT, MATRIX, WMATRX, AMIN, AMAX, 0010
1 NA, DMIN, DMAX, ND) 0030
CENTMAT ENTERS POINT (A,D) INTO 2 - DIM. HISTOGRAM MATRIX 0020
C 0040
DIMENSION MATRIX(2), A(2), D(2), WMATRX(2), WGT(2) 0050
C 0070
NAA = MIN0(NA, 20) 0080
DA = (AMAX - AMIN) / FLOAT(NAA) 0090
DD = (DMAX - DMIN) / FLOAT(ND) 0100
NAA = NAA + 1 0110
NTT = NAA*(ND + 1) 0120
MTT = NTT + 5 0130
C 0140
DO 100 K = 1, N 0150
IF (A(K) - AMIN) 5, 10, 10 0160
5 NRET = 1 0170
GO TO 35 0180
10 IF (A(K) - AMAX) 20, 20, 15 0190
15 NRET = 2 0200
GO TO 35 0210
20 IF (D(K) - DMIN) 25, 30, 30 0220
25 NRET = 3 0230
GO TO 35 0240
30 IF (D(K) - DMAX) 40, 40, 32 0250
32 NRET = 4 0260
C 0270
35 NOV = NTT + NRET 0280
GO TO (36, 38), NB 0290
36 MATRIX(NOV) = MATRIX(NOV) + 1 0300
MATRIX(MTT) = MATRIX(MTT) + 1 0310
GO TO 100 0320
38 WMATRX(NOV) = WMATRX(NOV) + WGT(K) 0330
WMATRX(MTT) = WMATRX(MTT) + WGT(K) 0340
GO TO 100 0350
C 0360
40 CONTINUE 0370
IA = (A(K) - AMIN) / DA + 1.0 0380
ID = (D(K) - DMIN) / DD + 1.0 0390
MM = (ID - 1) * NAA + IA 0400
NAT = ID*NAA 0410
NDT = ND*NAA + IA 0420
GO TO (60, 80), NB 0430
60 MATRIX(MM) = MATRIX(MM) + 1 0440
MATRIX(NTT) = MATRIX(NTT) + 1 0450
MATRIX(NAT) = MATRIX(NAT) + 1 0460
MATRIX(NDT) = MATRIX(NDT) + 1 0470
MATRIX(MTT) = MATRIX(MTT) + 1 0480
GO TO 100 0490
80 WMATRX(MM) = WMATRX(MM) + WGT(K) 0500
WMATRX(NTT) = WMATRX(NTT) + WGT(K) 0510
WMATRX(NAT) = WMATRX(NAT) + WGT(K) 0520
WMATRX(NDT) = WMATRX(NDT) + WGT(K) 0530
WMATRX(MTT) = WMATRX(MTT) + WGT(K) 0540
100 CONTINUE 0550
C 0560
200 RETURN 0570
END 0580
SUBROUTINE OUTMAT(NOT,HEAD,NB,IPLOT,AMIN,AMAX,NA,DMIN,DMAX,ND)
COUTMAT PRINT ROUTINE FOR 2-DIMENSIONAL HISTOGRAMS
C
C EXTENSIVE CHANGES MADE FOR PDP-10 LDK 12/69
INTEGER TYPEA,TYPEB,TYPEC
DIMENSION IPLOT(2), HEAD(6)
DIMENSION AROW(50), IAROW(50), ALABEL(50)
DIMENSION IFMT(10), FMT(10)
DIMENSION IDASH(4), KDASH(2)
DIMENSION KQDT1(3),KQDT2(3),KQDT3(3),TOT(2)
DIMENSION IQDT(5), LQDT(7), MQDT(2)
EQUIVALENCE (ALABEL,AROW,IAROW), (FMT,IFMT), (XNN,NN)
DATA TOT /'TOTALS '/
DATA IDASH /'I-----I-----I-------'/
DATA KDASH /'I-- --I '/
DATA KQDT1/' IS UNFILLED'/
DATA KQDT2/', UNWEIGHTED'/
DATA KQDT3/', WEIGHTED '/
DATA IQDT /'(6X F10.3,5X2A5/) '/
DATA LQDT /'(12X 2HI (A4,1X)1HI5XA4)'/
DATA MQDT /'(3X2A4,1X '/
EQUIVALENCE (IBLANK,IQDT(2))
C
NAA = MIN0(NA, 20)
MTT = (NAA + 1)*(ND + 1) + 5
IF(IPLOT(MTT)) 2,2,4
2 TYPEA=KQDT1(1)
TYPEB=KQDT1(2)
TYPEC=KQDT1(3)
NBR = 2
GO TO 10
4 NBR = 1
GO TO (6, 8), NB
6 TYPEA=KQDT2(1)
TYPEB=KQDT2(2)
TYPEC=KQDT2(3)
GO TO 10
8 TYPEA=KQDT3(1)
TYPEB=KQDT3(2)
TYPEC=KQDT3(3)
10 WRITE(NOT,9000)HEAD,TYPEA,TYPEB,TYPEC
9000 FORMAT(1H1/1H 10X24HTWO DIMENSIONAL PLOT OF 3A5,4H VS 6A5/)
GO TO (12, 120), NBR
C
12 CONTINUE
DA = (AMAX - AMIN) / FLOAT(NAA)
NLA = NAA/2 + 1
NDM = ND + 1
NAM = NAA + 1
C PRINT SCALE ACROSS TOP
ALABEL(1) = AMIN
DO 20 N = 2, NLA
20 ALABEL(N) = ALABEL(N - 1) + 2.0 * DA
DO 210 N=1,5
210 IFMT(N) = IQDT(N)
FMT(2) = BCDW(NLA)
WRITE(NOT,IFMT)(ALABEL(K),K=1,NLA),TOT
DO 225 N=1,7
225 IFMT(N) = LQDT(N)
FMT(4) = BCDW(NAA)
NGO = 1
DLABEL = DMIN
NAMT = NAA + 3
22 IAROW(1)=IDASH(1)
DO 24 I=2,NAA
24 IAROW(I) = IDASH(2)
IAROW(NAM) = IDASH(3)
IAROW(NAM+1) = IDASH(4)
IAROW(NAMT) = IDASH(4)
WRITE(NOT,9024)DLABEL,(IAROW(M),M=1,NAMT)
9024 FORMAT(1XF10.3,1X24A5)
GO TO (28, 82), NGO
C
28 DD = (DMAX - DMIN) / FLOAT(ND)
MM = 0
N=0
130 N=N+1
DO 30 K=1,NAMT
30 IAROW(K)=IBLANK
DO 48 K = 1, NAM
MM = MM + 1
IF(IPLOT(MM))48,32,36
32 GO TO (34, 36), NBR
34 IF (K - NAM) 48, 36, 48
36 NN=IPLOT(MM)
IF(NB.EQ.2) NN=XNN+SIGN(0.5,XNN)
AROW(K)=BCDW(NN)
48 CONTINUE
50 GO TO (60, 90), NBR
C PRINT HORIZONTAL DIVIDING LINE
60 CONTINUE
WRITE(NOT,IFMT)(IAROW(K),K=1,NAM)
DLABEL = DLABEL + DD
IF (N - ND) 70, 80, 80
70 IAROW(1)=KDASH(1)
IAROW(NAM)=KDASH(2)
DO 74 K = 2, NAA
74 IAROW(K)=IBLANK
WRITE(NOT,9024) DLABEL,(IAROW(M),M=1,NAM)
GO TO 130
C
80 NGO=2
C GO PRINT BOTTOM AXIS
GO TO 22
82 IFMT(1)=MQDT(1)
IFMT(2)=MQDT(2)
NBR = 2
GO TO 130
90 CONTINUE
WRITE(NOT,IFMT)(IBLANK,I=1,NAMT)
WRITE(NOT,IFMT)TOT,(IAROW(K),K=1,NAM)
IAROW(1) = IPLOT(MTT)
DO 95 I=1,4
N = MM + I
95 IAROW(I+1) = IPLOT(N)
IF (NB-1) 110,111,110
110 WRITE(NOT,9103) (AROW(I),I=1,5)
9103 FORMAT (1H0 10X26HTOTAL NUMBER OF ENTRIES = F10.3, 45H INCLUDING
1UNDERFLOW AND OVERFLOW AS FOLLOWS / 1H0 32X9HUNDERFLOW 7X8HOVERFL
2OW / 1H 20X6HACROSS 2(5XF10.3) / 1H 20X6HDOWN 2(5XF10.3) /)
GO TO 120
111 WRITE(NOT,9104) (IAROW(I),I=1,5)
9104 FORMAT (1H0 10X26HTOTAL NUMBER OF ENTRIES = I10 , 45H INCLUDING
1UNDERFLOW AND OVERFLOW AS FOLLOWS / 1H0 32X9HUNDERFLOW 7X8HOVERFL
2OW / 1H 20X6HACROSS 2(5XI10 ) / 1H 20X6HDOWN 2(5XI10 ) /)
120 RETURN
END