YoushouldhavereceivedcopiesoftheGNUGeneralPublicLicenseandthe GNULesserGeneralPublicLicensealongwiththeGNUMPLibrary.Ifnot,
see https://www.gnu.org/licenses/. */
if (UNLIKELY (cy != 0))
{ /* Since the partial remainder fed to mpn_preinv_mu_divappr_q was canonicallyreduced,replacethereturnedvalueofB^(qn-dn)+eps
by the largest possible value. */
mp_size_t i; for (i = 0; i < qn + 1; i++)
tp[i] = GMP_NUMB_MAX;
}
/* The max error of mpn_mu_divappr_q is +4. If the low quotient limb is
smaller than the max error, we cannot trust the quotient. */ if (tp[0] > 4)
{
MPN_COPY (qp, tp + 1, qn);
} else
{
mp_limb_t cy;
mp_ptr pp;
if (cy || mpn_cmp (pp, np, nn) > 0) /* At most is wrong by one, no cycle. */
qh -= mpn_sub_1 (qp, tp + 1, qn, 1); else/* Same as above */
MPN_COPY (qp, tp + 1, qn);
}
} else
{ /* |_______________________| dividend
|________________| divisor */
/* FIXME: When nn = 2dn-1, qn becomes dn-1, and the numerator size passed herebecomes2dn,i.e.,morethannn.Thisshouldn'thurt,sinceonly themostsignificantdn-1limbswillactuallyberead,butitisnot
pretty. */
/* The max error of mpn_mu_divappr_q is +4, but we get an additional
error from the divisor truncation. */ if (tp[0] > 6)
{
MPN_COPY (qp, tp + 1, qn);
} else
{
mp_limb_t cy;
/* FIXME: a shorter product should be enough; we may use already
allocated space... */
rp = TMP_BALLOC_LIMBS (nn);
mpn_mul (rp, dp, dn, tp + 1, qn);
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.