public void SqrtTest () { IFiniteField[] ffList = new IFiniteField[2]; ffList[0] = new SECP192r1 (); ffList[1] = new Montgomery (ffList[0].Modulus); int repeats = 10; foreach (IFiniteField ff in ffList) { for (int i = 0; i < repeats; i++) { Number x = ff.ToElement (Number.CreateRandomElement (ff.Modulus)); Number xx = ff.Multiply (x, x); Number sqrt = ff.Sqrt (xx); Assert.IsTrue (ff.Multiply (sqrt, sqrt).CompareTo (xx) == 0); } } }
public void PowTest () { IFiniteField[] ffList = new IFiniteField[2]; ffList[0] = new SECP192r1 (); ffList[1] = new Montgomery (ffList[0].Modulus); foreach (IFiniteField ff in ffList) { Number x = ff.ToElement (Number.CreateRandomElement (ff.Modulus)); Number pow2 = ff.Multiply (x, x); Number pow3 = ff.Multiply (pow2, x); Number pow4 = ff.Multiply (pow3, x); Assert.IsTrue (ff.Pow (x, Number.Zero).CompareTo (ff.ToElement (Number.One)) == 0); Assert.IsTrue (ff.Pow (x, Number.One).CompareTo (x) == 0); Assert.IsTrue (ff.Pow (x, Number.Two).CompareTo (pow2) == 0); Assert.IsTrue (ff.Pow (x, Number.Three).CompareTo (pow3) == 0); Assert.IsTrue (ff.Pow (x, Number.Four).CompareTo (pow4) == 0); } }