(Arne Babenhauserheide)
2015-08-04: nicer code (less lines, clearer structure, stick to 72 characters nicer code (less lines, clearer structure, stick to 72 characters per line)
diff --git a/examples/cholesky.w b/examples/cholesky.w --- a/examples/cholesky.w +++ b/examples/cholesky.w @@ -18,32 +18,26 @@ define : matrrix-set! X u v val define : cholesky! a - . "Modifies the square matirx a to contain the its cholesky decomposition. + . "Modifies the square matirx a to contain its cholesky decomposition. a is represented as list of lists." - let : : n : length a - loop - : for i : up-from 1 : to n - loop - : for j : up-from 1 : to i - let - : sum : matrix-ref a i j - when (>= j 1) - loop - : for k : up-from 1 : to (- j 1) - set! sum - - sum - * (matrix-ref a i k) (matrix-ref a j k) - cond - : > i j ; lower triangle - matrix-set! a i j - / sum : matrix-ref a j j - . a - : > sum 0 ; diagonal element - matrix-set! a i i : sqrt sum - . a - else - throw 'matrix-numerically-not-symmetric-positive-definite + let : : n : length a + loop : : for i : up-from 1 : to n + loop : : for j : up-from 1 : to i + let : : sum : matrix-ref a i j + when (>= j 1) + loop : : for k : up-from 1 : to {j - 1} + set! sum : - sum : * (matrix-ref a i k) (matrix-ref a j k) + cond + : > i j ; lower triangle + matrix-set! a i j + / sum : matrix-ref a j j + . a + : > sum 0 ; diagonal element + matrix-set! a i i : sqrt sum + . a + else + throw 'matrix-numerically-not-symmetric-positive-definite define : main args