flint_sys/
padic_mat.rs

1#![allow(non_snake_case)]
2#![allow(non_camel_case_types)]
3
4//! *See the [FLINT documentation](http://flintlib.org/doc/padic_mat.html).
5
6use crate::deps::*;
7use crate::flint::*;
8use crate::fmpq_mat::fmpq_mat_struct;
9use crate::fmpz::fmpz;
10use crate::fmpz_mat::fmpz_mat_struct;
11use crate::padic::{padic_ctx_struct, padic_struct};
12use libc::{c_int, FILE};
13
14#[repr(C)]
15#[derive(Debug, Copy, Clone)]
16pub struct padic_mat_struct {
17    pub mat: fmpz_mat_struct,
18    pub val: mp_limb_signed_t,
19    pub N: mp_limb_signed_t,
20}
21
22pub type padic_mat_t = [padic_mat_struct; 1usize];
23
24extern "C" {
25    pub fn padic_mat(A: *mut padic_mat_struct) -> *mut fmpz_mat_struct;
26    pub fn padic_mat_entry(
27        A: *mut padic_mat_struct,
28        i: mp_limb_signed_t,
29        j: mp_limb_signed_t,
30    ) -> *mut fmpz;
31    pub fn padic_mat_get_val(A: *mut padic_mat_struct) -> mp_limb_signed_t;
32    pub fn padic_mat_get_prec(A: *mut padic_mat_struct) -> mp_limb_signed_t;
33    pub fn padic_mat_nrows(A: *mut padic_mat_struct) -> mp_limb_signed_t;
34    pub fn padic_mat_ncols(A: *mut padic_mat_struct) -> mp_limb_signed_t;
35    pub fn padic_mat_init(A: *mut padic_mat_struct, r: mp_limb_signed_t, c: mp_limb_signed_t);
36    pub fn padic_mat_init2(
37        A: *mut padic_mat_struct,
38        r: mp_limb_signed_t,
39        c: mp_limb_signed_t,
40        prec: mp_limb_signed_t,
41    );
42    pub fn padic_mat_clear(A: *mut padic_mat_struct);
43    pub fn _padic_mat_canonicalise(A: *mut padic_mat_struct, ctx: *mut padic_ctx_struct);
44    pub fn _padic_mat_reduce(A: *mut padic_mat_struct, ctx: *mut padic_ctx_struct);
45    pub fn padic_mat_reduce(A: *mut padic_mat_struct, ctx: *mut padic_ctx_struct);
46    pub fn padic_mat_is_empty(A: *mut padic_mat_struct) -> c_int;
47    pub fn padic_mat_is_square(A: *mut padic_mat_struct) -> c_int;
48    pub fn padic_mat_is_canonical(A: *mut padic_mat_struct, ctx: *mut padic_ctx_struct) -> c_int;
49    pub fn padic_mat_is_reduced(A: *mut padic_mat_struct, ctx: *mut padic_ctx_struct) -> c_int;
50    pub fn padic_mat_set(
51        B: *mut padic_mat_struct,
52        A: *mut padic_mat_struct,
53        ctx: *mut padic_ctx_struct,
54    );
55    pub fn padic_mat_swap(A: *mut padic_mat_struct, B: *mut padic_mat_struct);
56    pub fn padic_mat_zero(A: *mut padic_mat_struct);
57    pub fn padic_mat_one(A: *mut padic_mat_struct);
58    pub fn padic_mat_set_fmpq_mat(
59        B: *mut padic_mat_struct,
60        A: *mut fmpq_mat_struct,
61        ctx: *mut padic_ctx_struct,
62    );
63    pub fn padic_mat_get_fmpq_mat(
64        B: *mut fmpq_mat_struct,
65        A: *mut padic_mat_struct,
66        ctx: *mut padic_ctx_struct,
67    );
68    pub fn padic_mat_get_entry_padic(
69        rop: *mut padic_struct,
70        op: *mut padic_mat_struct,
71        i: mp_limb_signed_t,
72        j: mp_limb_signed_t,
73        ctx: *mut padic_ctx_struct,
74    );
75    pub fn padic_mat_set_entry_padic(
76        rop: *mut padic_mat_struct,
77        i: mp_limb_signed_t,
78        j: mp_limb_signed_t,
79        op: *mut padic_struct,
80        ctx: *mut padic_ctx_struct,
81    );
82    pub fn padic_mat_equal(A: *mut padic_mat_struct, B: *mut padic_mat_struct) -> c_int;
83    pub fn padic_mat_is_zero(A: *mut padic_mat_struct) -> c_int;
84    pub fn padic_mat_fprint(
85        file: *mut FILE,
86        A: *mut padic_mat_struct,
87        ctx: *mut padic_ctx_struct,
88    ) -> c_int;
89    pub fn padic_mat_fprint_pretty(
90        file: *mut FILE,
91        A: *mut padic_mat_struct,
92        ctx: *mut padic_ctx_struct,
93    ) -> c_int;
94    pub fn padic_mat_print(A: *mut padic_mat_struct, ctx: *mut padic_ctx_struct) -> c_int;
95    pub fn padic_mat_print_pretty(A: *mut padic_mat_struct, ctx: *mut padic_ctx_struct) -> c_int;
96    pub fn padic_mat_randtest(
97        mat: *mut padic_mat_struct,
98        state: *mut flint_rand_s,
99        ctx: *mut padic_ctx_struct,
100    );
101    pub fn padic_mat_transpose(B: *mut padic_mat_struct, A: *mut padic_mat_struct);
102    pub fn _padic_mat_add(
103        C: *mut padic_mat_struct,
104        A: *mut padic_mat_struct,
105        B: *mut padic_mat_struct,
106        ctx: *mut padic_ctx_struct,
107    );
108    pub fn padic_mat_add(
109        C: *mut padic_mat_struct,
110        A: *mut padic_mat_struct,
111        B: *mut padic_mat_struct,
112        ctx: *mut padic_ctx_struct,
113    );
114    pub fn _padic_mat_sub(
115        C: *mut padic_mat_struct,
116        A: *mut padic_mat_struct,
117        B: *mut padic_mat_struct,
118        ctx: *mut padic_ctx_struct,
119    );
120    pub fn padic_mat_sub(
121        C: *mut padic_mat_struct,
122        A: *mut padic_mat_struct,
123        B: *mut padic_mat_struct,
124        ctx: *mut padic_ctx_struct,
125    );
126    pub fn _padic_mat_neg(B: *mut padic_mat_struct, A: *mut padic_mat_struct);
127    pub fn padic_mat_neg(
128        B: *mut padic_mat_struct,
129        A: *mut padic_mat_struct,
130        ctx: *mut padic_ctx_struct,
131    );
132    pub fn _padic_mat_scalar_mul_padic(
133        B: *mut padic_mat_struct,
134        A: *mut padic_mat_struct,
135        c: *mut padic_struct,
136        ctx: *mut padic_ctx_struct,
137    );
138    pub fn padic_mat_scalar_mul_padic(
139        B: *mut padic_mat_struct,
140        A: *mut padic_mat_struct,
141        c: *mut padic_struct,
142        ctx: *mut padic_ctx_struct,
143    );
144    pub fn _padic_mat_scalar_mul_fmpz(
145        B: *mut padic_mat_struct,
146        A: *mut padic_mat_struct,
147        c: *mut fmpz,
148        ctx: *mut padic_ctx_struct,
149    );
150    pub fn padic_mat_scalar_mul_fmpz(
151        B: *mut padic_mat_struct,
152        A: *mut padic_mat_struct,
153        c: *mut fmpz,
154        ctx: *mut padic_ctx_struct,
155    );
156    pub fn padic_mat_scalar_div_fmpz(
157        B: *mut padic_mat_struct,
158        A: *mut padic_mat_struct,
159        c: *mut fmpz,
160        ctx: *mut padic_ctx_struct,
161    );
162    pub fn padic_mat_mul(
163        C: *mut padic_mat_struct,
164        A: *mut padic_mat_struct,
165        B: *mut padic_mat_struct,
166        ctx: *mut padic_ctx_struct,
167    );
168}