[BACK]Return to cmp_ui.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / gmp / mpz

Diff for /OpenXM_contrib/gmp/mpz/Attic/cmp_ui.c between version 1.1.1.2 and 1.1.1.3

version 1.1.1.2, 2000/09/09 14:12:50 version 1.1.1.3, 2003/08/25 16:06:33
Line 1 
Line 1 
 /* mpz_cmp_ui.c -- Compare a mpz_t a with an mp_limb_t b.  Return positive,  /* mpz_cmp_ui.c -- Compare a mpz_t a with an mp_limb_t b.  Return positive,
   zero, or negative based on if a > b, a == b, or a < b.    zero, or negative based on if a > b, a == b, or a < b.
   
 Copyright (C) 1991, 1993, 1994, 1995, 1996 Free Software Foundation, Inc.  Copyright 1991, 1993, 1994, 1995, 1996, 2001, 2002 Free Software Foundation,
   Inc.
   
 This file is part of the GNU MP Library.  This file is part of the GNU MP Library.
   
Line 24  MA 02111-1307, USA. */
Line 25  MA 02111-1307, USA. */
 #include "gmp-impl.h"  #include "gmp-impl.h"
   
 int  int
 #if __STDC__  
 _mpz_cmp_ui (mpz_srcptr u, unsigned long int v_digit)  _mpz_cmp_ui (mpz_srcptr u, unsigned long int v_digit)
 #else  
 _mpz_cmp_ui (u, v_digit)  
      mpz_srcptr u;  
      unsigned long int v_digit;  
 #endif  
 {  {
   mp_size_t usize = u->_mp_size;    mp_ptr up;
     mp_size_t un;
     mp_limb_t ul;
   
   if (usize == 0)    up = PTR(u);
     un = SIZ(u);
   
     if (un == 0)
     return -(v_digit != 0);      return -(v_digit != 0);
   
   if (usize == 1)    if (un == 1)
     {      {
       mp_limb_t u_digit;        ul = up[0];
         if (ul > v_digit)
       u_digit = u->_mp_d[0];  
       if (u_digit > v_digit)  
         return 1;          return 1;
       if (u_digit < v_digit)        if (ul < v_digit)
         return -1;          return -1;
       return 0;        return 0;
     }      }
   
   return (usize > 0) ? 1 : -1;  #if GMP_NAIL_BITS != 0
     if (v_digit > GMP_NUMB_MAX)
       {
         if (un == 2)
           {
             ul = up[0] + (up[1] << GMP_NUMB_BITS);
   
             if ((up[1] >> GMP_NAIL_BITS) != 0)
               return 1;
   
             if (ul > v_digit)
               return 1;
             if (ul < v_digit)
               return -1;
             return 0;
           }
       }
   #endif
   
     return un > 0 ? 1 : -1;
 }  }

Legend:
Removed from v.1.1.1.2  
changed lines
  Added in v.1.1.1.3

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>