diff options
Diffstat (limited to 'src/numerics.cpp')
-rw-r--r-- | src/numerics.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/numerics.cpp b/src/numerics.cpp index 33ee5ab..db8003c 100644 --- a/src/numerics.cpp +++ b/src/numerics.cpp @@ -86,7 +86,8 @@ word_t gcd(word_t a, word_t b) return a; } -Fraction iterate(std::queue<word_t> &queue, NodeAllocator &allocator) +std::tuple<Fraction, Fraction, Fraction> iterate(std::queue<word_t> &queue, + NodeAllocator &allocator) { if (queue.empty()) return {}; @@ -105,10 +106,10 @@ Fraction iterate(std::queue<word_t> &queue, NodeAllocator &allocator) queue.pop(); queue.push(allocator.getVal(index).left.value()); queue.push(allocator.getVal(index).right.value()); - node = allocator.getVal(index); - Fraction best = MAX(node.value, allocator.getVal(node.left.value()).value); - best = MAX(best, allocator.getVal(node.right.value()).value); - return best; + node = allocator.getVal(index); + // NOTE: We can be assured that left and right DO have values + return std::tuple(allocator.getVal(node.left.value()).value, node.value, + allocator.getVal(node.right.value()).value); } std::string to_string(const Fraction &f) |