comparison 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
comparison
equal deleted inserted replaced
9652:ecdb275bd41b 9653:e087d7c77ff9
309 // other operations 309 // other operations
310 310
311 RowVector 311 RowVector
312 linspace (double x1, double x2, octave_idx_type n) 312 linspace (double x1, double x2, octave_idx_type n)
313 { 313 {
314 RowVector retval; 314 if (n < 1) n = 1;
315 315
316 if (n > 1) 316 NoAlias<RowVector> retval (n);
317 { 317
318 retval.resize (n); 318 double delta = (x2 - x1) / (n - 1);
319 double delta = (x2 - x1) / (n - 1); 319 double y = retval(0) = x1;
320 retval.elem (0) = x1; 320 for (octave_idx_type i = 1; i < n-1; i++)
321 for (octave_idx_type i = 1; i < n-1; i++) 321 retval(i) = y += delta;
322 retval.elem (i) = x1 + i * delta; 322 retval(n-1) = x2;
323 retval.elem (n-1) = x2;
324 }
325 else
326 {
327 retval.resize (1);
328 retval.elem (0) = x2;
329 }
330 323
331 return retval; 324 return retval;
332 } 325 }
333 326
334 // row vector by column vector -> scalar 327 // row vector by column vector -> scalar