@@ -17,32 +17,35 @@ local function run(message, f)
1717 print ((' %02d. %68s: %s' ):format (total , dec (message ,68 ), status ))
1818end
1919
20+ -- Fuzzy equality test
2021local function fuzzy_eq (a , b , eps )
2122 eps = eps or 1e-6
2223 return math.abs (a - b ) < eps
2324end
2425
2526run (' Testing SOR' , function ()
2627 local m = {
27- {- 4 ,1 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , - 11 },
28- {1 ,- 4 ,1 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , - 03 },
29- {0 ,1 ,- 4 ,1 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , - 03 },
30- {0 ,0 ,1 ,- 4 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , - 11 },
31- {1 ,0 ,0 ,0 ,- 4 ,1 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , - 08 },
32- {0 ,1 ,0 ,0 ,1 ,- 4 ,1 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,0 , 00 },
33- {0 ,0 ,1 ,0 ,0 ,1 ,- 4 ,1 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 , 00 },
34- {0 ,0 ,0 ,1 ,0 ,0 ,1 ,- 4 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0 , - 08 },
35- {0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,- 4 ,1 ,0 ,0 ,1 ,0 ,0 ,0 , - 08 },
36- {0 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,1 ,- 4 ,1 ,0 ,0 ,1 ,0 ,0 , 00 },
37- {0 ,0 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,1 ,- 4 ,1 ,0 ,0 ,1 ,0 , 00 },
38- {0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,1 ,- 4 ,0 ,0 ,0 ,1 , - 08 },
39- {0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,- 4 ,1 ,0 ,0 , - 10 },
40- {0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,1 ,- 4 ,1 ,0 , - 02 },
41- {0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,1 ,- 4 ,1 , - 02 },
42- {0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,1 ,- 4 , - 10 },
28+ {- 4 ,1 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 },
29+ {1 ,- 4 ,1 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 },
30+ {0 ,1 ,- 4 ,1 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 },
31+ {0 ,0 ,1 ,- 4 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 },
32+ {1 ,0 ,0 ,0 ,- 4 ,1 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 },
33+ {0 ,1 ,0 ,0 ,1 ,- 4 ,1 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,0 },
34+ {0 ,0 ,1 ,0 ,0 ,1 ,- 4 ,1 ,0 ,0 ,1 ,0 ,0 ,0 ,0 ,0 },
35+ {0 ,0 ,0 ,1 ,0 ,0 ,1 ,- 4 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,0 },
36+ {0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,- 4 ,1 ,0 ,0 ,1 ,0 ,0 ,0 },
37+ {0 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,1 ,- 4 ,1 ,0 ,0 ,1 ,0 ,0 },
38+ {0 ,0 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,1 ,- 4 ,1 ,0 ,0 ,1 ,0 },
39+ {0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,1 ,- 4 ,0 ,0 ,0 ,1 },
40+ {0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,- 4 ,1 ,0 ,0 },
41+ {0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,1 ,- 4 ,1 ,0 },
42+ {0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,1 ,- 4 ,1 },
43+ {0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,1 ,- 4 },
4344 }
4445
45- local x = sor (m )
46+ local b = {- 11 , - 3 , - 3 , - 11 , - 8 , 0 , 0 , - 8 , - 8 , 0 , 0 , - 8 , - 10 ,- 2 , - 2 , - 10 }
47+
48+ local x = sor (m , b )
4649 assert (fuzzy_eq (x [1 ], 5.454459 ))
4750 assert (fuzzy_eq (x [2 ], 4.594688 ))
4851 assert (fuzzy_eq (x [3 ], 4.594679 ))
0 commit comments