* Bug 15347 fixed: toeplitz failed with rationals
[scilab.git] / scilab / modules / elementary_functions / tests / unit_tests / toeplitz.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2012 - Scilab Enterprises
4 // Copyright (C) 2017 - 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 // With []
13 assert_checkequal(toeplitz([]), []);
14 assert_checkequal(toeplitz([],[]), []);
15
16 // With booleans
17 expected = [1  0  0  0  1  1
18             0  1  0  0  0  1
19             1  0  1  0  0  0
20            ]==1;
21 assert_checkequal(toeplitz([%t %f %t], [%t %f %f %f %t %t]), expected);
22
23 // With encoded integers
24 expected = int8([-1  0  1  2 ; 0 -1  0  1 ; 1  0 -1  0 ; 2  1  0 -1]);
25 assert_checkequal(toeplitz(int8(-1:2)), expected);
26
27 // With decimal numbers (dense)
28 expected = [-1  0  1  2 ; 0 -1  0  1 ; 1  0 -1  0 ; 2  1  0 -1];
29 assert_checkequal(toeplitz(-1:2), expected);
30
31 r = 1:5;
32 c = [1 6:9];
33 toe = [1 6 7 8 9;
34 2 1 6 7 8;
35 3 2 1 6 7;
36 4 3 2 1 6;
37 5 4 3 2 1];
38 assert_checkequal(toeplitz(r, c), toe);
39
40 // With sparse
41 expected = [
42   0 -1 -2  0  0  0
43   1  0 -1 -2  0  0
44   0  1  0 -1 -2  0
45   0  0  1  0 -1 -2
46    ];
47 T = toeplitz([0 1 0 0 ], sparse([0 -1 -2 0 0 0]));
48 assert_checktrue(type(T)==5);
49 assert_checkequal(full(T), expected);
50
51 T = toeplitz(sparse([0 1 0 0 ]), [0 -1 -2 0 0 0]);
52 assert_checktrue(type(T)==5);
53 assert_checkequal(full(T), expected);
54
55 T = toeplitz(sparse([0 1 0 0 ]), sparse([0 -1 -2 0 0 0]));
56 assert_checktrue(type(T)==5);
57 assert_checkequal(full(T), expected);
58
59 // With polynomials
60 expected = [1     2    3   4   5
61            %s     1    2   3   4
62            %s^2  %s    1   2   3
63            %s^3 %s^2  %s   1   2
64            ];
65 assert_checkequal(toeplitz([1 %s %s^2 %s^3], [1:5]), expected);
66
67 // With rationals
68 expected = 1 ./ %s.^toeplitz([0 1],0:3);
69 assert_checkequal(toeplitz([1 1/%s], [1 1/%s 1/%s^2 1/%s^3]), expected);
70
71 // With texts
72 expected = [
73     "-" "a" "b" "c" "d" "e"
74     "A" "-" "a" "b" "c" "d"
75     "B" "A" "-" "a" "b" "c"
76     "C" "B" "A" "-" "a" "b"
77     ];
78 T = toeplitz(["-" "A" "B" "C"], ["-" "a" "b" "c" "d" "e"]);
79 assert_checkequal(T, expected);