1b4582a7fdd552f50cdc5df7ee813e1d239d919a
[scilab.git] / scilab / modules / ast / tests / unit_tests / krondivide.tst
1 // ============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 //
4 // Copyright (C) 2019 - Samuel GOUGEON
5 //
6 //  This file is distributed under the same license as the Scilab package.
7 // ============================================================================
8
9 // <-- CLI SHELL MODE -->
10 // <-- NO CHECK REF -->
11 //
12 // ---------------------------------------------
13 // <--  Unit test for ./. and .\. operators  -->
14 // ---------------------------------------------
15
16 rtol = 10*%eps;
17 objects = list(rand(1,1), rand(1,3), rand(4,1), rand(1,1,5), rand(2,3), rand(3,4,2));
18 n = length(objects);
19
20 // With arrays without zeros
21 // =========================
22 for i = 1:n
23     o = objects(i);
24     for j = 1:n
25         o2 = objects(j);
26         b = o .*. o2;
27         assert_checkalmostequal(b ./. o2, o, rtol)
28         assert_checkalmostequal(o .\. b, o2, rtol)
29     end
30 end
31
32 // With a null array
33 // =================
34 z = list(zeros(1,1), zeros(1,3), zeros(4,1), zeros(1,1,5), zeros(2,3), zeros(3,4,2));
35 for i = 1:n
36     o = objects(i);
37     for j = 1:n
38         o2 = z(j);
39         b = o .*. o2;
40         //assert_checkalmostequal(b ./. o2, o, rtol)  // => Nan | not managed
41         assert_checkalmostequal(o .\. b, o2, rtol)
42
43         b = o2 .*. o;
44         assert_checkalmostequal(b ./. o, o2, rtol)
45         //assert_checkalmostequal(o2 .\. b, o, rtol)  // => Nan | not managed
46     end
47 end
48
49 // With arrays with zeros
50 // ======================
51 withZeros = list(1, 0:3, [2 0 1]', cat(3,3,0,2,0), [2 3 0 ; 1 0 2], ..
52             matrix([0,3,1,2,0,2,3,0,3,3,3,2,3,1,0,0,3,3,1,0,3,3,0,0], [3,4,2]));
53 for i = 1:n
54     o = objects(i);
55     for j = 1:n
56         // Without zeros .*. with zeros
57         // ............................
58         o2 = withZeros(j);
59         b = o .*. o2;
60         assert_checkalmostequal(b ./. o2, o, rtol)
61         assert_checkalmostequal(o .\. b, o2, rtol)
62
63         b = o2 .*. o;
64         assert_checkalmostequal(b ./. o, o2, rtol)
65         assert_checkalmostequal(o2 .\. b, o, rtol)
66
67         // With zeros .*. with zeros
68         // .........................
69         o = withZeros(i);
70         b = o .*. o2;
71         assert_checkalmostequal(b ./. o2, o, rtol)
72         assert_checkalmostequal(o .\. b, o2, rtol)
73
74         b = o2 .*. o;
75         assert_checkalmostequal(b ./. o, o2, rtol)
76         assert_checkalmostequal(o2 .\. b, o, rtol)
77     end
78 end