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
5.6 KiB
Plaintext
72 lines
5.6 KiB
Plaintext
COMMENT PROCEDURE - LEAST SQUARE FOURIER, 00000100
|
|
CUBE LIBRARY NUMBER IS E200002. 00000200
|
|
THIS VERSION DATED 2/1/67; 00000300
|
|
PROCEDURE FOURIERS(N,D,DT,Y,X,TEST,A);COMMENT N=NUMBER OF POINTS,D=DEGRE00000400
|
|
E,DT=DELTA,Y=ARRAY OF DATA POINTS,X=ZERO ORDINATE,IF TEST=0 CALCULATES 200000500
|
|
D+1 FOURIER SERIES COEFFICIENTS,SINES AND COSINES PRESENT,IF TEST=1 CALC00000600
|
|
ULATES COEFFICIENTS OF SERIES CONSISTING OF SINE TERMS ONLY,IF TEST=2 CL00000700
|
|
ACULATES COEFFICIENTS OF A SERIES CONSISTING OF COSINE TERMS ONLY A=OUTP00000800
|
|
UT ARRAY;VALUE N,D,DT,X,TEST;INTEGER N,D,TEST;REAL DT,X;REAL ARRAY Y,A[100000900
|
|
,1];BEGIN COMMENT THIS PROCEDURE WILL COMPUTE THE INVERSE OF A SYMMETRIC00001000
|
|
MATRIX.THE PROCEDURE WILL FAIL IF ANY "TRAILING MINOR"IS ZERO.THIS COND00001100
|
|
ITION CANNOT EXITS IF THE MATRIX IS "DEFINITE".UPON ENTERING THE PROCEDU00001200
|
|
RE THE DIAGONAL ELEMENTS OF THE ORIGINAL MATRIX ARE PLACED IN A VECTOR C00001300
|
|
ALLED "DIAGONAL".THE INVERSE MATRIX IS PLACED IN THE UPPER TRIANGULAR HA00001400
|
|
LF,INCLUDING THE MAIN DIAGONAL,OF THE ORIGINAL ARRAY.R.D.RODMAN,(PROFESS00001500
|
|
IONAL SERVICES GROUP),CARD SEQUENCE STARTS WITH "ISYM0010",FIRST RELEASE00001600
|
|
12/01/62.;PROCEDURE INVPDS(N,A,DIAGONAL);VALUE N ;INTEGER N ;REAL ARRAY00001700
|
|
A[1,1],DIAGONAL[1];BEGIN INTEGER I,J,K,I1,L ;REAL DIAG,Q ;REAL ARRAY TE00001800
|
|
MP[0:N];LABEL IN1,IN2,IN3 ;COMMENT THE ORIGINAL MATRIX IS DECOMPOSED INT00001900
|
|
O THE PRODUCT OF A UNIT LOWER TRIANGULAR MATRIX,A DIAGONAL MATRIX,AND A 00002000
|
|
UNIT UPPER TRIANGULAR MATRIX WHICH IS THE TRANSPOSE OF THE UNIT LOWER TR00002100
|
|
IANGULAR MATRIX.;IN1:FOR I ~N STEP -1 UNTIL 1 DO BEGIN DIAGONAL[I]~A[I,I00002200
|
|
];FOR K ~I+1 STEP 1 UNTIL N DO TEMP[K]~A[I,K]|A[K,K];FOR J ~I STEP -1 UN00002300
|
|
TIL 1 DO BEGIN Q~0 ;FOR K ~I+1 STEP 1 UNTIL N DO Q ~A[J,K]|TEMP[K]+Q ;IF00002400
|
|
I=J THEN A[J,I]~DIAG ~A[J,I]-Q ELSE A[J,I]~(A[J,I]-Q)/DIAG END END ;COM00002500
|
|
MENT THESE THREE MATRICES ARE INVERTED.;IN2:FOR I ~N STEP -1 UNTIL 1 DO 00002600
|
|
BEGIN I1 ~I+1 ;A[I,I]~1.0 /A[I,I];FOR J ~N STEP -1 UNTIL I1 DO BEGIN Q~000002700
|
|
;L ~J-1 ;FOR K ~I1 STEP 1 UNTIL L DO Q ~A[I,K]|A[K,J]+Q ;A[I,J]~-A[I,J]00002800
|
|
-Q END END ;COMMENT THE INVERTED MATRICES ARE MULTIPLIED,IN REVERSE ORDE00002900
|
|
R,TO GIVE THE DESIRED INVERSE.;IN3:FOR I ~N STEP -1 UNTIL 1 DO BEGIN I1 00003000
|
|
~I-1 ;DIAG ~A[I,I];FOR K ~1 STEP 1 UNTIL I1 DO TEMP[K]~A[K,K]|A[K,I];FOR00003100
|
|
J ~N STEP -1 UNTIL I DO BEGIN Q~0 ;FOR K ~1 STEP 1 UNTIL I1 DO Q ~A[K,J00003200
|
|
]|TEMP[K]+Q ;A[J,I]~A[I,J]~IF I=J THEN A[I,J]+Q ELSE A[I,J]|DIAG +Q END 00003300
|
|
END END ;PROCEDURE MATATB (A,B,N1,N2,N4,C);VALUE N1,N2,N4;INTEGER N1,N2,00003400
|
|
N4;REAL ARRAY A,B,C[1,1];BEGIN INTEGER I,J,K;REAL ARRAY E[1:N2,1:N1];FOR00003500
|
|
I~1 STEP 1 UNTIL N1 DO FOR J~1 STEP 1 UNTIL N2 DO E[J,I]~A[I,J];FOR K~100003600
|
|
STEP 1 UNTIL N4 DO FOR I~1 STEP 1 UNTIL N2 DO BEGIN C[I,K]~0;FOR J~1 ST00003700
|
|
EP 1 UNTIL N1 DO C[I,K]~E[I,J]|B[J,K]+C[I,K]END;END;PROCEDURE MATMPY (A,00003800
|
|
B,N1,N2,N4,C);VALUE N1,N2,N4;INTEGER N1,N2,N4;REAL ARRAY A,B,C[1,1];BEGI00003900
|
|
N INTEGER I,J,K;FOR K~1 STEP 1 UNTIL N4 DO FOR I~1 STEP 1 UNTIL N1 DO BE00004000
|
|
GIN C[I,K]~0;FOR J~1 STEP 1 UNTIL N2 DO C[I,K]~A[I,J]|B[J,K]+C[I,K]END;E00004100
|
|
ND;PROCEDURE MATTP (A,N1,N2,C);VALUE N1,N2;INTEGER N1,N2;REAL ARRAY A,C[00004200
|
|
1,1];BEGIN INTEGER I,J;FOR I~1 STEP 1 UNTIL N1 DO FOR J~1 STEP 1 UNTIL N00004300
|
|
2 DO C[J,I]~A[I,J];END;LABEL L1,L2,L3;LABEL OFF;REAL SDT,CDT;SWITCH BOB~00004400
|
|
L1,L2,L3;SDT~SIN (DT);CDT ~COS (DT);GO TO BOB[TEST];L1:BEGIN COMMENT THI00004500
|
|
S COMPUTES SINE AND COSINE COEFF;REAL ARRAY S,C[1:N,1:D+1],B[1:N,1:2|D+100004600
|
|
];INTEGER I,J;REAL ARRAY F[1:2|D+1,1:1],R[1:2|D+1,1:2|D+1],DG[1:2|D+1];R00004700
|
|
EAL ARRAY Z[1:N,1:1];FOR I~1 STEP 1 UNTIL N DO BEGIN S[I,1]~0;C[I,1]~1 E00004800
|
|
ND;B[1,D+2]~S[1,2]~SIN (X);B[1,2]~C[1,2]~COS(X);FOR I~1 STEP 1 UNTIL N D00004900
|
|
O B[I,1]~1;FOR I~2 STEP 1 UNTIL N DO BEGIN C[I,2]~B[I,2]~B[I-1,2]|CDT -B00005000
|
|
[I-1,D+2]|SDT;S[I,2]~B[I,D+2]~B[I-1,D+2]|CDT +B[I-1,2]|SDT END;FOR J~1 S00005100
|
|
TEP 1 UNTIL N DO FOR I~2 STEP 1 UNTIL D DO BEGIN B[J,I+1]~C[J,I+1]~2|B[J00005200
|
|
,I]|B[J,2]-C[J,I-1];B[J,I+D+1]~S[J,I+1]~2 |B[J,I+D ]|B[J,2]-S[J,I-1]END;00005300
|
|
MATATB (B,B,N,(2|D)+1,(2|D)+1,R);MATTP (Y,1,N,Z);MATATB (B,Z,N,(2|D)+1,100005400
|
|
,F);INVPDS ((2|D)+1,R,DG);MATMPY (R,F,(2|D)+1,(2|D)+1,1,A)END;GO TO OFF;00005500
|
|
L2:BEGIN COMMENT COMPUTES COEFF WITH ONLY COSINE TERMS PRESENT;REAL ARRA00005600
|
|
Y B[1:N,1:D+1],S[1:N,1:1];INTEGER I,J;REAL ARRAY R[1:D+1,1:D+1],Z[1:N,1:00005700
|
|
1],F[1:D+1,1:1],DG[1:D+1];S[1,1]~SIN (X);B[1,2]~COS (X);FOR I~1 STEP 1 U00005800
|
|
NTIL N DO B[I,1]~1;FOR I~2 STEP 1 UNTIL N DO BEGIN B[I,2]~B[I-1,2]|CDT -00005900
|
|
S[I-1,1]|SDT;S[I,1]~S[I-1,1]|CDT +B[I-1,2]|SDT END;FOR J~1 STEP 1 UNTIL 00006000
|
|
N DO FOR I~2 STEP 1 UNTIL D DO B[J,I+1]~2 |B[J,I]|B[J,2]-B[J,I-1];MATATB00006100
|
|
(B,B,N,D+1,D+1,R);MATTP (Y,1,N,Z);MATATB (B,Z,N,D+1,1,F);INVPDS (D+1,R,00006200
|
|
DG);MATMPY (R,F,D+1,D+1,1,A);GO TO OFF;END;L3:BEGIN COMMENT COMPUTES COE00006300
|
|
FF WITH ONLY SINE TERMS PRESENT;REAL ARRAY B[1:N,1:D],C[1:N,1:D+1];INTEG00006400
|
|
ER I,J;REAL ARRAY R[1:D,1:D],Z[1:N,1:1],F[1:D,1:1],DG[1:D];C[1,2]~COS (X00006500
|
|
);B[1,1]~SIN (X);FOR I~1 STEP 1 UNTIL N DO C[I,1]~0;FOR I~2 STEP 1 UNTIL00006600
|
|
N DO BEGIN B[I,1]~B[I-1,1]|CDT +C[I-1,2]|SDT;C[I,2]~C[I-1,2]|CDT -B[I-100006700
|
|
,1]|SDT END;FOR I~1 STEP 1 UNTIL N DO B[I,2]~2 |B[I,1]|C[I,2];FOR J~1 ST00006800
|
|
EP 1 UNTIL N DO FOR I~3 STEP 1 UNTIL D DO B[J,I]~2|B[J,I-1]|C[J,2]-B[J,I00006900
|
|
-2];MATATB (B,B,N,D,D,R);MATTP (Y,1,N,Z);MATATB (B,Z,N,D,1,F);INVPDS (D,00007000
|
|
R,DG);MATMPY (R,F,D,D,1,A)END;OFF:END; 00007100
|