YoushouldhavereceivedcopiesoftheGNUGeneralPublicLicenseandthe GNULesserGeneralPublicLicensealongwiththeGNUMPLibrary.Ifnot,
see https://www.gnu.org/licenses/. */
#include"gmp-impl.h"
int
mpf_cmp (mpf_srcptr u, mpf_srcptr v) __GMP_NOTHROW
{
mp_srcptr up, vp;
mp_size_t usize, vsize;
mp_exp_t uexp, vexp; int cmp; int usign;
/* 1. Are the signs different? */ if ((usize ^ vsize) >= 0)
{ /* U and V are both non-negative or both negative. */ if (usize == 0) /* vsize >= 0 */ return -(vsize != 0); if (vsize == 0) /* usize >= 0 */ return usize != 0; /* Fall out. */
} else
{ /* Either U or V is negative, but not both. */ return usign;
}
/* U and V have the same sign and are both non-zero. */
uexp = EXP(u);
vexp = EXP(v);
/* 2. Are the exponents different? */ if (uexp > vexp) return usign; if (uexp < vexp) return -usign;
usize = ABS (usize);
vsize = ABS (vsize);
up = PTR (u);
vp = PTR (v);
#define STRICT_MPF_NORMALIZATION 0 #if ! STRICT_MPF_NORMALIZATION /* Ignore zeroes at the low end of U and V. */ do {
mp_limb_t tl;
tl = up[0];
MPN_STRIP_LOW_ZEROS_NOT_ZERO (up, usize, tl);
tl = vp[0];
MPN_STRIP_LOW_ZEROS_NOT_ZERO (vp, vsize, tl);
} while (0); #endif
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.