changeset 3725:7d2d642cbb53

[project @ 2000-10-12 16:13:59 by jwe]
author jwe
date Thu, 12 Oct 2000 16:14:00 +0000
parents 3dfae66ad67c
children b7d997d593d9
files liboctave/Array2-idx.h liboctave/ChangeLog
diffstat 2 files changed, 17 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/liboctave/Array2-idx.h	Thu Oct 12 05:45:12 2000 +0000
+++ b/liboctave/Array2-idx.h	Thu Oct 12 16:14:00 2000 +0000
@@ -66,7 +66,16 @@
   int idx_orig_rows = idx_arg.orig_rows ();
   int idx_orig_columns = idx_arg.orig_columns ();
 
-  if (nr == 1 && nc == 1)
+  if (idx_arg.is_colon ())
+    {
+      // Fast magic colon processing.
+
+      int result_nr = nr * nc;
+      int result_nc = result_nr ? 1 : 0;
+
+      retval = Array2<T> (*this, result_nr, result_nc);
+    }
+  else if (nr == 1 && nc == 1)
     {
       Array<T> tmp = Array<T>::index (idx_arg);
 
@@ -77,7 +86,7 @@
     }
   else if (nr == 1 || nc == 1)
     {
-      int result_is_column_vector = (nc == 1 || idx_arg.is_colon ());
+      int result_is_column_vector = (nc == 1);
 
       Array<T> tmp = Array<T>::index (idx_arg);
 
@@ -94,7 +103,6 @@
 	}
     }
   else if (liboctave_dfi_flag
-	   || idx_arg.is_colon ()
 	   || (idx_arg.one_zero_only ()
 	       && idx_orig_rows == nr
 	       && idx_orig_columns == nc))
@@ -109,12 +117,7 @@
 	  int result_nr = idx_orig_rows;
 	  int result_nc = idx_orig_columns;
 
-	  if (idx_arg.is_colon ())
-	    {
-	      result_nr = nr * nc;
-	      result_nc = result_nr ? 1 : 0;
-	    }
-	  else if (idx_arg.one_zero_only ())
+	  if (idx_arg.one_zero_only ())
 	    {
 	      result_nr = idx_arg.ones_count ();
 	      result_nc = (result_nr > 0 ? 1 : 0);
--- a/liboctave/ChangeLog	Thu Oct 12 05:45:12 2000 +0000
+++ b/liboctave/ChangeLog	Thu Oct 12 16:14:00 2000 +0000
@@ -1,3 +1,8 @@
+2000-10-12  Paul Kienzle  <pkienzle@kienzle.powernet.co.uk>
+
+	* Array2-idx.h (Array2<T>::index (idx_vector&)): Avoid copying
+	elements if arg is a colon.
+
 2000-10-12  Cai Jianming <caijianming@yahoo.co.uk>
 
 	dMatrix.cc (Matrix::cumprod (int) const): New arg, DIM.