Example #1
0
        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();
            }
        }