1/* mpz_cdiv_q -- Division rounding the quotient towards +infinity. The 2 remainder gets the opposite sign as the denominator. 3 4Copyright 1994, 1995, 1996, 2000, 2001, 2005 Free Software Foundation, Inc. 5 6This file is part of the GNU MP Library. 7 8The GNU MP Library is free software; you can redistribute it and/or modify 9it under the terms of the GNU Lesser General Public License as published by 10the Free Software Foundation; either version 3 of the License, or (at your 11option) any later version. 12 13The GNU MP Library is distributed in the hope that it will be useful, but 14WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 15or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 16License for more details. 17 18You should have received a copy of the GNU Lesser General Public License 19along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */ 20 21#include "gmp.h" 22#include "gmp-impl.h" 23 24void 25mpz_cdiv_q (mpz_ptr quot, mpz_srcptr dividend, mpz_srcptr divisor) 26{ 27 mp_size_t dividend_size = dividend->_mp_size; 28 mp_size_t divisor_size = divisor->_mp_size; 29 mpz_t rem; 30 TMP_DECL; 31 32 TMP_MARK; 33 34 MPZ_TMP_INIT (rem, ABS (divisor_size)); 35 36 mpz_tdiv_qr (quot, rem, dividend, divisor); 37 38 if ((divisor_size ^ dividend_size) >= 0 && rem->_mp_size != 0) 39 mpz_add_ui (quot, quot, 1L); 40 41 TMP_FREE; 42} 43