YoushouldhavereceivedcopiesoftheGNUGeneralPublicLicenseandthe GNULesserGeneralPublicLicensealongwiththeGNUMPLibrary.Ifnot,
see https://www.gnu.org/licenses/. */
#include <stdio.h> /* for NULL */ #include"gmp-impl.h"
#if BITS_PER_ULONG > GMP_NUMB_BITS /* avoid warnings about shift amount */ if (v > GMP_NUMB_MAX)
{
mpz_t vz, lw;
mp_limb_t vlimbs[2], wlimbs[2];
if (w == NULL)
{
PTR(lw) = wlimbs;
ALLOC(lw) = 2;
SIZ(lw) = 0;
w = lw;
}
vlimbs[0] = v & GMP_NUMB_MASK;
vlimbs[1] = v >> GMP_NUMB_BITS;
PTR(vz) = vlimbs;
SIZ(vz) = 2;
mpz_gcd (w, u, vz); /* because v!=0 we will have w<=v hence fitting a ulong */
ASSERT (mpz_fits_ulong_p (w)); return mpz_get_ui (w);
} #endif
un = ABSIZ(u);
if (un == 0)
res = v; elseif (v == 0)
{ if (w != NULL)
{ if (u != w)
{
MPZ_NEWALLOC (w, un);
MPN_COPY (PTR(w), PTR(u), un);
}
SIZ(w) = un;
} /* Return u if it fits a ulong, otherwise 0. */
res = PTR(u)[0]; return (un == 1 && res <= ULONG_MAX ? res : 0);
} else
res = mpn_gcd_1 (PTR(u), un, (mp_limb_t) v);
if (w != NULL)
{
MPZ_NEWALLOC (w, 1)[0] = res;
SIZ(w) = res != 0;
} return res;
}
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.