for (an = MIN_AN + (MIN_AN & 1); an < MAX_AN; an+=2)
{
mp_size_t itch;
mp_limb_t p_before, p_after, s_before, s_after;
bit = an / 2 * GMP_NUMB_BITS
+ gmp_urandomm_ui (rands, an / 2 * GMP_NUMB_BITS - 1);
mpn_zero (ap, an);
mpn_zero (pp, an * 2);
pp [an - 1] |= GMP_NUMB_HIGHBIT;
pp [bit / GMP_NUMB_BITS] |= CNST_LIMB (1) << (bit % GMP_NUMB_BITS);
mpn_sqrtrem (ap, NULL, pp, an); /* We need {ap, an} such that {ap + an/2, an/2} is zero and the result {pp, 2*an} is such that the sum
{pp, an/2} + {pp + an/2, an/2} gives a carry. */
mpn_random2 (pp-1, an * 2 + 2);
p_before = pp[-1];
p_after = pp[an * 2];
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.