Example #1
0
void
gcry_mpi_div (gcry_mpi_t quot, gcry_mpi_t rem, gcry_mpi_t dividend, gcry_mpi_t divisor, int round)
{
  if (!round)
    {
      if (!rem)
        {
          gcry_mpi_t tmp = mpi_alloc (mpi_get_nlimbs(quot));
          _gcry_mpi_tdiv_qr (quot, tmp, dividend, divisor);
          mpi_free (tmp);
        }
      else
        _gcry_mpi_tdiv_qr (quot, rem, dividend, divisor);
    }
  else if (round < 0)
    {
      if (!rem)
        _gcry_mpi_fdiv_q (quot, dividend, divisor);
      else if (!quot)
        _gcry_mpi_fdiv_r (rem, dividend, divisor);
      else
        _gcry_mpi_fdiv_qr (quot, rem, dividend, divisor);
    }
  else
    log_bug ("mpi rounding to ceiling not yet implemented\n");
}
Example #2
0
void
_gcry_mpi_mod (gcry_mpi_t rem, gcry_mpi_t dividend, gcry_mpi_t divisor)
{
  _gcry_mpi_fdiv_r (rem, dividend, divisor);
}
Example #3
0
void
gcry_mpi_subm( gcry_mpi_t w, gcry_mpi_t u, gcry_mpi_t v, gcry_mpi_t m)
{
    gcry_mpi_sub(w, u, v);
    _gcry_mpi_fdiv_r( w, w, m );
}
Example #4
0
void
gcry_mpi_addm( gcry_mpi_t w, gcry_mpi_t u, gcry_mpi_t v, gcry_mpi_t m)
{
    gcry_mpi_add(w, u, v);
    _gcry_mpi_fdiv_r( w, w, m );
}