cbe62139d7dec2ae6f6b5ae0fad01408f4c224c8
[scilab.git] / scilab / modules / ast / tests / unit_tests / kron.tst
1 // ============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2012 - DIGITEO - Antoine ELIAS
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 r = 2;
13 R = [1,2;3,4];
14 c = 1 + 2*%i;
15 C = [1+2*%i,2+4*%i;3+6*%i,4+8*%i];
16
17 // double .*. double
18
19 //r .*. r
20 assert_checkequal(r .*. r, 4);
21 //r .*. c
22 assert_checkequal(r .*. c, 2+4*%i);
23 //c .*. r
24 assert_checkequal(c .*. r, 2+4*%i);
25 //c .*. c
26 assert_checkequal(c .*. c, -3+4*%i);
27
28
29 // double .*. DOUBLE
30
31 //r .*. R
32 assert_checkequal(r .*. R, [2,4;6,8]);
33 //r .*. C
34 assert_checkequal(r .*. C, [2+4*%i,4+8*%i;6+12*%i,8+16*%i]);
35 //c .*. R
36 assert_checkequal(c .*. R, [1+2*%i,2+4*%i;3+6*%i,4+8*%i]);
37 //c .*. C
38 assert_checkequal(c .*. C, [-3+4*%i,-6+8*%i;-9+12*%i,-12+16*%i]);
39
40
41 // DOUBLE .*. double
42
43 //R .*. r
44 assert_checkequal(R .*.r, [2,4;6,8]);
45 //R .*. c
46 assert_checkequal(R .*.c, [1+2*%i,2+4*%i;3+6*%i,4+8*%i]);
47 //C .*. r
48 assert_checkequal(C .*.r, [2+4*%i,4+8*%i;6+12*%i,8+16*%i]);
49 //C .*. c
50 assert_checkequal(C .*.c, [-3+4*%i,-6+8*%i;-9+12*%i,-12+16*%i]);
51
52
53 // DOUBLE .*. DOUBLE
54
55 //R .*. R
56 assert_checkequal(R .*. R, [1,2,2,4;3,4,6,8;3,6,4,8;9,12,12,16]);
57 //R .*. C
58 assert_checkequal(R .*. C, [1+2*%i,2+4*%i,2+4*%i,4+8*%i;3+6*%i,4+8*%i,6+12*%i,8+16*%i;3+6*%i,6+12*%i,4+8*%i,8+16*%i;9+18*%i,12+24*%i,12+24*%i,16+32*%i]);
59 //C .*. R
60 assert_checkequal(C .*. R, [1+2*%i,2+4*%i,2+4*%i,4+8*%i;3+6*%i,4+8*%i,6+12*%i,8+16*%i;3+6*%i,6+12*%i,4+8*%i,8+16*%i;9+18*%i,12+24*%i,12+24*%i,16+32*%i]);
61 //C .*. C
62 assert_checkequal(C .*. C, [-3+4*%i,-6+8*%i,-6+8*%i,-12+16*%i;-9+12*%i,-12+16*%i,-18+24*%i,-24+32*%i;-9+12*%i,-18+24*%i,-12+16*%i,-24+32*%i;-27+36*%i,-36+48*%i,-36+48*%i,-48+64*%i]);
63
64
65 // With hypermatrices
66 // ------------------
67 r = [1 2 3];
68 c = [1 2 3]';
69 m = [1 2 ; 3 4];
70 h = cat(3,[1 2],[3 4]);
71 assert_checkequal(r.*.ones(1,2,2), cat(3,[1 1 2 2 3 3],[1 1 2 2 3 3]));
72 assert_checkequal(c.*.ones(1,2,2), cat(3,[1 1;2 2;3 3],[1 1;2 2;3 3]));
73 assert_checkequal(m.*.ones(1,2,2), cat(3,[1 1 2 2;3 3 4 4],[1 1 2 2;3 3 4 4]));
74 assert_checkequal(h.*.ones(1,2,2), cat(3,[1 1 2 2],[1 1 2 2],[3 3 4 4],[3 3 4 4]));
75
76 assert_checkequal(ones(1,2,2).*.r, cat(3,[1 2 3 1 2 3],[1 2 3 1 2 3]));
77 assert_checkequal(ones(1,2,2).*.c, cat(3,[1 1;2 2;3 3],[1 1;2 2;3 3]));
78 assert_checkequal(ones(1,2,2).*.m, cat(3,[1 2 1 2;3 4 3 4],[1 2 1 2;3 4 3 4]));
79 assert_checkequal(ones(1,2,2).*.h, cat(3,[1 2 1 2],[3 4 3 4],[1 2 1 2],[3 4 3 4]));
80
81 assert_checkequal(size(rand(2,3,4,5).*.rand(3,1,1,1,1,7)), [6 3 4 5 1 7]);