xref: /dragonfly/contrib/gmp/mpq/equal.c (revision d2d4b659)
14b6a78b7SSimon Schubert /* mpq_equal(u,v) -- Compare U, V.  Return non-zero if they are equal, zero
24b6a78b7SSimon Schubert    if they are non-equal.
34b6a78b7SSimon Schubert 
44b6a78b7SSimon Schubert Copyright 1996, 2001, 2002 Free Software Foundation, Inc.
54b6a78b7SSimon Schubert 
64b6a78b7SSimon Schubert This file is part of the GNU MP Library.
74b6a78b7SSimon Schubert 
84b6a78b7SSimon Schubert The GNU MP Library is free software; you can redistribute it and/or modify
94b6a78b7SSimon Schubert it under the terms of the GNU Lesser General Public License as published by
104b6a78b7SSimon Schubert the Free Software Foundation; either version 3 of the License, or (at your
114b6a78b7SSimon Schubert option) any later version.
124b6a78b7SSimon Schubert 
134b6a78b7SSimon Schubert The GNU MP Library is distributed in the hope that it will be useful, but
144b6a78b7SSimon Schubert WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
154b6a78b7SSimon Schubert or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
164b6a78b7SSimon Schubert License for more details.
174b6a78b7SSimon Schubert 
184b6a78b7SSimon Schubert You should have received a copy of the GNU Lesser General Public License
194b6a78b7SSimon Schubert along with the GNU MP Library.  If not, see http://www.gnu.org/licenses/.  */
204b6a78b7SSimon Schubert 
214b6a78b7SSimon Schubert #include "gmp.h"
224b6a78b7SSimon Schubert #include "gmp-impl.h"
234b6a78b7SSimon Schubert 
244b6a78b7SSimon Schubert int
mpq_equal(mpq_srcptr op1,mpq_srcptr op2)25*d2d4b659SJohn Marino mpq_equal (mpq_srcptr op1, mpq_srcptr op2) __GMP_NOTHROW
264b6a78b7SSimon Schubert {
274b6a78b7SSimon Schubert   mp_size_t  num1_size, num2_size, den1_size, den2_size, i;
284b6a78b7SSimon Schubert   mp_srcptr  num1_ptr,  num2_ptr,  den1_ptr,  den2_ptr;
294b6a78b7SSimon Schubert 
304b6a78b7SSimon Schubert   /* need fully canonical for correct results */
314b6a78b7SSimon Schubert   ASSERT_MPQ_CANONICAL (op1);
324b6a78b7SSimon Schubert   ASSERT_MPQ_CANONICAL (op2);
334b6a78b7SSimon Schubert 
344b6a78b7SSimon Schubert   num1_size = op1->_mp_num._mp_size;
354b6a78b7SSimon Schubert   num2_size = op2->_mp_num._mp_size;
364b6a78b7SSimon Schubert   if (num1_size != num2_size)
374b6a78b7SSimon Schubert     return 0;
384b6a78b7SSimon Schubert 
394b6a78b7SSimon Schubert   num1_ptr = op1->_mp_num._mp_d;
404b6a78b7SSimon Schubert   num2_ptr = op2->_mp_num._mp_d;
414b6a78b7SSimon Schubert   num1_size = ABS (num1_size);
424b6a78b7SSimon Schubert   for (i = 0; i < num1_size; i++)
434b6a78b7SSimon Schubert     if (num1_ptr[i] != num2_ptr[i])
444b6a78b7SSimon Schubert       return 0;
454b6a78b7SSimon Schubert 
464b6a78b7SSimon Schubert   den1_size = op1->_mp_den._mp_size;
474b6a78b7SSimon Schubert   den2_size = op2->_mp_den._mp_size;
484b6a78b7SSimon Schubert   if (den1_size != den2_size)
494b6a78b7SSimon Schubert     return 0;
504b6a78b7SSimon Schubert 
514b6a78b7SSimon Schubert   den1_ptr = op1->_mp_den._mp_d;
524b6a78b7SSimon Schubert   den2_ptr = op2->_mp_den._mp_d;
534b6a78b7SSimon Schubert   for (i = 0; i < den1_size; i++)
544b6a78b7SSimon Schubert     if (den1_ptr[i] != den2_ptr[i])
554b6a78b7SSimon Schubert       return 0;
564b6a78b7SSimon Schubert 
574b6a78b7SSimon Schubert   return 1;
584b6a78b7SSimon Schubert }
59