diff options
Diffstat (limited to 'mpq/neg.c')
-rw-r--r-- | mpq/neg.c | 19 |
1 files changed, 10 insertions, 9 deletions
@@ -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; |