Commit Graph

4 Commits

Author SHA1 Message Date
Yukihiro "Matz" Matsumoto ad8fc7d918 mruby-bigint: add multi-precision gcd tests
Cover zero operands, power-of-2 fast path, negative operands,
balanced multi-limb pairs with a shared Fibonacci factor, highly
unbalanced pairs (to exercise the Euclidean fallback), and
Fibonacci neighbors (always coprime). Declare a test dependency
on mruby-numeric-ext since Integer#gcd is defined there.

Co-authored-by: Claude <noreply@anthropic.com>
2026-04-23 22:56:44 +09:00
Yukihiro "Matz" Matsumoto 4e505b2b85 mruby-bigint: fix multiplication commutativity bug
Fixed non-commutative multiplication bug where operands with different
limb counts would produce different results based on order (a*b \!= b*a).

Root cause was asymmetric carry propagation in the multiplication algorithm.
The fix ensures consistent operand ordering by always processing the smaller
operand first in the nested loops, making multiplication truly commutative.

Also fixed division algorithm quotient allocation and qhat refinement.

Co-authored-by: Claude <noreply@anthropic.com>
2025-08-14 10:52:48 +09:00
Hoshiumi Arata 21ccbf965e bigint: expand test cases for arithmetic operations 2024-12-04 18:34:21 +09:00
Yukihiro "Matz" Matsumoto 55b526167b test/bigint.rb: add test for multi-precision integers. 2022-04-09 17:16:11 +09:00