summaryrefslogtreecommitdiff
path: root/mpz
diff options
context:
space:
mode:
authorKevin Ryde <user42@zip.com.au>2001-10-02 01:06:31 +0200
committerKevin Ryde <user42@zip.com.au>2001-10-02 01:06:31 +0200
commite7baf667b27d6367636de66c41a3a001875cf650 (patch)
tree7583b5e8a41199fd3e2067a2096d463944094d35 /mpz
parentf6a2f8d89684f687c219ce028ddbef37d39ccc57 (diff)
downloadgmp-e7baf667b27d6367636de66c41a3a001875cf650.tar.gz
* mpz/aors.h: Renamed from mpz/aors.c.
Diffstat (limited to 'mpz')
-rw-r--r--mpz/aors.c134
1 files changed, 0 insertions, 134 deletions
diff --git a/mpz/aors.c b/mpz/aors.c
deleted file mode 100644
index 16e16f4d1..000000000
--- a/mpz/aors.c
+++ /dev/null
@@ -1,134 +0,0 @@
-/* mpz_add, mpz_sub -- add or subtract integers.
-
-Copyright 1991, 1993, 1994, 1996, 2000 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Lesser General Public License as published by
-the Free Software Foundation; either version 2.1 of the License, or (at your
-option) any later version.
-
-The GNU MP Library is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
-License for more details.
-
-You should have received a copy of the GNU Lesser General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-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"
-#ifdef OPERATION_add
-#define FUNCTION madd
-#define VARIATION
-#endif
-#ifdef OPERATION_sub
-#define FUNCTION msub
-#define VARIATION -
-#endif
-#define ARGUMENTS mpz_srcptr u, mpz_srcptr v, mpz_ptr w
-
-#else /* normal GMP */
-
-#ifdef OPERATION_add
-#define FUNCTION mpz_add
-#define VARIATION
-#endif
-#ifdef OPERATION_sub
-#define FUNCTION mpz_sub
-#define VARIATION -
-#endif
-#define ARGUMENTS mpz_ptr w, mpz_srcptr u, mpz_srcptr v
-
-#endif
-
-#ifndef FUNCTION
-Error, need OPERATION_add or OPERATION_sub
-#endif
-
-
-void
-FUNCTION (ARGUMENTS)
-{
- 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 = VARIATION 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;
-}