[randlib] fix tests
[scilab.git] / scilab / modules / randlib / tests / nonreg_tests / bug_6690.dia.ref
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2013 - Scilab Enterprises - Paul Bignier
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7 //
8 // <-- CLI SHELL MODE -->
9 //
10 // Set the seed to always get the same random numbers
11 grand("setsd", 0);
12 //
13 // 1. Permute some column vectors, and check that the output is basically correct.
14 //
15 // With Complexes.
16 //
17 X = (2:10)';
18 P = grand(5,"prm",X*%i);
19 assert_checkequal ( isreal(P) , %f );
20 assert_checkequal ( typeof(P) , "constant" );
21 assert_checkequal ( size(P) , [9 5] );
22 assert_checkequal ( gsort(P,"r","i") , X*%i*ones(1,5) );
23 //
24 // With Integers.
25 //
26 P = grand(5,"prm",int8(X));
27 assert_checkequal ( typeof(P) , "int8" );
28 assert_checkequal ( size(P) , [9 5] );
29 assert_checkequal ( gsort(P,"r","i") , int8(X)*ones(1,5) );
30 //
31 P = grand(5,"prm",int16(X));
32 assert_checkequal ( typeof(P) , "int16" );
33 assert_checkequal ( size(P) , [9 5] );
34 assert_checkequal ( gsort(P,"r","i") , int16(X)*ones(1,5) );
35 //
36 P = grand(5,"prm",int32(X));
37 assert_checkequal ( typeof(P) , "int32" );
38 assert_checkequal ( size(P) , [9 5] );
39 assert_checkequal ( gsort(P,"r","i") , int32(X)*ones(1,5) );
40 //
41 // With Strings.
42 //
43 X = string(X);
44 P = grand(1,"prm",X);
45 assert_checkequal ( typeof(P) , "string" );
46 assert_checkequal ( size(P) , size(X) );
47 assert_checkequal ( P , ["3" "9" "5" "7" "10" "6" "8" "2" "4"]');
48 //
49 // With Booleans.
50 //
51 X = [%f %t %t %t %t %f]';
52 P = grand(1,"prm",X);
53 assert_checkequal ( typeof(P) , "boolean" );
54 assert_checkequal ( size(P) , size(X) );
55 assert_checkequal ( P , [%t %f %t %t %f %t]' );
56 //
57 // With Polynomials.
58 //
59 s = poly(0,"s");
60 X = [0 s 1+s 1+s^2 s^4]';
61 P = grand(1,"prm",X);
62 assert_checkequal ( typeof(P) , "polynomial" );
63 assert_checkequal ( size(P) , size(X) );
64 assert_checkequal ( P , [1+s^2 1+s s s^4 0]' );
65 //
66 // With Sparses.
67 //
68 X = sparse([1 2 3 0 0 0 0 5 6])';
69 P = grand(1,"prm",X);
70 assert_checkequal ( typeof(P) , "sparse" );
71 assert_checkequal ( size(P) , size(X) );
72 assert_checkequal ( P , sparse([0 0 0 3 5 6 2 1 0])' );
73 //
74 // 2. With row vectors / matrices.
75 //
76 X = 2:10;
77 P = grand(1,"prm",X);
78 assert_checkequal ( size(P) , size(X) );
79 assert_checkequal ( gsort(P,"g","i") , X );
80 X(2, :) = 12:20;
81 P = grand(2,"prm",X*%i);
82 refP = [
83 13  9   20  3   10  2   4  5  15
84 19  14  6   18  12  16  7  8  17 ];
85 refP(:, :, 2) = [
86 14  7  8  9   13  10  15  19  4
87 12  5  2  17  6   16  18  3   20 ];
88 assert_checkequal ( size(P) , [size(X) 2] );
89 assert_checkequal ( P, refP*%i );
90 //
91 // With Integers.
92 //
93 X_int = int32(X);
94 P = grand(2,"prm",X_int);
95 refP = int32([
96 5  17  20  7   15  10  2   13  4
97 3  16  8   12  19  9   18  14  6 ]);
98 refP(:, :, 2) = int32([
99 16  13  6  2  20  19  18  14  7
100 9   12  3  8  15  17  10  4   5 ]);
101 assert_checkequal ( size(P) , [size(X_int) 2] );
102 assert_checkequal ( P, refP );
103 //
104 // With Strings.
105 //
106 X_str = string(X);
107 P = grand(2,"prm",X_str);
108 refP = string([
109 19  7   14  10  18  17  5  3  4
110 9   15  2   20  13  12  6  8  16 ]);
111 refP(:, :, 2) = string([
112 13  20  9   6  8   14  3  4   16
113 15  5   19  2  18  12  7  10  17 ]);
114 assert_checkequal ( size(P) , [size(X_str) 2] );
115 assert_checkequal ( P, refP );
116 //
117 // With Hypermatrices.
118 //
119 X(:, :, 2) = X+20;
120 P = grand(2,"prm",X);
121 assert_checkequal ( size(P) , [size(X) 2] );
122 assert_checkequal ( members(P, 2:40), ones(P) );
123 //
124 // Of Complexes.
125 //
126 P = grand(2,"prm",X*%i);
127 assert_checkequal ( size(P) , [size(X) 2] );
128 assert_checkequal ( members(P, (2:40)*%i), ones(P) );
129 //
130 // Of Integers.
131 //
132 P = grand(2,"prm",int16(X));
133 assert_checkequal ( size(P) , [size(X) 2] );
134 assert_checkequal ( members(P, int16(2:40)), ones(P) );
135 //
136 // Of Strings.
137 //
138 Xs = string(X);
139 Ps = grand(2,"prm",Xs);
140 assert_checkequal ( size(Ps) , [size(Xs) 2] );
141 assert_checkequal ( members(Ps, string(2:40)), ones(Ps) );
142 //
143 // Of Booleans.
144 //
145 rand("seed", 0);
146 Xb = floor(10*rand(2, 9, 2));
147 Xb = Xb<5;
148 Pb = grand(2,"prm",Xb);
149 refPb = gsort(Pb+0,"g","i");
150 assert_checkequal ( size(Pb) , [size(Xb) 2] );
151 assert_checkequal ( refPb(1:36), zeros(36, 1) );
152 assert_checkequal ( refPb(37:72), ones(36, 1) );
153 //
154 // Of Ploynomials.
155 //
156 Xp = matrix(X(:)+s, 2, 9, 2);
157 Pp = grand(2,"prm",Xp);
158 refPp = matrix(Pp(:)-s, 2, 9, 2, 2);
159 refPp = gsort(coeff(refPp(:)),"g","i");
160 assert_checkequal ( size(Pp) , [size(Xp) 2] );
161 assert_checkequal ( members(2:40, refPp), 2*([ones(1,9) 0 ones(1,9) 0 ones(1,9) 0 ones(1,9)]) );
162 //
163 // Sparse hypermatrices do not exist yet.
164 //
165 //
166 // Bug #6689
167 //
168 X = [%i 1-%i 2+3*%i].';
169 P = grand(4, "prm", X);
170 refP = [
171 2+3*%i  %i      2+3*%i  1-%i
172 %i      2+3*%i  %i      %i
173 1-%i    1-%i    1-%i    2+3*%i ];
174 assert_checkequal ( typeof(P) , "constant" );
175 assert_checkequal ( size(P) , [3 4] );
176 assert_checkequal ( P , refP );
177 refMsg = msprintf(_("%s: Wrong type for input argument: Matrix (full or sparse) or Hypermatrix of Reals, Complexes, Integers, Booleans, Strings or Polynomials expected.\n"), "grand");
178 assert_checkerror("grand(2, ""prm"", list())", refMsg);