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.
72 lines
4.8 KiB
Plaintext
72 lines
4.8 KiB
Plaintext
BEGIN CMNT0001
|
|
COMMENT THIS PROCEDURE PERFORMS A TWO DIMENSIONAL INTERPOLATION. CMNT0002
|
|
THE VECTOR "X" OF LENGTH "M",AND THE VECTOR "Y" OF LENGTH CMNT0003
|
|
"N" CONTAIN THE INDEPENDENT VARIABLES. THE M|N ARRAY CMNT0004
|
|
"FXY" CONTAINS THE DEPENDENT VARIABLE. "XBAR" AND "YBAR" CMNT0005
|
|
ARE THE VALUES OVER WHICH THE INTERPOLATION TAKES PLACE. CMNT0006
|
|
"EPS" IS THE SAME AS IN THE UNIVARIATE INTERPOLATION. CMNT0007
|
|
|
|
R.D. RODMAN, CMNT0008
|
|
PROFESSIONAL SERVICES DIVISIONAL GROUP, CMNT0009
|
|
|
|
CARD SEQUENCE BEGINS WITH BVAR0001, CMNT0010
|
|
FIRST RELEASE 8/63 ; CMNT0011
|
|
|
|
REAL PROCEDURE BIVARIATE(M, N, X, Y, FXY, XBAR,YBAR, EPS) ; BVAR0001
|
|
VALUE M, N, XBAR, YBAR, EPS ; BVAR0002
|
|
INTEGER M, N ; BVAR0003
|
|
REAL XBAR, YBAR, EPS ; BVAR0004
|
|
REAL ARRAY X, Y[0], FXY[0,0] ; BVAR0005
|
|
|
|
BEGIN BVAR0006
|
|
|
|
INTEGER I ; BVAR0007
|
|
REAL ARRAY FTEMP[0:M] ; BVAR0008
|
|
REAL PROCEDURE INTERPOLATE(N, X, Y, XBAR, EPS) ; BVAR0009
|
|
VALUE N, XBAR, EPS ; BVAR0010
|
|
INTEGER N ; BVAR0011
|
|
REAL XBAR, EPS ; BVAR0012
|
|
REAL ARRAY X, Y[0] ; BVAR0013
|
|
|
|
BEGIN BVAR0014
|
|
|
|
LABEL EXIT ; BVAR0015
|
|
INTEGER I, J, K, I1 ; BVAR0016
|
|
REAL T1, T2 ; BVAR0017
|
|
REAL ARRAY A[0:N,0:N], B[0:N] ; BVAR0018
|
|
|
|
FOR I ~ 1 STEP 1 UNTIL N DO BVAR0019
|
|
BEGIN BVAR0020
|
|
B[I] ~ X[I] - XBAR ; BVAR0021
|
|
A[I,1] ~ Y[I] BVAR0022
|
|
END ; BVAR0023
|
|
FOR I ~ 1 STEP 1 UNTIL N DO FOR J ~ I+1 STEP 1 UNTIL N DO BVAR0024
|
|
BEGIN BVAR0025
|
|
IF ABS(B[I]) > ABS(B[J]) THEN BVAR0026
|
|
BEGIN BVAR0027
|
|
T1 ~ B[I] ; B[I] ~ B[J] ; B[J] ~ T1 ; BVAR0028
|
|
T1 ~ A[I,1] ; A[I,1] ~ A[J,1] ; A[J,1] ~ T1 BVAR0029
|
|
END BVAR0030
|
|
END ; BVAR0031
|
|
FOR I ~ 2 STEP 1 UNTIL N DO BVAR0032
|
|
BEGIN BVAR0033
|
|
I1 ~ I-1 ; T2 ~ A[I1,I1] ; BVAR0034
|
|
FOR J ~ I STEP 1 UNTIL N DO BVAR0035
|
|
A[I,J] ~ (T2 | B[J] - A[J,I1] | B[I1]) / (B[J] - B[I1]) ; BVAR0036
|
|
T1 ~ A[I,I] ; BVAR0037
|
|
IF ABS((T1 - T2) / T1) { EPS THEN BVAR0038
|
|
BEGIN BVAR0039
|
|
INTERPOLATE ~ T1 ; GO TO EXIT BVAR0040
|
|
END BVAR0041
|
|
END ; BVAR0042
|
|
INTERPOLATE ~ T1 ; BVAR0043
|
|
|
|
EXIT: END ; BVAR0044
|
|
|
|
FOR I ~ 1 STEP 1 UNTIL M DO BVAR0045
|
|
FTEMP[I] ~ INTERPOLATE(N, X, FXY[I,*], XBAR, EPS) ; BVAR0046
|
|
BIVARIATE ~ INTERPOLATE(M, Y, FTEMP, YBAR, EPS) ; BVAR0047
|
|
END ; BVAR0048
|
|
|
|
END. CMNT0012
|