/* Copyright (c) 2009 Ian Piumarta
 * All rights reserved.
 * See the file COPYING for details.
 */

#include "_mpint.h"

/* quo = quo / n (answer the remainer) */

mp_digit_t mp_div_d(mp_t *quo, mp_digit_t n)
{
  if (n < 2) return 0;
  if (mp_zerop(quo)) return 0;
  mp_digit_t r= 0, *p= quo->bits, *q= p + quo->width;
  do {
    --q;
    mp_digit2_t dd= *q + ((mp_digit2_t)r << MP_BITS), d= dd / n;
    r= dd - d * n;
    *q= d;
  } while (p != q);
  if (!_mp_digitAt(quo, quo->width - 1)) mp_normalise(quo);
  return r;
}

