示例#1
0
文件: cache.py 项目: sn6uv/gmpy_cffi
def _init_mpz_cache():
    global mpz_cache, in_mpz_cache
    mpz_cache = []
    in_mpz_cache = cache_size
    for _ in xrange(cache_size):
        mpz = ffi.new("mpz_t")
        gmp.mpz_init(mpz)
        mpz_cache.append(mpz)
示例#2
0
文件: cache.py 项目: sn6uv/gmpy_cffi
def _new_mpz():
    """Return an initialized mpz_t."""
    global in_mpz_cache

    if in_mpz_cache:
        in_mpz_cache -= 1
        return mpz_cache[in_mpz_cache]
    else:
        mpz = ffi.new("mpz_t")
        gmp.mpz_init(mpz)
        return mpz
示例#3
0
def _pyint_to_mpfr(n, a):
    if -sys.maxsize - 1 <= n <= sys.maxsize:
        gmp.mpfr_set_si(a, n, gmp.MPFR_RNDN)
    elif sys.maxsize < n <= MAX_UI:
        gmp.mpfr_set_ui(a, n, gmp.MPFR_RNDN)
    else:
        assert isinstance(n, long)
        tmp_mpz = ffi.new('mpz_t')
        gmp.mpz_init(tmp_mpz)
        _pylong_to_mpz(n, tmp_mpz)
        gmp.mpfr_set_z(a, tmp_mpz, gmp.MPFR_RNDN)
        gmp.mpz_clear(tmp_mpz)
示例#4
0
def _pyint_to_mpfr(n, a):
    if -sys.maxsize - 1 <= n <= sys.maxsize:
        gmp.mpfr_set_si(a, n, gmp.MPFR_RNDN)
    elif sys.maxsize < n <= MAX_UI:
        gmp.mpfr_set_ui(a, n, gmp.MPFR_RNDN)
    else:
        assert isinstance(n, long)
        tmp_mpz = ffi.new('mpz_t')
        gmp.mpz_init(tmp_mpz)
        _pylong_to_mpz(n, tmp_mpz)
        gmp.mpfr_set_z(a, tmp_mpz, gmp.MPFR_RNDN)
        gmp.mpz_clear(tmp_mpz)