mul51 method
mul51 returns lo + hi * 2⁵¹ = a * b.
Implementation
(BigInt low, BigInt high) mul51(BigInt a, int b) {
final mh = (a * b.toBigInt) >> 64;
final ml = a * b.toBigInt;
final lo = ml & maskLow51Bits;
final hi = (mh << 13) | (ml >> 51);
return (lo, hi);
}