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).