1
0
mirror of https://github.com/retro-software/B5500-software.git synced 2026-03-02 17:44:40 +00:00
Files
Paul Kimpel 2c72f7fd1d Commit CUBE Library version 13 of February 1972.
1. Commit library tape images, directories, and extracted text files.
2. Commit additional utilities under Unisys-Emode-Tools.
2018-05-27 11:24:23 -07:00

159 lines
12 KiB
Plaintext

LABEL 0000000000XXXXXX0010000001
$ CARD LIST
COMMENT THE CLIPPINGER DIMSDALE METHOD FOR SOLVING A SYSTEM OF TEST0001
FIRST ORDER DIFFERENTIAL EQUATIONS. TEST0002
TEST0003
ANNE G. MACEK TEST0004
(PROFESSIONAL SERVICES, BURROUGHS CORPORATION) TEST0005
TEST0006
CARD SEQUENCE CODE STARTS WITH CDIM 0001 TEST0007
FIRST ISSUE 01/17/64 ;TEST0008
TEST0009
BEGIN TEST0010
TEST0011
REAL H,X,XMAX,EMAX,EMIN,E ; TEST0012
INTEGER NOEQ,NPRINT,I ; TEST0013
ARRAY Y[0:3] ; TEST0014
TEST0015
LIST IN1(H,X,XMAX,EMAX,EMIN,E,NPRINT), TEST0016
IN2(NOEQ,FOR I ~ 1 STEP 1 UNTIL 3 DO Y[I]) ; TEST0017
TEST0018
TEST0019
FORMAT IN FIN1(3E12.5,3E10.3,I4), TEST0020
FIN2(I3,3E15.8) ; TEST0021
TEST0022
FILE IN READER(1,10) ; TEST0023
FILE OUT PRINTER(1,15) ; TEST0024
TEST0025
PROCEDURE F(X,Y,DY) ; FNCT0001
FNCT0002
VALUE X ; FNCT0003
REAL X ; FNCT0004
ARRAY Y[0],DY[0] ; FNCT0005
FNCT0006
BEGIN FNCT0007
COMMENT FUNCTION ROUTINE ; FNCT0008
FNCT0009
DY[1] ~ Y[2] | 2.0 - Y[3] | 3.0 ; FNCT0010
DY[2] ~ Y[1] - Y[2] - Y[3] ; FNCT0011
DY[3] ~ Y[1] - Y[3] | 2.0 FNCT0012
END ; FNCT0013
FNCT0014
PROCEDURE PRINT(X,H,NOEQ,Y,DY) ; PRNT0001
PRNT0002
VALUE X,H,NOEQ ; PRNT0003
INTEGER X,H,NOEQ ; PRNT0004
ARRAY Y,DY[0] ; PRNT0005
PRNT0006
BEGIN PRNT0007
INTEGER I ; PRNT0008
PRNT0009
LIST XH(X,H), PRNT0010
RESULTS(I,Y[I],DY[I]) ; PRNT0011
PRNT0012
FORMAT OUT FORMXH("X = ",E15.8," H = ",E15.8), PRNT0013
FORMTITLE(X9,"I",X10,"Y",X17,"DY"), PRNT0014
FORMR(I10,2E19.10) ; PRNT0015
PRNT0016
WRITE(PRINTER[DBL],FORMXH,XH) ; PRNT0017
WRITE(PRINTER,FORMTITLE) ; PRNT0018
FOR I ~ 1 STEP 1 UNTIL NOEQ DO PRNT0019
WRITE(PRINTER,FORMR,RESULTS) ; PRNT0020
WRITE(PRINTER[DBL]) PRNT0021
END ; PRNT0022
PRNT0023
PROCEDURE CLIPDIM(H,X,NOEQ,Y,XMAX,EMAX,EMIN,E,NPRINT,F,PRINT) ; CDIM0001
CDIM0002
VALUE NOEQ,XMAX,EMAX,EMIN,E,NPRINT ; CDIM0003
INTEGER NOEQ,NPRINT ; CDIM0004
REAL X,H,XMAX,EMAX,EMIN,E ; CDIM0005
ARRAY Y[0] ; CDIM0006
PROCEDURE F,PRINT ; CDIM0007
CDIM0008
BEGIN CDIM0009
INTEGER I,J,N ; CDIM0010
REAL CO ; CDIM0011
ARRAY DY,Y1,DY1,Y1C,DY1C,HY,DHY,HYC[0:NOEQ] ; CDIM0012
BOOLEAN BOOL,BOOLH ; CDIM0013
LABEL L1,L1A,L2,L3,L4,L5,RET ; CDIM0014
CDIM0015
N ~ 0 ; CDIM0016
F(X,Y,DY) ; CDIM0017
CDIM0018
L1: PRINT(X,H,NOEQ,Y,DY) ; CDIM0019
CDIM0020
L1A: BOOL ~ BOOLH ~ FALSE ; CDIM0021
IF (X+H) > XMAX THEN GO TO RET ; CDIM0022
CDIM0023
L2: FOR I ~ 1 STEP 1 UNTIL NOEQ DO CDIM0024
Y1[I] ~ DY[I] | H + Y[I] ; CDIM0025
F(X+H,Y1,DY1) ; CDIM0026
FOR I ~ 1 STEP 1 UNTIL NOEQ DO CDIM0027
HY[I] ~ (Y[I] + Y1[I]) | (0.5) + (DY[I] - DY1[I]) | H | CDIM0028
(0.125) ; CDIM0029
CDIM0030
L3: F(H|0.5+X,HY,DHY) ; CDIM0031
FOR I ~ 1 STEP 1 UNTIL NOEQ DO CDIM0032
Y1C[I] ~ ((DHY[I] | 4.0 + DY[I] + DY1[I]) | H)/6.0 + Y[I];CDIM0033
F(H+X,Y1C,DY1C) ; CDIM0034
FOR I ~ 1 STEP 1 UNTIL NOEQ DO CDIM0035
HYC[I] ~ (Y[I] + Y1C[I]) | (0.5) + (DY[I] - DY1C[I]) | H CDIM0036
| (0.125) ; CDIM0037
CDIM0038
FOR I ~ 1 STEP 1 UNTIL NOEQ DO CDIM0039
BEGIN CDIM0040
CO ~ ABS((Y1C[I] - Y1[I])/Y1[I]) ; CDIM0041
IF BOOL THEN GO TO L5 ; CDIM0042
IF CO > EMAX THEN CDIM0043
BEGIN CDIM0044
BOOLH ~ TRUE ; CDIM0045
H ~ H | 0.5 ; GO TO L2 CDIM0046
END ; CDIM0047
IF BOOLH THEN GO TO L5 ; CDIM0048
CDIM0049
IF (I = 1) AND (CO < EMIN) AND ((H|2+X) < XMAX) THEN CDIM0050
BEGIN CDIM0051
FOR J ~ 2 STEP 1 UNTIL NOEQ DO CDIM0052
BEGIN CDIM0053
CO ~ ABS((Y1C[J] - Y1[J])/Y1[J]) ; CDIM0054
IF CO } EMIN THEN CDIM0055
BEGIN CDIM0056
I ~ J ; GO TO L4 CDIM0057
END CDIM0058
END ; CDIM0059
H ~ H + H ; GO TO L2 ; CDIM0060
L4: END ; CDIM0061
BOOL ~ TRUE ; CDIM0062
CDIM0063
L5: IF CO > E THEN CDIM0064
BEGIN CDIM0065
FOR J ~ 1 STEP 1 UNTIL NOEQ DO CDIM0066
BEGIN CDIM0067
HY[J] ~ HYC[J] ; Y1[J] ~ Y1C[J] ; DY1[J] ~ DY1C[J] CDIM0068
END ; CDIM0069
GO TO L3 CDIM0070
END CDIM0071
END ; CDIM0072
CDIM0073
X ~ X + H ; CDIM0074
FOR I ~ 1 STEP 1 UNTIL NOEQ DO CDIM0075
BEGIN CDIM0076
Y[I] ~ Y1C[I] ; DY[I] ~ DY1C[I] CDIM0077
END ; CDIM0078
N ~ N + 1 ; CDIM0079
IF N < NPRINT THEN GO TO L1A ; CDIM0080
N ~ 0 ; GO TO L1 ; CDIM0081
CDIM0082
RET: END ; CDIM0083
TEST0026
READ(READER,FIN1,IN1) ; TEST0027
READ(READER,FIN2,IN2) ; TEST0028
CLIPDIM(H,X,NOEQ,Y,XMAX,EMAX,EMIN,E,NPRINT,F,PRINT) ; TEST0029
TEST0030
END. TEST0031
LABEL 000000000READER 0010000001
3+2.00000000@+00+1.00000000@+00+0.00000000@+00
+0.10000@-01+0.00000@+00+1.00000@+01+0.100@-06+0.100@-08+0.100@-07 1600