comparison 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
comparison
equal deleted inserted replaced
25236:69b21b8a0e9f 25237:ca022a8c4015
430 else 430 else
431 retval.clear (n); 431 retval.clear (n);
432 432
433 retval(0) = x1; 433 retval(0) = x1;
434 434
435 Complex delta = (x2 - x1) / (n - 1.0); 435 Complex delta = (x1 == x2) ? 0 : (x2 - x1) / (n - 1.0);
436 for (octave_idx_type i = 1; i < n-1; i++) 436 for (octave_idx_type i = 1; i < n-1; i++)
437 retval(i) = x1 + static_cast<double> (i)*delta; 437 retval(i) = x1 + static_cast<double> (i)*delta;
438 438
439 retval(n-1) = x2; 439 retval(n-1) = x2;
440 440