コード例 #1
0
ファイル: ap.c プロジェクト: KoyoA/patterns
long int AP_toint(T x) {
    unsigned long u;
    assert(x);
    u = XP_toint(x->ndigits, x->digits)%(LONG_MAX + 1UL);
    if (x->sign == -1)
        return -(long)u;
    else
        return  (long)u;
}
コード例 #2
0
ファイル: ap.c プロジェクト: KoyoA/patterns
long int AP_modi(T x, long int y) {
    long int rem;
    T r;
    unsigned char d[sizeof (unsigned long)];
    struct T t;
    t.size = sizeof d;
    t.digits = d;
    r = AP_mod(x, set(&t, y));
    rem = XP_toint(r->ndigits, r->digits);
    AP_free(&r);
    return rem;
}
コード例 #3
0
ファイル: mp.c プロジェクト: wonghoifung/reviewing-c
unsigned long MP_modui(T x, unsigned long y) {
	assert(x);
	if (y == 0)
		RAISE(MP_Dividebyzero);
	else if (y < BASE) {
		int r = XP_quotient(nbytes, tmp[2], x, y);
		if (nbits < 8 && y >= (1U<<nbits))
			RAISE(MP_Overflow);
		return r;
	} else if (applyu(MP_modu, tmp[2], x, y))
		RAISE(MP_Overflow);
	return XP_toint(nbytes, tmp[2]);
}
コード例 #4
0
ファイル: mp.c プロジェクト: wonghoifung/reviewing-c
int MP_cmpui(T x, unsigned long y) {
	assert(x);
	if ((int)sizeof y >= nbytes) {
		unsigned long v = XP_toint(nbytes, x);
		if (v < y)
			return -1;
		else if (v > y)
			return 1;
		else
			return 0;
	} else {
		XP_fromint(nbytes, tmp[2], y);
		return XP_cmp(nbytes, x, tmp[2]);
	}
}
コード例 #5
0
ファイル: mp.c プロジェクト: wonghoifung/reviewing-c
unsigned long MP_tointu(T x) {
	unsigned char d[sizeof (unsigned long)];
	assert(x);
	MP_cvtu(8*sizeof d, d, x);
	return XP_toint(sizeof d, d);
}