Make GpuUInt128 mutable and update callers
This commit is contained in:
1 parent
40477eca5d
commit
ab856c4995
6 files changed
+267
-203
No files matched your search
@@ -48,10 +48,11 @@ public sealed class MersenneNumberDivisorGpuTester
|
||||
ulong pow2x = 1UL << x;
|
||||
ulong y = divisor - pow2x;
|
||||
var modVal = new GpuUInt128(0UL, divisor);
|
||||
var baseVal = new GpuUInt128(0UL, pow2x); // 2^x ≡ -y (mod divisor)
|
||||
var part1 = baseVal.ModPow(q, modVal);
|
||||
var part2 = GpuUInt128.Pow2Mod(r, modVal);
|
||||
var rem = part1.MulMod(part2, modVal);
|
||||
result[0] = rem.High == 0UL && rem.Low == 1UL ? (byte)1 : (byte)0;
|
||||
var baseVal = new GpuUInt128(0UL, pow2x); // 2^x ≡ -y (mod divisor)
|
||||
var part1 = baseVal;
|
||||
part1.ModPow(q, modVal);
|
||||
var part2 = GpuUInt128.Pow2Mod(r, modVal);
|
||||
part1.MulMod(part2, modVal);
|
||||
result[0] = part1.High == 0UL && part1.Low == 1UL ? (byte)1 : (byte)0;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user