summaryrefslogtreecommitdiff
path: root/mpq/neg.c
diff options
context:
space:
mode:
Diffstat (limited to 'mpq/neg.c')
-rw-r--r--mpq/neg.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/mpq/neg.c b/mpq/neg.c
index 066daa4c3..a292cced2 100644
--- a/mpq/neg.c
+++ b/mpq/neg.c
@@ -1,6 +1,6 @@
/* mpq_neg -- negate a rational.
-Copyright 2000, 2001 Free Software Foundation, Inc.
+Copyright 2000, 2001, 2012 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
@@ -30,16 +30,17 @@ mpq_neg (mpq_ptr dst, mpq_srcptr src)
if (src != dst)
{
- mp_size_t num_abs_size = ABS(num_size);
- mp_size_t den_size = SIZ(DEN(src));
+ mp_size_t size;
+ mp_ptr dp;
- MPZ_REALLOC (mpq_numref(dst), num_abs_size);
- MPZ_REALLOC (mpq_denref(dst), den_size);
+ size = ABS(num_size);
+ dp = MPZ_REALLOC (NUM(dst), size);
+ MPN_COPY (dp, PTR(NUM(src)), size);
- MPN_COPY (PTR(NUM(dst)), PTR(NUM(src)), num_abs_size);
- MPN_COPY (PTR(DEN(dst)), PTR(DEN(src)), den_size);
-
- SIZ(DEN(dst)) = den_size;
+ size = SIZ(DEN(src));
+ dp = MPZ_REALLOC (DEN(dst), size);
+ SIZ(DEN(dst)) = size;
+ MPN_COPY (dp, PTR(DEN(src)), size);
}
SIZ(NUM(dst)) = -num_size;