Mercurial > hg > octave-jordi
changeset 20996:d03babf77549
filter.cc: Use first_non_singleton() rather than handrolled code.
* filter.cc (filter, Ffilter) : Replace custome while loop to find first
non-singleton dimension with member function first_non_singleton from
dim_vector class.
author | Rik <rik@octave.org> |
---|---|
date | Mon, 28 Dec 2015 08:08:42 -0800 |
parents | 20bd3d4fabad |
children | 73f62b4bb533 |
files | libinterp/corefcn/filter.cc |
diffstat | 1 files changed, 6 insertions(+), 23 deletions(-) [+] |
line wrap: on
line diff
--- a/libinterp/corefcn/filter.cc +++ b/libinterp/corefcn/filter.cc @@ -242,16 +242,8 @@ dim_vector x_dims = x.dims (); if (dim < 0) - { - // Find first non-singleton dimension - while (dim < x_dims.length () && x_dims(dim) <= 1) - dim++; - - // All dimensions singleton, pick first dimension - if (dim == x_dims.length ()) - dim = 0; - } - else if (dim < 0 || dim > x_dims.length ()) + dim = x_dims.first_non_singleton (); + else if (dim > x_dims.length ()) error ("filter: DIM must be a valid dimension"); octave_idx_type a_len = a.numel (); @@ -376,9 +368,6 @@ if (nargin < 3 || nargin > 5) print_usage (); - const char *a_b_errmsg = "filter: A and B must be vectors"; - const char *x_si_errmsg = "filter: X and SI must be arrays"; - int dim; dim_vector x_dims = args(2).dims (); @@ -389,19 +378,13 @@ error ("filter: DIM must be a valid dimension"); } else - { - // Find first non-singleton dimension - dim = 0; - while (dim < x_dims.length () && x_dims(dim) <= 1) - dim++; - - // All dimensions singleton, pick first dimension - if (dim == x_dims.length ()) - dim = 0; - } + dim = x_dims.first_non_singleton (); octave_value_list retval; + const char *a_b_errmsg = "filter: A and B must be vectors"; + const char *x_si_errmsg = "filter: X and SI must be arrays"; + bool isfloat = (args(0).is_single_type () || args(1).is_single_type () || args(2).is_single_type ()