Example #1
0
/* c += a * b */
void
s_mpv_mul_d_add(const mp_digit *a, mp_size a_len,
                mp_digit b, mp_digit *c)
{
    EXPAND_256(s_mpv_mul_d_add_MUL256)
    *c = carry;
}
Example #2
0
/* c = a * b */
void s_mpv_mul_d(const mp_digit *a, mp_size a_len, 
			mp_digit b, mp_digit *c)
{
#if defined(DO_NOT_EXPAND)
  mp_digit carry = 0;
  while (a_len--) {
    mp_digit a_i = *a++;
    mp_digit a0b0, a1b1;

    MP_MUL_DxD(a_i, b, a1b1, a0b0);

    a0b0 += carry;
    if (a0b0 < carry)
      ++a1b1;
    *c++ = a0b0;
    carry = a1b1;
  }
#else
  EXPAND_256(s_mpv_mul_d_MUL256)
#endif
  *c = carry;
}