Skip to content

Commit f2b81e4

Browse files
committed
bindings: auto-generate nmod_*
1 parent cf7248e commit f2b81e4

File tree

12 files changed

+393
-399
lines changed

12 files changed

+393
-399
lines changed

bin/all_rst_to_pxd.sh

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -71,13 +71,13 @@ modules=(
7171
#"fq_zech"
7272
"mag"
7373
#"mpoly"
74-
#"nmod_mat"
74+
"nmod_mat"
7575
#"nmod_mpoly_factor"
7676
#"nmod_mpoly"
77-
#"nmod_poly_factor"
78-
#"nmod_poly"
79-
#"nmod"
80-
#"nmod_vec"
77+
"nmod_poly_factor"
78+
"nmod_poly"
79+
"nmod"
80+
"nmod_vec"
8181
"partitions"
8282
"ulong_extras"
8383
)

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ build-backend = "mesonpy"
5959
# resolved.
6060
max-line-length = 120
6161
ignore = ['E129','E501','E741','E743']
62-
exclude = 'src/flint/flintlib/.*'
62+
exclude = 'src/flint/flintlib/functions.*'
6363

6464
[tool.spin]
6565
package = "flint"
Lines changed: 30 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,34 @@
1-
from flint.flintlib.types.flint cimport mp_limb_t, mp_bitcnt_t, ulong, nmod_t
2-
from flint.flintlib.functions.fmpz cimport fmpz_t
1+
from flint.flintlib.types.flint cimport nmod_t, ulong
2+
from flint.flintlib.types.fmpz cimport fmpz_t
33

4-
cdef extern from "flint/nmod.h":
5-
# TODO add macros
4+
# unknown type nmod_discrete_log_pohlig_hellman_t
5+
6+
# .. macro:: NMOD_BITS(mod)
7+
# .. macro:: NMOD_CAN_USE_SHOUP(mod)
8+
# .. macro:: NMOD_RED2(r, a_hi, a_lo, mod)
9+
# .. macro:: NMOD_RED(r, a, mod)
10+
# .. macro:: NMOD2_RED2(r, a_hi, a_lo, mod)
11+
# .. macro:: NMOD_RED3(r, a_hi, a_me, a_lo, mod)
12+
# .. macro:: NMOD_MUL_PRENORM(res, a, b, mod)
13+
# .. macro:: NMOD_MUL_FULLWORD(res, a, b, mod)
14+
# .. macro:: NMOD_ADDMUL(r, a, b, mod)
615

