1%
2% Write matrix autotest data
3%
4
5clear all;
6close all;
7
8% global options
9dirname = 'data/';  % output directory name
10randn('seed',0.0);  % set random seed for normal distribution
11rand('seed',0.0);   % set random seed for uniform distribution
12
13%
14% real floating-point data
15%
16
17%
18% matrix_add
19%
20x = randn(5,4);
21y = randn(5,4);
22z = x + y;
23basename = 'matrixf_data_add';
24filename = [dirname basename '.c'];
25fid = fopen(filename,'w');
26gendata_write_header(fid,'data for testing matrix addition');
27gendata_write_matrix(fid,x,[basename '_x']);
28gendata_write_matrix(fid,y,[basename '_y']);
29gendata_write_matrix(fid,z,[basename '_z']);
30fclose(fid);
31
32%
33% matrix_aug
34%
35x = randn(5,4);
36y = randn(5,3);
37z = [x y];
38basename = 'matrixf_data_aug';
39filename = [dirname basename '.c'];
40fid = fopen(filename,'w');
41gendata_write_header(fid,'data for testing matrix augmentation');
42gendata_write_matrix(fid,x,[basename '_x']);
43gendata_write_matrix(fid,y,[basename '_y']);
44gendata_write_matrix(fid,z,[basename '_z']);
45fclose(fid);
46
47%
48% matrix_cgsolve
49%
50A = [
51  12.7229204   0.0000000  -7.9529123   0.0000000   4.1114998   0.0000000   0.0000000   0.0000000
52   0.0000000   0.0651512   0.0000000  -0.2182598   0.0000000   0.0000000   0.0000000   0.0000000
53  -7.9529123   0.0000000   5.0315852   0.0000000  -2.5700388  -0.1105457   0.0000000   0.0000000
54   0.0000000  -0.2182598   0.0000000   0.7330456   0.0000000   0.0000000   0.0000000   0.0000000
55   4.1114998   0.0000000  -2.5700388   0.0000000   1.3381329   0.2393810   0.0784302   0.0000000
56   0.0000000   0.0000000  -0.1105457   0.0000000   0.2393810   7.4723883   1.9818947  -1.3733650
57   0.0000000   0.0000000   0.0000000   0.0000000   0.0784302   1.9818947   3.4892726   0.0000000
58   0.0000000   0.0000000   0.0000000   0.0000000   0.0000000  -1.3733650   0.0000000   2.0631149];
59x = [
60   0.1620522
61  -0.0127203
62   1.0433751
63   0.0062052
64   0.8781570
65   0.1464129
66   0.7825852
67  -0.8257846];
68b = A*x;
69basename = 'matrixf_data_cgsolve';
70filename = [dirname basename '.c'];
71fid = fopen(filename,'w');
72gendata_write_header(fid,'data for testing conjugate gradient solver');
73gendata_write_matrix(fid,A,[basename '_A']);
74gendata_write_matrix(fid,x,[basename '_x']);
75gendata_write_matrix(fid,b,[basename '_b']);
76fclose(fid);
77
78%
79% matrix_chol
80%
81L = [   1.01,   0,      0,      0;
82       -1.42,   0.5,    0,      0;
83        0.32,   2.01,   0.3,    0;
84       -1.02,  -0.32,  -1.65,   1.07];
85A = L * L';
86basename = 'matrixf_data_chol';
87filename = [dirname basename '.c'];
88fid = fopen(filename,'w');
89gendata_write_header(fid,'data for testing Cholesky decomposition');
90gendata_write_matrix(fid,L,[basename '_L']);
91gendata_write_matrix(fid,A,[basename '_A']);
92fclose(fid);
93
94%
95% matrix_gramschmidt
96%
97A = [1 2 1; 0 2 0; 2 3 1; 1 1 0];
98V = [sqrt(6)/6, sqrt(2)/6,    2/3 ;
99     0          2*sqrt(2)/3, -1/3 ;
100     sqrt(6)/3, 0,            0   ;
101     sqrt(6)/6, -sqrt(2)/6,  -2/3 ];
102basename = 'matrixf_data_gramschmidt';
103filename = [dirname basename '.c'];
104fid = fopen(filename,'w');
105gendata_write_header(fid,'data for testing Gram-Schmidt orthonormalization');
106gendata_write_matrix(fid,A,[basename '_A']);
107gendata_write_matrix(fid,V,[basename '_V']);
108fclose(fid);
109
110%
111% matrix_inv
112%
113x = randn(5,5);
114y = inv(x);
115basename = 'matrixf_data_inv';
116filename = [dirname basename '.c'];
117fid = fopen(filename,'w');
118gendata_write_header(fid,'data for testing matrix inversion');
119gendata_write_matrix(fid,x,[basename '_x']);
120gendata_write_matrix(fid,y,[basename '_y']);
121fclose(fid);
122
123%
124% matrix_linsolve
125%
126A = randn(5,5);
127x = randn(5,1);
128b = A*x;
129basename = 'matrixf_data_linsolve';
130filename = [dirname basename '.c'];
131fid = fopen(filename,'w');
132gendata_write_header(fid,'data for testing linear solver');
133gendata_write_matrix(fid,A,[basename '_A']);
134gendata_write_matrix(fid,x,[basename '_x']);
135gendata_write_matrix(fid,b,[basename '_b']);
136fclose(fid);
137
138%
139% matrix_ludecomp
140%
141A = randn(8,8);
142basename = 'matrixf_data_ludecomp';
143filename = [dirname basename '.c'];
144fid = fopen(filename,'w');
145gendata_write_header(fid,'data for testing L/U decomposition');
146gendata_write_matrix(fid,A,[basename '_A']);
147fclose(fid);
148
149%
150% matrix_mul
151%
152x = randn(5,4);
153y = randn(4,3);
154z = x*y;
155basename = 'matrixf_data_mul';
156filename = [dirname basename '.c'];
157fid = fopen(filename,'w');
158gendata_write_header(fid,'data for testing matrix multiplication');
159gendata_write_matrix(fid,x,[basename '_x']);
160gendata_write_matrix(fid,y,[basename '_y']);
161gendata_write_matrix(fid,z,[basename '_z']);
162fclose(fid);
163
164%
165% matrix_qrdecomp
166%
167A = [1 2 3 4; 5 5 7 8; 6 4 8 7; 1 0 3 1];
168[Q R] = qr(A);
169basename = 'matrixf_data_qrdecomp';
170filename = [dirname basename '.c'];
171fid = fopen(filename,'w');
172gendata_write_header(fid,'data for testing Q/R decomposition');
173gendata_write_matrix(fid,A,[basename '_A']);
174gendata_write_matrix(fid,Q,[basename '_Q']);
175gendata_write_matrix(fid,R,[basename '_R']);
176fclose(fid);
177
178%
179% matrix_transmul
180%
181% transpose_mul
182% hermitian_mul
183% mul_transpose
184% mul_hermitian
185%
186x = randn(5,4);
187xxT = x   * x';
188xxH = x   * x.';
189xTx = x'  * x;
190xHx = x.' * x;
191basename = 'matrixf_data_transmul';
192filename = [dirname basename '.c'];
193fid = fopen(filename,'w');
194gendata_write_header(fid,'data for testing multiply/transpose');
195gendata_write_matrix(fid,x,  [basename '_x']);
196gendata_write_matrix(fid,xxT,[basename '_xxT']);
197gendata_write_matrix(fid,xxH,[basename '_xxH']);
198gendata_write_matrix(fid,xTx,[basename '_xTx']);
199gendata_write_matrix(fid,xHx,[basename '_xHx']);
200fclose(fid);
201
202
203
204
205
206%
207% complex floating-point data
208%
209
210%
211% matrix_add
212%
213x = randn(5,4) + j*randn(5,4);
214y = randn(5,4) + j*randn(5,4);
215z = x + y;
216basename = 'matrixcf_data_add';
217filename = [dirname basename '.c'];
218fid = fopen(filename,'w');
219gendata_write_header(fid,'data for testing matrix addition');
220gendata_write_matrix(fid,x,[basename '_x']);
221gendata_write_matrix(fid,y,[basename '_y']);
222gendata_write_matrix(fid,z,[basename '_z']);
223fclose(fid);
224
225%
226% matrix_aug
227%
228x = randn(5,4) + j*randn(5,4);
229y = randn(5,3) + j*randn(5,3);
230z = [x y];
231basename = 'matrixcf_data_aug';
232filename = [dirname basename '.c'];
233fid = fopen(filename,'w');
234gendata_write_header(fid,'data for testing matrix augmentation');
235gendata_write_matrix(fid,x,[basename '_x']);
236gendata_write_matrix(fid,y,[basename '_y']);
237gendata_write_matrix(fid,z,[basename '_z']);
238fclose(fid);
239
240%
241% matrix_chol
242%
243L = [   1.01,       0,          0,          0;
244       -1.42+0.25j, 0.5,        0,          0;
245        0.32-1.23j, 2.01+0.78j, 0.3,        0;
246       -1.02+1.02j,-0.32-0.03j,-1.65+2.01j, 1.07];
247A = L * L';
248basename = 'matrixcf_data_chol';
249filename = [dirname basename '.c'];
250fid = fopen(filename,'w');
251gendata_write_header(fid,'data for testing Cholesky decomposition');
252gendata_write_matrix(fid,L,[basename '_L']);
253gendata_write_matrix(fid,A,[basename '_A']);
254fclose(fid);
255
256%
257% matrix_inv
258%
259x = randn(5,5) +j*randn(5,5);
260y = inv(x);
261basename = 'matrixcf_data_inv';
262filename = [dirname basename '.c'];
263fid = fopen(filename,'w');
264gendata_write_header(fid,'data for testing matrix inversion');
265gendata_write_matrix(fid,x,[basename '_x']);
266gendata_write_matrix(fid,y,[basename '_y']);
267fclose(fid);
268
269%
270% matrix_linsolve
271%
272A = randn(5,5) + j*randn(5,5);
273x = randn(5,1) + j*randn(5,1);
274b = A*x;
275basename = 'matrixcf_data_linsolve';
276filename = [dirname basename '.c'];
277fid = fopen(filename,'w');
278gendata_write_header(fid,'data for testing linear solver');
279gendata_write_matrix(fid,A,[basename '_A']);
280gendata_write_matrix(fid,x,[basename '_x']);
281gendata_write_matrix(fid,b,[basename '_b']);
282fclose(fid);
283
284%
285% matrix_ludecomp
286%
287A = randn(8,8) + j*randn(8,8);
288basename = 'matrixcf_data_ludecomp';
289filename = [dirname basename '.c'];
290fid = fopen(filename,'w');
291gendata_write_header(fid,'data for testing L/U decomposition');
292gendata_write_matrix(fid,A,[basename '_A']);
293fclose(fid);
294
295%
296% matrix_mul
297%
298x = randn(5,4) + j*randn(5,4);
299y = randn(4,3) + j*randn(4,3);
300z = x*y;
301basename = 'matrixcf_data_mul';
302filename = [dirname basename '.c'];
303fid = fopen(filename,'w');
304gendata_write_header(fid,'data for testing matrix multiplication');
305gendata_write_matrix(fid,x,[basename '_x']);
306gendata_write_matrix(fid,y,[basename '_y']);
307gendata_write_matrix(fid,z,[basename '_z']);
308fclose(fid);
309
310%
311% matrix_qrdecomp
312%
313A = [  2.11402 - 0.57604i,  0.41750 + 1.00833i, -0.96264 - 3.62196i, -0.20679 - 1.02668i,
314       0.00854 + 1.61626i,  0.84695 - 0.32736i, -1.01862 - 1.10786i, -1.78877 + 1.84456i,
315      -2.97901 - 1.30384i,  0.52289 + 1.89110i,  1.32576 - 0.36737i,  0.04717 + 0.20628i,
316       0.28970 + 0.64247i, -0.55916 + 0.68302i,  1.40615 + 0.62398i, -0.12767 - 0.53997i];
317[Q R] = qr(A);
318basename = 'matrixcf_data_qrdecomp';
319filename = [dirname basename '.c'];
320fid = fopen(filename,'w');
321gendata_write_header(fid,'data for testing Q/R decomposition');
322gendata_write_matrix(fid,A,[basename '_A']);
323gendata_write_matrix(fid,Q,[basename '_Q']);
324gendata_write_matrix(fid,R,[basename '_R']);
325fclose(fid);
326
327%
328% matrix_transmul
329%
330% transpose_mul
331% hermitian_mul
332% mul_transpose
333% mul_hermitian
334%
335x = randn(5,4) + j*randn(5,4);
336xxT = x   * x';
337xxH = x   * x.';
338xTx = x'  * x;
339xHx = x.' * x;
340basename = 'matrixcf_data_transmul';
341filename = [dirname basename '.c'];
342fid = fopen(filename,'w');
343gendata_write_header(fid,'data for testing multiply/transpose');
344gendata_write_matrix(fid,x,  [basename '_x']);
345gendata_write_matrix(fid,xxT,[basename '_xxT']);
346gendata_write_matrix(fid,xxH,[basename '_xxH']);
347gendata_write_matrix(fid,xTx,[basename '_xTx']);
348gendata_write_matrix(fid,xHx,[basename '_xHx']);
349fclose(fid);
350
351