=================================================================== RCS file: /home/cvs/OpenXM_contrib/gmp/mpz/Attic/add.c,v retrieving revision 1.1.1.2 retrieving revision 1.1.1.3 diff -u -p -r1.1.1.2 -r1.1.1.3 --- OpenXM_contrib/gmp/mpz/Attic/add.c 2000/09/09 14:12:46 1.1.1.2 +++ OpenXM_contrib/gmp/mpz/Attic/add.c 2003/08/25 16:06:32 1.1.1.3 @@ -1,6 +1,6 @@ -/* mpz_add -- Add two integers. +/* mpz_add -- add integers. -Copyright (C) 1991, 1993, 1994, 1996, 2000 Free Software Foundation, Inc. +Copyright 2001 Free Software Foundation, Inc. This file is part of the GNU MP Library. @@ -19,105 +19,6 @@ along with the GNU MP Library; see the file COPYING.LI the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include "gmp.h" -#include "gmp-impl.h" -#ifdef BERKELEY_MP -#include "mp.h" -#endif -#ifndef BERKELEY_MP -void -#if __STDC__ -mpz_add (mpz_ptr w, mpz_srcptr u, mpz_srcptr v) -#else -mpz_add (w, u, v) - mpz_ptr w; - mpz_srcptr u; - mpz_srcptr v; -#endif -#else /* BERKELEY_MP */ -void -#if __STDC__ -madd (mpz_srcptr u, mpz_srcptr v, mpz_ptr w) -#else -madd (u, v, w) - mpz_srcptr u; - mpz_srcptr v; - mpz_ptr w; -#endif -#endif /* BERKELEY_MP */ -{ - mp_srcptr up, vp; - mp_ptr wp; - mp_size_t usize, vsize, wsize; - mp_size_t abs_usize; - mp_size_t abs_vsize; - - usize = u->_mp_size; - vsize = v->_mp_size; - abs_usize = ABS (usize); - abs_vsize = ABS (vsize); - - if (abs_usize < abs_vsize) - { - /* Swap U and V. */ - MPZ_SRCPTR_SWAP (u, v); - MP_SIZE_T_SWAP (usize, vsize); - MP_SIZE_T_SWAP (abs_usize, abs_vsize); - } - - /* True: ABS_USIZE >= ABS_VSIZE. */ - - /* If not space for w (and possible carry), increase space. */ - wsize = abs_usize + 1; - if (w->_mp_alloc < wsize) - _mpz_realloc (w, wsize); - - /* These must be after realloc (u or v may be the same as w). */ - up = u->_mp_d; - vp = v->_mp_d; - wp = w->_mp_d; - - if ((usize ^ vsize) < 0) - { - /* U and V have different sign. Need to compare them to determine - which operand to subtract from which. */ - - /* This test is right since ABS_USIZE >= ABS_VSIZE. */ - if (abs_usize != abs_vsize) - { - mpn_sub (wp, up, abs_usize, vp, abs_vsize); - wsize = abs_usize; - MPN_NORMALIZE (wp, wsize); - if (usize < 0) - wsize = -wsize; - } - else if (mpn_cmp (up, vp, abs_usize) < 0) - { - mpn_sub_n (wp, vp, up, abs_usize); - wsize = abs_usize; - MPN_NORMALIZE (wp, wsize); - if (usize >= 0) - wsize = -wsize; - } - else - { - mpn_sub_n (wp, up, vp, abs_usize); - wsize = abs_usize; - MPN_NORMALIZE (wp, wsize); - if (usize < 0) - wsize = -wsize; - } - } - else - { - /* U and V have same sign. Add them. */ - mp_limb_t cy_limb = mpn_add (wp, up, abs_usize, vp, abs_vsize); - wp[abs_usize] = cy_limb; - wsize = abs_usize + cy_limb; - if (usize < 0) - wsize = -wsize; - } - - w->_mp_size = wsize; -} +#define OPERATION_add +#include "aors.h"