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
41from 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