108 std::vector<integer> perm(5), invperm(5);
114 for (
int i = 0; i < 5; i++) {
115 invperm[perm[i]] = i;
122 for (
int r = 0; r < 5; r++) {
123 for (
int c = 0;
c < 5;
c++) {
124 if (
mat[r][
c] != 0.) {
125 spm(r + 1,
c + 1) =
mat[r][
c];
126 nm(r + 1,
c + 1) =
mat[r][
c];
127 npm(r + 1,
c + 1) =
mat[r][
c];
132 std::cout <<
"matrix in sparse form: " << std::endl
135 std::cout <<
"matrix in naive form: " << std::endl
138 std::cout <<
"matrix in naive permuted form: " << std::endl
141 std::vector<doublereal> Ax0;
142 std::vector<integer> Ai0, Ap0;
143 spm.MakeCompressedColumnForm(Ax0, Ai0, Ap0, 0);
147 std::cout <<
"matrix in cc<0> form: " << std::endl
148 << ccm0 << std::endl;
150 std::cout <<
"matrix in cc<0> form again: " << std::endl;
152 for (
int ir = 1; ir <= 5; ir++) {
153 for (
int ic = 1; ic <= 5; ic++) {
154 std::cout << std::setw(16) << const_ccm0(ir, ic);
156 std::cout << std::endl;
159 std::vector<doublereal> Ax1;
160 std::vector<integer> Ai1, Ap1;
161 spm.MakeCompressedColumnForm(Ax1, Ai1, Ap1, 1);
165 std::cout <<
"matrix in cc<1> form: " << std::endl
166 << ccm1 << std::endl;
168 std::cout <<
"matrix in cc<1> form again: " << std::endl;
170 for (
int ir = 1; ir <= 5; ir++) {
171 for (
int ic = 1; ic <= 5; ic++) {
172 std::cout << std::setw(16) << const_ccm1(ir, ic);
174 std::cout << std::endl;
178 std::cout <<
"matrix in dir<0> form: " << std::endl
179 << dirm0 << std::endl;
181 std::cout <<
"matrix in dir<0> form again: " << std::endl;
183 for (
int ir = 1; ir <= 5; ir++) {
184 for (
int ic = 1; ic <= 5; ic++) {
185 std::cout << std::setw(16) << const_dirm0(ir, ic);
187 std::cout << std::endl;
191 std::cout <<
"matrix in dir<1> form: " << std::endl
192 << dirm1 << std::endl;
194 std::cout <<
"matrix in dir<1> form again: " << std::endl;
196 for (
int ir = 1; ir <= 5; ir++) {
197 for (
int ic = 1; ic <= 5; ic++) {
198 std::cout << std::setw(16) << const_dirm1(ir, ic);
200 std::cout << std::endl;
205 for (
int i = 1; i <= 5; i++) {
208 spm.MatVecMul(out, v);
209 std::cout <<
"sp*v(" << i <<
")=" << std::endl
212 std::cerr <<
"*** failed!" << std::endl;
215 spm.MatTVecMul(out, v);
216 std::cout <<
"sp^T*v(" << i <<
")=" << std::endl
219 std::cerr <<
"*** failed!" << std::endl;
222 nm.MatVecMul(out, v);
223 std::cout <<
"naive*v(" << i <<
")=" << std::endl
226 std::cerr <<
"*** failed!" << std::endl;
229 nm.MatTVecMul(out, v);
230 std::cout <<
"naive^T*v(" << i <<
")=" << std::endl
233 std::cerr <<
"*** failed!" << std::endl;
236 npm.MatVecMul(out, v);
237 std::cout <<
"naiveperm*v(" << i <<
")=" << std::endl
240 std::cerr <<
"*** failed!" << std::endl;
243 npm.MatTVecMul(out, v);
244 std::cout <<
"naiveperm^T*v(" << i <<
")=" << std::endl
247 std::cerr <<
"*** failed!" << std::endl;
250 ccm0.MatVecMul(out, v);
251 std::cout <<
"cc<0>*v(" << i <<
")=" << std::endl
254 std::cerr <<
"*** failed!" << std::endl;
257 ccm0.MatTVecMul(out, v);
258 std::cout <<
"cc<0>^T*v(" << i <<
")=" << std::endl
261 std::cerr <<
"*** failed!" << std::endl;
264 ccm1.MatVecMul(out, v);
265 std::cout <<
"cc<1>*v(" << i <<
")=" << std::endl
268 std::cerr <<
"*** failed!" << std::endl;
271 ccm1.MatTVecMul(out, v);
272 std::cout <<
"cc<1>^T*v(" << i <<
")=" << std::endl
275 std::cerr <<
"*** failed!" << std::endl;
278 dirm0.MatVecMul(out, v);
279 std::cout <<
"dir<0>*v(" << i <<
")=" << std::endl
282 std::cerr <<
"*** failed!" << std::endl;
285 dirm0.MatTVecMul(out, v);
286 std::cout <<
"dir<0>^T*v(" << i <<
")=" << std::endl
289 std::cerr <<
"*** failed!" << std::endl;
292 dirm1.MatVecMul(out, v);
293 std::cout <<
"dir<1>*v(" << i <<
")=" << std::endl
296 std::cerr <<
"*** failed!" << std::endl;
299 dirm1.MatTVecMul(out, v);
300 std::cout <<
"dir<1>^T*v(" << i <<
")=" << std::endl
303 std::cerr <<
"*** failed!" << std::endl;
318 spm.MatMatMul(fmout, fmin);
319 std::cout <<
"sp*eye=" << std::endl
320 << fmout << std::endl;
322 std::cerr <<
"*** failed!" << std::endl;
325 spm.MatTMatMul(fmout, fmin);
326 std::cout <<
"sp^T*eye=" << std::endl
327 << fmout << std::endl;
329 std::cerr <<
"*** failed!" << std::endl;
332 nm.MatMatMul(fmout, fmin);
333 std::cout <<
"naive*eye=" << std::endl
334 << fmout << std::endl;
336 std::cerr <<
"*** failed!" << std::endl;
339 nm.MatTMatMul(fmout, fmin);
340 std::cout <<
"naive^T*eye=" << std::endl
341 << fmout << std::endl;
343 std::cerr <<
"*** failed!" << std::endl;
346 npm.MatMatMul(fmout, fmin);
347 std::cout <<
"naiveperm*eye=" << std::endl
348 << fmout << std::endl;
350 std::cerr <<
"*** failed!" << std::endl;
353 npm.MatTMatMul(fmout, fmin);
354 std::cout <<
"naiveperm^T*eye=" << std::endl
355 << fmout << std::endl;
357 std::cerr <<
"*** failed!" << std::endl;
360 ccm0.MatMatMul(fmout, fmin);
361 std::cout <<
"cc<0>*eye=" << std::endl
362 << fmout << std::endl;
364 std::cerr <<
"*** failed!" << std::endl;
367 ccm0.MatTMatMul(fmout, fmin);
368 std::cout <<
"cc<0>^T*eye=" << std::endl
369 << fmout << std::endl;
371 std::cerr <<
"*** failed!" << std::endl;
374 ccm1.MatMatMul(fmout, fmin);
375 std::cout <<
"cc<1>*eye=" << std::endl
376 << fmout << std::endl;
378 std::cerr <<
"*** failed!" << std::endl;
381 ccm1.MatTMatMul(fmout, fmin);
382 std::cout <<
"cc<1>^T*eye=" << std::endl
383 << fmout << std::endl;
385 std::cerr <<
"*** failed!" << std::endl;
388 dirm0.MatMatMul(fmout, fmin);
389 std::cout <<
"dir<0>*eye=" << std::endl
390 << fmout << std::endl;
392 std::cerr <<
"*** failed!" << std::endl;
395 dirm0.MatTMatMul(fmout, fmin);
396 std::cout <<
"dir<0>^T*eye=" << std::endl
397 << fmout << std::endl;
399 std::cerr <<
"*** failed!" << std::endl;
402 dirm1.MatMatMul(fmout, fmin);
403 std::cout <<
"dir<1>*eye=" << std::endl
404 << fmout << std::endl;
406 std::cerr <<
"*** failed!" << std::endl;
409 dirm1.MatTMatMul(fmout, fmin);
410 std::cout <<
"dir<1>^T*eye=" << std::endl
411 << fmout << std::endl;
413 std::cerr <<
"*** failed!" << std::endl;
static int check_vec_transpose(VectorHandler &vh, unsigned r)
static int check_mat(MatrixHandler &mh)
static doublereal mat[5][5]
static std::stack< cleanup * > c
static int check_mat_transpose(MatrixHandler &mh)
static int check_vec(VectorHandler &vh, unsigned c)