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

Diff for /OpenXM_contrib/gmp/mpz/Attic/cmpabs_ui.c between version 1.1.1.1 and 1.1.1.2

version 1.1.1.1, 2000/09/09 14:12:50 version 1.1.1.2, 2003/08/25 16:06:33
Line 1 
Line 1 
 /* mpz_cmpabs_ui.c -- Compare a mpz_t a with an mp_limb_t b.  Return positive,  /* mpz_cmpabs_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, 1997, 2000 Free Software Foundation,  Copyright 1991, 1993, 1994, 1995, 1997, 2000, 2001, 2002 Free Software
 Inc.  Foundation, Inc.
   
 This file is part of the GNU MP Library.  This file is part of the GNU MP Library.
   
Line 25  MA 02111-1307, USA. */
Line 25  MA 02111-1307, USA. */
 #include "gmp-impl.h"  #include "gmp-impl.h"
   
 int  int
 #if __STDC__  
 mpz_cmpabs_ui (mpz_srcptr u, unsigned long int v_digit)  mpz_cmpabs_ui (mpz_srcptr u, unsigned long int v_digit)
 #else  
 mpz_cmpabs_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);
   
   usize = ABS (usize);    un = ABS (un);
   
   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;
     }      }
   
   #if GMP_NAIL_BITS != 0
     if (v_digit > GMP_NUMB_MAX)
       {
         if (un == 2)
           {
             ul = up[0] + (up[1] << GMP_NUMB_BITS);
   
             if (ul > v_digit)
               return 1;
             if (ul < v_digit)
               return -1;
             return 0;
           }
       }
   #endif
   
   return 1;    return 1;
 }  }

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

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