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.
210 lines
16 KiB
Plaintext
210 lines
16 KiB
Plaintext
LABEL 0000000000XXXXXX0010000001
|
|
$ CARD LIST
|
|
BEGIN CMNT0000
|
|
CMNT0001
|
|
COMMENT THIS PROCEDURE EVALUATES THE ELLIPTIC INTEGRALS CMNT0002
|
|
OF THE FIRST AND SECOND KIND. CMNT0003
|
|
CMNT0004
|
|
STEPHEN MATZNER CMNT0005
|
|
(PROFESSIONAL SERVICES, BURROUGHS CORPORATION). CMNT0006
|
|
CMNT0007
|
|
CARD SEQUENCE BEGINS WITH ELLI0001, CMNT0008
|
|
FIRST RELEASE 01-02-1964 ; CMNT0009
|
|
CMNT0010
|
|
ELLI0001
|
|
REAL PROCEDURE INCOMPLETEF(A,P) ; ELLI0002
|
|
VALUE A, P ; ELLI0003
|
|
REAL A, P ; ELLI0004
|
|
ELLI0005
|
|
BEGIN ELLI0006
|
|
REAL K, A1, B, B1, SI ; ELLI0007
|
|
ELLI0008
|
|
INTEGER N, M ; ELLI0009
|
|
ELLI0010
|
|
B ~ ABS(COS(A)) ; B1 ~ ABS(SIN(A)) ; ELLI0011
|
|
IF B1 < 0.9539 THEN ELLI0012
|
|
BEGIN ELLI0013
|
|
K ~ 1 ; SI ~ COS(P)/SIN(P) ; N ~ 0 ; A ~ B ; ELLI0014
|
|
ELLI0015
|
|
FOR M ~ 1, 2, 3 DO ELLI0016
|
|
BEGIN ELLI0017
|
|
SI ~ (SI - A/SI)/2 ; ELLI0018
|
|
N ~ 2 | N + (1 - SIGN(SI))/2 ; ELLI0019
|
|
K ~ (K +B)/2 ; B ~ SQRT(A) ; A ~ K | B ; ELLI0020
|
|
END ; ELLI0021
|
|
SI ~ (SI - A/SI)/2 ; N ~ 2 | N + 1 - SIGN(SI) ; ELLI0022
|
|
K ~ (K + B)/2 ; ELLI0023
|
|
INCOMPLETEF ~ ((2 | ARCTAN(K/SI) + N | ELLI0024
|
|
3.14159265359)/K)/32 ; ELLI0025
|
|
END ELLI0026
|
|
ELSE ELLI0027
|
|
BEGIN ELLI0028
|
|
K ~ 1 ; B ~ B1 ; A1 ~ B | B ; ELLI0029
|
|
SI ~ COS(P)/SIN(P) ; ELLI0030
|
|
ELLI0031
|
|
FOR M ~ 1, 2 DO ELLI0032
|
|
BEGIN ELLI0033
|
|
A ~ K | B ; ELLI0034
|
|
SI ~ K | SI + SQRT(K | K |(SI | SI + 1) - A1) ; ELLI0035
|
|
K ~ (K + B)/2 ; SI ~ SI/(K | 2) ; ELLI0036
|
|
B ~ SQRT(A) ; A1 ~ A ; ELLI0037
|
|
END ; ELLI0038
|
|
SI ~ K | SI + SQRT(K | K | (SI | SI + 1) - A) ; ELLI0039
|
|
K ~ (K + B)/2 ; SI ~ SI/(K | 2) ; ELLI0040
|
|
INCOMPLETEF ~ LN((1 + SQRT(1 + SI | SI))/SI)/K ; ELLI0041
|
|
END ; ELLI0042
|
|
END INCOMPLETEF ; ELLI0043
|
|
ELLI0044
|
|
REAL PROCEDURE INCOMPLETEE(A,P) ; ELLI0045
|
|
VALUE A, P ; ELLI0046
|
|
REAL A, P ; ELLI0047
|
|
BEGIN ELLI0048
|
|
REAL U, V ; ELLI0049
|
|
ELLI0050
|
|
LABEL L1, L2 ; ELLI0051
|
|
ELLI0052
|
|
U ~ ABS(COS(A)) ; V ~ ABS(SIN(A)) ; ELLI0053
|
|
IF V } 0.9539 THEN GO TO L1 ; ELLI0054
|
|
BEGIN ELLI0055
|
|
REAL K, A1, B, S1, S2, SI, CO ; ELLI0056
|
|
ELLI0057
|
|
INTEGER N, M ; ELLI0058
|
|
ELLI0059
|
|
B ~ U ; K ~ 1 ; CO ~ COS(P)/SIN(P) ; ELLI0060
|
|
S1 ~ S2 ~ N ~ 0 ; A1 ~ B | B ; ELLI0061
|
|
ELLI0062
|
|
FOR M ~ 1, 2, 3, 4 DO ELLI0063
|
|
BEGIN ELLI0064
|
|
A ~ K | B ; CO ~ (CO - A/CO)/2 ; ELLI0065
|
|
N ~ 2 | N + (1 - SIGN(CO))/2 ; ELLI0066
|
|
P ~ K | K ; K ~ (K + B)/2 ; P ~ P - A1 ; ELLI0067
|
|
S2 ~ S2 + P | SIGN(1.5 - N + (N DIV 4) | 4)/ ELLI0068
|
|
SQRT(K | K + CO | CO) ; ELLI0069
|
|
S1 ~ S1/2 + P ; A1 ~ A ; B ~ SQRT(A) ; ELLI0070
|
|
END ; ELLI0071
|
|
INCOMPLETEE ~ (((2 | ARCTAN(K/CO) + (N + (1 - ELLI0072
|
|
SIGN(CO))/2) | 3.14159265359) | (0.25 - S1)/K)/2 + S2)/4 ;ELLI0073
|
|
GO TO L2 ; ELLI0074
|
|
END ; ELLI0075
|
|
ELLI0076
|
|
L1: BEGIN ELLI0077
|
|
ELLI0078
|
|
REAL K, S1, CO, SI ; ELLI0079
|
|
ELLI0080
|
|
REAL ARRAY B[0:3], SINE[0:3] ; ELLI0081
|
|
ELLI0082
|
|
INTEGER M ; ELLI0083
|
|
ELLI0084
|
|
K ~ 1 ; S1 ~ U | U ; B[0] ~ V ; B[3] ~ 1 + V ; ELLI0085
|
|
SI ~ SIN(P) ; CO ~ COS(P)/SI ; SINE[0] ~ SI ; ELLI0086
|
|
CO ~ (CO + SQRT(CO | CO + 1 - V | V))/B[3] ; ELLI0087
|
|
SI ~ CO | CO ; ELLI0088
|
|
ELLI0089
|
|
FOR M ~ 0, 1, 2 DO ELLI0090
|
|
BEGIN ELLI0091
|
|
SINE[M + 1] ~ 1/SQRT(1 + SI) ; A ~ K | B[M] ; ELLI0092
|
|
K ~ B[3]/2 ; B[M + 1] ~ SQRT(A) ; P ~ K | K ; ELLI0093
|
|
S1 ~ S1/2 + P - A ; B[3] ~ K + B[M + 1] ; ELLI0094
|
|
CO ~ (K | CO + SQRT(P | (SI + 1) - A))/B[3] ; ELLI0095
|
|
SI ~ CO | CO ; ELLI0096
|
|
END ; ELLI0097
|
|
SI ~ SQRT(1 + SI) ; P ~ 1/SI ; U ~ 0 ; B[3] ~ K ; ELLI0098
|
|
ELLI0099
|
|
FOR M ~ 3, 2, 1, 0 DO ELLI0100
|
|
U ~ 2 | U + B[M] | (P - SINE[M]) ; ELLI0101
|
|
INCOMPLETEE~ 4 | S1 | LN((1 + SI)/CO)/K + P + U ; ELLI0102
|
|
END ; ELLI0103
|
|
ELLI0104
|
|
L2: END INCOMPLETEE ; ELLI0105
|
|
ELLI0106
|
|
REAL PROCEDURE COMPLETEF(A) ; ELLI0107
|
|
VALUE A ; ELLI0108
|
|
REAL A ; ELLI0109
|
|
BEGIN ELLI0110
|
|
REAL A1, A2, B, K1 ; ELLI0111
|
|
ELLI0112
|
|
INTEGER N ; ELLI0113
|
|
ELLI0114
|
|
B ~ ABS(SIN(A)) ; ELLI0115
|
|
IF B } 0.9539 THEN ELLI0116
|
|
BEGIN ELLI0117
|
|
A1 ~ (1 + B)/2 ; B ~ SQRT(B) ; A2 ~ (A1 + B)/2 ; ELLI0118
|
|
K1 ~ COS(A) ; B ~ SQRT(A1 | B) ; ELLI0119
|
|
COMPLETEF ~ LN(128 | (A2 + B) | A2 | ELLI0120
|
|
A1*2/K1*4)/(A2 + B)/2 ; ELLI0121
|
|
END ELLI0122
|
|
ELSE ELLI0123
|
|
BEGIN ELLI0124
|
|
B ~ ABS(COS(A)) ; A1 ~ 1 ; ELLI0125
|
|
ELLI0126
|
|
ELLI0127
|
|
FOR N ~ 1, 2, 3 DO ELLI0128
|
|
BEGIN ELLI0129
|
|
A2 ~ (A1 + B)/2 ; B ~ SQRT(A1 | B) ; A1 ~ A2 ; ELLI0130
|
|
END ; ELLI0131
|
|
COMPLETEF ~ 3.14159265359/(A1 + B) ; ELLI0132
|
|
END ELLI0133
|
|
END COMPLETEF ; ELLI0134
|
|
ELLI0135
|
|
REAL PROCEDURE COMPLETEE(A) ; ELLI0136
|
|
VALUE A ; ELLI0137
|
|
REAL A ; ELLI0138
|
|
BEGIN ELLI0139
|
|
REAL A1, A2, B, S, K1 ; ELLI0140
|
|
ELLI0141
|
|
INTEGER N ; ELLI0142
|
|
ELLI0143
|
|
B ~ ABS(SIN(A)) ; K1 ~ ABS(COS(A)) ; ELLI0144
|
|
IF B } 0.9539 THEN ELLI0145
|
|
BEGIN ELLI0146
|
|
A1 ~ (1 + B)/2 ;S ~ K1 | K1/2 + A1 | A1 - B ; ELLI0147
|
|
B ~ SQRT(B) ; A2 ~ (A1 + B)/2 ; A ~ A1 | B ; ELLI0148
|
|
S ~ S/2 + A2 | A2 - A ; B ~ SQRT(A) ; ELLI0149
|
|
COMPLETEE ~ (A2 + B)/2 + (S/(A2 + B)) | ELLI0150
|
|
LN(128 | (A2 + B) | A2 | A1 | A1/(K1*4)) ; ELLI0151
|
|
END ELLI0152
|
|
ELSE ELLI0153
|
|
BEGIN ELLI0154
|
|
B ~ K1 ; A1 ~ 1 ; S ~ 1 + B | B ; ELLI0155
|
|
ELLI0156
|
|
FOR N ~ 1, 2, 3 DO ELLI0157
|
|
BEGIN ELLI0158
|
|
A2 ~ (A1 + B)/2 ; A ~ A1 | B ; A1 ~ A2 ; ELLI0159
|
|
S ~ S/2 - A1 | A1 + A ; B ~ SQRT(A) ; ELLI0160
|
|
END ; ELLI0161
|
|
COMPLETEE ~ 12.5663706144 | S/(A1 + B) ; ELLI0162
|
|
END COMPLETEF ; ELLI0163
|
|
END ; ELLI0164
|
|
ELLI0165
|
|
REAL PROCEDURE ELLI(A,P,INT) ; ELLI0166
|
|
VALUE A, P, INT ; ELLI0167
|
|
REAL A, P ; ELLI0168
|
|
INTEGER INT ; ELLI0169
|
|
BEGIN ELLI0170
|
|
ELLI ~ IF P ! 333 AND INT = 1 THEN INCOMPLETEE(A,P) ELLI0171
|
|
ELSE IF P ! 333 THEN INCOMPLETEF(A,P) ELSE ELLI0172
|
|
IF INT = 1 THEN COMPLETEE(A) ELSE COMPLETEF(A) ; ELLI0173
|
|
END ; ELLI0174
|
|
FILE OUT FOU 1 (1,15) ; CMNT0011
|
|
FORMAT FMOU1("E[ ] =", E20.10), CMNT0012
|
|
FMOU2("F[ ] =", E20.10) ; CMNT0013
|
|
WRITE(FOU,FMOU1,ELLI(0.01745329252,0.01745329252,1)) ; CMNT0014
|
|
WRITE(FOU,FMOU2,ELLI(0.01745329252,0.01745329252,2)) ; CMNT0015
|
|
WRITE(FOU,FMOU1,ELLI(0.69813170080,0.69813170080,1)) ; CMNT0016
|
|
WRITE(FOU,FMOU2,ELLI(0.69813170080,0.69813170080,2)) ; CMNT0017
|
|
WRITE(FOU,FMOU1,ELLI(1.55334303428,1.55334303428,1)) ; CMNT0018
|
|
WRITE(FOU,FMOU2,ELLI(1.55334303428,1.55334303428,2)) ; CMNT0019
|
|
WRITE(FOU,FMOU1,ELLI(0.01745329252,0.69813170080,1)) ; CMNT0020
|
|
WRITE(FOU,FMOU2,ELLI(0.01745329252,0.69813170080,2)) ; CMNT0021
|
|
WRITE(FOU,FMOU1,ELLI(0.69813170080,1.55334303428,1)) ; CMNT0022
|
|
WRITE(FOU,FMOU2,ELLI(0.69813170080,1.55334303428,2)) ; CMNT0023
|
|
WRITE(FOU,FMOU1,ELLI(1.55334303428,0.01745329252,1)) ; CMNT0024
|
|
WRITE(FOU,FMOU2,ELLI(1.55334303428,0.01745329252,2)) ; CMNT0025
|
|
WRITE(FOU,FMOU1,ELLI(0.01745329252,1.55334303428,1)) ; CMNT0026
|
|
WRITE(FOU,FMOU2,ELLI(0.01745329252,1.55334303428,2)) ; CMNT0027
|
|
WRITE(FOU,FMOU1,ELLI(0.69813170080,0.01745329252,1)) ; CMNT0028
|
|
WRITE(FOU,FMOU2,ELLI(0.69813170080,0.01745329252,2)) ; CMNT0029
|
|
WRITE(FOU,FMOU1,ELLI(1.55334303428,0.69813170080,1)) ; CMNT0030
|
|
WRITE(FOU,FMOU2,ELLI(1.55334303428,0.69813170080,2)) ; CMNT0031
|
|
END . CMNT0032
|