mirror of
https://github.com/retro-software/B5500-software.git
synced 2026-03-02 17:44:40 +00:00
1. Commit library tape images, directories, and extracted text files. 2. Commit additional utilities under Unisys-Emode-Tools.
207 lines
16 KiB
Plaintext
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
|