Mercurial > octave-nkf
comparison liboctave/Array.cc @ 5940:0dd8428bb260
[project @ 2006-08-18 17:50:23 by jwe]
author | jwe |
---|---|
date | Fri, 18 Aug 2006 17:50:23 +0000 |
parents | 55404f3b0da1 |
children | 4289ed95dde8 |
comparison
equal
deleted
inserted
replaced
5939:2e86e3601e0f | 5940:0dd8428bb260 |
---|---|
513 } | 513 } |
514 } | 514 } |
515 | 515 |
516 retval.resize (dv_new); | 516 retval.resize (dv_new); |
517 | 517 |
518 Array<octave_idx_type> cp (nd+1, 1); | 518 if (numel () > 0) |
519 for (octave_idx_type i = 1; i < nd+1; i++) | 519 { |
520 cp(i) = cp(i-1) * dv(i-1); | 520 Array<octave_idx_type> cp (nd+1, 1); |
521 | 521 for (octave_idx_type i = 1; i < nd+1; i++) |
522 octave_idx_type incr = cp(perm_vec(0)); | 522 cp(i) = cp(i-1) * dv(i-1); |
523 | 523 |
524 Array<octave_idx_type> base_delta (nd-1, 0); | 524 octave_idx_type incr = cp(perm_vec(0)); |
525 Array<octave_idx_type> base_delta_max (nd-1); | 525 |
526 Array<octave_idx_type> base_incr (nd-1); | 526 Array<octave_idx_type> base_delta (nd-1, 0); |
527 for (octave_idx_type i = 0; i < nd-1; i++) | 527 Array<octave_idx_type> base_delta_max (nd-1); |
528 { | 528 Array<octave_idx_type> base_incr (nd-1); |
529 base_delta_max(i) = dv_new(i+1); | 529 for (octave_idx_type i = 0; i < nd-1; i++) |
530 base_incr(i) = cp(perm_vec(i+1)); | 530 { |
531 } | 531 base_delta_max(i) = dv_new(i+1); |
532 | 532 base_incr(i) = cp(perm_vec(i+1)); |
533 octave_idx_type nr_new = dv_new(0); | 533 } |
534 octave_idx_type nel_new = dv_new.numel (); | 534 |
535 octave_idx_type n = nel_new / nr_new; | 535 octave_idx_type nr_new = dv_new(0); |
536 | 536 octave_idx_type nel_new = dv_new.numel (); |
537 octave_idx_type k = 0; | 537 octave_idx_type n = nel_new / nr_new; |
538 | 538 |
539 for (octave_idx_type i = 0; i < n; i++) | 539 octave_idx_type k = 0; |
540 { | 540 |
541 octave_idx_type iidx = 0; | 541 for (octave_idx_type i = 0; i < n; i++) |
542 for (octave_idx_type kk = 0; kk < nd-1; kk++) | 542 { |
543 iidx += base_delta(kk) * base_incr(kk); | 543 octave_idx_type iidx = 0; |
544 | 544 for (octave_idx_type kk = 0; kk < nd-1; kk++) |
545 for (octave_idx_type j = 0; j < nr_new; j++) | 545 iidx += base_delta(kk) * base_incr(kk); |
546 { | 546 |
547 OCTAVE_QUIT; | 547 for (octave_idx_type j = 0; j < nr_new; j++) |
548 | 548 { |
549 retval(k++) = elem(iidx); | 549 OCTAVE_QUIT; |
550 iidx += incr; | 550 |
551 } | 551 retval(k++) = elem(iidx); |
552 | 552 iidx += incr; |
553 base_delta(0)++; | 553 } |
554 | 554 |
555 for (octave_idx_type kk = 0; kk < nd-2; kk++) | 555 base_delta(0)++; |
556 { | 556 |
557 if (base_delta(kk) == base_delta_max(kk)) | 557 for (octave_idx_type kk = 0; kk < nd-2; kk++) |
558 { | 558 { |
559 base_delta(kk) = 0; | 559 if (base_delta(kk) == base_delta_max(kk)) |
560 base_delta(kk+1)++; | 560 { |
561 base_delta(kk) = 0; | |
562 base_delta(kk+1)++; | |
563 } | |
561 } | 564 } |
562 } | 565 } |
563 } | 566 } |
564 | 567 |
565 retval.chop_trailing_singletons (); | 568 retval.chop_trailing_singletons (); |