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