コード例 #1
0
ファイル: gmp_wrap.c プロジェクト: fandango-/fricas
void
gmp_wrap_sb_isqrt(char * n1l, char * resl)
{
    WORD_PTR_TYPE n1 = TO_WORD_PTR(n1l);
    mp_size_t l1 = BIGNUM_LENGTH(n1);
    WORD_PTR_TYPE res = TO_WORD_PTR(resl);
    unsigned long l2 = BIGNUM_LENGTH(res);
    gmp_wrap_isqrt(res, l2, n1, l1);
}
コード例 #2
0
ファイル: gmp_wrap.c プロジェクト: fandango-/fricas
void
gmp_wrap_sb_mul(char * n1l, char * n2l, char * resl)
{
    WORD_PTR_TYPE n1 = TO_WORD_PTR(n1l);
    mp_size_t l1 = BIGNUM_LENGTH(n1);
    WORD_PTR_TYPE n2 = TO_WORD_PTR(n2l);
    mp_size_t l2 = BIGNUM_LENGTH(n2);
    WORD_PTR_TYPE res = TO_WORD_PTR(resl);
    mpn_mul(res, n1, l1, n2, l2);
}
コード例 #3
0
ファイル: gmp_wrap.c プロジェクト: acralfs/fricas
void
gmp_sb_isqrt(char * n1l, char * resl)
{
    WORD_PTR_TYPE n1 = TO_WORD_PTR(n1l);
    mp_size_t l1 = BIGNUM_LENGTH(n1);
    WORD_PTR_TYPE res = TO_WORD_PTR(resl);
    unsigned long l2 = BIGNUM_LENGTH(res);
    if (n1[l1 - 1] == 0) {
        l1--;
        res[l2 - 1] = 0;
    }
    mpn_sqrtrem(res, 0, n1, l1);
}
コード例 #4
0
ファイル: gmp_wrap.c プロジェクト: fandango-/fricas
void
gmp_wrap_sb_div_rem(char * n1l, char * n2l, char * quol, char * reml)
{
    WORD_PTR_TYPE n1 = TO_WORD_PTR(n1l);
    mp_size_t l1 = BIGNUM_LENGTH(n1);
    WORD_PTR_TYPE n2 = TO_WORD_PTR(n2l);
    mp_size_t l2 = BIGNUM_LENGTH(n2);
    WORD_PTR_TYPE quo = TO_WORD_PTR(quol);
    WORD_PTR_TYPE rem = TO_WORD_PTR(reml);
    mp_size_t lr = BIGNUM_LENGTH(rem);
    if (n2[l2 - 1] == 0) {
       l2 = l2 - 1;
       rem[lr - 1] = 0;
    }
    mpn_tdiv_qr(quo, rem, 0, n1, l1, n2, l2);
}