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

Diff for /OpenXM_contrib/gmp/mpf/Attic/ui_sub.c between version 1.1.1.2 and 1.1.1.3

version 1.1.1.2, 2000/09/09 14:13:12 version 1.1.1.3, 2003/08/25 16:06:35
Line 1 
Line 1 
 /* mpf_ui_sub -- Subtract a float from an unsigned long int.  /* mpf_ui_sub -- Subtract a float from an unsigned long int.
   
 Copyright (C) 1993, 1994, 1995, 1996 Free Software Foundation, Inc.  Copyright 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 23  MA 02111-1307, USA. */
Line 23  MA 02111-1307, USA. */
 #include "gmp-impl.h"  #include "gmp-impl.h"
   
 void  void
 #if __STDC__  
 mpf_ui_sub (mpf_ptr r, unsigned long int u, mpf_srcptr v)  mpf_ui_sub (mpf_ptr r, unsigned long int u, mpf_srcptr v)
 #else  
 mpf_ui_sub (r, u, v)  
      mpf_ptr r;  
      unsigned long int u;  
      mpf_srcptr v;  
 #endif  
 {  {
   mp_srcptr up, vp;    mp_srcptr up, vp;
   mp_ptr rp, tp;    mp_ptr rp, tp;
Line 217  mpf_ui_sub (r, u, v)
Line 210  mpf_ui_sub (r, u, v)
                       /* uuuu     */                        /* uuuu     */
                       mp_size_t size, i;                        mp_size_t size, i;
                       size = usize - vsize;                        size = usize - vsize;
                       tp[0] = -up[0];                        tp[0] = -up[0] & GMP_NUMB_MASK;
                       for (i = 1; i < size; i++)                        for (i = 1; i < size; i++)
                         tp[i] = ~up[i];                          tp[i] = ~up[i] & GMP_NUMB_MASK;
                       mpn_sub_n (tp + size, vp, up + size, vsize);                        mpn_sub_n (tp + size, vp, up + size, vsize);
                       mpn_sub_1 (tp + size, tp + size, vsize, (mp_limb_t) 1);                        mpn_sub_1 (tp + size, tp + size, vsize, (mp_limb_t) 1);
                       negate ^= 1;                        negate ^= 1;
Line 236  mpf_ui_sub (r, u, v)
Line 229  mpf_ui_sub (r, u, v)
                     {                      {
                       mp_size_t size, i;                        mp_size_t size, i;
                       size = vsize - usize;                        size = vsize - usize;
                       tp[0] = -vp[0];                        tp[0] = -vp[0] & GMP_NUMB_MASK;
                       for (i = 1; i < size; i++)                        for (i = 1; i < size; i++)
                         tp[i] = ~vp[i];                          tp[i] = ~vp[i] & GMP_NUMB_MASK;
                       mpn_sub_n (tp + size, up, vp + size, usize);                        mpn_sub_n (tp + size, up, vp + size, usize);
                       mpn_sub_1 (tp + size, tp + size, usize, (mp_limb_t) 1);                        mpn_sub_1 (tp + size, tp + size, usize, (mp_limb_t) 1);
                       rsize = vsize;                        rsize = vsize;
Line 294  mpf_ui_sub (r, u, v)
Line 287  mpf_ui_sub (r, u, v)
                   /*   vvvvv  */                    /*   vvvvv  */
                   mp_size_t size, i;                    mp_size_t size, i;
                   size = vsize + ediff - usize;                    size = vsize + ediff - usize;
                   tp[0] = -vp[0];                    tp[0] = -vp[0] & GMP_NUMB_MASK;
                   for (i = 1; i < size; i++)                    for (i = 1; i < size; i++)
                     tp[i] = ~vp[i];                      tp[i] = ~vp[i] & GMP_NUMB_MASK;
                   mpn_sub (tp + size, up, usize, vp + size, usize - ediff);                    mpn_sub (tp + size, up, usize, vp + size, usize - ediff);
                   mpn_sub_1 (tp + size, tp + size, usize, (mp_limb_t) 1);                    mpn_sub_1 (tp + size, tp + size, usize, (mp_limb_t) 1);
                   rsize = vsize + ediff;                    rsize = vsize + ediff;
Line 309  mpf_ui_sub (r, u, v)
Line 302  mpf_ui_sub (r, u, v)
           /*      vv  */            /*      vv  */
           mp_size_t size, i;            mp_size_t size, i;
           size = vsize + ediff - usize;            size = vsize + ediff - usize;
           tp[0] = -vp[0];            tp[0] = -vp[0] & GMP_NUMB_MASK;
           for (i = 1; i < vsize; i++)            for (i = 1; i < vsize; i++)
             tp[i] = ~vp[i];              tp[i] = ~vp[i] & GMP_NUMB_MASK;
           for (i = vsize; i < size; i++)            for (i = vsize; i < size; i++)
             tp[i] = ~(mp_limb_t) 0;              tp[i] = GMP_NUMB_MAX;
           mpn_sub_1 (tp + size, up, usize, (mp_limb_t) 1);            mpn_sub_1 (tp + size, up, usize, (mp_limb_t) 1);
           rsize = size + usize;            rsize = size + usize;
         }          }

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

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