mirror of
https://github.com/retro-software/B5500-software.git
synced 2026-03-05 02:15:05 +00:00
1. Commit library tape images, directories, and extracted text files. 2. Commit additional utilities under Unisys-Emode-Tools.
129 lines
10 KiB
Plaintext
129 lines
10 KiB
Plaintext
PROCEDURE PHIPART (V, DATA, ALEPH, BETA, COEFF, P, S, PHI, SUM) ; SFSB0001
|
|
SFSB0002
|
|
COMMENT PROCEDURE PHIPART FOR CALCULATING THE VALUE OF THE SFSB0003
|
|
DEPENDENT VARIABLE AND ITS PARTIAL DERIVATIVES FROM SFSB0004
|
|
A SURFACE FIT IN ORTHOGONAL POLYNOMIALS SFSB0005
|
|
BY EDWIN B. SEIDMAN SFSB0006
|
|
(PROFESSIONAL SERVICES GROUP, BURROUGHS CORPORATION) SFSB0007
|
|
CARD SEQUENCE STARTS WITH SFSB0001 SFSB0008
|
|
FIRST RELEASE DATE : 7-15-64 SFSB0009
|
|
SFSB0010
|
|
INPUT PARAMETERS : SFSB0011
|
|
V - NUMBER OF INDEPENDENT VARIABLES SFSB0012
|
|
DATA - ORDERED SET OF VALUES OF THE INDEPENDENT SFSB0013
|
|
VARIABLES, REAL ARRAY SFSB0014
|
|
ALEPH - ALPHA COEFFICIENTS FROM SURFACE FIT, REAL SFSB0015
|
|
ARRAY SFSB0016
|
|
BETA - BETA COEFFICIENTS FROM SURFACE FIT, REAL SFSB0017
|
|
ARRAY SFSB0018
|
|
P - NUMBER OF ORTHOGONAL POLYNOMIALS IN EACH SFSB0019
|
|
INDEPENDENT VARIABLE, INTEGER ARRAY SFSB0020
|
|
S - CALLS FOR PARTIAL DERIVATIVES, BOOLEAN ARRAY SFSB0021
|
|
SFSB0022
|
|
OUTPUT PARAMETERS : SFSB0023
|
|
PHI - VALUE OF DEPENDENT VARIABLE, REAL SFSB0024
|
|
SUM - ORDERED SET OF PARTIAL DERIVATIVES ; SFSB0025
|
|
SFSB0026
|
|
VALUE V ; SFSB0027
|
|
INTEGER V ; SFSB0028
|
|
INTEGER ARRAY P[0] ; SFSB0029
|
|
BOOLEAN ARRAY S[0] ; SFSB0030
|
|
REAL ARRAY DATA[0], ALEPH[0,0], BETA[0,0], COEFF[0], SUM[0] ; SFSB0031
|
|
REAL PHI ; SFSB0032
|
|
SFSB0033
|
|
BEGIN SFSB0034
|
|
DEFINE TADD = TI1S1 #, ADD = TI1S2 #, DEGREE = TI1S3 #, SFSB0035
|
|
POLY = TR1S1 #, TT = TR1S2 # ; SFSB0036
|
|
INTEGER KV, M, T, I, D, PV ; SFSB0037
|
|
BOOLEAN B ; SFSB0038
|
|
REAL DATUM ; SFSB0039
|
|
LABEL POLYCOMPUTE, PARTCOMPUTE, D2, BACK, HERE, FINI, DEPENDENT;SFSB0040
|
|
SFSB0041
|
|
TADD[1] ~ ADD[1] ~ T ~ 1 ; SFSB0042
|
|
SFSB0043
|
|
FOR M ~ 1 STEP 1 UNTIL V DO SFSB0044
|
|
BEGIN SFSB0045
|
|
DATUM ~ DATA[M] ; SUM[M] ~ 0 ; SFSB0046
|
|
SFSB0047
|
|
COMMENT EVALUATE THE POLYNOMIALS ; SFSB0048
|
|
SFSB0049
|
|
POLYCOMPUTE : SFSB0050
|
|
BEGIN SFSB0051
|
|
POLY[T] ~ 1.0 ; SFSB0052
|
|
POLY[T+1] ~ DATUM + ALEPH[M,1] ; T ~ T + 2 ; SFSB0053
|
|
SFSB0054
|
|
FOR I ~ 2 STEP 1 UNTIL P[M] DO SFSB0055
|
|
BEGIN SFSB0056
|
|
POLY[T] ~ (ALEPH[M,I] + DATUM) | POLY[T-1] + SFSB0057
|
|
BETA[M,I] | POLY[T-2] ; SFSB0058
|
|
T ~ T + 1 SFSB0059
|
|
END SFSB0060
|
|
END POLYCOMPUTE ; SFSB0061
|
|
TADD[M+1] ~ ADD[M+1] ~ T SFSB0062
|
|
END ; SFSB0063
|
|
B ~ FALSE ; SFSB0064
|
|
SFSB0065
|
|
COMMENT COMPUTE THE DEPENDENT VARIABLE OR THE PARTIAL ; SFSB0066
|
|
SFSB0067
|
|
DEPENDENT : SFSB0068
|
|
BEGIN SFSB0069
|
|
D ~ 1 ; SFSB0070
|
|
SFSB0071
|
|
FOR M ~ 1 STEP 1 UNTIL V DO SFSB0072
|
|
BEGIN SFSB0073
|
|
DEGREE[M] ~ TADD[M] ; TT[M] ~ 0 SFSB0074
|
|
END ; SFSB0075
|
|
PV ~ TADD[V] + P[V] ; SFSB0076
|
|
SFSB0077
|
|
BACK : FOR I ~ TADD[V] STEP 1 UNTIL PV DO SFSB0078
|
|
BEGIN SFSB0079
|
|
TT[V] ~ COEFF[D] | POLY[I] + TT[V] ; SFSB0080
|
|
D ~ D + 1 SFSB0081
|
|
END ; SFSB0082
|
|
IF V = 1 THEN GO TO FINI ; SFSB0083
|
|
M ~ V - 1 ; SFSB0084
|
|
SFSB0085
|
|
HERE : TT[M] ~ POLY[DEGREE[M]] | TT[M+1] + TT[M] ; SFSB0086
|
|
TT[M+1] ~ 0 ; SFSB0087
|
|
DEGREE[M] ~ DEGREE[M] + 1 ; SFSB0088
|
|
IF DEGREE[M] { TADD[M] + P[M] THEN GO TO BACK ; SFSB0089
|
|
IF M = 1 THEN GO TO FINI ; SFSB0090
|
|
DEGREE[M] ~ TADD[M] ; M ~ M - 1 ; SFSB0091
|
|
GO TO HERE ; SFSB0092
|
|
SFSB0093
|
|
FINI : IF B THEN SFSB0094
|
|
BEGIN SFSB0095
|
|
SUM[KV] ~ TT[1] ; GO TO D2 SFSB0096
|
|
END ; SFSB0097
|
|
PHI ~ TT[1] SFSB0098
|
|
END DEPENDENT ; SFSB0099
|
|
SFSB0100
|
|
FOR KV ~ 1 STEP 1 UNTIL V DO SFSB0101
|
|
BEGIN SFSB0102
|
|
M ~ KV ; SFSB0103
|
|
IF S[M] THEN SFSB0104
|
|
BEGIN SFSB0105
|
|
DATUM ~ DATA[M] ; SFSB0106
|
|
SFSB0107
|
|
COMMENT EVALUATE THE PARTIAL POLYNOMIALS ; SFSB0108
|
|
SFSB0109
|
|
PARTCOMPUTE : SFSB0110
|
|
BEGIN SFSB0111
|
|
POLY[T] ~ 0 ; POLY[T+1] ~ 1.0 ; SFSB0112
|
|
T ~ T + 2 ; SFSB0113
|
|
SFSB0114
|
|
FOR I ~ 2 STEP 1 UNTIL P[M] DO SFSB0115
|
|
BEGIN SFSB0116
|
|
POLY[T] ~ (ALEPH[M,I] + DATUM) | POLY[T-1] + SFSB0117
|
|
POLY[ADD[M]+I-1] + BETA[M,I] | POLY[T-2] ; SFSB0118
|
|
T ~ T + 1 SFSB0119
|
|
END SFSB0120
|
|
END PARTCOMPUTE ; SFSB0121
|
|
T ~ TADD[M] ~ ADD[V+1] ; B ~ TRUE ; SFSB0122
|
|
GO TO DEPENDENT ; SFSB0123
|
|
SFSB0124
|
|
D2 : TADD[KV] ~ ADD[KV] SFSB0125
|
|
END SFSB0126
|
|
END SFSB0127
|
|
END PHIPART ; SFSB0128
|