Skip to content

Commit

Permalink
Merge pull request #65 from deinst/mod_experiment
Browse files Browse the repository at this point in the history
Mod experiment
  • Loading branch information
oscarbenjamin authored Sep 6, 2023
2 parents bf9d0d1 + 8ad8919 commit 4fc536d
Show file tree
Hide file tree
Showing 95 changed files with 3,557 additions and 2,607 deletions.
26 changes: 25 additions & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,32 @@


ext_files = [
("flint._flint", ["src/flint/pyflint.pyx"]), # Main Module
# ("flint._flint", ["src/flint/_flint.pxd"]), # Main Module
("flint.pyflint", ["src/flint/pyflint.pyx"]), # Main Module
# Submodules
("flint.types.fmpz", ["src/flint/types/fmpz.pyx"]),
("flint.types.fmpz_poly", ["src/flint/types/fmpz_poly.pyx"]),
("flint.types.fmpz_mat", ["src/flint/types/fmpz_mat.pyx"]),
("flint.types.fmpz_series", ["src/flint/types/fmpz_series.pyx"]),
("flint.types.fmpq", ["src/flint/types/fmpq.pyx"]),
("flint.types.fmpq_poly", ["src/flint/types/fmpq_poly.pyx"]),
("flint.types.fmpq_mat", ["src/flint/types/fmpq_mat.pyx"]),
("flint.types.fmpq_series", ["src/flint/types/fmpq_series.pyx"]),
("flint.types.nmod", ["src/flint/types/nmod.pyx"]),
("flint.types.nmod_poly", ["src/flint/types/nmod_poly.pyx"]),
("flint.types.nmod_mat", ["src/flint/types/nmod_mat.pyx"]),
("flint.types.nmod_series", ["src/flint/types/nmod_series.pyx"]),
("flint.types.arf", ["src/flint/types/arf.pyx"]),
("flint.types.arb", ["src/flint/types/arb.pyx"]),
("flint.types.arb_poly", ["src/flint/types/arb_poly.pyx"]),
("flint.types.arb_mat", ["src/flint/types/arb_mat.pyx"]),
("flint.types.arb_series", ["src/flint/types/arb_series.pyx"]),
("flint.types.acb", ["src/flint/types/acb.pyx"]),
("flint.types.acb_poly", ["src/flint/types/acb_poly.pyx"]),
("flint.types.acb_mat", ["src/flint/types/acb_mat.pyx"]),
("flint.types.acb_series", ["src/flint/types/acb_series.pyx"]),
("flint.types.fmpz_mpoly", ["src/flint/types/fmpz_mpoly.pyx"]),
("flint.types.dirichlet", ["src/flint/types/dirichlet.pyx"]),
("flint.flint_base.flint_base", ["src/flint/flint_base/flint_base.pyx"]),
("flint.flint_base.flint_context", ["src/flint/flint_base/flint_context.pyx"]),

Expand Down
25 changes: 23 additions & 2 deletions src/flint/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,24 @@
from ._flint import *

from .pyflint import *
from .types.fmpz import *
from .types.fmpz_poly import *
from .types.fmpz_mat import *
from .types.fmpz_series import *
from .types.fmpq import *
from .types.fmpq_poly import *
from .types.fmpq_mat import *
from .types.fmpq_series import *
from .types.nmod import *
from .types.nmod_poly import *
from .types.nmod_mat import *
from .types.nmod_series import *
from .types.arf import *
from .types.arb import *
from .types.arb_poly import *
from .types.arb_mat import *
from .types.arb_series import *
from .types.acb import *
from .types.acb_poly import *
from .types.acb_mat import *
from .types.acb_series import *
from .types.fmpz_mpoly import *
__version__ = '0.4.2'
2,402 changes: 15 additions & 2,387 deletions src/flint/_flint.pxd

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion src/flint/flint_base/flint_context.pxd
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from flint._flint cimport (
from flint.flintlib.arf cimport (
arf_rnd_t,
)

Expand Down
2 changes: 1 addition & 1 deletion src/flint/flint_base/flint_context.pyx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from flint.flintlib.arf cimport ARF_RND_DOWN
from flint._flint cimport (
ARF_RND_DOWN,
flint_cleanup,
flint_get_num_threads,
flint_set_num_threads
Expand Down
Empty file added src/flint/flintlib/__init__.pxd
Empty file.
Empty file added src/flint/flintlib/__init__.py
Empty file.
197 changes: 197 additions & 0 deletions src/flint/flintlib/acb.pxd
Original file line number Diff line number Diff line change
@@ -0,0 +1,197 @@
from flint._flint cimport ulong, slong
from flint.flintlib.arb cimport arb_struct, arb_t, arb_ptr
from flint.flintlib.fmpq cimport fmpq_t
from flint.flintlib.fmpz cimport fmpz_t
from flint.flintlib.arf cimport arf_t
from flint.flintlib.mag cimport mag_t

cdef extern from "acb.h":
ctypedef struct acb_struct:
arb_struct real
arb_struct imag

ctypedef acb_struct * acb_ptr
ctypedef const acb_struct * acb_srcptr
ctypedef acb_struct acb_t[1]

arb_ptr acb_realref(const acb_t x)
arb_ptr acb_imagref(const acb_t x)

acb_ptr _acb_vec_init(long n)
void _acb_vec_clear(acb_ptr v, long n)
void _acb_vec_sort_pretty(acb_ptr vec, long len)
void acb_printd(const acb_t z, long digits)

void acb_init(acb_t x)
void acb_clear(acb_t x)
int acb_is_zero(const acb_t z)
int acb_is_one(const acb_t z)
int acb_is_exact(const acb_t z)
int acb_is_finite(const acb_t x)
void acb_indeterminate(acb_t x)
void acb_zero(acb_t z)
void acb_one(acb_t z)
void acb_onei(acb_t z)
void acb_set(acb_t z, const acb_t x)
void acb_set_round(acb_t z, const acb_t x, long prec)
void acb_neg_round(acb_t z, const acb_t x, long prec)
void acb_swap(acb_t z, acb_t x)
int acb_equal(const acb_t x, const acb_t y)
int acb_eq(const acb_t x, const acb_t y)
int acb_ne(const acb_t x, const acb_t y)
int acb_overlaps(const acb_t x, const acb_t y)
int acb_contains_zero(const acb_t x)
int acb_contains_fmpq(const acb_t x, const fmpq_t y)
int acb_contains_fmpz(const acb_t x, const fmpz_t y)
int acb_contains(const acb_t x, const acb_t y)
int acb_contains_interior(const acb_t x, const acb_t y)
int acb_get_unique_fmpz(fmpz_t z, const acb_t x)
int acb_contains_int(const acb_t x)
void acb_union(acb_t z, const acb_t x, const acb_t y, long prec)
void acb_set_ui(acb_t z, ulong c)
void acb_set_si(acb_t z, long c)
void acb_set_fmpz(acb_t z, const fmpz_t c)
void acb_set_round_fmpz(acb_t z, const fmpz_t y, long prec)
void acb_set_fmpq(acb_t z, const fmpq_t c, long prec)
void acb_set_arb(acb_t z, const arb_t c)
void acb_set_round_arb(acb_t z, const arb_t x, long prec)
void acb_trim(acb_t z, const acb_t x)
void acb_add_error_arf(acb_t x, const arf_t err)
void acb_add_error_mag(acb_t x, const mag_t err)
void acb_get_mag(mag_t z, const acb_t x)
void acb_get_mag_lower(mag_t z, const acb_t x)
void acb_get_abs_ubound_arf(arf_t u, const acb_t z, long prec)
void acb_get_abs_lbound_arf(arf_t u, const acb_t z, long prec)
void acb_get_rad_ubound_arf(arf_t u, const acb_t z, long prec)
void acb_arg(arb_t r, const acb_t z, long prec)
void acb_add(acb_t z, const acb_t x, const acb_t y, long prec)
void acb_sub(acb_t z, const acb_t x, const acb_t y, long prec)
void acb_add_ui(acb_t z, const acb_t x, ulong c, long prec)
void acb_sub_ui(acb_t z, const acb_t x, ulong c, long prec)
void acb_add_fmpz(acb_t z, const acb_t x, const fmpz_t y, long prec)
void acb_add_arb(acb_t z, const acb_t x, const arb_t y, long prec)
void acb_sub_fmpz(acb_t z, const acb_t x, const fmpz_t y, long prec)
void acb_sub_arb(acb_t z, const acb_t x, const arb_t y, long prec)
void acb_neg(acb_t z, const acb_t x)
void acb_conj(acb_t z, const acb_t x)
void acb_abs(arb_t u, const acb_t z, long prec)
void acb_sgn(acb_t u, const acb_t z, long prec)
void acb_csgn(arb_t u, const acb_t z)
void acb_get_real(arb_t u, const acb_t z)
void acb_get_imag(arb_t u, const acb_t z)

void acb_real_abs(acb_t res, const acb_t z, int analytic, long prec)
void acb_real_sgn(acb_t res, const acb_t z, int analytic, long prec)
void acb_real_heaviside(acb_t res, const acb_t z, int analytic, long prec)
void acb_real_floor(acb_t res, const acb_t z, int analytic, long prec)
void acb_real_ceil(acb_t res, const acb_t z, int analytic, long prec)
void acb_real_max(acb_t res, const acb_t x, const acb_t y, int analytic, long prec)
void acb_real_min(acb_t res, const acb_t x, const acb_t y, int analytic, long prec)
void acb_real_sqrtpos(acb_t res, const acb_t z, int analytic, long prec)

void acb_sqrt_analytic(acb_t res, const acb_t z, int analytic, long prec)
void acb_rsqrt_analytic(acb_t res, const acb_t z, int analytic, long prec)
void acb_log_analytic(acb_t res, const acb_t z, int analytic, long prec)
void acb_pow_analytic(acb_t res, const acb_t z, const acb_t w, int analytic, long prec)

void acb_mul_ui(acb_t z, const acb_t x, ulong y, long prec)
void acb_mul_si(acb_t z, const acb_t x, long y, long prec)
void acb_mul_fmpz(acb_t z, const acb_t x, const fmpz_t y, long prec)
void acb_mul_arb(acb_t z, const acb_t x, const arb_t y, long prec)
void acb_mul_onei(acb_t z, const acb_t x)
void acb_mul(acb_t z, const acb_t x, const acb_t y, long prec)
void acb_mul_2exp_si(acb_t z, const acb_t x, long e)
void acb_mul_2exp_fmpz(acb_t z, const acb_t x, const fmpz_t c)
void acb_addmul(acb_t z, const acb_t x, const acb_t y, long prec)
void acb_submul(acb_t z, const acb_t x, const acb_t y, long prec)
void acb_addmul_ui(acb_t z, const acb_t x, ulong y, long prec)
void acb_addmul_si(acb_t z, const acb_t x, long y, long prec)
void acb_submul_ui(acb_t z, const acb_t x, ulong y, long prec)
void acb_submul_si(acb_t z, const acb_t x, long y, long prec)
void acb_addmul_fmpz(acb_t z, const acb_t x, const fmpz_t y, long prec)
void acb_submul_fmpz(acb_t z, const acb_t x, const fmpz_t y, long prec)
void acb_addmul_arb(acb_t z, const acb_t x, const arb_t y, long prec)
void acb_submul_arb(acb_t z, const acb_t x, const arb_t y, long prec)
void acb_inv(acb_t z, const acb_t x, long prec)
void acb_div(acb_t z, const acb_t x, const acb_t y, long prec)
void acb_div_ui(acb_t z, const acb_t x, ulong c, long prec)
void acb_div_si(acb_t z, const acb_t x, long c, long prec)
void acb_div_arb(acb_t z, const acb_t x, const arb_t c, long prec)
void acb_div_fmpz(acb_t z, const acb_t x, const fmpz_t c, long prec)
void acb_cube(acb_t y, const acb_t x, long prec)
void acb_pow_fmpz(acb_t y, const acb_t b, const fmpz_t e, long prec)
void acb_pow_ui(acb_t y, const acb_t b, ulong e, long prec)
void acb_pow_si(acb_t y, const acb_t b, long e, long prec)
void acb_const_pi(acb_t x, long prec)
void acb_log(acb_t r, const acb_t z, long prec)
void acb_exp(acb_t r, const acb_t z, long prec)
void acb_exp_pi_i(acb_t r, const acb_t z, long prec)
void acb_sin(acb_t r, const acb_t z, long prec)
void acb_cos(acb_t r, const acb_t z, long prec)
void acb_sin_cos(acb_t s, acb_t c, const acb_t z, long prec)
void acb_tan(acb_t r, const acb_t z, long prec)
void acb_cot(acb_t r, const acb_t z, long prec)
void acb_sec(acb_t r, const acb_t z, long prec)
void acb_csc(acb_t r, const acb_t z, long prec)
void acb_sin_pi(acb_t r, const acb_t z, long prec)
void acb_cos_pi(acb_t r, const acb_t z, long prec)
void acb_sin_cos_pi(acb_t s, acb_t c, const acb_t z, long prec)
void acb_tan_pi(acb_t r, const acb_t z, long prec)
void acb_cot_pi(acb_t r, const acb_t z, long prec)
void acb_sinh(acb_t r, const acb_t z, long prec)
void acb_cosh(acb_t r, const acb_t z, long prec)
void acb_sinh_cosh(acb_t s, acb_t c, const acb_t z, long prec)
void acb_tanh(acb_t r, const acb_t z, long prec)
void acb_coth(acb_t r, const acb_t z, long prec)
void acb_sech(acb_t r, const acb_t z, long prec)
void acb_csch(acb_t r, const acb_t z, long prec)
void acb_sinc(acb_t r, const acb_t z, long prec)
void acb_sinc_pi(acb_t r, const acb_t z, long prec)
void acb_pow_arb(acb_t z, const acb_t x, const arb_t y, long prec)
void acb_pow(acb_t r, const acb_t x, const acb_t y, long prec)
void acb_sqrt(acb_t y, const acb_t x, long prec)
void acb_rsqrt(acb_t y, const acb_t x, long prec)
void acb_rising_ui_bs(acb_t y, const acb_t x, ulong n, long prec)
void acb_rising_ui_rs(acb_t y, const acb_t x, ulong n, ulong m, long prec)
void acb_rising_ui_rec(acb_t y, const acb_t x, ulong n, long prec)
void acb_rising_ui(acb_t z, const acb_t x, ulong n, long prec)
void acb_rising2_ui_bs(acb_t u, acb_t v, const acb_t x, ulong n, long prec)
void acb_rising2_ui_rs(acb_t u, acb_t v, const acb_t x, ulong n, ulong m, long prec)
void acb_rising2_ui(acb_t u, acb_t v, const acb_t x, ulong n, long prec)
void acb_rising_ui_get_mag(mag_t bound, const acb_t s, ulong n)
void acb_rising(acb_t y, const acb_t x, const acb_t n, long prec)

void acb_gamma(acb_t y, const acb_t x, long prec)
void acb_rgamma(acb_t y, const acb_t x, long prec)
void acb_lgamma(acb_t y, const acb_t x, long prec)
void acb_digamma(acb_t y, const acb_t x, long prec)
void acb_zeta(acb_t z, const acb_t s, long prec)
void acb_hurwitz_zeta(acb_t z, const acb_t s, const acb_t a, long prec)
void acb_polylog(acb_t w, const acb_t s, const acb_t z, long prec)
void acb_polylog_si(acb_t w, long s, const acb_t z, long prec)
void acb_agm1(acb_t m, const acb_t z, long prec)
void acb_agm1_cpx(acb_ptr m, const acb_t z, long len, long prec)
void acb_agm(acb_t res, const acb_t a, const acb_t b, long prec)
void acb_expm1(acb_t r, const acb_t z, long prec)
void acb_log1p(acb_t r, const acb_t z, long prec)
void acb_asin(acb_t r, const acb_t z, long prec)
void acb_acos(acb_t r, const acb_t z, long prec)
void acb_atan(acb_t r, const acb_t z, long prec)
void acb_asinh(acb_t r, const acb_t z, long prec)
void acb_acosh(acb_t r, const acb_t z, long prec)
void acb_atanh(acb_t r, const acb_t z, long prec)
void acb_log_sin_pi(acb_t res, const acb_t z, long prec)

void acb_polygamma(acb_t w, const acb_t s, const acb_t z, long prec)
void acb_log_barnes_g(acb_t w, const acb_t z, long prec)
void acb_barnes_g(acb_t w, const acb_t z, long prec)

void acb_bernoulli_poly_ui(acb_t res, ulong n, const acb_t x, long prec)

void acb_lambertw(acb_t z, const acb_t x, const fmpz_t k, int flags, long prec)

long acb_rel_error_bits(const acb_t x)
long acb_rel_accuracy_bits(const acb_t x)
long acb_bits(const acb_t x)

void acb_root_ui(acb_t z, const acb_t x, ulong k, long prec)
22 changes: 22 additions & 0 deletions src/flint/flintlib/acb_calc.pxd
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
from flint.flintlib.acb cimport acb_t, acb_ptr
from flint.flintlib.mag cimport mag_t

cdef extern from "acb_calc.h":
ctypedef int (*acb_calc_func_t)(acb_ptr out, const acb_t inp, void * param, long order, long prec)

ctypedef struct acb_calc_integrate_opt_struct:
long deg_limit
long eval_limit
long depth_limit
int use_heap
int verbose

ctypedef acb_calc_integrate_opt_struct acb_calc_integrate_opt_t[1]

void acb_calc_integrate_opt_init(acb_calc_integrate_opt_t options)

int acb_calc_integrate(acb_t res, acb_calc_func_t f, void * param,
const acb_t a, const acb_t b,
long goal, const mag_t tol,
const acb_calc_integrate_opt_t options,
long prec)
5 changes: 5 additions & 0 deletions src/flint/flintlib/acb_dft.pxd
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
from flint.flintlib.acb cimport acb_ptr, acb_srcptr

cdef extern from "acb_dft.h":
void acb_dft(acb_ptr w, acb_srcptr v, long n, long prec)
void acb_dft_inverse(acb_ptr w, acb_srcptr v, long n, long prec)
24 changes: 24 additions & 0 deletions src/flint/flintlib/acb_dirichlet.pxd
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
from flint.flintlib.acb cimport acb_t, acb_ptr
from flint.flintlib.dirichlet cimport dirichlet_group_t, dirichlet_char_t
from flint._flint cimport ulong
from flint.flintlib.acb_poly cimport acb_poly_t
from flint.flintlib.fmpz cimport fmpz_t
from flint.flintlib.arb cimport arb_t


cdef extern from "acb_dirichlet.h":
void acb_dirichlet_eta(acb_t res, const acb_t s, long prec)
void acb_dirichlet_chi(acb_t res, const dirichlet_group_t G, const dirichlet_char_t chi, ulong n, long prec)

void acb_dirichlet_l(acb_t res, const acb_t s, const dirichlet_group_t G, const dirichlet_char_t chi, long prec)
void acb_dirichlet_hardy_z(acb_ptr res, const acb_t t, const dirichlet_group_t G, const dirichlet_char_t chi, long len, long prec)
void acb_dirichlet_l_series(acb_poly_t res, const acb_poly_t s, const dirichlet_group_t G, const dirichlet_char_t chi, int deflate, long len, long prec)

void acb_dirichlet_stieltjes(acb_t res, const fmpz_t n, const acb_t a, long prec)

void acb_dirichlet_gram_point(arb_t res, const fmpz_t n, const dirichlet_group_t G, const dirichlet_char_t chi, long prec)
void acb_dirichlet_zeta_zeros(acb_ptr res, const fmpz_t n, long len, long prec)
void acb_dirichlet_zeta_nzeros(arb_t res, const arb_t t, long prec)
void acb_dirichlet_backlund_s(arb_t res, const arb_t t, long prec)
void acb_dirichlet_zeta_zero(acb_t res, const fmpz_t n, long prec)
void acb_dirichlet_zeta_zeros(acb_ptr res, const fmpz_t n, long len, long prec)
16 changes: 16 additions & 0 deletions src/flint/flintlib/acb_elliptic.pxd
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
from flint.flintlib.acb cimport acb_t

cdef extern from "acb_elliptic.h":
void acb_elliptic_rf(acb_t res, const acb_t x, const acb_t y, const acb_t z, int flags, long prec)
void acb_elliptic_rj(acb_t res, const acb_t x, const acb_t y, const acb_t z, const acb_t p, int flags, long prec)
void acb_elliptic_rg(acb_t res, const acb_t x, const acb_t y, const acb_t z, int flags, long prec)
void acb_elliptic_f(acb_t res, const acb_t phi, const acb_t m, int times_pi, long prec)
void acb_elliptic_e_inc(acb_t res, const acb_t phi, const acb_t m, int times_pi, long prec)
void acb_elliptic_pi(acb_t res, const acb_t n, const acb_t m, long prec)
void acb_elliptic_pi_inc(acb_t res, const acb_t n, const acb_t phi, const acb_t m, int times_pi, long prec)
void acb_elliptic_p(acb_t res, const acb_t z, const acb_t tau, long prec)
void acb_elliptic_zeta(acb_t res, const acb_t z, const acb_t tau, long prec)
void acb_elliptic_sigma(acb_t res, const acb_t z, const acb_t tau, long prec)
void acb_elliptic_roots(acb_t e1, acb_t e2, acb_t e3, const acb_t tau, long prec)
void acb_elliptic_invariants(acb_t g2, acb_t g3, const acb_t tau, long prec)
void acb_elliptic_inv_p(acb_t res, const acb_t z, const acb_t tau, long prec)
Loading

0 comments on commit 4fc536d

Please sign in to comment.