mod method

void mod(
  1. int n
)

Implementation

void mod(int n) {
  if (_hi32 == 0) {
    // hi32 is zero, so just caculate lo32.
    _lo32 %= n;
  } else {
    // hi32 is not zero, use Horner's Method
    const b = 0x10000;
    final a0 = _lo32 & _MASK_16;
    final a1 = (_lo32 >> 16) & _MASK_16;
    final a2 = _hi32 & _MASK_16;
    final a3 = (_hi32 >> 16) & _MASK_16;
    _lo32 = ((((((a3 % n) * b + a2) % n) * b + a1) % n) * b + a0) % n;
    // Assume that n is a 32-bit integer, so hi32 will always be zero
    _hi32 = 0;
  }
}