algebrite
Version:
Computer Algebra System in Coffeescript
42 lines (26 loc) • 519 B
text/coffeescript
# Adjunct of a matrix
Eval_adj = ->
push(cadr(p1))
Eval()
adj()
adj = ->
i = 0
j = 0
n = 0
save()
p1 = pop()
if (istensor(p1) && p1.tensor.ndim == 2 && p1.tensor.dim[0] == p1.tensor.dim[1])
doNothing = 1
else
stop("adj: square matrix expected")
n = p1.tensor.dim[0]
p2 = alloc_tensor(n * n)
p2.tensor.ndim = 2
p2.tensor.dim[0] = n
p2.tensor.dim[1] = n
for i in [0...n]
for j in [0...n]
cofactor(p1, n, i, j)
p2.tensor.elem[n * j + i] = pop(); # transpose
push(p2)
restore()