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.
82 lines
5.9 KiB
Plaintext
82 lines
5.9 KiB
Plaintext
COMMENT THIS PROCEDURE WILL FIND THE INVERSE OF A MATRIX GIVEN ITIV0010
|
|
THE ORIGINAL MATRIX AND AN APPROXIMATION TO THE DESIRED ITIV0020
|
|
INVERSE. IF THE APPROXIMATION IS NOT NEAR ENOUGH, AN ITIV0030
|
|
EXIT IS MADE TO THE NON-LOCAL LABEL E1. THE FINAL ITIV0040
|
|
INVERSE REPLACES THE APPROXIMATION IN MEMORY. ITIV0050
|
|
|
|
R.D. RODMAN, ITIV0060
|
|
(PROFESSIONAL SERVICES DIVISIONAL GROUP), ITIV0070
|
|
|
|
CARD SEQUENCE BEGINS WITH ITIV0010, ITIV0080
|
|
FIRST RELEASE 12/01/62. ; ITIV0090
|
|
|
|
PROCEDURE ITINV(N, A, B, E, K1, E1, E2) ; ITIV0100
|
|
VALUE N, E, K1 ; ITIV0110
|
|
INTEGER N, K1 ; ITIV0120
|
|
REAL E ; ITIV0130
|
|
REAL ARRAY A, B[0,0] ; ITIV0140
|
|
LABEL E1, E2 ; ITIV0150
|
|
BEGIN ITIV0160
|
|
INTEGER I, J, K, J1, L ; ITIV0170
|
|
REAL NORM, TEST, Q ; ITIV0180
|
|
REAL ARRAY C[0:N], B1[0:N, 0:N] ; ITIV0190
|
|
LABEL S3, EXIT ; ITIV0200
|
|
|
|
COMMENT "A" CONTAINS THE ORIGINAL MATRIX AND "B" AN APPROXIMATION ITIV0210
|
|
TO "A INVERSE". "NORM" IS COMPUTED IN ORDER TO DETERMINE ITIV0220
|
|
IF CONVERGENCE WILL OCCUR. ; ITIV0230
|
|
|
|
FOR I ~ 1 STEP 1 UNTIL N DO ITIV0240
|
|
FOR J ~ 1 STEP 1 UNTIL N DO ITIV0250
|
|
BEGIN ITIV0260
|
|
Q~0 ; ITIV0270
|
|
FOR K ~ 1 STEP 1 UNTIL N DO Q ~ A[I,K] | B[K,J] + Q ; ITIV0280
|
|
B1[I,J] ~ IF I=J THEN 1-Q ELSE -Q ITIV0290
|
|
END ; ITIV0300
|
|
FOR I ~ 1 STEP 1 UNTIL N DO ITIV0310
|
|
BEGIN ITIV0320
|
|
C[I] ~ 0 ; ITIV0330
|
|
FOR J ~ 1 STEP 1 UNTIL N DO ITIV0340
|
|
C[I] ~ ABS(B1[I,J]) + C[I] ITIV0350
|
|
END ; ITIV0360
|
|
NORM ~ C[1] ; ITIV0370
|
|
FOR I ~ 2 STEP 1 UNTIL N DO ITIV0380
|
|
IF NORM < C[I] THEN NORM ~ C[I] ; ITIV0390
|
|
IF NORM } 1.0 THEN GO TO E1 ; ITIV0400
|
|
J1 ~ 1 ; ITIV0410
|
|
|
|
COMMENT AN ITERATION IS PERFORMED. THE ACCURACY OF THE INVERSE ITIV0420
|
|
AND THE NUMBER OF ITERATIONS ARE TESTED AGAINST RELEVANT ITIV0430
|
|
INPUT PARAMETERS. ; ITIV0440
|
|
|
|
S3: TEST ~ 0 ; ITIV0450
|
|
FOR I ~ 1 STEP 1 UNTIL N DO ITIV0460
|
|
FOR J ~ 1 STEP 1 UNTIL N DO ITIV0470
|
|
BEGIN ITIV0480
|
|
Q~0 ; ITIV0490
|
|
FOR K ~ 1 STEP 1 UNTIL N DO Q ~ A[I,K] | B[K,J] + Q ; ITIV0500
|
|
IF I=J THEN ITIV0510
|
|
BEGIN ITIV0520
|
|
B1[I,J] ~ 2-Q ; TEST ~ ABS(1-Q) + TEST ITIV0530
|
|
END ITIV0540
|
|
ELSE ITIV0550
|
|
BEGIN ITIV0560
|
|
B1[I,J] ~-Q ; TEST ~ ABS(Q) + TEST ITIV0570
|
|
END ITIV0580
|
|
END ; ITIV0590
|
|
IF TEST < E THEN GO TO EXIT ; ITIV0600
|
|
FOR I ~ 1 STEP 1 UNTIL N DO ITIV0610
|
|
BEGIN ITIV0620
|
|
FOR J ~ 1 STEP 1 UNTIL N DO ITIV0630
|
|
BEGIN ITIV0640
|
|
Q~0 ; ITIV0650
|
|
FOR K ~ 1 STEP 1 UNTIL N DO Q ~ B[I,K] | B1[K,J] + Q ; ITIV0660
|
|
C[J] ~ Q ITIV0670
|
|
END ; ITIV0680
|
|
FOR J ~ 1 STEP 1 UNTIL N DO ITIV0690
|
|
B[I,J] ~ C[J] ITIV0700
|
|
END ; ITIV0710
|
|
IF J1 } K1 THEN GO TO E2 ; ITIV0720
|
|
J1 ~ J1 + 1 ; GO TO S3 ; ITIV0730
|
|
EXIT: END ; ITIV0740
|