Esempio n. 1
0
        /* this=1/this */
        public void Inverse()
        {
            FP4 f0 = new FP4(a);
            FP4 f1 = new FP4(b);
            FP4 f2 = new FP4(a);
            FP4 f3 = new FP4(0);

            Norm();
            f0.Sqr();
            f1.Mul(c);
            f1.Times_I();
            f0.Sub(f1);
            f0.Norm();

            f1.Copy(c);
            f1.Sqr();
            f1.Times_I();
            f2.Mul(b);
            f1.Sub(f2);
            f1.Norm();

            f2.Copy(b);
            f2.Sqr();
            f3.Copy(a);
            f3.Mul(c);
            f2.Sub(f3);
            f2.Norm();

            f3.Copy(b);
            f3.Mul(f2);
            f3.Times_I();
            a.Mul(f0);
            f3.Add(a);
            c.Mul(f1);
            c.Times_I();

            f3.Add(c);
            f3.Norm();
            f3.Inverse();
            a.Copy(f0);
            a.Mul(f3);
            b.Copy(f1);
            b.Mul(f3);
            c.Copy(f2);
            c.Mul(f3);
        }