b5afacd0069f5783e7bb7888e367430f5fea5898
[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 rand("seed", 0);
12 grand("setsd", 0);
13 //
14 // 1. Permute some column vectors, and check that the output is basically correct.
15 //
16 // With Complexes.
17 //
18 X = (2:10)';
19 P = grand(5,"prm",X*%i);
20 assert_checkequal ( isreal(P) , %f );
21 assert_checkequal ( typeof(P) , "constant" );
22 assert_checkequal ( size(P) , [9 5] );
23 assert_checkequal ( gsort(P,"r","i") , X*%i*ones(1,5) );
24 //
25 // With Integers.
26 //
27 P = grand(5,"prm",int8(X));
28 assert_checkequal ( typeof(P) , "int8" );
29 assert_checkequal ( size(P) , [9 5] );
30 assert_checkequal ( gsort(P,"r","i") , int8(X)*ones(1,5) );
31 //
32 P = grand(5,"prm",int16(X));
33 assert_checkequal ( typeof(P) , "int16" );
34 assert_checkequal ( size(P) , [9 5] );
35 assert_checkequal ( gsort(P,"r","i") , int16(X)*ones(1,5) );
36 //
37 P = grand(5,"prm",int32(X));
38 assert_checkequal ( typeof(P) , "int32" );
39 assert_checkequal ( size(P) , [9 5] );
40 assert_checkequal ( gsort(P,"r","i") , int32(X)*ones(1,5) );
41 //
42 // With Strings.
43 //
44 X = string(X);
45 P = grand(1,"prm",X);
46 assert_checkequal ( typeof(P) , "string" );
47 assert_checkequal ( size(P) , size(X) );
48 assert_checkequal ( P , ["3" "9" "5" "7" "10" "6" "8" "2" "4"]');
49 //
50 // With Booleans.
51 //
52 X = [%f %t %t %t %t %f]';
53 P = grand(1,"prm",X);
54 assert_checkequal ( typeof(P) , "boolean" );
55 assert_checkequal ( size(P) , size(X) );
56 assert_checkequal ( P , [%t %f %t %t %f %t]' );
57 //
58 // With Polynomials.
59 //
60 s = poly(0,"s");
61 X = [0 s 1+s 1+s^2 s^4]';
62 P = grand(1,"prm",X);
63 assert_checkequal ( typeof(P) , "polynomial" );
64 assert_checkequal ( size(P) , size(X) );
65 assert_checkequal ( P , [1+s^2 1+s s s^4 0]' );
66 //
67 // With Sparses.
68 //
69 X = sparse([1 2 3 0 0 0 0 5 6])';
70 P = grand(1,"prm",X);
71 assert_checkequal ( typeof(P) , "sparse" );
72 assert_checkequal ( size(P) , size(X) );
73 assert_checkequal ( P , sparse([0 0 0 3 5 6 2 1 0])' );
74 //
75 // 2. With row vectors / matrices.
76 //
77 X = 2:10;
78 P = grand(1,"prm",X);
79 assert_checkequal ( size(P) , size(X) );
80 assert_checkequal ( gsort(P,"g","i") , X );
81 X(2, :) = 12:20;
82 P = grand(2,"prm",X*%i);
83 refP = [
84 13  9   20  3   10  2   4  5  15
85 19  14  6   18  12  16  7  8  17 ];
86 refP(:, :, 2) = [
87 14  7  8  9   13  10  15  19  4
88 12  5  2  17  6   16  18  3   20 ];
89 assert_checkequal ( size(P) , [size(X) 2] );
90 assert_checkequal ( P, refP*%i );
91 //
92 // With Integers.
93 //
94 X_int = int32(X);
95 P = grand(2,"prm",X_int);
96 refP = int32([
97 5  17  20  7   15  10  2   13  4
98 3  16  8   12  19  9   18  14  6 ]);
99 refP(:, :, 2) = int32([
100 16  13  6  2  20  19  18  14  7
101 9   12  3  8  15  17  10  4   5 ]);
102 assert_checkequal ( size(P) , [size(X_int) 2] );
103 assert_checkequal ( P, refP );
104 //
105 // With Strings.
106 //
107 X_str = string(X);
108 P = grand(2,"prm",X_str);
109 refP = string([
110 19  7   14  10  18  17  5  3  4
111 9   15  2   20  13  12  6  8  16 ]);
112 refP(:, :, 2) = string([
113 13  20  9   6  8   14  3  4   16
114 15  5   19  2  18  12  7  10  17 ]);
115 assert_checkequal ( size(P) , [size(X_str) 2] );
116 assert_checkequal ( P, refP );
117 //
118 // With Hypermatrices.
119 //
120 X(:, :, 2) = X+20;
121 P = grand(2,"prm",X);
122 assert_checkequal ( size(P) , [size(X) 2] );
123 assert_checkequal ( members(P, 2:40), ones(P) );
124 //
125 // Of Complexes.
126 //
127 P = grand(2,"prm",X*%i);
128 assert_checkequal ( size(P) , [size(X) 2] );
129 assert_checkequal ( members(P, (2:40)*%i), ones(P) );
130 //
131 // Of Integers.
132 //
133 P = grand(2,"prm",int16(X));
134 assert_checkequal ( size(P) , [size(X) 2] );
135 assert_checkequal ( members(P, int16(2:40)), ones(P) );
136 //
137 // Of Strings.
138 //
139 Xs = string(X);
140 Ps = grand(2,"prm",Xs);
141 assert_checkequal ( size(Ps) , [size(Xs) 2] );
142 assert_checkequal ( members(Ps, string(2:40)), ones(Ps) );
143 //
144 // Of Booleans.
145 //
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);