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 {