|
From: | Arun Giridhar |
Subject: | [Octave-bug-tracker] [bug #61300] integer range might exceed upper limit |
Date: | Sun, 28 Nov 2021 13:52:58 -0500 (EST) |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:94.0) Gecko/20100101 Firefox/94.0 |
Follow-up Comment #16, bug #61300 (project octave): OK, using value() works for ascending ranges but fails for descending ranges, giving an empty range instead. How to fix this behavior? Updated code inside Range.h: void init (void) { uint64_t numer = m_limit.value () - m_base.value () + m_increment.value (); uint64_t denom = m_increment.value (); m_numel = ((m_increment == T (0) || (m_limit > m_base && m_increment < T (0)) || (m_limit < m_base && m_increment > T (0))) ? 0 : (numer / denom)); m_final = m_base + (m_numel - 1) * m_increment; } Wrong result for descending ranges: >> int64 (100) : int64 (-6) : 0 ans = [](1x0) _______________________________________________________ Reply to this item at: <https://savannah.gnu.org/bugs/?61300> _______________________________________________ Message sent via Savannah https://savannah.gnu.org/
[Prev in Thread] | Current Thread | [Next in Thread] |