1
0
mirror of https://github.com/retro-software/B5500-software.git synced 2026-03-02 17:44:40 +00:00
Files
Paul Kimpel 2c72f7fd1d Commit CUBE Library version 13 of February 1972.
1. Commit library tape images, directories, and extracted text files.
2. Commit additional utilities under Unisys-Emode-Tools.
2018-05-27 11:24:23 -07:00

207 lines
16 KiB
Plaintext

LABEL 0000000000XXXXXX0010000001
$ CARD LIST
BEGIN UNIT 1
UNIT 2
COMMENT LEAST SQUARES POLYNOMIAL CURVE-FITTING WITH WEIGHT UNIT 3
OPTIONS. THE OMEGA VALUES MAY EITHER BE CONSTANTS, OR THEYUNIT 4
MAY START WITH ANY GIVEN INITIAL VALUE AND BE ITERATED TO UNIT 5
SELFCONSISTENCY BY ASSIGNING A FUNCTION OF THE SQUARES UNIT 6
OF THE NORMAL DIFFERENCES AS OMEGA. UNIT 7
UNIT 8
THE FOLLOWING BOOLEAN OPTIONS, IF TRUE, RESULT IN : UNIT 9
STEPN ~ FITTING IS CARRIED OUT FOR ALL ORDERS, UNIT 10
UP TO M { 10. UNIT 11
INTEG ~ VALUES OF FIRST AND SECOND INTEGRAL ARE UNIT 12
COMPUTED FOR GRAPHS GOING THROUGH THE ORIGIN.UNIT 13
DIFFL ~ FIRST AND SECOND DERIVATIVES ARE COMPUTED. UNIT 14
SELFC ~ WEIGHTS ARE ITERATED TO SELFCONSISTENCY FOR UNIT 15
AN INPUT THRESHOLD VALUE. UNIT 16
FOLLW ~ SEQUENTIAL DATA SETS ARE PROCESSED. UNIT 17
UNIT 18
DR EDGAR L. EICHHORN [ BURROUGHS PROFESSIONAL SERVICES]. UNIT 19
UNIT 20
CARD SEQUENCE STARTS WITH UNIT-0000. UNIT 21
NEW VERSION, 05-25-1964. ; UNIT 22
UNIT 23
UNIT 24
INTEGER I,J,K,P,Q,S,N,M,CT,COUNT ; UNIT 25
UNIT 26
REAL RT,SQUSUM,CALC,DIFF,DIFF2,FIRST,SECND,FACT1,FACT2,THOLD, UNIT 27
OMS,OMGSUM,WSUM,XQ,YQ ; UNIT 28
UNIT 29
REAL ARRAY PART[0:20],EL[0:13,0:14,0:13],DEN, UNIT 30
SUB,SOL[0:13],X,Y,OMEGA,PREV[0:250] ; UNIT 31
UNIT 32
BOOLEAN STEPN,INTEG,DIFFL,SELFC,FOLLW ; UNIT 33
UNIT 34
LIST ORDER(P,M), UNIT 35
DETER(FACT1,FACT2), UNIT 36
THC(THOLD,CT), UNIT 37
BOOLEEN(STEPN,INTEG,DIFFL,SELFC,FOLLW), UNIT 38
INDATA(X[Q],Y[Q],OMEGA[Q]), UNIT 39
CN(SOL[Q],(Q-2)), UNIT 40
LISTING(Q,X[Q],Y[Q],OMEGA[Q],CALC,DIFF,FIRST,SECND), UNIT 41
VARIANCE((SQUSUM/OMGSUM),((100.0)|(1.0 - (SQUSUM/WSUM))));UNIT 42
UNIT 43
FORMAT OUT HEADLINE(X2,"Q",X14,"X",X9,"Y[OBS]",X10,"OMEGA",X8, UNIT 44
"Y[CALC]",X10,"DIFF."), UNIT 45
DIFFLINE(X2,"Q",X14,"X",X9,"Y[OBS]",X10,"OMEGA",X8, UNIT 46
"Y[CALC]",X10,"DIFF.",X10,"SLOPE",X10,"CURV."), UNIT 47
INTGLINE(X2,"Q",X14,"X",X9,"Y[OBS]",X10,"OMEGA",X8, UNIT 48
"Y[CALC]",X10,"DIFF.",X5,"FIRST INT.",X4, UNIT 49
"SECOND INT."), UNIT 50
CONF(E14.7," | (X*",I2,")"), UNIT 51
LISTF(I3,X3,7(E12.5,X3)), UNIT 52
CNTF("ITERATION NO. ",I2), UNIT 53
SUMF("VARIANCE = ",E12.5,X3,"GOODNESS-OF-FIT = ", UNIT 54
F10.5,X1,"PERCENT") ; UNIT 55
UNIT 56
FILE IN BUFFIN (1,10) ; UNIT 57
UNIT 58
FILE OUT BUFFOUT 1 (1,15) ; UNIT 59
UNIT 60
FORMAT IN FMIN0(5L6), UNIT 61
FMIN1(3F12.5), UNIT 62
FMIN2(I2,X1,I2), UNIT 63
FMIN3(2F12.7), UNIT 64
FMIN4(F12.7,X1,I2) ; UNIT 65
UNIT 66
LABEL ONSET,START,SUMS,AAAAA,SECOND,THIRD,FOURTH, UNIT 67
FIFTH, SIXTH, SEVENTH, EIGHTH, NINTH, FINISH ; UNIT 68
UNIT 69
UNIT 70
ONSET: Q ~ 1 ; UNIT 71
READ(BUFFIN,FMIN0,BOOLEEN) ; UNIT 72
IF (INTEG OR DIFFL) THEN READ(BUFFIN,FMIN3,DETER) ; UNIT 73
IF SELFC THEN READ(BUFFIN,FMIN4,THC) ; UNIT 74
UNIT 75
START : READ(BUFFIN,FMIN1,INDATA) ; UNIT 76
IF X[Q] = 0.0 AND Y[Q] = 0.0 THEN GO TO AAAAA ; UNIT 77
PREV[Q] ~ 0.0 ; UNIT 78
Q ~ Q + 1 ; GO TO START ; UNIT 79
UNIT 80
AAAAA : S ~ Q - 1 ; COUNT ~ 0 ; UNIT 81
READ(BUFFIN,FMIN2,ORDER) ; UNIT 82
IF NOT STEPN THEN UNIT 83
BEGIN UNIT 84
N ~ P ; GO TO SUMS UNIT 85
END ; UNIT 86
UNIT 87
FOR N ~ P STEP 1 UNTIL M DO UNIT 88
BEGIN UNIT 89
IF SELFC THEN UNIT 90
FOR Q ~ 1 STEP 1 UNTIL S DO OMEGA[Q] ~ 1.0 ; UNIT 91
UNIT 92
SUMS : IF S { N THEN GO TO FINISH ; UNIT 93
COUNT ~ COUNT + 1 ; UNIT 94
UNIT 95
FOR I ~ (2|N) STEP -1 UNTIL 0 DO PART[I] ~ 0.0 ; UNIT 96
FOR I ~ 1 STEP 1 UNTIL (N+1) DO EL[I,(N+2),1] ~ 0.0 ; UNIT 97
OMGSUM ~ WSUM ~ 0.0 ; UNIT 98
UNIT 99
FOR Q ~ 1 STEP 1 UNTIL S DO UNIT 100
BEGIN UNIT 101
XQ ~ X[Q] ; YQ ~ Y[Q] ; OMS ~ OMEGA[Q]|OMEGA[Q] ; UNIT 102
OMGSUM ~ OMS + OMGSUM ; WSUM ~ OMS|YQ|YQ + WSUM ; UNIT 103
UNIT 104
FOR J ~ (2|N) STEP -1 UNTIL 0 DO UNIT 105
PART[J] ~ OMS|(XQ*J) + PART[J] ; UNIT 106
FOR I ~ 1 STEP 1 UNTIL (N+1) DO UNIT 107
EL[I,(N+2),1] ~ - OMS|YQ|(XQ*(I-1)) + EL[I,(N+2),1] ; UNIT 108
END ; UNIT 109
UNIT 110
SECOND : FOR I ~ 1 STEP 1 UNTIL (N+1) DO UNIT 111
FOR J ~ 1 STEP 1 UNTIL (N+1) DO EL[I,J,1] ~ PART[I+N-J] ;UNIT 112
UNIT 113
THIRD: Q ~ N + 1 ; K ~ 1 ; UNIT 114
UNIT 115
FOURTH: FOR I ~ 1 STEP 1 UNTIL Q DO UNIT 116
DEN[I] ~ EL[I,1,K] ; UNIT 117
UNIT 118
FOR I ~ 1 STEP 1 UNTIL Q DO UNIT 119
FOR J ~ 1 STEP 1 UNTIL (Q+1) DO UNIT 120
EL[I,J,(K+1)] ~ EL[I,J,K]/DEN[I] ; UNIT 121
UNIT 122
FOR J ~ 1 STEP 1 UNTIL (Q+1) DO UNIT 123
SUB[J] ~ EL[1,J,(K+1)] ; UNIT 124
UNIT 125
FOR I ~ 1 STEP 1 UNTIL Q DO UNIT 126
FOR J ~ 1 STEP 1 UNTIL (Q+1) DO UNIT 127
EL[I,J,(K+1)] ~ EL[I,J,(K+1)] - SUB[J] ; UNIT 128
UNIT 129
FOR I ~ 1 STEP 1 UNTIL Q DO UNIT 130
FOR J ~ 1 STEP 1 UNTIL (Q+1) DO UNIT 131
EL[I,J,(K+1)] ~ EL[(I+1),(J+1),(K+1)] ; UNIT 132
UNIT 133
IF Q = 1 THEN GO TO FIFTH ; UNIT 134
Q ~ Q - 1 ; K ~ K + 1 ; GO TO FOURTH ; UNIT 135
UNIT 136
FIFTH: SOL[1] ~ 1.0 ; UNIT 137
UNIT 138
FOR I ~ 2 STEP 1 UNTIL (N+2) DO UNIT 139
BEGIN UNIT 140
RT ~ 0.0 ; UNIT 141
FOR J ~ 1 STEP 1 UNTIL (I-1) DO UNIT 142
RT ~ RT + EL[(I-1),(J+1),(N+3-I)] | SOL[I-J] ; UNIT 143
SOL[I] ~ - RT/EL[(I-1),1,(N+3-I)] ; UNIT 144
END ; UNIT 145
UNIT 146
SIXTH : FOR Q ~ 2 STEP 1 UNTIL (N+2) DO WRITE(BUFFOUT,CONF,CN) ; UNIT 147
IF S > 30 THEN WRITE(BUFFOUT[PAGE]) ; UNIT 148
WRITE(BUFFOUT[DBL]) ; WRITE(BUFFOUT,CNTF,COUNT) ; UNIT 149
WRITE(BUFFOUT[DBL]) ; UNIT 150
IF INTEG THEN WRITE(BUFFOUT,INTGLINE) ELSE UNIT 151
IF DIFFL THEN WRITE(BUFFOUT,DIFFLINE) ELSE UNIT 152
WRITE(BUFFOUT,HEADLINE) ; WRITE(BUFFOUT[DBL]) ; UNIT 153
UNIT 154
SEVENTH: SQUSUM ~ 0.0 ; UNIT 155
UNIT 156
FOR Q ~ 1 STEP 1 UNTIL S DO UNIT 157
BEGIN UNIT 158
CALC ~ FIRST ~ SECND ~ 0.0 ; UNIT 159
FOR I ~ 1 STEP 1 UNTIL (N+1) DO UNIT 160
CALC ~ CALC + (X[Q] * (I - 1)) | SOL[I+1] ; UNIT 161
DIFF ~ Y[Q] - CALC ; DIFF2 ~ DIFF|DIFF ; UNIT 162
UNIT 163
IF INTEG THEN UNIT 164
FOR I ~ 1 STEP 1 UNTIL (N+1) DO UNIT 165
BEGIN UNIT 166
FIRST ~ FIRST + (SOL[I+1]/I) | (X[Q] * I) ; UNIT 167
SECND ~ SECND + (SOL[I+1]/(I | (I + 1))) | (X[Q] * (I+1)) UNIT 168
END ELSE UNIT 169
UNIT 170
IF DIFFL THEN UNIT 171
BEGIN UNIT 172
FOR I ~ 2 STEP 1 UNTIL (N+1) DO UNIT 173
FIRST ~ FIRST + (SOL[I+1]) | (I - 1) | (X[Q] * (I - 2)) ;UNIT 174
FOR I ~ 3 STEP 1 UNTIL (N+1) DO UNIT 175
SECND ~ SECND + (SOL[I+1]) | (I - 1) | ( I - 2) | UNIT 176
(X[Q] * (I - 3)) ; UNIT 177
FACT1 ~ FACT2 ~ 0.0 ; UNIT 179
END ELSE UNIT 178
UNIT 180
FIRST ~ FIRST | FACT1 ; SECND ~ SECND | FACT2 ; UNIT 181
WRITE(BUFFOUT,LISTF,LISTING) ; UNIT 182
PREV[Q] ~ OMEGA[Q] ; OMEGA[Q] ~ EXP(- DIFF2) ; UNIT 183
SQUSUM ~ DIFF2|PREV[Q]|PREV[Q] + SQUSUM ; UNIT 184
END ; UNIT 185
WRITE(BUFFOUT[DBL]) ; WRITE(BUFFOUT[DBL]) ; UNIT 186
UNIT 187
EIGHTH : WRITE(BUFFOUT,SUMF,VARIANCE) ; WRITE(BUFFOUT[PAGE]) ; UNIT 188
IF SELFC AND COUNT < CT THEN UNIT 189
BEGIN UNIT 190
FOR Q ~ 1 STEP 1 UNTIL S DO UNIT 191
IF ABS(OMEGA[Q] - PREV[Q]) > THOLD THEN GO TO SUMS UNIT 192
END ; UNIT 193
COUNT ~ 0 ; UNIT 194
IF NOT STEPN THEN GO TO FINISH ; UNIT 195
UNIT 196
NINTH: END ; UNIT 197
UNIT 198
IF FOLLW THEN UNIT 199
BEGIN UNIT 200
WRITE(BUFFOUT[PAGE]) ; GO TO ONSET ; UNIT 201
END ; UNIT 202
UNIT 203
FINISH : END. UNIT 204