comparison liboctave/dSparse.cc @ 10350:12884915a8e4

merge MArray classes & improve Array interface
author Jaroslav Hajek <highegg@gmail.com>
date Sat, 23 Jan 2010 21:41:03 +0100
parents 07ebe522dac2
children 99e9bae2d81e
comparison
equal deleted inserted replaced
10349:d4d13389c957 10350:12884915a8e4
347 347
348 } 348 }
349 } 349 }
350 else 350 else
351 { 351 {
352 idx_arg.resize_fill (nr, 1, 0); 352 idx_arg.resize (nr, 1, 0);
353 353
354 for (octave_idx_type i = cidx(0); i < cidx(1); i++) 354 for (octave_idx_type i = cidx(0); i < cidx(1); i++)
355 idx_arg.elem(ridx(i)) = -1; 355 idx_arg.elem(ridx(i)) = -1;
356 356
357 for (octave_idx_type j = 0; j < nc; j++) 357 for (octave_idx_type j = 0; j < nc; j++)
496 496
497 } 497 }
498 } 498 }
499 else 499 else
500 { 500 {
501 idx_arg.resize_fill (nr, 1, 0); 501 idx_arg.resize (nr, 1, 0);
502 502
503 for (octave_idx_type i = cidx(0); i < cidx(1); i++) 503 for (octave_idx_type i = cidx(0); i < cidx(1); i++)
504 idx_arg.elem(ridx(i)) = -1; 504 idx_arg.elem(ridx(i)) = -1;
505 505
506 for (octave_idx_type j = 0; j < nc; j++) 506 for (octave_idx_type j = 0; j < nc; j++)
4017 { 4017 {
4018 OCTAVE_LOCAL_BUFFER (double, DU2, nr - 2); 4018 OCTAVE_LOCAL_BUFFER (double, DU2, nr - 2);
4019 OCTAVE_LOCAL_BUFFER (double, DU, nr - 1); 4019 OCTAVE_LOCAL_BUFFER (double, DU, nr - 1);
4020 OCTAVE_LOCAL_BUFFER (double, D, nr); 4020 OCTAVE_LOCAL_BUFFER (double, D, nr);
4021 OCTAVE_LOCAL_BUFFER (double, DL, nr - 1); 4021 OCTAVE_LOCAL_BUFFER (double, DL, nr - 1);
4022 Array<octave_idx_type> ipvt (nr); 4022 Array<octave_idx_type> ipvt (nr, 1);
4023 octave_idx_type *pipvt = ipvt.fortran_vec (); 4023 octave_idx_type *pipvt = ipvt.fortran_vec ();
4024 4024
4025 if (mattype.is_dense ()) 4025 if (mattype.is_dense ())
4026 { 4026 {
4027 octave_idx_type ii = 0; 4027 octave_idx_type ii = 0;
4316 { 4316 {
4317 OCTAVE_LOCAL_BUFFER (double, DU2, nr - 2); 4317 OCTAVE_LOCAL_BUFFER (double, DU2, nr - 2);
4318 OCTAVE_LOCAL_BUFFER (double, DU, nr - 1); 4318 OCTAVE_LOCAL_BUFFER (double, DU, nr - 1);
4319 OCTAVE_LOCAL_BUFFER (double, D, nr); 4319 OCTAVE_LOCAL_BUFFER (double, D, nr);
4320 OCTAVE_LOCAL_BUFFER (double, DL, nr - 1); 4320 OCTAVE_LOCAL_BUFFER (double, DL, nr - 1);
4321 Array<octave_idx_type> ipvt (nr); 4321 Array<octave_idx_type> ipvt (nr, 1);
4322 octave_idx_type *pipvt = ipvt.fortran_vec (); 4322 octave_idx_type *pipvt = ipvt.fortran_vec ();
4323 4323
4324 if (mattype.is_dense ()) 4324 if (mattype.is_dense ())
4325 { 4325 {
4326 octave_idx_type ii = 0; 4326 octave_idx_type ii = 0;
4531 } 4531 }
4532 else 4532 else
4533 { 4533 {
4534 if (calc_cond) 4534 if (calc_cond)
4535 { 4535 {
4536 Array<double> z (3 * nr); 4536 Array<double> z (3 * nr, 1);
4537 double *pz = z.fortran_vec (); 4537 double *pz = z.fortran_vec ();
4538 Array<octave_idx_type> iz (nr); 4538 Array<octave_idx_type> iz (nr, 1);
4539 octave_idx_type *piz = iz.fortran_vec (); 4539 octave_idx_type *piz = iz.fortran_vec ();
4540 4540
4541 F77_XFCN (dpbcon, DPBCON, 4541 F77_XFCN (dpbcon, DPBCON,
4542 (F77_CONST_CHAR_ARG2 (&job, 1), 4542 (F77_CONST_CHAR_ARG2 (&job, 1),
4543 nr, n_lower, tmp_data, ldm, 4543 nr, n_lower, tmp_data, ldm,
4625 if (atmp > anorm) 4625 if (atmp > anorm)
4626 anorm = atmp; 4626 anorm = atmp;
4627 } 4627 }
4628 } 4628 }
4629 4629
4630 Array<octave_idx_type> ipvt (nr); 4630 Array<octave_idx_type> ipvt (nr, 1);
4631 octave_idx_type *pipvt = ipvt.fortran_vec (); 4631 octave_idx_type *pipvt = ipvt.fortran_vec ();
4632 4632
4633 F77_XFCN (dgbtrf, DGBTRF, (nr, nr, n_lower, n_upper, tmp_data, 4633 F77_XFCN (dgbtrf, DGBTRF, (nr, nr, n_lower, n_upper, tmp_data,
4634 ldm, pipvt, err)); 4634 ldm, pipvt, err));
4635 4635
4653 else 4653 else
4654 { 4654 {
4655 if (calc_cond) 4655 if (calc_cond)
4656 { 4656 {
4657 char job = '1'; 4657 char job = '1';
4658 Array<double> z (3 * nr); 4658 Array<double> z (3 * nr, 1);
4659 double *pz = z.fortran_vec (); 4659 double *pz = z.fortran_vec ();
4660 Array<octave_idx_type> iz (nr); 4660 Array<octave_idx_type> iz (nr, 1);
4661 octave_idx_type *piz = iz.fortran_vec (); 4661 octave_idx_type *piz = iz.fortran_vec ();
4662 4662
4663 F77_XFCN (dgbcon, DGBCON, 4663 F77_XFCN (dgbcon, DGBCON,
4664 (F77_CONST_CHAR_ARG2 (&job, 1), 4664 (F77_CONST_CHAR_ARG2 (&job, 1),
4665 nc, n_lower, n_upper, tmp_data, ldm, pipvt, 4665 nc, n_lower, n_upper, tmp_data, ldm, pipvt,
4779 } 4779 }
4780 else 4780 else
4781 { 4781 {
4782 if (calc_cond) 4782 if (calc_cond)
4783 { 4783 {
4784 Array<double> z (3 * nr); 4784 Array<double> z (3 * nr, 1);
4785 double *pz = z.fortran_vec (); 4785 double *pz = z.fortran_vec ();
4786 Array<octave_idx_type> iz (nr); 4786 Array<octave_idx_type> iz (nr, 1);
4787 octave_idx_type *piz = iz.fortran_vec (); 4787 octave_idx_type *piz = iz.fortran_vec ();
4788 4788
4789 F77_XFCN (dpbcon, DPBCON, 4789 F77_XFCN (dpbcon, DPBCON,
4790 (F77_CONST_CHAR_ARG2 (&job, 1), 4790 (F77_CONST_CHAR_ARG2 (&job, 1),
4791 nr, n_lower, tmp_data, ldm, 4791 nr, n_lower, tmp_data, ldm,
4908 if (atmp > anorm) 4908 if (atmp > anorm)
4909 anorm = atmp; 4909 anorm = atmp;
4910 } 4910 }
4911 } 4911 }
4912 4912
4913 Array<octave_idx_type> ipvt (nr); 4913 Array<octave_idx_type> ipvt (nr, 1);
4914 octave_idx_type *pipvt = ipvt.fortran_vec (); 4914 octave_idx_type *pipvt = ipvt.fortran_vec ();
4915 4915
4916 F77_XFCN (dgbtrf, DGBTRF, (nr, nr, n_lower, n_upper, tmp_data, 4916 F77_XFCN (dgbtrf, DGBTRF, (nr, nr, n_lower, n_upper, tmp_data,
4917 ldm, pipvt, err)); 4917 ldm, pipvt, err));
4918 4918
4934 else 4934 else
4935 { 4935 {
4936 if (calc_cond) 4936 if (calc_cond)
4937 { 4937 {
4938 char job = '1'; 4938 char job = '1';
4939 Array<double> z (3 * nr); 4939 Array<double> z (3 * nr, 1);
4940 double *pz = z.fortran_vec (); 4940 double *pz = z.fortran_vec ();
4941 Array<octave_idx_type> iz (nr); 4941 Array<octave_idx_type> iz (nr, 1);
4942 octave_idx_type *piz = iz.fortran_vec (); 4942 octave_idx_type *piz = iz.fortran_vec ();
4943 4943
4944 F77_XFCN (dgbcon, DGBCON, 4944 F77_XFCN (dgbcon, DGBCON,
4945 (F77_CONST_CHAR_ARG2 (&job, 1), 4945 (F77_CONST_CHAR_ARG2 (&job, 1),
4946 nc, n_lower, n_upper, tmp_data, ldm, pipvt, 4946 nc, n_lower, n_upper, tmp_data, ldm, pipvt,
5099 } 5099 }
5100 else 5100 else
5101 { 5101 {
5102 if (calc_cond) 5102 if (calc_cond)
5103 { 5103 {
5104 Array<double> z (3 * nr); 5104 Array<double> z (3 * nr, 1);
5105 double *pz = z.fortran_vec (); 5105 double *pz = z.fortran_vec ();
5106 Array<octave_idx_type> iz (nr); 5106 Array<octave_idx_type> iz (nr, 1);
5107 octave_idx_type *piz = iz.fortran_vec (); 5107 octave_idx_type *piz = iz.fortran_vec ();
5108 5108
5109 F77_XFCN (dpbcon, DPBCON, 5109 F77_XFCN (dpbcon, DPBCON,
5110 (F77_CONST_CHAR_ARG2 (&job, 1), 5110 (F77_CONST_CHAR_ARG2 (&job, 1),
5111 nr, n_lower, tmp_data, ldm, 5111 nr, n_lower, tmp_data, ldm,
5224 if (atmp > anorm) 5224 if (atmp > anorm)
5225 anorm = atmp; 5225 anorm = atmp;
5226 } 5226 }
5227 } 5227 }
5228 5228
5229 Array<octave_idx_type> ipvt (nr); 5229 Array<octave_idx_type> ipvt (nr, 1);
5230 octave_idx_type *pipvt = ipvt.fortran_vec (); 5230 octave_idx_type *pipvt = ipvt.fortran_vec ();
5231 5231
5232 F77_XFCN (dgbtrf, DGBTRF, (nr, nr, n_lower, n_upper, tmp_data, 5232 F77_XFCN (dgbtrf, DGBTRF, (nr, nr, n_lower, n_upper, tmp_data,
5233 ldm, pipvt, err)); 5233 ldm, pipvt, err));
5234 5234
5250 else 5250 else
5251 { 5251 {
5252 if (calc_cond) 5252 if (calc_cond)
5253 { 5253 {
5254 char job = '1'; 5254 char job = '1';
5255 Array<double> z (3 * nr); 5255 Array<double> z (3 * nr, 1);
5256 double *pz = z.fortran_vec (); 5256 double *pz = z.fortran_vec ();
5257 Array<octave_idx_type> iz (nr); 5257 Array<octave_idx_type> iz (nr, 1);
5258 octave_idx_type *piz = iz.fortran_vec (); 5258 octave_idx_type *piz = iz.fortran_vec ();
5259 5259
5260 F77_XFCN (dpbcon, DPBCON, 5260 F77_XFCN (dpbcon, DPBCON,
5261 (F77_CONST_CHAR_ARG2 (&job, 1), 5261 (F77_CONST_CHAR_ARG2 (&job, 1),
5262 nr, n_lower, tmp_data, ldm, 5262 nr, n_lower, tmp_data, ldm,
5399 } 5399 }
5400 else 5400 else
5401 { 5401 {
5402 if (calc_cond) 5402 if (calc_cond)
5403 { 5403 {
5404 Array<double> z (3 * nr); 5404 Array<double> z (3 * nr, 1);
5405 double *pz = z.fortran_vec (); 5405 double *pz = z.fortran_vec ();
5406 Array<octave_idx_type> iz (nr); 5406 Array<octave_idx_type> iz (nr, 1);
5407 octave_idx_type *piz = iz.fortran_vec (); 5407 octave_idx_type *piz = iz.fortran_vec ();
5408 5408
5409 F77_XFCN (dpbcon, DPBCON, 5409 F77_XFCN (dpbcon, DPBCON,
5410 (F77_CONST_CHAR_ARG2 (&job, 1), 5410 (F77_CONST_CHAR_ARG2 (&job, 1),
5411 nr, n_lower, tmp_data, ldm, 5411 nr, n_lower, tmp_data, ldm,
5554 if (atmp > anorm) 5554 if (atmp > anorm)
5555 anorm = atmp; 5555 anorm = atmp;
5556 } 5556 }
5557 } 5557 }
5558 5558
5559 Array<octave_idx_type> ipvt (nr); 5559 Array<octave_idx_type> ipvt (nr, 1);
5560 octave_idx_type *pipvt = ipvt.fortran_vec (); 5560 octave_idx_type *pipvt = ipvt.fortran_vec ();
5561 5561
5562 F77_XFCN (dgbtrf, DGBTRF, (nr, nr, n_lower, n_upper, tmp_data, 5562 F77_XFCN (dgbtrf, DGBTRF, (nr, nr, n_lower, n_upper, tmp_data,
5563 ldm, pipvt, err)); 5563 ldm, pipvt, err));
5564 5564
5580 else 5580 else
5581 { 5581 {
5582 if (calc_cond) 5582 if (calc_cond)
5583 { 5583 {
5584 char job = '1'; 5584 char job = '1';
5585 Array<double> z (3 * nr); 5585 Array<double> z (3 * nr, 1);
5586 double *pz = z.fortran_vec (); 5586 double *pz = z.fortran_vec ();
5587 Array<octave_idx_type> iz (nr); 5587 Array<octave_idx_type> iz (nr, 1);
5588 octave_idx_type *piz = iz.fortran_vec (); 5588 octave_idx_type *piz = iz.fortran_vec ();
5589 5589
5590 F77_XFCN (dgbcon, DGBCON, 5590 F77_XFCN (dgbcon, DGBCON,
5591 (F77_CONST_CHAR_ARG2 (&job, 1), 5591 (F77_CONST_CHAR_ARG2 (&job, 1),
5592 nc, n_lower, n_upper, tmp_data, ldm, pipvt, 5592 nc, n_lower, n_upper, tmp_data, ldm, pipvt,