7-
# from here on is parsed
8-
void nmod_init(nmod_t * mod, mp_limb_t n)
9-
mp_limb_t _nmod_add(mp_limb_t a, mp_limb_t b, nmod_t mod)
10-
mp_limb_t nmod_add(mp_limb_t a, mp_limb_t b, nmod_t mod)
11-
mp_limb_t _nmod_sub(mp_limb_t a, mp_limb_t b, nmod_t mod)
12-
mp_limb_t nmod_sub(mp_limb_t a, mp_limb_t b, nmod_t mod)
13-
mp_limb_t nmod_neg(mp_limb_t a, nmod_t mod)
14-
mp_limb_t nmod_mul(mp_limb_t a, mp_limb_t b, nmod_t mod)
15-
mp_limb_t _nmod_mul_fullword(mp_limb_t a, mp_limb_t b, nmod_t mod)
16-
mp_limb_t nmod_inv(mp_limb_t a, nmod_t mod)
17-
mp_limb_t nmod_div(mp_limb_t a, mp_limb_t b, nmod_t mod)
18-
mp_limb_t nmod_pow_ui(mp_limb_t a, ulong e, nmod_t mod)
19-
mp_limb_t nmod_pow_fmpz(mp_limb_t a, const fmpz_t e, nmod_t mod)
16+
cdef extern from "flint/nmod.h":
17+
void nmod_init(nmod_t * mod, ulong n)
18+
ulong _nmod_add(ulong a, ulong b, nmod_t mod)
19+
ulong nmod_add(ulong a, ulong b, nmod_t mod)
20+
ulong _nmod_sub(ulong a, ulong b, nmod_t mod)
21+
ulong nmod_sub(ulong a, ulong b, nmod_t mod)
22+
ulong nmod_neg(ulong a, nmod_t mod)
23+
ulong nmod_mul(ulong a, ulong b, nmod_t mod)
24+
ulong _nmod_mul_fullword(ulong a, ulong b, nmod_t mod)
25+
ulong nmod_inv(ulong a, nmod_t mod)
26+
ulong nmod_div(ulong a, ulong b, nmod_t mod)
27+
int nmod_divides(ulong * a, ulong b, ulong c, nmod_t mod)
28+
ulong nmod_pow_ui(ulong a, ulong e, nmod_t mod)
29+
ulong nmod_pow_fmpz(ulong a, const fmpz_t e, nmod_t mod)
2030
# void nmod_discrete_log_pohlig_hellman_init(nmod_discrete_log_pohlig_hellman_t L)
2131
# void nmod_discrete_log_pohlig_hellman_clear(nmod_discrete_log_pohlig_hellman_t L)
22-
# double nmod_discrete_log_pohlig_hellman_precompute_prime(nmod_discrete_log_pohlig_hellman_t L, mp_limb_t p)
23-
# mp_limb_t nmod_discrete_log_pohlig_hellman_primitive_root(const nmod_discrete_log_pohlig_hellman_t L)
24-
# ulong nmod_discrete_log_pohlig_hellman_run(const nmod_discrete_log_pohlig_hellman_t L, mp_limb_t y)
25-
26-
cdef extern from "flint/fmpz.h":
27-
mp_limb_t fmpz_get_nmod(const fmpz_t f, nmod_t mod)
32+
# double nmod_discrete_log_pohlig_hellman_precompute_prime(nmod_discrete_log_pohlig_hellman_t L, ulong p)
33+
# ulong nmod_discrete_log_pohlig_hellman_primitive_root(const nmod_discrete_log_pohlig_hellman_t L)
34+
# ulong nmod_discrete_log_pohlig_hellman_run(const nmod_discrete_log_pohlig_hellman_t L, ulong y)
Lines changed: 44 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,55 @@
1-
from flint.flintlib.types.flint cimport mp_limb_t, flint_rand_t, mp_ptr
2-
from flint.flintlib.types.flint cimport mp_srcptr, slong, ulong
3-
from flint.flintlib.functions.nmod cimport nmod_t
41
from flint.flintlib.functions.nmod_poly cimport nmod_poly_t
5-
from flint.flintlib.functions.fmpz cimport fmpz_t
2+
from flint.flintlib.types.flint cimport flint_rand_t, nn_ptr, nn_srcptr, slong, ulong
3+
from flint.flintlib.types.fmpz cimport fmpz_t
4+
from flint.flintlib.types.nmod cimport nmod_mat_t
65

7-
cdef extern from "flint/nmod_mat.h":
8-
ctypedef struct nmod_mat_struct:
9-
mp_limb_t * entries
10-
long r
11-
long c
12-
mp_limb_t ** rows
13-
nmod_t mod
14-
ctypedef nmod_mat_struct nmod_mat_t[1]
6+
# unknown type FILE
7+
# unknown type thread_pool_handle
8+
9+
# .. macro:: nmod_mat_entry(mat, i, j)
1510

