diff liboctave/array/CRowVector.cc @ 25237:ca022a8c4015

linspace: handle ranges with equal Inf endpoints (bug #53489) * CMatrix.cc (ComplexMatrix::linspace): Change delta calculation to yield 0 if endpoints are the same, otherwise calculate delta as normal. * CRowVector.cc (ComplexRowVector::linspace): Likewise. * dMatrix.cc (Matrix::linspace): Likewise. * dRowVector.cc (RowVector::linspace): Likewise. * fCMatrix.cc (FloatComplexMatrix::linspace): Likewise. * fCRowVector.cc (FloatComplexRowVector::linspace): Likewise. * fMatrix.cc (FloatMatrix::linspace): Likewise. * fRowVector.cc (FloatRowVector::linspace): Likewise. * data.cc (Flinspace): Added Matlab compatibility tests. * logspace.m: Added same tests as in linspace containing Inf in endpoints.
author Maor Shutman <maorus12@gmail.com>
date Fri, 06 Apr 2018 20:25:05 +0300
parents 6652d3823428
children cb1606f78f6b
line wrap: on
line diff
--- a/liboctave/array/CRowVector.cc	Thu Apr 12 14:34:10 2018 -0700
+++ b/liboctave/array/CRowVector.cc	Fri Apr 06 20:25:05 2018 +0300
@@ -432,7 +432,7 @@
 
   retval(0) = x1;
 
-  Complex delta = (x2 - x1) / (n - 1.0);
+  Complex delta = (x1 == x2) ? 0 : (x2 - x1) / (n - 1.0);
   for (octave_idx_type i = 1; i < n-1; i++)
     retval(i) = x1 + static_cast<double> (i)*delta;