UNPKG

795 Btext/coffeescriptView Raw
1### adj =====================================================================
2
3Tags
4----
5scripting, JS, internal, treenode, general concept
6
7Parameters
8----------
9m
10
11General description
12-------------------
13Returns the adjunct of matrix m. The inverse of m is equal to adj(m) divided by det(m).
14
15###
16
17
18Eval_adj = ->
19 push(cadr(p1))
20 Eval()
21 adj()
22
23adj = ->
24 i = 0
25 j = 0
26 n = 0
27
28 save()
29
30 p1 = pop()
31
32 if (istensor(p1) && p1.tensor.ndim == 2 && p1.tensor.dim[0] == p1.tensor.dim[1])
33 doNothing = 1
34 else
35 stop("adj: square matrix expected")
36
37 n = p1.tensor.dim[0]
38
39 p2 = alloc_tensor(n * n)
40
41 p2.tensor.ndim = 2
42 p2.tensor.dim[0] = n
43 p2.tensor.dim[1] = n
44
45 for i in [0...n]
46 for j in [0...n]
47 cofactor(p1, n, i, j)
48 p2.tensor.elem[n * j + i] = pop(); # transpose
49
50 push(p2)
51
52 restore()
53
54