16-
# from here on is parsed
17-
void nmod_mat_init(nmod_mat_t mat, slong rows, slong cols, mp_limb_t n)
18-
void nmod_mat_init_set(nmod_mat_t mat, nmod_mat_t src)
11+
cdef extern from "flint/nmod_mat.h":
12+
void nmod_mat_init(nmod_mat_t mat, slong rows, slong cols, ulong n)
13+
void nmod_mat_init_set(nmod_mat_t mat, const nmod_mat_t src)
1914
void nmod_mat_clear(nmod_mat_t mat)
20-
void nmod_mat_set(nmod_mat_t mat, nmod_mat_t src)
15+
void nmod_mat_set(nmod_mat_t mat, const nmod_mat_t src)
2116
void nmod_mat_swap(nmod_mat_t mat1, nmod_mat_t mat2)
2217
void nmod_mat_swap_entrywise(nmod_mat_t mat1, nmod_mat_t mat2)
23-
mp_limb_t nmod_mat_entry(nmod_mat_t mat, long i, long j)
24-
# MACRO nmod_mat_entry(nmod_mat_t mat, slong i, slong j)
25-
mp_limb_t nmod_mat_get_entry(const nmod_mat_t mat, slong i, slong j)
26-
mp_limb_t * nmod_mat_entry_ptr(const nmod_mat_t mat, slong i, slong j)
27-
void nmod_mat_set_entry(nmod_mat_t mat, slong i, slong j, mp_limb_t x)
28-
slong nmod_mat_nrows(nmod_mat_t mat)
29-
slong nmod_mat_ncols(nmod_mat_t mat)
18+
ulong nmod_mat_get_entry(const nmod_mat_t mat, slong i, slong j)
19+
ulong * nmod_mat_entry_ptr(const nmod_mat_t mat, slong i, slong j)
20+
void nmod_mat_set_entry(nmod_mat_t mat, slong i, slong j, ulong x)
21+
slong nmod_mat_nrows(const nmod_mat_t mat)
22+
slong nmod_mat_ncols(const nmod_mat_t mat)
3023
void nmod_mat_zero(nmod_mat_t mat)
31-
int nmod_mat_is_zero(nmod_mat_t mat)
24+
int nmod_mat_is_zero(const nmod_mat_t mat)
3225
void nmod_mat_window_init(nmod_mat_t window, const nmod_mat_t mat, slong r1, slong c1, slong r2, slong c2)
3326
void nmod_mat_window_clear(nmod_mat_t window)
3427
void nmod_mat_concat_vertical(nmod_mat_t res, const nmod_mat_t mat1, const nmod_mat_t mat2)
3528
void nmod_mat_concat_horizontal(nmod_mat_t res, const nmod_mat_t mat1, const nmod_mat_t mat2)
36-
void nmod_mat_print_pretty(nmod_mat_t mat)
29+
void nmod_mat_print_pretty(const nmod_mat_t mat)
30+
# int nmod_mat_fprint_pretty(FILE * file, const nmod_mat_t mat)
31+
int nmod_mat_print(const nmod_mat_t mat)
32+
# int nmod_mat_fprint(FILE * f, const nmod_mat_t mat)
3733
void nmod_mat_randtest(nmod_mat_t mat, flint_rand_t state)
3834
void nmod_mat_randfull(nmod_mat_t mat, flint_rand_t state)
39-
int nmod_mat_randpermdiag(nmod_mat_t mat, mp_limb_t * diag, slong n, flint_rand_t state)
40-
void nmod_mat_randrank(nmod_mat_t mat, slong rank, flint_rand_t state)
41-
void nmod_mat_randops(nmod_mat_t mat, slong count, flint_rand_t state)
35+
int nmod_mat_randpermdiag(nmod_mat_t mat, flint_rand_t state, nn_srcptr diag, slong n)
36+
void nmod_mat_randrank(nmod_mat_t mat, flint_rand_t state, slong rank)
37+
void nmod_mat_randops(nmod_mat_t mat, flint_rand_t state, slong count)
4238
void nmod_mat_randtril(nmod_mat_t mat, flint_rand_t state, int unit)
4339
void nmod_mat_randtriu(nmod_mat_t mat, flint_rand_t state, int unit)
44-
int nmod_mat_equal(nmod_mat_t mat1, nmod_mat_t mat2)
40+
int nmod_mat_equal(const nmod_mat_t mat1, const nmod_mat_t mat2)
4541
int nmod_mat_is_zero_row(const nmod_mat_t mat, slong i)
46-
void nmod_mat_transpose(nmod_mat_t B, nmod_mat_t A)
42+
void nmod_mat_transpose(nmod_mat_t B, const nmod_mat_t A)
4743
void nmod_mat_swap_rows(nmod_mat_t mat, slong * perm, slong r, slong s)
4844
void nmod_mat_swap_cols(nmod_mat_t mat, slong * perm, slong r, slong s)
4945
void nmod_mat_invert_rows(nmod_mat_t mat, slong * perm)
5046
void nmod_mat_invert_cols(nmod_mat_t mat, slong * perm)
51-
void nmod_mat_add(nmod_mat_t C, nmod_mat_t A, nmod_mat_t B)
52-
void nmod_mat_sub(nmod_mat_t C, nmod_mat_t A, nmod_mat_t B)
53-
void nmod_mat_neg(nmod_mat_t A, nmod_mat_t B)
54-
void nmod_mat_scalar_mul(nmod_mat_t B, const nmod_mat_t A, mp_limb_t c)
55-
void nmod_mat_scalar_addmul_ui(nmod_mat_t dest, const nmod_mat_t X, const nmod_mat_t Y, const mp_limb_t b)
47+
void nmod_mat_permute_rows(nmod_mat_t mat, const slong * perm_act, slong * perm_store)
48+
void nmod_mat_add(nmod_mat_t C, const nmod_mat_t A, const nmod_mat_t B)
49+
void nmod_mat_sub(nmod_mat_t C, const nmod_mat_t A, const nmod_mat_t B)
50+
void nmod_mat_neg(nmod_mat_t A, const nmod_mat_t B)
51+
void nmod_mat_scalar_mul(nmod_mat_t B, const nmod_mat_t A, ulong c)
52+
void nmod_mat_scalar_addmul_ui(nmod_mat_t dest, const nmod_mat_t X, const nmod_mat_t Y, const ulong b)
5653
void nmod_mat_scalar_mul_fmpz(nmod_mat_t res, const nmod_mat_t M, const fmpz_t c)
5754
void nmod_mat_mul(nmod_mat_t C, const nmod_mat_t A, const nmod_mat_t B)
5855
void _nmod_mat_mul_classical_op(nmod_mat_t D, const nmod_mat_t C, const nmod_mat_t A, const nmod_mat_t B, int op)
@@ -64,27 +61,27 @@ cdef extern from "flint/nmod_mat.h":
6461
int nmod_mat_mul_blas(nmod_mat_t C, const nmod_mat_t A, const nmod_mat_t B)
6562
void nmod_mat_addmul(nmod_mat_t D, const nmod_mat_t C, const nmod_mat_t A, const nmod_mat_t B)
6663
void nmod_mat_submul(nmod_mat_t D, const nmod_mat_t C, const nmod_mat_t A, const nmod_mat_t B)
67-
void nmod_mat_mul_nmod_vec(mp_limb_t * c, const nmod_mat_t A, const mp_limb_t * b, slong blen)
68-
void nmod_mat_mul_nmod_vec_ptr(mp_limb_t * const * c, const nmod_mat_t A, const mp_limb_t * const * b, slong blen)
69-
void nmod_mat_nmod_vec_mul(mp_limb_t * c, const mp_limb_t * a, slong alen, const nmod_mat_t B)
70-
void nmod_mat_nmod_vec_mul_ptr(mp_limb_t * const * c, const mp_limb_t * const * a, slong alen, const nmod_mat_t B)
64+
void nmod_mat_mul_nmod_vec(ulong * c, const nmod_mat_t A, const ulong * b, slong blen)
65+
void nmod_mat_mul_nmod_vec_ptr(ulong * const * c, const nmod_mat_t A, const ulong * const * b, slong blen)
66+
void nmod_mat_nmod_vec_mul(ulong * c, const ulong * a, slong alen, const nmod_mat_t B)
67+
void nmod_mat_nmod_vec_mul_ptr(ulong * const * c, const ulong * const * a, slong alen, const nmod_mat_t B)
7168
void _nmod_mat_pow(nmod_mat_t dest, const nmod_mat_t mat, ulong pow)
72-
void nmod_mat_pow(nmod_mat_t dest, nmod_mat_t mat, ulong pow)
73-
mp_limb_t nmod_mat_trace(const nmod_mat_t mat)
74-
mp_limb_t nmod_mat_det_howell(const nmod_mat_t A)
75-
mp_limb_t nmod_mat_det(const nmod_mat_t A)
69+
void nmod_mat_pow(nmod_mat_t dest, const nmod_mat_t mat, ulong pow)
70+
ulong nmod_mat_trace(const nmod_mat_t mat)
71+
ulong nmod_mat_det_howell(const nmod_mat_t A)
72+
ulong nmod_mat_det(const nmod_mat_t A)
7673
slong nmod_mat_rank(const nmod_mat_t A)
77-
int nmod_mat_inv(nmod_mat_t B, nmod_mat_t A)
74+
int nmod_mat_inv(nmod_mat_t B, const nmod_mat_t A)
7875
void nmod_mat_solve_tril(nmod_mat_t X, const nmod_mat_t L, const nmod_mat_t B, int unit)
7976
void nmod_mat_solve_tril_classical(nmod_mat_t X, const nmod_mat_t L, const nmod_mat_t B, int unit)
8077
void nmod_mat_solve_tril_recursive(nmod_mat_t X, const nmod_mat_t L, const nmod_mat_t B, int unit)
8178
void nmod_mat_solve_triu(nmod_mat_t X, const nmod_mat_t U, const nmod_mat_t B, int unit)
8279
void nmod_mat_solve_triu_classical(nmod_mat_t X, const nmod_mat_t U, const nmod_mat_t B, int unit)
8380
void nmod_mat_solve_triu_recursive(nmod_mat_t X, const nmod_mat_t U, const nmod_mat_t B, int unit)
84-
int nmod_mat_solve(nmod_mat_t X, nmod_mat_t A, nmod_mat_t B)
81+
int nmod_mat_solve(nmod_mat_t X, const nmod_mat_t A, const nmod_mat_t B)
8582
int nmod_mat_can_solve_inner(slong * rank, slong * perm, slong * pivots, nmod_mat_t X, const nmod_mat_t A, const nmod_mat_t B)
86-
int nmod_mat_can_solve(nmod_mat_t X, nmod_mat_t A, nmod_mat_t B)
87-
int nmod_mat_solve_vec(mp_limb_t * x, nmod_mat_t A, mp_limb_t * b)
83+
int nmod_mat_can_solve(nmod_mat_t X, const nmod_mat_t A, const nmod_mat_t B)
84+
int nmod_mat_solve_vec(nn_ptr x, const nmod_mat_t A, nn_srcptr b)
8885
slong nmod_mat_lu(slong * P, nmod_mat_t A, int rank_check)
8986
slong nmod_mat_lu_classical(slong * P, nmod_mat_t A, int rank_check)
9087
slong nmod_mat_lu_classical_delayed(slong * P, nmod_mat_t A, int rank_check)
@@ -99,5 +96,3 @@ cdef extern from "flint/nmod_mat.h":
9996
void nmod_mat_minpoly(nmod_poly_t p, const nmod_mat_t M)
10097
void nmod_mat_strong_echelon_form(nmod_mat_t A)
10198
slong nmod_mat_howell_form(nmod_mat_t A)
102-
# not in doc
103-
int nmod_mat_is_square(nmod_mat_t mat)

0 commit comments

Comments
 (0)