diff liboctave/dRowVector.cc @ 9653:e087d7c77ff9

improve linspace in liboctave
author Jaroslav Hajek <highegg@gmail.com>
date Fri, 18 Sep 2009 15:27:09 +0200
parents 3d6a9aea2aea
children 3429c956de6f
line wrap: on
line diff
--- a/liboctave/dRowVector.cc
+++ b/liboctave/dRowVector.cc
@@ -311,22 +311,15 @@
 RowVector
 linspace (double x1, double x2, octave_idx_type n)
 {
-  RowVector retval;
+  if (n < 1) n = 1;
+
+  NoAlias<RowVector> retval (n);
 
-  if (n > 1)
-    {
-      retval.resize (n);
-      double delta = (x2 - x1) / (n - 1);
-      retval.elem (0) = x1;
-      for (octave_idx_type i = 1; i < n-1; i++)
-	retval.elem (i) = x1 + i * delta;
-      retval.elem (n-1) = x2;
-    }
-  else
-    {
-      retval.resize (1);
-      retval.elem (0) = x2;
-    }
+  double delta = (x2 - x1) / (n - 1);
+  double y = retval(0) = x1;
+  for (octave_idx_type i = 1; i < n-1; i++)
+    retval(i) = y += delta;
+  retval(n-1) = x2;
 
   return retval;
 }