public static long ModularProduct(long a, long b, long modulus) { return((long)UInt64Helper.ModularProduct((ulong)a, (ulong)b, (ulong)modulus)); }
public static ulong ModularProduct(ulong a, ulong b, ulong modulus) { return(UInt64Helper.ModularProduct(a, b, modulus)); }
public uint Modulus(ulong k) { var t = UInt64Helper.MultiplyHigh(m, k); return((uint)(k - ((((k - t) >> sh1) + t) >> sh2) * d)); }
public ulong Divide(ulong k) { var t = UInt64Helper.MultiplyHigh(m, k); return((((k - t) >> sh1) + t) >> sh2); }
public uint Modulus(ulong k) { return((uint)(k - (UInt64Helper.MultiplyHigh(mPrime, k) >> shift) * d)); }
public ulong Divide(ulong k) { return(UInt64Helper.MultiplyHigh(mPrime, k) >> shift); }
public ulong Divide(ulong k) { return(UInt64Helper.MultiplyHigh(recip, k)); }