require "matrix" local int = require "int" local function pascal_upper_triangular(n) local m = {} for i = 1, n do m[i] = {} for j = 1, n do m[i][j] = (j >= i) ? int.binomial(j - 1, i - 1) : 0 end end return matrix.from(m) end local function pascal_symmetric(n) local m = {} for i = 1, n do m[i] = {} for j = 1, n do m[i][j] = int.binomial(i + j - 2, i - 1) end end return matrix.from(m) end local function pascal_lower_triangular(n) return pascal_symmetric(n):cholesky() end local n = 5 print("Pascal upper-triangular matrix:") print(pascal_upper_triangular(n)) print("\nPascal lower-triangular matrix:") print(pascal_lower_triangular(n):format("%d")) print("\nPascal symmetric matrix:") print(pascal_symmetric(n))