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

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

version 1.1.1.2, 2000/09/09 14:12:58 version 1.1.1.3, 2003/08/25 16:06:34
Line 1 
Line 1 
 /* mpz_sqrtrem(root,rem,x) -- Set ROOT to floor(sqrt(X)) and REM  /* mpz_sqrtrem(root,rem,x) -- Set ROOT to floor(sqrt(X)) and REM
    to the remainder, i.e. X - ROOT**2.     to the remainder, i.e. X - ROOT**2.
   
 Copyright (C) 1991, 1993, 1994, 1996, 2000 Free Software Foundation, Inc.  Copyright 1991, 1993, 1994, 1996, 2000, 2001 Free Software Foundation, Inc.
   
 This file is part of the GNU MP Library.  This file is part of the GNU MP Library.
   
Line 27  MA 02111-1307, USA. */
Line 27  MA 02111-1307, USA. */
 #include "mp.h"  #include "mp.h"
 #endif  #endif
   
 #ifndef BERKELEY_MP  
 void  void
 #if __STDC__  #ifndef BERKELEY_MP
 mpz_sqrtrem (mpz_ptr root, mpz_ptr rem, mpz_srcptr op)  mpz_sqrtrem (mpz_ptr root, mpz_ptr rem, mpz_srcptr op)
 #else  
 mpz_sqrtrem (root, rem, op)  
      mpz_ptr root;  
      mpz_ptr rem;  
      mpz_srcptr op;  
 #endif  
 #else /* BERKELEY_MP */  #else /* BERKELEY_MP */
 void  
 #if __STDC__  
 msqrt (mpz_srcptr op, mpz_ptr root, mpz_ptr rem)  msqrt (mpz_srcptr op, mpz_ptr root, mpz_ptr rem)
 #else  
 msqrt (op, root, rem)  
      mpz_srcptr op;  
      mpz_ptr root;  
      mpz_ptr rem;  
 #endif  
 #endif /* BERKELEY_MP */  #endif /* BERKELEY_MP */
 {  {
   mp_size_t op_size, root_size, rem_size;    mp_size_t op_size, root_size, rem_size;
Line 57  msqrt (op, root, rem)
Line 42  msqrt (op, root, rem)
   
   TMP_MARK (marker);    TMP_MARK (marker);
   op_size = op->_mp_size;    op_size = op->_mp_size;
   if (op_size < 0)    if (op_size <= 0)
     SQRT_OF_NEGATIVE;      {
         if (op_size < 0)
           SQRT_OF_NEGATIVE;
         SIZ(root) = 0;
         SIZ(rem) = 0;
         return;
       }
   
   if (rem->_mp_alloc < op_size)    if (rem->_mp_alloc < op_size)
     _mpz_realloc (rem, op_size);      _mpz_realloc (rem, op_size);
Line 77  msqrt (op, root, rem)
Line 68  msqrt (op, root, rem)
           free_me_size = root->_mp_alloc;            free_me_size = root->_mp_alloc;
         }          }
       else        else
         (*_mp_free_func) (root_ptr, root->_mp_alloc * BYTES_PER_MP_LIMB);          (*__gmp_free_func) (root_ptr, root->_mp_alloc * BYTES_PER_MP_LIMB);
   
       root->_mp_alloc = root_size;        root->_mp_alloc = root_size;
       root_ptr = (mp_ptr) (*_mp_allocate_func) (root_size * BYTES_PER_MP_LIMB);        root_ptr = (mp_ptr) (*__gmp_allocate_func) (root_size * BYTES_PER_MP_LIMB);
       root->_mp_d = root_ptr;        root->_mp_d = root_ptr;
     }      }
   else    else
Line 106  msqrt (op, root, rem)
Line 97  msqrt (op, root, rem)
   rem->_mp_size = rem_size;    rem->_mp_size = rem_size;
   
   if (free_me != NULL)    if (free_me != NULL)
     (*_mp_free_func) (free_me, free_me_size * BYTES_PER_MP_LIMB);      (*__gmp_free_func) (free_me, free_me_size * BYTES_PER_MP_LIMB);
   TMP_FREE (marker);    TMP_FREE (marker);
 }  }

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

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