1:- module(test_matrix,
    2  [test_matrix/0]).    3:-use_module(library(matrix)).    4
    5
    6test_matrix:-
    7  run_tests([id,diag,det,inversion,inv_tiang,mul,sum,cholesky]).
    8
    9:- begin_tests(id, []).   10test(id):-
   11  matrix_identity(4,I),
   12    I=[[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]].
   13:- end_tests(id).   14
   15
   16:- begin_tests(diag, []).   17test(diag):-
   18  matrix_diagonal([1,2,3,4],M),
   19    M = [[1, 0, 0, 0], [0, 2, 0, 0], [0, 0, 3, 0], [0, 0, 0, 4]].
   20
   21:- end_tests(diag).   22
   23
   24:- begin_tests(det, []).   25test(id):-
   26  determinant([[2,-1,0],[-1,2,-1],[0,-1,2]],D),
   27  D =:= 3.999999999999999.
   28
   29:- end_tests(det).   30
   31:- begin_tests(inversion, []).   32
   33test(inversion):-
   34  matrix_inversion([[2,-1,0],[-1,2,-1],[0,-1,2]],L),
   35    L = [[0.7499999999999999, 0.5000000000000001, 0.2500000000000001], [0.5000000000000001, 1.0000000000000004, 0.5000000000000002], [0.2500000000000001, 0.5000000000000002, 0.7500000000000001]].
   36
   37:- end_tests(inversion).   38
   39
   40:- begin_tests(inv_tiang, []).   41
   42test(inv_tiang):-
   43  matrix_inv_triang([[2,0,0],[-1,2,0],[0,-1,2]],L),
   44    L = [[0.5, 0.0, 0.0], [0.25, 0.5, 0.0], [0.125, 0.25, 0.5]].
   45
   46:- end_tests(inv_tiang).   47
   48:- begin_tests(mul, []).   49
   50test(mul):-
   51  matrix_multiply([[1,2],[3,4],[5,6]], [[1,1,1],[1,1,1]],R),
   52    R = [[3, 3, 3], [7, 7, 7], [11, 11, 11]].
   53
   54
   55:- end_tests(mul).   56
   57:- begin_tests(sum, []).   58
   59test(sum):-
   60  matrix_sum([[1,2],[3,4],[5,6]],[[1,2],[3,4],[5,6]],M),
   61    M = [[2, 4], [6, 8], [10, 12]].
   62
   63
   64:- end_tests(sum).   65
   66:- begin_tests(cholesky, []).   67
   68test(cholesky1):-
   69  cholesky_decomposition([[25, 15, -5], [15, 18,  0], [-5,  0, 11]],L),
   70    L = [[5.0, 0, 0], [3.0, 3.0, 0], [-1.0, 1.0, 3.0]].
   71
   72
   73test(cholesky1):-
   74  cholesky_decomposition([[18, 22,  54,  42],[22, 70,  86,  62],[ 54, 86, 174, 134],[ 42, 62, 134, 106]],L),
   75    L = [[4.242640687119285, 0, 0, 0], [5.185449728701349, 6.565905201197403, 0, 0], [12.727922061357857, 3.0460384954008553, 1.6497422479090704, 0], [9.899494936611667, 1.624553864213788, 1.8497110052313648, 1.3926212476456026]].
   76
   77:- end_tests(cholesky).