Mercurial > hg > octave-nkf
comparison liboctave/fCNDArray.cc @ 8736:53b4fdeacc2e
improve reduction functions
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Fri, 13 Feb 2009 21:04:50 +0100 |
parents | a1ae2aae903e |
children | 1bd918cfb6e2 |
comparison
equal
deleted
inserted
replaced
8735:afbfd7f4fd93 | 8736:53b4fdeacc2e |
---|---|
632 } | 632 } |
633 | 633 |
634 FloatComplexNDArray | 634 FloatComplexNDArray |
635 FloatComplexNDArray::cumprod (int dim) const | 635 FloatComplexNDArray::cumprod (int dim) const |
636 { | 636 { |
637 MX_ND_CUMULATIVE_OP (FloatComplexNDArray, FloatComplex, FloatComplex (1, 0), *); | 637 return do_mx_cum_op<FloatComplexNDArray> (*this, dim, mx_inline_cumprod); |
638 } | 638 } |
639 | 639 |
640 FloatComplexNDArray | 640 FloatComplexNDArray |
641 FloatComplexNDArray::cumsum (int dim) const | 641 FloatComplexNDArray::cumsum (int dim) const |
642 { | 642 { |
643 MX_ND_CUMULATIVE_OP (FloatComplexNDArray, FloatComplex, FloatComplex (0, 0), +); | 643 return do_mx_cum_op<FloatComplexNDArray> (*this, dim, mx_inline_cumsum); |
644 } | 644 } |
645 | 645 |
646 FloatComplexNDArray | 646 FloatComplexNDArray |
647 FloatComplexNDArray::prod (int dim) const | 647 FloatComplexNDArray::prod (int dim) const |
648 { | 648 { |
649 MX_ND_REDUCTION (retval(result_idx) *= elem (iter_idx), FloatComplex (1, 0), FloatComplexNDArray); | 649 return do_mx_red_op<FloatComplexNDArray> (*this, dim, mx_inline_prod); |
650 } | |
651 | |
652 FloatComplexNDArray | |
653 FloatComplexNDArray::sum (int dim) const | |
654 { | |
655 return do_mx_red_op<FloatComplexNDArray> (*this, dim, mx_inline_sum); | |
650 } | 656 } |
651 | 657 |
652 FloatComplexNDArray | 658 FloatComplexNDArray |
653 FloatComplexNDArray::sumsq (int dim) const | 659 FloatComplexNDArray::sumsq (int dim) const |
654 { | 660 { |
655 MX_ND_REDUCTION (retval(result_idx) += std::imag (elem (iter_idx)) | 661 return do_mx_red_op<FloatNDArray> (*this, dim, mx_inline_sumsq); |
656 ? elem (iter_idx) * conj (elem (iter_idx)) | |
657 : std::pow (elem (iter_idx), 2), FloatComplex (0, 0), FloatComplexNDArray); | |
658 } | |
659 | |
660 FloatComplexNDArray | |
661 FloatComplexNDArray::sum (int dim) const | |
662 { | |
663 MX_ND_REDUCTION (retval(result_idx) += elem (iter_idx), FloatComplex (0, 0), FloatComplexNDArray); | |
664 } | 662 } |
665 | 663 |
666 FloatComplexNDArray | 664 FloatComplexNDArray |
667 FloatComplexNDArray::concat (const FloatComplexNDArray& rb, const Array<octave_idx_type>& ra_idx) | 665 FloatComplexNDArray::concat (const FloatComplexNDArray& rb, const Array<octave_idx_type>& ra_idx) |
668 { | 666 { |