Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ Reduce()

int System.Numerics.BigIntegerCalculator.FastReducer.Reduce ( uint[] value,
int length )
inline

Definition at line 176 of file BigIntegerCalculator.cs.

177 {
178 if (length < _modulus.Length)
179 {
180 return length;
181 }
182 int leftLength = DivMul(value, length, _mu, _muLength, _q1, _modulus.Length - 1);
183 int rightLength = DivMul(_q1, leftLength, _modulus, _modulus.Length, _q2, _modulus.Length + 1);
184 return SubMod(value, length, _q2, rightLength, _modulus, _modulus.Length + 1);
185 }
static unsafe int DivMul(uint[] left, int leftLength, uint[] right, int rightLength, uint[] bits, int k)
static unsafe int SubMod(uint[] left, int leftLength, uint[] right, int rightLength, uint[] modulus, int k)

References System.Numerics.BigIntegerCalculator.FastReducer._modulus, System.Numerics.BigIntegerCalculator.FastReducer._mu, System.Numerics.BigIntegerCalculator.FastReducer._muLength, System.Numerics.BigIntegerCalculator.FastReducer._q1, System.Numerics.BigIntegerCalculator.FastReducer._q2, System.Numerics.BigIntegerCalculator.FastReducer.DivMul(), System.length, System.Numerics.BigIntegerCalculator.FastReducer.SubMod(), and System.value.