1use libc::*;
4use crate::deps::*;
5use crate::arb_types::*;
6use crate::flint::*;
7use crate::fmpq_types::*;
8use crate::fmpz_types::*;
9
10
11extern "C" {
12 #[link_name = "arb_mat_entry_ptr__extern"]
13 pub fn arb_mat_entry_ptr(mat: *mut arb_mat_struct, i: slong, j: slong) -> arb_ptr;
14 pub fn arb_mat_init(mat: *mut arb_mat_struct, r: slong, c: slong);
15 pub fn arb_mat_clear(mat: *mut arb_mat_struct);
16 #[link_name = "arb_mat_swap__extern"]
17 pub fn arb_mat_swap(mat1: *mut arb_mat_struct, mat2: *mut arb_mat_struct);
18 pub fn arb_mat_swap_entrywise(mat1: *mut arb_mat_struct, mat2: *mut arb_mat_struct);
19 pub fn arb_mat_window_init(
20 window: *mut arb_mat_struct,
21 mat: *const arb_mat_struct,
22 r1: slong,
23 c1: slong,
24 r2: slong,
25 c2: slong,
26 );
27 #[link_name = "arb_mat_window_clear__extern"]
28 pub fn arb_mat_window_clear(UNUSED_window: *mut arb_mat_struct);
29 pub fn arb_mat_set(dest: *mut arb_mat_struct, src: *const arb_mat_struct);
30 pub fn arb_mat_set_fmpz_mat(dest: *mut arb_mat_struct, src: *const fmpz_mat_struct);
31 pub fn arb_mat_set_round_fmpz_mat(
32 dest: *mut arb_mat_struct,
33 src: *const fmpz_mat_struct,
34 prec: slong,
35 );
36 pub fn arb_mat_set_fmpq_mat(
37 dest: *mut arb_mat_struct,
38 src: *const fmpq_mat_struct,
39 prec: slong,
40 );
41 pub fn arb_mat_randtest(
42 mat: *mut arb_mat_struct,
43 state: *mut flint_rand_struct,
44 prec: slong,
45 mag_bits: slong,
46 );
47 pub fn arb_mat_randtest_cho(
48 mat: *mut arb_mat_struct,
49 state: *mut flint_rand_struct,
50 prec: slong,
51 mag_bits: slong,
52 );
53 pub fn arb_mat_randtest_spd(
54 mat: *mut arb_mat_struct,
55 state: *mut flint_rand_struct,
56 prec: slong,
57 mag_bits: slong,
58 );
59 pub fn arb_mat_fprintd(file: *mut FILE, mat: *const arb_mat_struct, digits: slong);
60 pub fn arb_mat_printd(mat: *const arb_mat_struct, digits: slong);
61 pub fn arb_mat_eq(mat1: *const arb_mat_struct, mat2: *const arb_mat_struct) -> libc::c_int;
62 pub fn arb_mat_ne(mat1: *const arb_mat_struct, mat2: *const arb_mat_struct) -> libc::c_int;
63 pub fn arb_mat_equal(mat1: *const arb_mat_struct, mat2: *const arb_mat_struct) -> libc::c_int;
64 pub fn arb_mat_overlaps(
65 mat1: *const arb_mat_struct,
66 mat2: *const arb_mat_struct,
67 ) -> libc::c_int;
68 pub fn arb_mat_contains(
69 mat1: *const arb_mat_struct,
70 mat2: *const arb_mat_struct,
71 ) -> libc::c_int;
72 pub fn arb_mat_contains_fmpq_mat(
73 mat1: *const arb_mat_struct,
74 mat2: *const fmpq_mat_struct,
75 ) -> libc::c_int;
76 pub fn arb_mat_contains_fmpz_mat(
77 mat1: *const arb_mat_struct,
78 mat2: *const fmpz_mat_struct,
79 ) -> libc::c_int;
80 #[link_name = "arb_mat_is_empty__extern"]
81 pub fn arb_mat_is_empty(mat: *const arb_mat_struct) -> libc::c_int;
82 #[link_name = "arb_mat_is_square__extern"]
83 pub fn arb_mat_is_square(mat: *const arb_mat_struct) -> libc::c_int;
84 pub fn arb_mat_is_exact(A: *const arb_mat_struct) -> libc::c_int;
85 pub fn arb_mat_is_zero(mat: *const arb_mat_struct) -> libc::c_int;
86 pub fn arb_mat_is_finite(mat: *const arb_mat_struct) -> libc::c_int;
87 pub fn arb_mat_is_triu(mat: *const arb_mat_struct) -> libc::c_int;
88 pub fn arb_mat_is_tril(mat: *const arb_mat_struct) -> libc::c_int;
89 #[link_name = "arb_mat_is_diag__extern"]
90 pub fn arb_mat_is_diag(mat: *const arb_mat_struct) -> libc::c_int;
91 pub fn arb_mat_get_mid(B: *mut arb_mat_struct, A: *const arb_mat_struct);
92 pub fn arb_mat_add_error_mag(mat: *mut arb_mat_struct, err: *const mag_struct);
93 pub fn arb_mat_zero(mat: *mut arb_mat_struct);
94 pub fn arb_mat_one(mat: *mut arb_mat_struct);
95 pub fn arb_mat_ones(mat: *mut arb_mat_struct);
96 pub fn arb_mat_indeterminate(mat: *mut arb_mat_struct);
97 pub fn arb_mat_hilbert(mat: *mut arb_mat_struct, prec: slong);
98 pub fn arb_mat_pascal(mat: *mut arb_mat_struct, triangular: libc::c_int, prec: slong);
99 pub fn arb_mat_stirling(mat: *mut arb_mat_struct, kind: libc::c_int, prec: slong);
100 pub fn arb_mat_dct(mat: *mut arb_mat_struct, type_: libc::c_int, prec: slong);
101 pub fn arb_mat_transpose(mat1: *mut arb_mat_struct, mat2: *const arb_mat_struct);
102 pub fn arb_mat_bound_inf_norm(b: *mut mag_struct, A: *const arb_mat_struct);
103 pub fn arb_mat_frobenius_norm(res: *mut arb_struct, A: *const arb_mat_struct, prec: slong);
104 pub fn arb_mat_bound_frobenius_norm(b: *mut mag_struct, A: *const arb_mat_struct);
105 pub fn arb_mat_neg(dest: *mut arb_mat_struct, src: *const arb_mat_struct);
106 pub fn arb_mat_add(
107 res: *mut arb_mat_struct,
108 mat1: *const arb_mat_struct,
109 mat2: *const arb_mat_struct,
110 prec: slong,
111 );
112 pub fn arb_mat_sub(
113 res: *mut arb_mat_struct,
114 mat1: *const arb_mat_struct,
115 mat2: *const arb_mat_struct,
116 prec: slong,
117 );
118 pub fn arb_mat_mul(
119 res: *mut arb_mat_struct,
120 mat1: *const arb_mat_struct,
121 mat2: *const arb_mat_struct,
122 prec: slong,
123 );
124 pub fn arb_mat_mul_classical(
125 C: *mut arb_mat_struct,
126 A: *const arb_mat_struct,
127 B: *const arb_mat_struct,
128 prec: slong,
129 );
130 pub fn arb_mat_mul_threaded(
131 C: *mut arb_mat_struct,
132 A: *const arb_mat_struct,
133 B: *const arb_mat_struct,
134 prec: slong,
135 );
136 pub fn _arb_mat_addmul_rad_mag_fast(
137 C: *mut arb_mat_struct,
138 A: mag_srcptr,
139 B: mag_srcptr,
140 ar: slong,
141 ac: slong,
142 bc: slong,
143 );
144 pub fn arb_mat_mul_block(
145 C: *mut arb_mat_struct,
146 A: *const arb_mat_struct,
147 B: *const arb_mat_struct,
148 prec: slong,
149 );
150 pub fn arb_mat_mul_entrywise(
151 res: *mut arb_mat_struct,
152 mat1: *const arb_mat_struct,
153 mat2: *const arb_mat_struct,
154 prec: slong,
155 );
156 pub fn arb_mat_sqr_classical(B: *mut arb_mat_struct, A: *const arb_mat_struct, prec: slong);
157 pub fn arb_mat_sqr(B: *mut arb_mat_struct, A: *const arb_mat_struct, prec: slong);
158 pub fn arb_mat_pow_ui(
159 B: *mut arb_mat_struct,
160 A: *const arb_mat_struct,
161 exp: ulong,
162 prec: slong,
163 );
164 pub fn arb_mat_scalar_mul_2exp_si(B: *mut arb_mat_struct, A: *const arb_mat_struct, c: slong);
165 pub fn arb_mat_scalar_mul_si(
166 B: *mut arb_mat_struct,
167 A: *const arb_mat_struct,
168 c: slong,
169 prec: slong,
170 );
171 pub fn arb_mat_scalar_mul_fmpz(
172 B: *mut arb_mat_struct,
173 A: *const arb_mat_struct,
174 c: *const fmpz,
175 prec: slong,
176 );
177 pub fn arb_mat_scalar_mul_arb(
178 B: *mut arb_mat_struct,
179 A: *const arb_mat_struct,
180 c: *const arb_struct,
181 prec: slong,
182 );
183 pub fn arb_mat_scalar_addmul_si(
184 B: *mut arb_mat_struct,
185 A: *const arb_mat_struct,
186 c: slong,
187 prec: slong,
188 );
189 pub fn arb_mat_scalar_addmul_fmpz(
190 B: *mut arb_mat_struct,
191 A: *const arb_mat_struct,
192 c: *const fmpz,
193 prec: slong,
194 );
195 pub fn arb_mat_scalar_addmul_arb(
196 B: *mut arb_mat_struct,
197 A: *const arb_mat_struct,
198 c: *const arb_struct,
199 prec: slong,
200 );
201 pub fn arb_mat_scalar_div_si(
202 B: *mut arb_mat_struct,
203 A: *const arb_mat_struct,
204 c: slong,
205 prec: slong,
206 );
207 pub fn arb_mat_scalar_div_fmpz(
208 B: *mut arb_mat_struct,
209 A: *const arb_mat_struct,
210 c: *const fmpz,
211 prec: slong,
212 );
213 pub fn arb_mat_scalar_div_arb(
214 B: *mut arb_mat_struct,
215 A: *const arb_mat_struct,
216 c: *const arb_struct,
217 prec: slong,
218 );
219 pub fn _arb_mat_vector_mul_row(
220 res: arb_ptr,
221 v: arb_srcptr,
222 A: *const arb_mat_struct,
223 prec: slong,
224 );
225 pub fn _arb_mat_vector_mul_col(
226 res: arb_ptr,
227 A: *const arb_mat_struct,
228 v: arb_srcptr,
229 prec: slong,
230 );
231 pub fn arb_mat_vector_mul_row(
232 res: arb_ptr,
233 v: arb_srcptr,
234 A: *const arb_mat_struct,
235 prec: slong,
236 );
237 pub fn arb_mat_vector_mul_col(
238 res: arb_ptr,
239 A: *const arb_mat_struct,
240 v: arb_srcptr,
241 prec: slong,
242 );
243 pub fn arb_mat_swap_rows(mat: *mut arb_mat_struct, perm: *mut slong, r: slong, s: slong);
244 pub fn arb_mat_find_pivot_partial(
245 mat: *const arb_mat_struct,
246 start_row: slong,
247 end_row: slong,
248 c: slong,
249 ) -> slong;
250 pub fn arb_mat_solve_tril_classical(
251 X: *mut arb_mat_struct,
252 L: *const arb_mat_struct,
253 B: *const arb_mat_struct,
254 unit: libc::c_int,
255 prec: slong,
256 );
257 pub fn arb_mat_solve_tril_recursive(
258 X: *mut arb_mat_struct,
259 L: *const arb_mat_struct,
260 B: *const arb_mat_struct,
261 unit: libc::c_int,
262 prec: slong,
263 );
264 pub fn arb_mat_solve_tril(
265 X: *mut arb_mat_struct,
266 L: *const arb_mat_struct,
267 B: *const arb_mat_struct,
268 unit: libc::c_int,
269 prec: slong,
270 );
271 pub fn arb_mat_solve_triu_classical(
272 X: *mut arb_mat_struct,
273 U: *const arb_mat_struct,
274 B: *const arb_mat_struct,
275 unit: libc::c_int,
276 prec: slong,
277 );
278 pub fn arb_mat_solve_triu_recursive(
279 X: *mut arb_mat_struct,
280 U: *const arb_mat_struct,
281 B: *const arb_mat_struct,
282 unit: libc::c_int,
283 prec: slong,
284 );
285 pub fn arb_mat_solve_triu(
286 X: *mut arb_mat_struct,
287 U: *const arb_mat_struct,
288 B: *const arb_mat_struct,
289 unit: libc::c_int,
290 prec: slong,
291 );
292 pub fn arb_mat_lu_classical(
293 P: *mut slong,
294 LU: *mut arb_mat_struct,
295 A: *const arb_mat_struct,
296 prec: slong,
297 ) -> libc::c_int;
298 pub fn arb_mat_lu_recursive(
299 P: *mut slong,
300 LU: *mut arb_mat_struct,
301 A: *const arb_mat_struct,
302 prec: slong,
303 ) -> libc::c_int;
304 pub fn arb_mat_lu(
305 P: *mut slong,
306 LU: *mut arb_mat_struct,
307 A: *const arb_mat_struct,
308 prec: slong,
309 ) -> libc::c_int;
310 pub fn arb_mat_solve_lu_precomp(
311 X: *mut arb_mat_struct,
312 perm: *const slong,
313 A: *const arb_mat_struct,
314 B: *const arb_mat_struct,
315 prec: slong,
316 );
317 pub fn arb_mat_solve(
318 X: *mut arb_mat_struct,
319 A: *const arb_mat_struct,
320 B: *const arb_mat_struct,
321 prec: slong,
322 ) -> libc::c_int;
323 pub fn arb_mat_solve_lu(
324 X: *mut arb_mat_struct,
325 A: *const arb_mat_struct,
326 B: *const arb_mat_struct,
327 prec: slong,
328 ) -> libc::c_int;
329 pub fn arb_mat_solve_precond(
330 X: *mut arb_mat_struct,
331 A: *const arb_mat_struct,
332 B: *const arb_mat_struct,
333 prec: slong,
334 ) -> libc::c_int;
335 pub fn arb_mat_solve_preapprox(
336 X: *mut arb_mat_struct,
337 A: *const arb_mat_struct,
338 B: *const arb_mat_struct,
339 R: *const arb_mat_struct,
340 T: *const arb_mat_struct,
341 prec: slong,
342 ) -> libc::c_int;
343 pub fn arb_mat_approx_mul(
344 C: *mut arb_mat_struct,
345 A: *const arb_mat_struct,
346 B: *const arb_mat_struct,
347 prec: slong,
348 );
349 pub fn arb_mat_approx_solve_triu(
350 X: *mut arb_mat_struct,
351 U: *const arb_mat_struct,
352 B: *const arb_mat_struct,
353 unit: libc::c_int,
354 prec: slong,
355 );
356 pub fn arb_mat_approx_solve_tril(
357 X: *mut arb_mat_struct,
358 L: *const arb_mat_struct,
359 B: *const arb_mat_struct,
360 unit: libc::c_int,
361 prec: slong,
362 );
363 pub fn arb_mat_approx_lu(
364 P: *mut slong,
365 LU: *mut arb_mat_struct,
366 A: *const arb_mat_struct,
367 prec: slong,
368 ) -> libc::c_int;
369 pub fn arb_mat_approx_solve_lu_precomp(
370 X: *mut arb_mat_struct,
371 perm: *const slong,
372 A: *const arb_mat_struct,
373 B: *const arb_mat_struct,
374 prec: slong,
375 );
376 pub fn arb_mat_approx_solve(
377 X: *mut arb_mat_struct,
378 A: *const arb_mat_struct,
379 B: *const arb_mat_struct,
380 prec: slong,
381 ) -> libc::c_int;
382 pub fn arb_mat_approx_inv(
383 X: *mut arb_mat_struct,
384 A: *const arb_mat_struct,
385 prec: slong,
386 ) -> libc::c_int;
387 pub fn arb_mat_inv(
388 X: *mut arb_mat_struct,
389 A: *const arb_mat_struct,
390 prec: slong,
391 ) -> libc::c_int;
392 pub fn arb_mat_det_lu(det: *mut arb_struct, A: *const arb_mat_struct, prec: slong);
393 pub fn arb_mat_det_precond(det: *mut arb_struct, A: *const arb_mat_struct, prec: slong);
394 pub fn arb_mat_det(det: *mut arb_struct, A: *const arb_mat_struct, prec: slong);
395 pub fn _arb_mat_cholesky_banachiewicz(A: *mut arb_mat_struct, prec: slong) -> libc::c_int;
396 pub fn arb_mat_cho(
397 L: *mut arb_mat_struct,
398 A: *const arb_mat_struct,
399 prec: slong,
400 ) -> libc::c_int;
401 pub fn arb_mat_solve_cho_precomp(
402 X: *mut arb_mat_struct,
403 L: *const arb_mat_struct,
404 B: *const arb_mat_struct,
405 prec: slong,
406 );
407 pub fn arb_mat_inv_cho_precomp(X: *mut arb_mat_struct, L: *const arb_mat_struct, prec: slong);
408 pub fn arb_mat_spd_solve(
409 X: *mut arb_mat_struct,
410 A: *const arb_mat_struct,
411 B: *const arb_mat_struct,
412 prec: slong,
413 ) -> libc::c_int;
414 pub fn arb_mat_spd_inv(
415 X: *mut arb_mat_struct,
416 A: *const arb_mat_struct,
417 prec: slong,
418 ) -> libc::c_int;
419 pub fn _arb_mat_ldl_inplace(A: *mut arb_mat_struct, prec: slong) -> libc::c_int;
420 pub fn _arb_mat_ldl_golub_and_van_loan(A: *mut arb_mat_struct, prec: slong) -> libc::c_int;
421 pub fn arb_mat_ldl(
422 L: *mut arb_mat_struct,
423 A: *const arb_mat_struct,
424 prec: slong,
425 ) -> libc::c_int;
426 pub fn arb_mat_solve_ldl_precomp(
427 X: *mut arb_mat_struct,
428 L: *const arb_mat_struct,
429 B: *const arb_mat_struct,
430 prec: slong,
431 );
432 pub fn arb_mat_inv_ldl_precomp(X: *mut arb_mat_struct, L: *const arb_mat_struct, prec: slong);
433 pub fn arb_mat_exp_taylor_sum(
434 S: *mut arb_mat_struct,
435 A: *const arb_mat_struct,
436 N: slong,
437 prec: slong,
438 );
439 pub fn arb_mat_exp(B: *mut arb_mat_struct, A: *const arb_mat_struct, prec: slong);
440 pub fn _arb_mat_charpoly(poly: arb_ptr, mat: *const arb_mat_struct, prec: slong);
441 pub fn arb_mat_charpoly(poly: *mut arb_poly_struct, mat: *const arb_mat_struct, prec: slong);
442 pub fn _arb_mat_companion(mat: *mut arb_mat_struct, poly: arb_srcptr, prec: slong);
443 pub fn arb_mat_companion(mat: *mut arb_mat_struct, poly: *const arb_poly_struct, prec: slong);
444 pub fn arb_mat_trace(trace: *mut arb_struct, mat: *const arb_mat_struct, prec: slong);
445 pub fn _arb_mat_diag_prod(
446 res: *mut arb_struct,
447 A: *const arb_mat_struct,
448 a: slong,
449 b: slong,
450 prec: slong,
451 );
452 pub fn arb_mat_diag_prod(res: *mut arb_struct, A: *const arb_mat_struct, prec: slong);
453 pub fn arb_mat_count_is_zero(mat: *const arb_mat_struct) -> slong;
454 #[link_name = "arb_mat_count_not_is_zero__extern"]
455 pub fn arb_mat_count_not_is_zero(mat: *const arb_mat_struct) -> slong;
456 pub fn arb_mat_allocated_bytes(x: *const arb_mat_struct) -> slong;
457 pub fn arb_mat_spd_get_fmpz_mat(
458 B: *mut fmpz_mat_struct,
459 A: *const arb_mat_struct,
460 prec: slong,
461 ) -> libc::c_int;
462 pub fn arb_mat_spd_lll_reduce(
463 U: *mut fmpz_mat_struct,
464 A: *const arb_mat_struct,
465 delta: f64,
466 eta: f64,
467 prec: slong,
468 );
469 pub fn arb_mat_spd_is_lll_reduced(
470 A: *const arb_mat_struct,
471 delta: f64,
472 eta: f64,
473 prec: slong,
474 ) -> libc::c_int;
475}