Mercurial > octave
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 |