UNPKG

algebrite

Version:

Computer Algebra System in Coffeescript

46 lines (40 loc) 771 B
#----------------------------------------------------------------------------- # # Create a Hilbert matrix # # Input: Dimension on stack # # Output: Hilbert matrix on stack # # Example: # # > hilbert(5) # ((1,1/2,1/3,1/4),(1/2,1/3,1/4,1/5),(1/3,1/4,1/5,1/6),(1/4,1/5,1/6,1/7)) # #----------------------------------------------------------------------------- #define A p1 #define N p2 #define AELEM(i, j) A->u.tensor->elem[i * n + j] hilbert = -> i = 0 j = 0 n = 0 save() p2 = pop() push(p2) n = pop_integer() if (n < 2) push_symbol(HILBERT) push(p2) list(2) restore() return push_zero_matrix(n, n) p1 = pop() for i in [0...n] for j in [0...n] push_integer(i + j + 1) inverse() p1.tensor.elem[i * n + j] = pop() push(p1) restore()