/* 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); }