63 lines
1.6 KiB
Plaintext
63 lines
1.6 KiB
Plaintext
PASCAL_MATRIX: PROCEDURE OPTIONS (MAIN); /* derived from Fortran version 18 Decenber 2021 */
|
|
|
|
pascal_lower: procedure(a);
|
|
declare a(*,*) fixed binary;
|
|
declare (n, i, j) fixed binary;
|
|
n = hbound(a,1);
|
|
a = 0;
|
|
a(*, 1) = 1;
|
|
do i = 2 to n;
|
|
do j = 2 to i;
|
|
a(i, j) = a(i - 1, j) + a(i - 1, j - 1);
|
|
end;
|
|
end;
|
|
end pascal_lower;
|
|
|
|
pascal_upper: procedure(a);
|
|
declare a(*,*) fixed binary;
|
|
declare (n, i, j) fixed binary;
|
|
n = hbound(a,1);
|
|
a = 0;
|
|
a(1, *) = 1;
|
|
do i = 2 to n;
|
|
do j = 2 to i;
|
|
a(j, i) = a(j, i - 1) + a(j - 1, i - 1);
|
|
end;
|
|
end;
|
|
end pascal_upper;
|
|
|
|
pascal_symmetric: procedure(a);
|
|
declare a(*,*) fixed binary;
|
|
declare (n, i, j) fixed binary;
|
|
n = hbound(a,1);
|
|
a = 0;
|
|
a(*, 1) = 1;
|
|
a(1, *) = 1;
|
|
do i = 2 to n;
|
|
do j = 2 to n;
|
|
a(i, j) = a(i - 1, j) + a(i, j - 1);
|
|
end;
|
|
end;
|
|
end pascal_symmetric;
|
|
|
|
declare n fixed binary;
|
|
put ('Size of matrix?');
|
|
get (n);
|
|
begin;
|
|
declare a(n, n) fixed binary;
|
|
|
|
put skip list ('Lower Pascal Matrix');
|
|
call pascal_lower(a);
|
|
put edit (a) (skip, (n) f(3) );
|
|
|
|
put skip list ('Upper Pascal Matrix');
|
|
call pascal_upper(a);
|
|
put edit (a) (skip, (n) f(3) );
|
|
|
|
put skip list ('Symmetric Pascal Matrix');
|
|
call pascal_symmetric(a);
|
|
put edit (a) (skip, (n) f(3) );
|
|
end;
|
|
|
|
end PASCAL_MATRIX;
|