summaryrefslogtreecommitdiff
path: root/gmp/mpq/set.c
diff options
context:
space:
mode:
Diffstat (limited to 'gmp/mpq/set.c')
-rw-r--r--gmp/mpq/set.c50
1 files changed, 20 insertions, 30 deletions
diff --git a/gmp/mpq/set.c b/gmp/mpq/set.c
index fb7bfad49c..5d527be95a 100644
--- a/gmp/mpq/set.c
+++ b/gmp/mpq/set.c
@@ -1,51 +1,41 @@
/* mpq_set(dest,src) -- Set DEST to SRC.
-Copyright 1991, 1994, 1995, 2001, 2012 Free Software Foundation, Inc.
+Copyright 1991, 1994, 1995, 2001 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 either:
-
- * the GNU Lesser General Public License as published by the Free
- Software Foundation; either version 3 of the License, or (at your
- option) any later version.
-
-or
-
- * the GNU General Public License as published by the Free Software
- Foundation; either version 2 of the License, or (at your option) any
- later version.
-
-or both in parallel, as here.
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 3 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 General Public License
-for more details.
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+License for more details.
-You should have received copies of the GNU General Public License and the
-GNU Lesser General Public License along with the GNU MP Library. If not,
-see https://www.gnu.org/licenses/. */
+You should have received a copy of the GNU Lesser General Public License
+along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
#include "gmp.h"
#include "gmp-impl.h"
void
-mpq_set (mpq_ptr dest, mpq_srcptr src)
+mpq_set (MP_RAT *dest, const MP_RAT *src)
{
mp_size_t num_size, den_size;
mp_size_t abs_num_size;
- mp_ptr dp;
- num_size = SIZ(NUM(src));
+ num_size = src->_mp_num._mp_size;
abs_num_size = ABS (num_size);
- dp = MPZ_NEWALLOC (NUM(dest), abs_num_size);
- SIZ(NUM(dest)) = num_size;
- MPN_COPY (dp, PTR(NUM(src)), abs_num_size);
-
- den_size = SIZ(DEN(src));
- dp = MPZ_NEWALLOC (DEN(dest), den_size);
- SIZ(DEN(dest)) = den_size;
- MPN_COPY (dp, PTR(DEN(src)), den_size);
+ if (dest->_mp_num._mp_alloc < abs_num_size)
+ _mpz_realloc (&(dest->_mp_num), abs_num_size);
+ MPN_COPY (dest->_mp_num._mp_d, src->_mp_num._mp_d, abs_num_size);
+ dest->_mp_num._mp_size = num_size;
+
+ den_size = src->_mp_den._mp_size;
+ if (dest->_mp_den._mp_alloc < den_size)
+ _mpz_realloc (&(dest->_mp_den), den_size);
+ MPN_COPY (dest->_mp_den._mp_d, src->_mp_den._mp_d, den_size);
+ dest->_mp_den._mp_size = den_size;
}