Saya mau tau { dari Aritmetika modular

if (!((a | b) & (0xFFFFFFFFULL << 32)))

return a * b % m;

uint64_t d = 0, mp2 = m >> 1;

if (a >= m) a %= m;

if (b >= m) b %= m;

for (i = 0; i < 64; ++i)

d = (d > mp2) ? (d << 1) - m : d << 1;

if (d >= m) d -= m;

Pada arsitektur komputer di mana format presisi perpanjangan dengan setidaknya 64 bit mantissa tersedia (seperti tipe mo ganda panjang), the following routine is , dengan menggunakan trik yang, dengan perangkat keras, perkalian floating-point menghasilkan bit paling signifikan dari produk yang disimpan, sementara perkalian bilangan bulat menghasilkan bit yang paling tidak signifikan:

uint64_t mul_mod(uint64_t a, uint64_t b, uint64_t m)