Esempio n. 1
0
        public Fp2 Squared()
        {
            Fp ab = a.Mul(b);

            Fp ra = a.Add(b).Mul(b.Mul(Fp.NON_RESIDUE).Add(a))
                    .Sub(ab)
                    .Sub(ab.Mul(Fp.NON_RESIDUE)); // ra = (a + b)(a + NON_RESIDUE * b) - ab - NON_RESIDUE * b
            Fp rb = ab.Dbl();

            return(new Fp2(ra, rb));
        }
Esempio n. 2
0
        public Fp2 Mul(Fp2 o)
        {
            Fp aa = a.Mul(o.a);
            Fp bb = b.Mul(o.b);

            Fp ra = bb.Mul(Fp.NON_RESIDUE).Add(aa);             // ra = a1 * a2 + NON_RESIDUE * b1 * b2
            Fp rb = a.Add(b).Mul(o.a.Add(o.b)).Sub(aa).Sub(bb); // rb = (a1 + b1)(a2 + b2) - a1 * a2 - b1 * b2

            return(new Fp2(ra, rb));
        }