Mercurial > hg > octave-lyh
diff liboctave/fCRowVector.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/fCRowVector.cc +++ b/liboctave/fCRowVector.cc @@ -482,22 +482,15 @@ FloatComplexRowVector linspace (const FloatComplex& x1, const FloatComplex& x2, octave_idx_type n) { - FloatComplexRowVector retval; + if (n < 1) n = 1; + + NoAlias<FloatComplexRowVector> retval (n); - if (n > 0) - { - retval.resize (n); - FloatComplex delta = (x2 - x1) / static_cast<float> (n - 1.0); - retval.elem (0) = x1; - for (octave_idx_type i = 1; i < n-1; i++) - retval.elem (i) = x1 + static_cast<float> (1.0) * i * delta; - retval.elem (n-1) = x2; - } - else - { - retval.resize (1); - retval.elem (0) = x2; - } + FloatComplex delta = (x2 - x1) / (n - 1.0f); + FloatComplex y = retval(0) = x1; + for (octave_idx_type i = 1; i < n-1; i++) + retval(i) = y += delta; + retval(n-1) = x2; return retval; }