1#![allow(non_snake_case)]
2#![allow(non_camel_case_types)]
3
4use 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}