private void PreCompute() { var factors = Environments.Select(e => new BigUInt((BigInteger)(e.parameters.PlainModulus.Value))); var uIntBigFactor = factors.Aggregate((n1, n2) => n1 * n2); bigFactor = (BigInteger)uIntBigFactor.ToBigInteger(); var minors = factors.Select(p => uIntBigFactor / p).ToList(); var t = new BigUInt(); BigUInt[] ys = minors.Zip(factors, (m, p) => Reminder(m, p, t).ModuloInvert(p)).ToArray(); t.Dispose(); preComputedCoefficients = ys.Zip(minors, (y, m) => y * m).Select(v => (BigInteger)v.ToBigInteger()).ToArray(); foreach (var y in ys) { t.Dispose(); } }