1
0
mirror of https://github.com/pkimpel/retro-220.git synced 2026-03-02 09:46:59 +00:00
Files
Paul Kimpel 2d06034237 Commit latest BALGOL compiler debugging and examples.
1. Supply runnable examples for all five sample programs in the BALGOL
reference manual.
2. Regenerate the Generator and Compiler listings and tape images.
3. Fix assembler bugs with "S" format code on input.
4. Fix BAC-Assembler bug generating a machine-language deck for the
LABEL intrinsic.
5. Note that some of these changes require retro-220 version 0.08 in
order to work properly.
2018-07-08 18:48:05 -07:00

142 lines
2.2 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
0200 BAC-220 STANDARD VERSION 2/1/62
0200 COMMENT THIRD EXAMPLE PROGRAM FROM BALGOL MANUAL, MARCH 1963.
0200
0200 THE SHORT PROGRAM WHICH FOLLOWS IS FOR A REDUCTION OF A SQUARE MATRIX
0200 TO TRIDIAGONAL FORM, USING THE METHOD OF HOUSEHOLDER$
0200
0200 COMMENT HOUSEHOLDER REDUCTION TO TRIDIAGONAL FORM$
0200 INTEGER I, J, K, L, R, N$
0200 ARRAY A(50,50), X(50), P(50)$
0200 INPUT
0205 ELEMENT (I, J, Q)$
0213 OUTPUT
0215 AOUT (A(R,R)),
0226 BOUT (-0.5/S)$
0235 FORMAT
0235 AF (B10, X10.5, W),
0235 BF (B40, X10.5, W)$
0235
0244 N = 5$
0246 IN..
0246 READ ($$ ELEMENT)$
0250 IF I NEQ 0$
0250 BEGIN
0252 A(I,J) = Q$
0260 GO TO IN
0261 END$
0261
0261 FOR R = (1,1,N-1)$
0275 BEGIN
0280 WRITE ($$ AOUT, AF)$
0284 L = R+1$
0287 S = 0$
0288 FOR J = (L,1,N)$
0299 S = S + A(R,J)*2$
0299
0311 S = SIGN(A(R,L))/2SQRT(S)$
0332 WRITE ($$ BOUT, BF)$
0340 X(L) = SQRT(0.5 + A(R,L).S)$
0353 S = S/X(L)$
0358 FOR J = (R+2,1,N)$
0370 X(J) = S.A(R,J)$
0382 FOR J = (R,1,N)$
0393 BEGIN
0393 S = 0$
0395 FOR K = (L,1,N)$
0406 S = S + A(MIN(J,K), MAX(J,K)).X(K)$
0426 P(J) = S
0429 END$
0429
0430 S = 0$
0431 FOR J = (L,1,N)$
0442 S = S + X(J).P(J)$
0449 FOR J = (L,1,N)$
0460 P(J) = P(J) - S.X(J)$
0467 FOR J = (L,1,N)$
0478 FOR K = (J,1,N)$
0490 A(J,K) = A(J,K) - 2(X(J).P(K) + X(K).P(J))
0510 END$
0510
0520 WRITE ($$ AOUT, AF)$
0528 STOP$
0529 GO TO IN$
0530 FINISH$
COMPILED PROGRAM ENDS AT 0531
PROGRAM VARIABLES BEGIN AT 1888
4.00000
-3.16227
3.29999
-1.30766
-.42280
-1.88627
.53947
1.81620
1.58333