Esempio n. 1
0
void
var_set_zero(struct variable *var)
{
	assert(var != NULL);

	var->type = VAR_BIGNUM;
	mpl_zero(&var->bnum);

}
Esempio n. 2
0
int
mpl_shr(mpl_int *a, unsigned int nr)
{
    _mpl_int_t *dst, *src;
    unsigned int nbits, ndigs;
    int i, n;

    if (nr == 0 || mpl_iszero(a))
        return MPL_OK;

    if (nr >= mpl_nr_bits(a)) {
        mpl_zero(a);
        return MPL_OK;
    }

    ndigs = nr / MPL_INT_BITS;
    nbits = nr % MPL_INT_BITS;

    n = a->top + 1 - ndigs;
    dst = a->dig;
    src = a->dig + ndigs;

    if (nbits > 0) {
        _mpl_int_t mask, shift;

        mask = (~(_mpl_int_t)0 & MPL_INT_MASK) >> (MPL_INT_BITS - nbits);
        shift = MPL_INT_BITS - nbits;

        for (i = 1; i < n; i++) {
            *dst = *src >> nbits;
            *dst |= (*(src+1) & mask) << shift;
            ++dst;
            ++src;
        }

        *dst = *src >> nbits;

    } else {