# HG changeset patch # User Jaroslav Hajek # Date 1237073921 -3600 # Node ID e781ab1aee39e01c0416ed2486272666aed1a8c9 # Parent dc6bda6f999429bc10f29d98fa37e77faba40c40 optimize comparison ops diff -r dc6bda6f9994 -r e781ab1aee39 liboctave/ChangeLog --- a/liboctave/ChangeLog Sat Mar 14 23:08:08 2009 +0100 +++ b/liboctave/ChangeLog Sun Mar 15 00:38:41 2009 +0100 @@ -1,7 +1,8 @@ 2009-03-14 Jaroslav Hajek - * mx-op-decl.h (*BOOL_OP_DECLS): Support compound binary ops. - * mx-op-defs.h (*BOOL_OP): Ditto. Optimize. + * mx-op-decl.h (NDS_BOOL_OP_DECLS, SND_BOOL_OP_DECLS, NDND_BOOL_OP_DECLS): Support compound binary ops. + * mx-op-defs.h (NDS_BOOL_OPS, SND_BOOL_OPS, NDND_BOOL_OPS): Ditto. Optimize. + * mx-op-defs.h (NDS_CMP_OP, SND_CMP_OP, NDND_CMP_OP): Optimize. 2009-03-14 Jaroslav Hajek diff -r dc6bda6f9994 -r e781ab1aee39 liboctave/mx-op-defs.h --- a/liboctave/mx-op-defs.h Sat Mar 14 23:08:08 2009 +0100 +++ b/liboctave/mx-op-defs.h Sun Mar 15 00:38:41 2009 +0100 @@ -424,14 +424,20 @@ boolNDArray \ F (const ND& m, const S& s) \ { \ - boolNDArray r; \ + boolNDArray r (m.dims ()); \ \ octave_idx_type len = m.length (); \ \ - r.resize (m.dims ()); \ - \ - for (octave_idx_type i = 0; i < len; i++) \ - r.elem(i) = NDC (m.elem(i)) OP SC (s); \ + if (s == S ()) \ + { \ + for (octave_idx_type i = 0; i < len; i++) \ + r.xelem(i) = NDC (m.elem(i)) OP SC (S ()); \ + } \ + else \ + { \ + for (octave_idx_type i = 0; i < len; i++) \ + r.xelem(i) = NDC (m.elem(i)) OP SC (s); \ + } \ \ return r; \ } @@ -448,12 +454,10 @@ boolNDArray \ F (const ND& m, const S& s) \ { \ - boolNDArray r; \ + boolNDArray r (m.dims ()); \ \ octave_idx_type len = m.length (); \ \ - r.resize (m.dims ()); \ - \ for (octave_idx_type i = 0; i < len; i++) \ r.elem(i) = operator OP (NDC (m.elem(i)), SC (s)); \ \ @@ -555,14 +559,20 @@ boolNDArray \ F (const S& s, const ND& m) \ { \ - boolNDArray r; \ + boolNDArray r (m.dims ()); \ \ octave_idx_type len = m.length (); \ \ - r.resize (m.dims ()); \ - \ - for (octave_idx_type i = 0; i < len; i++) \ - r.elem(i) = SC (s) OP NDC (m.elem(i)); \ + if (s == S ()) \ + { \ + for (octave_idx_type i = 0; i < len; i++) \ + r.xelem(i) = SC (S ()) OP NDC (m.elem(i)); \ + } \ + else \ + { \ + for (octave_idx_type i = 0; i < len; i++) \ + r.xelem(i) = SC (s) OP NDC (m.elem(i)); \ + } \ \ return r; \ } @@ -579,12 +589,10 @@ boolNDArray \ F (const S& s, const ND& m) \ { \ - boolNDArray r; \ + boolNDArray r (m.dims ()); \ \ octave_idx_type len = m.length (); \ \ - r.resize (m.dims ()); \ - \ for (octave_idx_type i = 0; i < len; i++) \ r.elem(i) = operator OP (SC (s), NDC (m.elem(i))); \ \ @@ -603,12 +611,10 @@ boolNDArray \ F (const S& s, const ND& m) \ { \ - boolNDArray r; \ + boolNDArray r (m.dims ()); \ \ octave_idx_type len = m.length (); \ \ - r.resize (m.dims ()); \ - \ for (octave_idx_type i = 0; i < len; i++) \ r.elem(i) = operator OP (SC (s), NDC (m.elem(i))); \ \ @@ -675,7 +681,7 @@ gripe_nonconformant (#OP, m1_dims, m2_dims); \ else \ { \ - r.resize (m1_dims); \ + r = R (m1_dims); \ \ octave_idx_type len = m1.length (); \ \ @@ -703,10 +709,10 @@ \ if (m1_dims == m2_dims) \ { \ - r.resize (m1_dims); \ + r = boolNDArray (m1_dims); \ \ for (octave_idx_type i = 0; i < m1.length (); i++) \ - r.elem(i) = C1 (m1.elem(i)) OP C2 (m2.elem(i)); \ + r.xelem(i) = C1 (m1.elem(i)) OP C2 (m2.elem(i)); \ } \ else \ gripe_nonconformant (#F, m1_dims, m2_dims); \