diff liboctave/Array.cc @ 4929:585e9a8c2ef8

[project @ 2004-08-03 20:45:34 by jwe]
author jwe
date Tue, 03 Aug 2004 20:45:34 +0000
parents c45f14873b5e
children 8fa98abef34a
line wrap: on
line diff
--- a/liboctave/Array.cc	Tue Aug 03 19:00:24 2004 +0000
+++ b/liboctave/Array.cc	Tue Aug 03 20:45:34 2004 +0000
@@ -71,50 +71,45 @@
 {
   Array<T> retval = *this;
 
-  bool dims_changed = false;
-
-  dim_vector new_dimensions = dimensions;
-
-  int k = 0;
-
-  for (int i = 0; i < ndims (); i++)
+  if (ndims () > 2)
     {
-      if (dimensions(i) == 1)
-	dims_changed = true;
-      else
-	new_dimensions(k++) = dimensions(i);
-    }
-
-  if (dims_changed)
-    {
-      switch (k)
+      bool dims_changed = false;
+
+      dim_vector new_dimensions = dimensions;
+
+      int k = 0;
+
+      for (int i = 0; i < ndims (); i++)
 	{
-	case 0:
-	  new_dimensions = dim_vector (1, 1);
-	  break;
-
-	case 1:
-	  {
-	    int tmp = new_dimensions(0);
-
-	    new_dimensions.resize (2);
-
-	    if (dimensions(0) == 1)
+	  if (dimensions(i) == 1)
+	    dims_changed = true;
+	  else
+	    new_dimensions(k++) = dimensions(i);
+	}
+
+      if (dims_changed)
+	{
+	  switch (k)
+	    {
+	    case 0:
+	      new_dimensions = dim_vector (1, 1);
+	      break;
+
+	    case 1:
 	      {
-		new_dimensions(0) = 1;
-		new_dimensions(1) = tmp;
-	      }
-	    else
-	      {
+		int tmp = new_dimensions(0);
+
+		new_dimensions.resize (2);
+
 		new_dimensions(0) = tmp;
 		new_dimensions(1) = 1;
 	      }
-	  }
-	  break;
-
-	default:
-	  new_dimensions.resize (k);
-	  break;
+	      break;
+
+	    default:
+	      new_dimensions.resize (k);
+	      break;
+	    }
 	}
 
       retval.make_unique ();