public void Create() { using randstate_t state0 = randstate_t.Create(RngAlgorithm.MersenneTwister); using randstate_t state1 = randstate_t.Create(RngAlgorithm.LinearCongruential, 10UL); using mpz_t a = new mpz_t(10); using randstate_t state2 = randstate_t.Create(RngAlgorithm.LinearCongruential, a, 10UL, 10UL); using randstate_t state3 = new randstate_t(state2); }
public void NextPrimeCandidate() { string AsString; using mpz_t a = new mpz_t("622288097498926496141095869268883999563096063592498055290460"); AsString = a.ToString(); Assert.AreEqual("622288097498926496141095869268883999563096063592498055290460", AsString); using randstate_t state = new randstate_t(); using mpz_t b = new(); mpz.next_prime_candidate(b, a, state); AsString = b.ToString(); Assert.AreEqual("622288097498926496141095869268883999563096063592498055290461", AsString); }
public void LikelyPrime() { string AsString; bool IsLikelyPrime; using mpz_t a = new mpz_t("622288097498926496141095869268883999563096063592498055290461"); AsString = a.ToString(); Assert.AreEqual("622288097498926496141095869268883999563096063592498055290461", AsString); using randstate_t state = new randstate_t(); IsLikelyPrime = mpz.likely_prime_p(a, state, 0); Assert.IsTrue(IsLikelyPrime); using mpz_t b = a * 2; IsLikelyPrime = mpz.likely_prime_p(b, state, 0); Assert.IsFalse(IsLikelyPrime); }
/// <summary> /// See https://www.mpfr.org/mpfr-current/mpfr.pdf. /// </summary> /// <param name="rop1">The result operand.</param> /// <param name="state">The state.</param> /// <param name="rnd">The rounding mode.</param> public static int nrandom(mpfr_t rop1, randstate_t state, mpfr_rnd_t rnd) { return(mpfr_nrandom(ref rop1.Value, ref state.Value, (__mpfr_rnd_t)rnd)); }
/// <summary> /// See https://www.mpfr.org/mpfr-current/mpfr.pdf. /// </summary> /// <param name="rop">The result operand.</param> /// <param name="state">The state.</param> public static int urandomb(mpfr_t rop, randstate_t state) { return(mpfr_urandomb(ref rop.Value, ref state.Value)); }