Mercurial > hg > octave-lyh
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, |