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