diff liboctave/fRowVector.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/fRowVector.cc	Fri Sep 18 06:40:06 2009 -0400
+++ b/liboctave/fRowVector.cc	Fri Sep 18 15:27:09 2009 +0200
@@ -311,22 +311,15 @@
 FloatRowVector
 linspace (float x1, float x2, octave_idx_type n)
 {
-  FloatRowVector retval;
+  if (n < 1) n = 1;
+
+  NoAlias<FloatRowVector> retval (n);
 
-  if (n > 1)
-    {
-      retval.resize (n);
-      float 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;
-    }
+  float delta = (x2 - x1) / (n - 1);
+  float y = retval(0) = x1;
+  for (octave_idx_type i = 1; i < n-1; i++)
+    retval(i) = y += delta;
+  retval(n-1) = x2;
 
   return retval;
 }