flint_sys/
fmpz_vec.rs

1#![allow(non_camel_case_types)]
2// TODO: nmod
3
4//! See the [FLINT documentation](http://flintlib.org/doc/fmpz_vec.html).
5
6use crate::deps::*;
7use crate::flint::*;
8use crate::fmpz::fmpz;
9use libc::{c_int, FILE};
10
11extern "C" {
12    pub fn _fmpz_vec_init(len: mp_limb_signed_t) -> *mut fmpz;
13    pub fn _fmpz_vec_clear(vec: *mut fmpz, len: mp_limb_signed_t);
14    pub fn _fmpz_vec_randtest(
15        f: *mut fmpz,
16        state: *const flint_rand_s,
17        len: mp_limb_signed_t,
18        bits: mp_limb_t,
19    );
20    pub fn _fmpz_vec_randtest_unsigned(
21        f: *mut fmpz,
22        state: *const flint_rand_s,
23        len: mp_limb_signed_t,
24        bits: mp_limb_t,
25    );
26    pub fn _fmpz_vec_max_bits(vec: *const fmpz, len: mp_limb_signed_t) -> mp_limb_signed_t;
27    pub fn _fmpz_vec_max_bits_ref(vec: *const fmpz, len: mp_limb_signed_t) -> mp_limb_signed_t;
28    pub fn _fmpz_vec_sum_max_bits(
29        sumabs: *mut mp_limb_signed_t,
30        maxabs: *mut mp_limb_signed_t,
31        coeffs: *const fmpz,
32        length: mp_limb_signed_t,
33    );
34    pub fn _fmpz_vec_max_limbs(vec: *const fmpz, len: mp_limb_signed_t) -> mp_size_t;
35    pub fn _fmpz_vec_height(height: *mut fmpz, vec: *const fmpz, len: mp_limb_signed_t);
36    pub fn _fmpz_vec_height_index(vec: *const fmpz, len: mp_limb_signed_t) -> mp_limb_signed_t;
37    pub fn _fmpz_vec_fprint(file: *mut FILE, vec: *const fmpz, len: mp_limb_signed_t) -> c_int;
38    pub fn _fmpz_vec_print(vec: *const fmpz, len: mp_limb_signed_t) -> c_int;
39    pub fn _fmpz_vec_fread(
40        file: *const FILE,
41        vec: *mut *mut fmpz,
42        len: *mut mp_limb_signed_t,
43    ) -> c_int;
44    pub fn _fmpz_vec_read(vec: *mut *mut fmpz, len: *mut mp_limb_signed_t) -> c_int;
45    /*
46    pub fn _fmpz_vec_set_nmod_vec(
47        res: *mut fmpz,
48        poly: mp_srcptr,
49        len: mp_limb_signed_t,
50        mod_: nmod_t,
51    );
52    pub fn _fmpz_vec_get_nmod_vec(
53        res: mp_ptr,
54        poly: *const fmpz,
55        len: mp_limb_signed_t,
56        mod_: nmod_t,
57    );
58    */
59    pub fn _fmpz_vec_get_fft(
60        coeffs_f: *mut *mut mp_limb_t,
61        coeffs_m: *const fmpz,
62        l: mp_limb_signed_t,
63        length: mp_limb_signed_t,
64    ) -> mp_limb_signed_t;
65    pub fn _fmpz_vec_set_fft(
66        coeffs_m: *mut fmpz,
67        length: mp_limb_signed_t,
68        coeffs_f: *const mp_ptr,
69        limbs: mp_limb_signed_t,
70        sign: mp_limb_signed_t,
71    );
72    pub fn _fmpz_vec_get_d_vec_2exp(
73        appv: *mut f64,
74        vec: *const fmpz,
75        len: mp_limb_signed_t,
76    ) -> mp_limb_signed_t;
77    //pub fn _fmpz_vec_get_mpf_vec(appv: *mut mpf, vec: *const fmpz, len: mp_limb_signed_t);
78    pub fn _fmpz_vec_set(vec1: *mut fmpz, vec2: *const fmpz, len2: mp_limb_signed_t);
79    pub fn _fmpz_vec_swap(vec1: *mut fmpz, vec2: *mut fmpz, len2: mp_limb_signed_t);
80    pub fn _fmpz_vec_zero(vec: *mut fmpz, len: mp_limb_signed_t);
81    pub fn _fmpz_vec_neg(vec1: *mut fmpz, vec2: *const fmpz, len2: mp_limb_signed_t);
82    pub fn _fmpz_vec_scalar_abs(vec1: *mut fmpz, vec2: *const fmpz, len2: mp_limb_signed_t);
83    pub fn _fmpz_vec_equal(vec1: *const fmpz, vec2: *const fmpz, len: mp_limb_signed_t) -> c_int;
84    pub fn _fmpz_vec_is_zero(vec: *const fmpz, len: mp_limb_signed_t) -> c_int;
85    pub fn _fmpz_vec_max(
86        vec1: *mut fmpz,
87        vec2: *const fmpz,
88        vec3: *const fmpz,
89        len: mp_limb_signed_t,
90    );
91    pub fn _fmpz_vec_max_inplace(vec1: *mut fmpz, vec2: *const fmpz, len: mp_limb_signed_t);
92    pub fn _fmpz_vec_min(
93        vec1: *mut fmpz,
94        vec2: *const fmpz,
95        vec3: *const fmpz,
96        len: mp_limb_signed_t,
97    );
98    pub fn _fmpz_vec_min_inplace(vec1: *mut fmpz, vec2: *const fmpz, len: mp_limb_signed_t);
99    pub fn _fmpz_vec_sort(vec: *mut fmpz, len: mp_limb_signed_t);
100    pub fn _fmpz_vec_add(
101        res: *mut fmpz,
102        vec1: *const fmpz,
103        vec2: *const fmpz,
104        len2: mp_limb_signed_t,
105    );
106    pub fn _fmpz_vec_sub(
107        res: *mut fmpz,
108        vec1: *const fmpz,
109        vec2: *const fmpz,
110        len2: mp_limb_signed_t,
111    );
112    pub fn _fmpz_vec_scalar_mul_si(
113        vec1: *mut fmpz,
114        vec2: *const fmpz,
115        len2: mp_limb_signed_t,
116        c: mp_limb_signed_t,
117    );
118    pub fn _fmpz_vec_scalar_mul_ui(
119        vec1: *mut fmpz,
120        vec2: *const fmpz,
121        len2: mp_limb_signed_t,
122        c: mp_limb_t,
123    );
124    pub fn _fmpz_vec_scalar_mul_fmpz(
125        vec1: *mut fmpz,
126        vec2: *const fmpz,
127        len2: mp_limb_signed_t,
128        x: *const fmpz,
129    );
130    pub fn _fmpz_vec_scalar_mul_2exp(
131        vec1: *mut fmpz,
132        vec2: *const fmpz,
133        len2: mp_limb_signed_t,
134        exp: mp_limb_t,
135    );
136    pub fn _fmpz_vec_scalar_divexact_fmpz(
137        vec1: *mut fmpz,
138        vec2: *const fmpz,
139        len2: mp_limb_signed_t,
140        x: *const fmpz,
141    );
142    pub fn _fmpz_vec_scalar_divexact_si(
143        vec1: *mut fmpz,
144        vec2: *const fmpz,
145        len2: mp_limb_signed_t,
146        c: mp_limb_signed_t,
147    );
148    pub fn _fmpz_vec_scalar_divexact_ui(
149        vec1: *mut fmpz,
150        vec2: *const fmpz,
151        len2: mp_limb_signed_t,
152        c: mp_limb_t,
153    );
154    pub fn _fmpz_vec_scalar_fdiv_q_fmpz(
155        vec1: *mut fmpz,
156        vec2: *const fmpz,
157        len2: mp_limb_signed_t,
158        c: *const fmpz,
159    );
160    pub fn _fmpz_vec_scalar_fdiv_q_si(
161        vec1: *mut fmpz,
162        vec2: *const fmpz,
163        len2: mp_limb_signed_t,
164        c: mp_limb_signed_t,
165    );
166    pub fn _fmpz_vec_scalar_fdiv_q_ui(
167        vec1: *mut fmpz,
168        vec2: *const fmpz,
169        len2: mp_limb_signed_t,
170        c: mp_limb_t,
171    );
172    pub fn _fmpz_vec_scalar_fdiv_q_2exp(
173        vec1: *mut fmpz,
174        vec2: *const fmpz,
175        len2: mp_limb_signed_t,
176        exp: mp_limb_t,
177    );
178    pub fn _fmpz_vec_scalar_fdiv_r_2exp(
179        vec1: *mut fmpz,
180        vec2: *const fmpz,
181        len2: mp_limb_signed_t,
182        exp: mp_limb_t,
183    );
184    pub fn _fmpz_vec_scalar_tdiv_q_fmpz(
185        vec1: *mut fmpz,
186        vec2: *const fmpz,
187        len2: mp_limb_signed_t,
188        c: *const fmpz,
189    );
190    pub fn _fmpz_vec_scalar_tdiv_q_si(
191        vec1: *mut fmpz,
192        vec2: *const fmpz,
193        len2: mp_limb_signed_t,
194        c: mp_limb_signed_t,
195    );
196    pub fn _fmpz_vec_scalar_tdiv_q_ui(
197        vec1: *mut fmpz,
198        vec2: *const fmpz,
199        len2: mp_limb_signed_t,
200        c: mp_limb_t,
201    );
202    pub fn _fmpz_vec_scalar_tdiv_q_2exp(
203        vec1: *mut fmpz,
204        vec2: *const fmpz,
205        len2: mp_limb_signed_t,
206        exp: mp_limb_t,
207    );
208    pub fn _fmpz_vec_scalar_addmul_si(
209        vec1: *mut fmpz,
210        vec2: *const fmpz,
211        len2: mp_limb_signed_t,
212        c: mp_limb_signed_t,
213    );
214    pub fn _fmpz_vec_scalar_addmul_fmpz(
215        poly1: *mut fmpz,
216        poly2: *const fmpz,
217        len2: mp_limb_signed_t,
218        x: *const fmpz,
219    );
220    pub fn _fmpz_vec_scalar_addmul_si_2exp(
221        vec1: *mut fmpz,
222        vec2: *const fmpz,
223        len2: mp_limb_signed_t,
224        c: mp_limb_signed_t,
225        exp: mp_limb_t,
226    );
227    pub fn _fmpz_vec_scalar_submul_si(
228        vec1: *mut fmpz,
229        vec2: *const fmpz,
230        len2: mp_limb_signed_t,
231        c: mp_limb_signed_t,
232    );
233    pub fn _fmpz_vec_scalar_submul_fmpz(
234        vec1: *mut fmpz,
235        vec2: *const fmpz,
236        len2: mp_limb_signed_t,
237        x: *const fmpz,
238    );
239    pub fn _fmpz_vec_scalar_submul_si_2exp(
240        vec1: *mut fmpz,
241        vec2: *const fmpz,
242        len2: mp_limb_signed_t,
243        c: mp_limb_signed_t,
244        exp: mp_limb_t,
245    );
246    pub fn _fmpz_vec_sum(res: *mut fmpz, vec: *const fmpz, len: mp_limb_signed_t);
247    pub fn _fmpz_vec_prod(res: *mut fmpz, vec: *const fmpz, len: mp_limb_signed_t);
248    pub fn _fmpz_vec_scalar_mod_fmpz(
249        res: *mut fmpz,
250        vec: *const fmpz,
251        len: mp_limb_signed_t,
252        p: *const fmpz,
253    );
254    pub fn _fmpz_vec_scalar_smod_fmpz(
255        res: *mut fmpz,
256        vec: *const fmpz,
257        len: mp_limb_signed_t,
258        p: *const fmpz,
259    );
260    pub fn _fmpz_vec_content(res: *mut fmpz, vec: *const fmpz, len: mp_limb_signed_t);
261    pub fn _fmpz_vec_content_chained(res: *mut fmpz, vec: *const fmpz, len: mp_limb_signed_t);
262    pub fn _fmpz_vec_lcm(res: *mut fmpz, vec: *const fmpz, len: mp_limb_signed_t);
263    pub fn _fmpz_vec_dot(
264        res: *mut fmpz,
265        vec1: *const fmpz,
266        vec2: *const fmpz,
267        len2: mp_limb_signed_t,
268    );
269    pub fn _fmpz_vec_dot_ptr(
270        c: *mut fmpz,
271        vec1: *const fmpz,
272        vec2: *mut *mut fmpz,
273        offset: mp_limb_signed_t,
274        len: mp_limb_signed_t,
275    );
276}