Skip to main content

flint_sys/
gr_mat.rs

1/* automatically generated by rust-bindgen 0.70.1 */
2
3use crate::deps::*;
4use crate::flint::*;
5use crate::fmpq_types::*;
6use crate::fmpz_types::*;
7use crate::gr_types::*;
8
9
10pub type gr_method_mat_unary_op_get_scalar = ::std::option::Option<
11    unsafe extern "C" fn(arg1: gr_ptr, arg2: *const gr_mat_struct, arg3: gr_ctx_ptr) -> libc::c_int,
12>;
13pub type gr_method_mat_unary_op = ::std::option::Option<
14    unsafe extern "C" fn(
15        arg1: *mut gr_mat_struct,
16        arg2: *const gr_mat_struct,
17        arg3: gr_ctx_ptr,
18    ) -> libc::c_int,
19>;
20pub type gr_method_mat_binary_op = ::std::option::Option<
21    unsafe extern "C" fn(
22        arg1: *mut gr_mat_struct,
23        arg2: *const gr_mat_struct,
24        arg3: *const gr_mat_struct,
25        arg4: gr_ctx_ptr,
26    ) -> libc::c_int,
27>;
28pub type gr_method_mat_binary_op_with_flag = ::std::option::Option<
29    unsafe extern "C" fn(
30        arg1: *mut gr_mat_struct,
31        arg2: *const gr_mat_struct,
32        arg3: *const gr_mat_struct,
33        arg4: libc::c_int,
34        arg5: gr_ctx_ptr,
35    ) -> libc::c_int,
36>;
37pub type gr_method_mat_binary_unary_op = ::std::option::Option<
38    unsafe extern "C" fn(
39        arg1: *mut gr_mat_struct,
40        arg2: *mut gr_mat_struct,
41        arg3: *const gr_mat_struct,
42        arg4: gr_ctx_ptr,
43    ) -> libc::c_int,
44>;
45pub type gr_method_mat_pivot_op = ::std::option::Option<
46    unsafe extern "C" fn(
47        arg1: *mut slong,
48        arg2: *mut gr_mat_struct,
49        arg3: slong,
50        arg4: slong,
51        arg5: slong,
52        arg6: gr_ctx_ptr,
53    ) -> libc::c_int,
54>;
55pub type gr_method_mat_diagonalization_op = ::std::option::Option<
56    unsafe extern "C" fn(
57        arg1: *mut gr_vec_struct,
58        arg2: *mut gr_mat_struct,
59        arg3: *mut gr_mat_struct,
60        arg4: *const gr_mat_struct,
61        arg5: libc::c_int,
62        arg6: gr_ctx_ptr,
63    ) -> libc::c_int,
64>;
65pub type gr_method_mat_lu_op = ::std::option::Option<
66    unsafe extern "C" fn(
67        arg1: *mut slong,
68        arg2: *mut slong,
69        arg3: *mut gr_mat_struct,
70        arg4: *const gr_mat_struct,
71        arg5: libc::c_int,
72        arg6: gr_ctx_ptr,
73    ) -> libc::c_int,
74>;
75pub type gr_method_mat_reduce_row_op = ::std::option::Option<
76    unsafe extern "C" fn(
77        arg1: *mut slong,
78        arg2: *mut gr_mat_struct,
79        arg3: *mut slong,
80        arg4: *mut slong,
81        arg5: slong,
82        arg6: gr_ctx_ptr,
83    ) -> libc::c_int,
84>;
85pub type __gr_method_vec_op = ::std::option::Option<
86    unsafe extern "C" fn(
87        arg1: gr_ptr,
88        arg2: gr_srcptr,
89        arg3: slong,
90        arg4: gr_ctx_ptr,
91    ) -> libc::c_int,
92>;
93pub type __gr_method_vec_scalar_op = ::std::option::Option<
94    unsafe extern "C" fn(
95        arg1: gr_ptr,
96        arg2: gr_srcptr,
97        arg3: slong,
98        arg4: gr_srcptr,
99        arg5: gr_ctx_ptr,
100    ) -> libc::c_int,
101>;
102extern "C" {
103    #[link_name = "gr_mat_entry_ptr__extern"]
104    pub fn gr_mat_entry_ptr(
105        mat: *mut gr_mat_struct,
106        i: slong,
107        j: slong,
108        ctx: *mut gr_ctx_struct,
109    ) -> gr_ptr;
110    #[link_name = "gr_mat_entry_srcptr__extern"]
111    pub fn gr_mat_entry_srcptr(
112        mat: *const gr_mat_struct,
113        i: slong,
114        j: slong,
115        ctx: *mut gr_ctx_struct,
116    ) -> gr_srcptr;
117    pub fn gr_mat_init(mat: *mut gr_mat_struct, rows: slong, cols: slong, ctx: *mut gr_ctx_struct);
118    pub fn gr_mat_init_set(
119        res: *mut gr_mat_struct,
120        mat: *const gr_mat_struct,
121        ctx: *mut gr_ctx_struct,
122    ) -> libc::c_int;
123    pub fn gr_mat_clear(mat: *mut gr_mat_struct, ctx: *mut gr_ctx_struct);
124    pub fn _gr_mat_check_resize(
125        mat: *mut gr_mat_struct,
126        r: slong,
127        c: slong,
128        ctx: *mut gr_ctx_struct,
129    ) -> libc::c_int;
130    #[link_name = "gr_mat_swap__extern"]
131    pub fn gr_mat_swap(
132        mat1: *mut gr_mat_struct,
133        mat2: *mut gr_mat_struct,
134        UNUSED_ctx: *mut gr_ctx_struct,
135    );
136    pub fn gr_mat_swap_rows(
137        mat: *mut gr_mat_struct,
138        perm: *mut slong,
139        r: slong,
140        s: slong,
141        ctx: *mut gr_ctx_struct,
142    ) -> libc::c_int;
143    pub fn gr_mat_invert_rows(
144        mat: *mut gr_mat_struct,
145        perm: *mut slong,
146        ctx: *mut gr_ctx_struct,
147    ) -> libc::c_int;
148    pub fn gr_mat_swap_cols(
149        mat: *mut gr_mat_struct,
150        perm: *mut slong,
151        r: slong,
152        s: slong,
153        ctx: *mut gr_ctx_struct,
154    ) -> libc::c_int;
155    pub fn gr_mat_invert_cols(
156        mat: *mut gr_mat_struct,
157        perm: *mut slong,
158        ctx: *mut gr_ctx_struct,
159    ) -> libc::c_int;
160    pub fn gr_mat_move_row(
161        A: *mut gr_mat_struct,
162        i: slong,
163        new_i: slong,
164        ctx: *mut gr_ctx_struct,
165    ) -> libc::c_int;
166    #[link_name = "gr_mat_window_init__extern"]
167    pub fn gr_mat_window_init(
168        window: *mut gr_mat_struct,
169        mat: *const gr_mat_struct,
170        r1: slong,
171        c1: slong,
172        r2: slong,
173        c2: slong,
174        ctx: *mut gr_ctx_struct,
175    );
176    #[link_name = "gr_mat_window_clear__extern"]
177    pub fn gr_mat_window_clear(UNUSED_window: *mut gr_mat_struct, UNUSED_ctx: *mut gr_ctx_struct);
178    pub fn gr_mat_concat_horizontal(
179        res: *mut gr_mat_struct,
180        mat1: *const gr_mat_struct,
181        mat2: *const gr_mat_struct,
182        ctx: *mut gr_ctx_struct,
183    ) -> libc::c_int;
184    pub fn gr_mat_concat_vertical(
185        res: *mut gr_mat_struct,
186        mat1: *const gr_mat_struct,
187        mat2: *const gr_mat_struct,
188        ctx: *mut gr_ctx_struct,
189    ) -> libc::c_int;
190    pub fn gr_mat_write(
191        out: *mut gr_stream_struct,
192        mat: *const gr_mat_struct,
193        ctx: *mut gr_ctx_struct,
194    ) -> libc::c_int;
195    pub fn gr_mat_print(mat: *const gr_mat_struct, ctx: *mut gr_ctx_struct) -> libc::c_int;
196    pub fn gr_mat_randtest(
197        mat: *mut gr_mat_struct,
198        state: *mut flint_rand_struct,
199        ctx: *mut gr_ctx_struct,
200    ) -> libc::c_int;
201    pub fn gr_mat_randops(
202        mat: *mut gr_mat_struct,
203        state: *mut flint_rand_struct,
204        count: slong,
205        ctx: *mut gr_ctx_struct,
206    ) -> libc::c_int;
207    pub fn gr_mat_randpermdiag(
208        parity: *mut libc::c_int,
209        mat: *mut gr_mat_struct,
210        state: *mut flint_rand_struct,
211        diag: gr_ptr,
212        n: slong,
213        ctx: *mut gr_ctx_struct,
214    ) -> libc::c_int;
215    pub fn gr_mat_randrank(
216        mat: *mut gr_mat_struct,
217        state: *mut flint_rand_struct,
218        rank: slong,
219        ctx: *mut gr_ctx_struct,
220    ) -> libc::c_int;
221    pub fn gr_mat_randsimilar(
222        mat: *mut gr_mat_struct,
223        state: *mut flint_rand_struct,
224        opcount: slong,
225        ctx: *mut gr_ctx_struct,
226    ) -> libc::c_int;
227    #[link_name = "gr_mat_is_empty__extern"]
228    pub fn gr_mat_is_empty(mat: *const gr_mat_struct, UNUSED_ctx: *mut gr_ctx_struct) -> truth_t;
229    #[link_name = "gr_mat_is_square__extern"]
230    pub fn gr_mat_is_square(mat: *const gr_mat_struct, UNUSED_ctx: *mut gr_ctx_struct) -> truth_t;
231    pub fn gr_mat_equal(
232        mat1: *const gr_mat_struct,
233        mat2: *const gr_mat_struct,
234        ctx: *mut gr_ctx_struct,
235    ) -> truth_t;
236    pub fn gr_mat_is_zero(mat: *const gr_mat_struct, ctx: *mut gr_ctx_struct) -> truth_t;
237    pub fn gr_mat_is_one(mat: *const gr_mat_struct, ctx: *mut gr_ctx_struct) -> truth_t;
238    pub fn gr_mat_is_neg_one(mat: *const gr_mat_struct, ctx: *mut gr_ctx_struct) -> truth_t;
239    pub fn gr_mat_zero(res: *mut gr_mat_struct, ctx: *mut gr_ctx_struct) -> libc::c_int;
240    pub fn gr_mat_one(res: *mut gr_mat_struct, ctx: *mut gr_ctx_struct) -> libc::c_int;
241    pub fn gr_mat_set(
242        res: *mut gr_mat_struct,
243        mat: *const gr_mat_struct,
244        ctx: *mut gr_ctx_struct,
245    ) -> libc::c_int;
246    pub fn gr_mat_set_scalar(
247        res: *mut gr_mat_struct,
248        c: gr_srcptr,
249        ctx: *mut gr_ctx_struct,
250    ) -> libc::c_int;
251    pub fn gr_mat_set_ui(res: *mut gr_mat_struct, v: ulong, ctx: *mut gr_ctx_struct)
252        -> libc::c_int;
253    pub fn gr_mat_set_si(res: *mut gr_mat_struct, v: slong, ctx: *mut gr_ctx_struct)
254        -> libc::c_int;
255    pub fn gr_mat_set_fmpz(
256        res: *mut gr_mat_struct,
257        v: *const fmpz,
258        ctx: *mut gr_ctx_struct,
259    ) -> libc::c_int;
260    pub fn gr_mat_set_fmpq(
261        res: *mut gr_mat_struct,
262        v: *const fmpq,
263        ctx: *mut gr_ctx_struct,
264    ) -> libc::c_int;
265    pub fn gr_mat_set_fmpz_mat(
266        res: *mut gr_mat_struct,
267        mat: *const fmpz_mat_struct,
268        ctx: *mut gr_ctx_struct,
269    ) -> libc::c_int;
270    pub fn gr_mat_set_fmpq_mat(
271        res: *mut gr_mat_struct,
272        mat: *const fmpq_mat_struct,
273        ctx: *mut gr_ctx_struct,
274    ) -> libc::c_int;
275    pub fn gr_mat_set_gr_mat_other(
276        res: *mut gr_mat_struct,
277        mat: *const gr_mat_struct,
278        mat_ctx: *mut gr_ctx_struct,
279        ctx: *mut gr_ctx_struct,
280    ) -> libc::c_int;
281    pub fn gr_mat_neg(
282        res: *mut gr_mat_struct,
283        mat: *const gr_mat_struct,
284        ctx: *mut gr_ctx_struct,
285    ) -> libc::c_int;
286    pub fn gr_mat_swap_entrywise(
287        mat1: *mut gr_mat_struct,
288        mat2: *const gr_mat_struct,
289        ctx: *mut gr_ctx_struct,
290    ) -> libc::c_int;
291    pub fn gr_mat_add(
292        res: *mut gr_mat_struct,
293        mat1: *const gr_mat_struct,
294        mat2: *const gr_mat_struct,
295        ctx: *mut gr_ctx_struct,
296    ) -> libc::c_int;
297    pub fn gr_mat_sub(
298        res: *mut gr_mat_struct,
299        mat1: *const gr_mat_struct,
300        mat2: *const gr_mat_struct,
301        ctx: *mut gr_ctx_struct,
302    ) -> libc::c_int;
303    pub fn gr_mat_add_scalar(
304        res: *mut gr_mat_struct,
305        mat: *const gr_mat_struct,
306        x: gr_srcptr,
307        ctx: *mut gr_ctx_struct,
308    ) -> libc::c_int;
309    pub fn gr_mat_scalar_add(
310        res: *mut gr_mat_struct,
311        x: gr_srcptr,
312        mat: *const gr_mat_struct,
313        ctx: *mut gr_ctx_struct,
314    ) -> libc::c_int;
315    pub fn gr_mat_add_ui(
316        res: *mut gr_mat_struct,
317        mat: *const gr_mat_struct,
318        x: ulong,
319        ctx: *mut gr_ctx_struct,
320    ) -> libc::c_int;
321    pub fn gr_mat_add_si(
322        res: *mut gr_mat_struct,
323        mat: *const gr_mat_struct,
324        x: slong,
325        ctx: *mut gr_ctx_struct,
326    ) -> libc::c_int;
327    pub fn gr_mat_add_fmpz(
328        res: *mut gr_mat_struct,
329        mat: *const gr_mat_struct,
330        x: *const fmpz,
331        ctx: *mut gr_ctx_struct,
332    ) -> libc::c_int;
333    pub fn gr_mat_add_fmpq(
334        res: *mut gr_mat_struct,
335        mat: *const gr_mat_struct,
336        x: *const fmpq,
337        ctx: *mut gr_ctx_struct,
338    ) -> libc::c_int;
339    pub fn gr_mat_add_scalar_other(
340        res: *mut gr_mat_struct,
341        mat: *const gr_mat_struct,
342        x: gr_srcptr,
343        x_ctx: *mut gr_ctx_struct,
344        ctx: *mut gr_ctx_struct,
345    ) -> libc::c_int;
346    pub fn gr_mat_scalar_other_add(
347        res: *mut gr_mat_struct,
348        x: gr_srcptr,
349        x_ctx: *mut gr_ctx_struct,
350        mat: *const gr_mat_struct,
351        ctx: *mut gr_ctx_struct,
352    ) -> libc::c_int;
353    pub fn gr_mat_sub_scalar(
354        res: *mut gr_mat_struct,
355        mat: *const gr_mat_struct,
356        x: gr_srcptr,
357        ctx: *mut gr_ctx_struct,
358    ) -> libc::c_int;
359    pub fn gr_mat_scalar_sub(
360        res: *mut gr_mat_struct,
361        x: gr_srcptr,
362        mat: *const gr_mat_struct,
363        ctx: *mut gr_ctx_struct,
364    ) -> libc::c_int;
365    pub fn gr_mat_sub_ui(
366        res: *mut gr_mat_struct,
367        mat: *const gr_mat_struct,
368        x: ulong,
369        ctx: *mut gr_ctx_struct,
370    ) -> libc::c_int;
371    pub fn gr_mat_sub_si(
372        res: *mut gr_mat_struct,
373        mat: *const gr_mat_struct,
374        x: slong,
375        ctx: *mut gr_ctx_struct,
376    ) -> libc::c_int;
377    pub fn gr_mat_sub_fmpz(
378        res: *mut gr_mat_struct,
379        mat: *const gr_mat_struct,
380        x: *const fmpz,
381        ctx: *mut gr_ctx_struct,
382    ) -> libc::c_int;
383    pub fn gr_mat_sub_fmpq(
384        res: *mut gr_mat_struct,
385        mat: *const gr_mat_struct,
386        x: *const fmpq,
387        ctx: *mut gr_ctx_struct,
388    ) -> libc::c_int;
389    pub fn gr_mat_sub_scalar_other(
390        res: *mut gr_mat_struct,
391        mat: *const gr_mat_struct,
392        x: gr_srcptr,
393        x_ctx: *mut gr_ctx_struct,
394        ctx: *mut gr_ctx_struct,
395    ) -> libc::c_int;
396    pub fn gr_mat_scalar_other_sub(
397        res: *mut gr_mat_struct,
398        x: gr_srcptr,
399        x_ctx: *mut gr_ctx_struct,
400        mat: *const gr_mat_struct,
401        ctx: *mut gr_ctx_struct,
402    ) -> libc::c_int;
403    pub fn gr_mat_mul_scalar(
404        res: *mut gr_mat_struct,
405        mat: *const gr_mat_struct,
406        x: gr_srcptr,
407        ctx: *mut gr_ctx_struct,
408    ) -> libc::c_int;
409    pub fn gr_mat_scalar_mul(
410        res: *mut gr_mat_struct,
411        x: gr_srcptr,
412        mat: *const gr_mat_struct,
413        ctx: *mut gr_ctx_struct,
414    ) -> libc::c_int;
415    pub fn gr_mat_mul_ui(
416        res: *mut gr_mat_struct,
417        mat: *const gr_mat_struct,
418        x: ulong,
419        ctx: *mut gr_ctx_struct,
420    ) -> libc::c_int;
421    pub fn gr_mat_mul_si(
422        res: *mut gr_mat_struct,
423        mat: *const gr_mat_struct,
424        x: slong,
425        ctx: *mut gr_ctx_struct,
426    ) -> libc::c_int;
427    pub fn gr_mat_mul_fmpz(
428        res: *mut gr_mat_struct,
429        mat: *const gr_mat_struct,
430        x: *const fmpz,
431        ctx: *mut gr_ctx_struct,
432    ) -> libc::c_int;
433    pub fn gr_mat_mul_fmpq(
434        res: *mut gr_mat_struct,
435        mat: *const gr_mat_struct,
436        x: *const fmpq,
437        ctx: *mut gr_ctx_struct,
438    ) -> libc::c_int;
439    pub fn gr_mat_mul_scalar_other(
440        res: *mut gr_mat_struct,
441        mat: *const gr_mat_struct,
442        x: gr_srcptr,
443        x_ctx: *mut gr_ctx_struct,
444        ctx: *mut gr_ctx_struct,
445    ) -> libc::c_int;
446    pub fn gr_mat_scalar_other_mul(
447        res: *mut gr_mat_struct,
448        x: gr_srcptr,
449        x_ctx: *mut gr_ctx_struct,
450        mat: *const gr_mat_struct,
451        ctx: *mut gr_ctx_struct,
452    ) -> libc::c_int;
453    pub fn gr_mat_div_scalar(
454        res: *mut gr_mat_struct,
455        mat: *const gr_mat_struct,
456        x: gr_srcptr,
457        ctx: *mut gr_ctx_struct,
458    ) -> libc::c_int;
459    pub fn gr_mat_div_scalar_other(
460        res: *mut gr_mat_struct,
461        mat: *const gr_mat_struct,
462        x: gr_srcptr,
463        x_ctx: *mut gr_ctx_struct,
464        ctx: *mut gr_ctx_struct,
465    ) -> libc::c_int;
466    pub fn gr_mat_div_ui(
467        res: *mut gr_mat_struct,
468        mat: *const gr_mat_struct,
469        x: ulong,
470        ctx: *mut gr_ctx_struct,
471    ) -> libc::c_int;
472    pub fn gr_mat_div_si(
473        res: *mut gr_mat_struct,
474        mat: *const gr_mat_struct,
475        x: slong,
476        ctx: *mut gr_ctx_struct,
477    ) -> libc::c_int;
478    pub fn gr_mat_div_fmpz(
479        res: *mut gr_mat_struct,
480        mat: *const gr_mat_struct,
481        x: *const fmpz,
482        ctx: *mut gr_ctx_struct,
483    ) -> libc::c_int;
484    pub fn gr_mat_div_fmpq(
485        res: *mut gr_mat_struct,
486        mat: *const gr_mat_struct,
487        x: *const fmpq,
488        ctx: *mut gr_ctx_struct,
489    ) -> libc::c_int;
490    pub fn gr_mat_addmul_scalar(
491        res: *mut gr_mat_struct,
492        mat: *const gr_mat_struct,
493        x: gr_srcptr,
494        ctx: *mut gr_ctx_struct,
495    ) -> libc::c_int;
496    pub fn gr_mat_submul_scalar(
497        res: *mut gr_mat_struct,
498        mat: *const gr_mat_struct,
499        x: gr_srcptr,
500        ctx: *mut gr_ctx_struct,
501    ) -> libc::c_int;
502    pub fn gr_mat_mul_classical(
503        C: *mut gr_mat_struct,
504        A: *const gr_mat_struct,
505        B: *const gr_mat_struct,
506        ctx: *mut gr_ctx_struct,
507    ) -> libc::c_int;
508    pub fn gr_mat_mul_strassen(
509        C: *mut gr_mat_struct,
510        A: *const gr_mat_struct,
511        B: *const gr_mat_struct,
512        ctx: *mut gr_ctx_struct,
513    ) -> libc::c_int;
514    pub fn gr_mat_mul_waksman(
515        C: *mut gr_mat_struct,
516        A: *const gr_mat_struct,
517        B: *const gr_mat_struct,
518        ctx: *mut gr_ctx_struct,
519    ) -> libc::c_int;
520    pub fn gr_mat_mul_rosowski(
521        C: *mut gr_mat_struct,
522        A: *const gr_mat_struct,
523        B: *const gr_mat_struct,
524        ctx: *mut gr_ctx_struct,
525    ) -> libc::c_int;
526    pub fn gr_mat_mul_generic(
527        C: *mut gr_mat_struct,
528        A: *const gr_mat_struct,
529        B: *const gr_mat_struct,
530        ctx: *mut gr_ctx_struct,
531    ) -> libc::c_int;
532    pub fn gr_mat_mul(
533        C: *mut gr_mat_struct,
534        A: *const gr_mat_struct,
535        B: *const gr_mat_struct,
536        ctx: *mut gr_ctx_struct,
537    ) -> libc::c_int;
538    #[link_name = "gr_mat_sqr__extern"]
539    pub fn gr_mat_sqr(
540        res: *mut gr_mat_struct,
541        mat: *const gr_mat_struct,
542        ctx: *mut gr_ctx_struct,
543    ) -> libc::c_int;
544    pub fn gr_mat_pow_ui(
545        res: *mut gr_mat_struct,
546        mat: *const gr_mat_struct,
547        exp: ulong,
548        ctx: *mut gr_ctx_struct,
549    ) -> libc::c_int;
550    pub fn gr_mat_pow_si(
551        res: *mut gr_mat_struct,
552        mat: *const gr_mat_struct,
553        exp: slong,
554        ctx: *mut gr_ctx_struct,
555    ) -> libc::c_int;
556    pub fn gr_mat_pow_fmpz(
557        res: *mut gr_mat_struct,
558        mat: *const gr_mat_struct,
559        exp: *const fmpz,
560        ctx: *mut gr_ctx_struct,
561    ) -> libc::c_int;
562    pub fn _gr_mat_gr_poly_evaluate(
563        y: *mut gr_mat_struct,
564        poly: gr_srcptr,
565        len: slong,
566        x: *const gr_mat_struct,
567        ctx: *mut gr_ctx_struct,
568    ) -> libc::c_int;
569    pub fn gr_mat_gr_poly_evaluate(
570        res: *mut gr_mat_struct,
571        f: *const gr_poly_struct,
572        a: *const gr_mat_struct,
573        ctx: *mut gr_ctx_struct,
574    ) -> libc::c_int;
575    pub fn gr_mat_find_nonzero_pivot_large_abs(
576        pivot_row: *mut slong,
577        mat: *mut gr_mat_struct,
578        start_row: slong,
579        end_row: slong,
580        column: slong,
581        ctx: *mut gr_ctx_struct,
582    ) -> libc::c_int;
583    pub fn gr_mat_find_nonzero_pivot_generic(
584        pivot_row: *mut slong,
585        mat: *mut gr_mat_struct,
586        start_row: slong,
587        end_row: slong,
588        column: slong,
589        ctx: *mut gr_ctx_struct,
590    ) -> libc::c_int;
591    pub fn gr_mat_find_nonzero_pivot(
592        pivot_row: *mut slong,
593        mat: *mut gr_mat_struct,
594        start_row: slong,
595        end_row: slong,
596        column: slong,
597        ctx: *mut gr_ctx_struct,
598    ) -> libc::c_int;
599    pub fn gr_mat_lu_recursive(
600        rank: *mut slong,
601        P: *mut slong,
602        LU: *mut gr_mat_struct,
603        A: *const gr_mat_struct,
604        rank_check: libc::c_int,
605        ctx: *mut gr_ctx_struct,
606    ) -> libc::c_int;
607    pub fn gr_mat_lu_classical(
608        rank: *mut slong,
609        P: *mut slong,
610        LU: *mut gr_mat_struct,
611        A: *const gr_mat_struct,
612        rank_check: libc::c_int,
613        ctx: *mut gr_ctx_struct,
614    ) -> libc::c_int;
615    pub fn gr_mat_lu_generic(
616        rank: *mut slong,
617        P: *mut slong,
618        LU: *mut gr_mat_struct,
619        A: *const gr_mat_struct,
620        rank_check: libc::c_int,
621        ctx: *mut gr_ctx_struct,
622    ) -> libc::c_int;
623    pub fn gr_mat_lu(
624        rank: *mut slong,
625        P: *mut slong,
626        LU: *mut gr_mat_struct,
627        A: *const gr_mat_struct,
628        rank_check: libc::c_int,
629        ctx: *mut gr_ctx_struct,
630    ) -> libc::c_int;
631    pub fn gr_mat_fflu(
632        res_rank: *mut slong,
633        P: *mut slong,
634        LU: *mut gr_mat_struct,
635        den: gr_ptr,
636        A: *const gr_mat_struct,
637        rank_check: libc::c_int,
638        ctx: *mut gr_ctx_struct,
639    ) -> libc::c_int;
640    pub fn gr_mat_nonsingular_solve_fflu(
641        X: *mut gr_mat_struct,
642        A: *const gr_mat_struct,
643        B: *const gr_mat_struct,
644        ctx: *mut gr_ctx_struct,
645    ) -> libc::c_int;
646    pub fn gr_mat_nonsingular_solve_lu(
647        X: *mut gr_mat_struct,
648        A: *const gr_mat_struct,
649        B: *const gr_mat_struct,
650        ctx: *mut gr_ctx_struct,
651    ) -> libc::c_int;
652    pub fn gr_mat_nonsingular_solve(
653        X: *mut gr_mat_struct,
654        A: *const gr_mat_struct,
655        B: *const gr_mat_struct,
656        ctx: *mut gr_ctx_struct,
657    ) -> libc::c_int;
658    pub fn gr_mat_nonsingular_solve_fflu_precomp(
659        X: *mut gr_mat_struct,
660        perm: *const slong,
661        A: *const gr_mat_struct,
662        B: *const gr_mat_struct,
663        ctx: *mut gr_ctx_struct,
664    ) -> libc::c_int;
665    pub fn gr_mat_nonsingular_solve_lu_precomp(
666        X: *mut gr_mat_struct,
667        perm: *const slong,
668        A: *const gr_mat_struct,
669        B: *const gr_mat_struct,
670        ctx: *mut gr_ctx_struct,
671    ) -> libc::c_int;
672    pub fn gr_mat_nonsingular_solve_den_fflu(
673        X: *mut gr_mat_struct,
674        den: gr_ptr,
675        A: *const gr_mat_struct,
676        B: *const gr_mat_struct,
677        ctx: *mut gr_ctx_struct,
678    ) -> libc::c_int;
679    pub fn gr_mat_nonsingular_solve_den(
680        X: *mut gr_mat_struct,
681        den: gr_ptr,
682        A: *const gr_mat_struct,
683        B: *const gr_mat_struct,
684        ctx: *mut gr_ctx_struct,
685    ) -> libc::c_int;
686    pub fn gr_mat_solve_field(
687        X: *mut gr_mat_struct,
688        A: *const gr_mat_struct,
689        B: *const gr_mat_struct,
690        ctx: *mut gr_ctx_struct,
691    ) -> libc::c_int;
692    pub fn gr_mat_det_berkowitz(
693        res: gr_ptr,
694        A: *const gr_mat_struct,
695        ctx: *mut gr_ctx_struct,
696    ) -> libc::c_int;
697    pub fn gr_mat_det_fflu(
698        res: gr_ptr,
699        A: *const gr_mat_struct,
700        ctx: *mut gr_ctx_struct,
701    ) -> libc::c_int;
702    pub fn gr_mat_det_lu(
703        res: gr_ptr,
704        A: *const gr_mat_struct,
705        ctx: *mut gr_ctx_struct,
706    ) -> libc::c_int;
707    pub fn gr_mat_det_cofactor(
708        res: gr_ptr,
709        A: *const gr_mat_struct,
710        ctx: *mut gr_ctx_struct,
711    ) -> libc::c_int;
712    pub fn gr_mat_det_generic_field(
713        res: gr_ptr,
714        A: *const gr_mat_struct,
715        ctx: *mut gr_ctx_struct,
716    ) -> libc::c_int;
717    pub fn gr_mat_det_generic_integral_domain(
718        res: gr_ptr,
719        A: *const gr_mat_struct,
720        ctx: *mut gr_ctx_struct,
721    ) -> libc::c_int;
722    pub fn gr_mat_det_generic(
723        res: gr_ptr,
724        A: *const gr_mat_struct,
725        ctx: *mut gr_ctx_struct,
726    ) -> libc::c_int;
727    pub fn gr_mat_det(res: gr_ptr, A: *const gr_mat_struct, ctx: *mut gr_ctx_struct)
728        -> libc::c_int;
729    pub fn gr_mat_inv(
730        res: *mut gr_mat_struct,
731        mat: *const gr_mat_struct,
732        ctx: *mut gr_ctx_struct,
733    ) -> libc::c_int;
734    pub fn gr_mat_adjugate_charpoly(
735        adj: *mut gr_mat_struct,
736        det: gr_ptr,
737        A: *const gr_mat_struct,
738        ctx: *mut gr_ctx_struct,
739    ) -> libc::c_int;
740    pub fn gr_mat_adjugate_cofactor(
741        adj: *mut gr_mat_struct,
742        det: gr_ptr,
743        A: *const gr_mat_struct,
744        ctx: *mut gr_ctx_struct,
745    ) -> libc::c_int;
746    pub fn gr_mat_adjugate(
747        adj: *mut gr_mat_struct,
748        det: gr_ptr,
749        A: *const gr_mat_struct,
750        ctx: *mut gr_ctx_struct,
751    ) -> libc::c_int;
752    pub fn gr_mat_permanent_cofactor(
753        res: gr_ptr,
754        A: *const gr_mat_struct,
755        ctx: *mut gr_ctx_struct,
756    ) -> libc::c_int;
757    pub fn gr_mat_permanent_ryser(
758        res: gr_ptr,
759        A: *const gr_mat_struct,
760        ctx: *mut gr_ctx_struct,
761    ) -> libc::c_int;
762    pub fn gr_mat_permanent_glynn(
763        res: gr_ptr,
764        A: *const gr_mat_struct,
765        ctx: *mut gr_ctx_struct,
766    ) -> libc::c_int;
767    pub fn gr_mat_permanent_glynn_threaded(
768        res: gr_ptr,
769        A: *const gr_mat_struct,
770        ctx: *mut gr_ctx_struct,
771    ) -> libc::c_int;
772    pub fn gr_mat_permanent_generic(
773        res: gr_ptr,
774        A: *const gr_mat_struct,
775        ctx: *mut gr_ctx_struct,
776    ) -> libc::c_int;
777    pub fn gr_mat_permanent(
778        res: gr_ptr,
779        A: *const gr_mat_struct,
780        ctx: *mut gr_ctx_struct,
781    ) -> libc::c_int;
782    pub fn gr_mat_rank_lu(
783        rank: *mut slong,
784        A: *const gr_mat_struct,
785        ctx: *mut gr_ctx_struct,
786    ) -> libc::c_int;
787    pub fn gr_mat_rank_fflu(
788        rank: *mut slong,
789        A: *const gr_mat_struct,
790        ctx: *mut gr_ctx_struct,
791    ) -> libc::c_int;
792    pub fn gr_mat_rank(
793        rank: *mut slong,
794        A: *const gr_mat_struct,
795        ctx: *mut gr_ctx_struct,
796    ) -> libc::c_int;
797    pub fn gr_mat_rref_lu(
798        res_rank: *mut slong,
799        R: *mut gr_mat_struct,
800        A: *const gr_mat_struct,
801        ctx: *mut gr_ctx_struct,
802    ) -> libc::c_int;
803    pub fn gr_mat_rref_fflu(
804        res_rank: *mut slong,
805        R: *mut gr_mat_struct,
806        A: *const gr_mat_struct,
807        ctx: *mut gr_ctx_struct,
808    ) -> libc::c_int;
809    pub fn gr_mat_rref(
810        res_rank: *mut slong,
811        R: *mut gr_mat_struct,
812        A: *const gr_mat_struct,
813        ctx: *mut gr_ctx_struct,
814    ) -> libc::c_int;
815    pub fn gr_mat_rref_den_fflu(
816        res_rank: *mut slong,
817        R: *mut gr_mat_struct,
818        den: gr_ptr,
819        A: *const gr_mat_struct,
820        ctx: *mut gr_ctx_struct,
821    ) -> libc::c_int;
822    pub fn gr_mat_rref_den(
823        res_rank: *mut slong,
824        R: *mut gr_mat_struct,
825        den: gr_ptr,
826        A: *const gr_mat_struct,
827        ctx: *mut gr_ctx_struct,
828    ) -> libc::c_int;
829    pub fn gr_mat_nullspace_from_rref(
830        X: *mut gr_mat_struct,
831        A: *const gr_mat_struct,
832        Aden: gr_srcptr,
833        rank: slong,
834        ctx: *mut gr_ctx_struct,
835    ) -> libc::c_int;
836    pub fn gr_mat_nullspace_no_resize(
837        nullity: *mut slong,
838        X: *mut gr_mat_struct,
839        A: *const gr_mat_struct,
840        ctx: *mut gr_ctx_struct,
841    ) -> libc::c_int;
842    pub fn gr_mat_nullspace(
843        X: *mut gr_mat_struct,
844        A: *const gr_mat_struct,
845        ctx: *mut gr_ctx_struct,
846    ) -> libc::c_int;
847    pub fn gr_mat_ones(mat: *mut gr_mat_struct, ctx: *mut gr_ctx_struct) -> libc::c_int;
848    pub fn gr_mat_pascal(
849        mat: *mut gr_mat_struct,
850        triangular: libc::c_int,
851        ctx: *mut gr_ctx_struct,
852    ) -> libc::c_int;
853    pub fn gr_mat_stirling(
854        mat: *mut gr_mat_struct,
855        kind: libc::c_int,
856        ctx: *mut gr_ctx_struct,
857    ) -> libc::c_int;
858    pub fn gr_mat_hilbert(mat: *mut gr_mat_struct, ctx: *mut gr_ctx_struct) -> libc::c_int;
859    pub fn gr_mat_hadamard(mat: *mut gr_mat_struct, ctx: *mut gr_ctx_struct) -> libc::c_int;
860    pub fn gr_mat_transpose(
861        B: *mut gr_mat_struct,
862        A: *const gr_mat_struct,
863        ctx: *mut gr_ctx_struct,
864    ) -> libc::c_int;
865    pub fn gr_mat_nonsingular_solve_tril_classical(
866        X: *mut gr_mat_struct,
867        L: *const gr_mat_struct,
868        B: *const gr_mat_struct,
869        unit: libc::c_int,
870        ctx: *mut gr_ctx_struct,
871    ) -> libc::c_int;
872    pub fn gr_mat_nonsingular_solve_tril_recursive(
873        X: *mut gr_mat_struct,
874        L: *const gr_mat_struct,
875        B: *const gr_mat_struct,
876        unit: libc::c_int,
877        ctx: *mut gr_ctx_struct,
878    ) -> libc::c_int;
879    pub fn gr_mat_nonsingular_solve_tril_generic(
880        X: *mut gr_mat_struct,
881        L: *const gr_mat_struct,
882        B: *const gr_mat_struct,
883        unit: libc::c_int,
884        ctx: *mut gr_ctx_struct,
885    ) -> libc::c_int;
886    pub fn gr_mat_nonsingular_solve_tril(
887        X: *mut gr_mat_struct,
888        L: *const gr_mat_struct,
889        B: *const gr_mat_struct,
890        unit: libc::c_int,
891        ctx: *mut gr_ctx_struct,
892    ) -> libc::c_int;
893    pub fn gr_mat_nonsingular_solve_triu_classical(
894        X: *mut gr_mat_struct,
895        U: *const gr_mat_struct,
896        B: *const gr_mat_struct,
897        unit: libc::c_int,
898        ctx: *mut gr_ctx_struct,
899    ) -> libc::c_int;
900    pub fn gr_mat_nonsingular_solve_triu_recursive(
901        X: *mut gr_mat_struct,
902        U: *const gr_mat_struct,
903        B: *const gr_mat_struct,
904        unit: libc::c_int,
905        ctx: *mut gr_ctx_struct,
906    ) -> libc::c_int;
907    pub fn gr_mat_nonsingular_solve_triu_generic(
908        X: *mut gr_mat_struct,
909        L: *const gr_mat_struct,
910        B: *const gr_mat_struct,
911        unit: libc::c_int,
912        ctx: *mut gr_ctx_struct,
913    ) -> libc::c_int;
914    pub fn gr_mat_nonsingular_solve_triu(
915        X: *mut gr_mat_struct,
916        U: *const gr_mat_struct,
917        B: *const gr_mat_struct,
918        unit: libc::c_int,
919        ctx: *mut gr_ctx_struct,
920    ) -> libc::c_int;
921    pub fn gr_mat_trace(
922        res: gr_ptr,
923        mat: *const gr_mat_struct,
924        ctx: *mut gr_ctx_struct,
925    ) -> libc::c_int;
926    pub fn _gr_mat_charpoly_berkowitz(
927        res: gr_ptr,
928        mat: *const gr_mat_struct,
929        ctx: *mut gr_ctx_struct,
930    ) -> libc::c_int;
931    pub fn gr_mat_charpoly_berkowitz(
932        res: *mut gr_poly_struct,
933        mat: *const gr_mat_struct,
934        ctx: *mut gr_ctx_struct,
935    ) -> libc::c_int;
936    pub fn _gr_mat_charpoly_danilevsky_inplace(
937        res: gr_ptr,
938        mat: *mut gr_mat_struct,
939        ctx: *mut gr_ctx_struct,
940    ) -> libc::c_int;
941    pub fn _gr_mat_charpoly_danilevsky(
942        res: gr_ptr,
943        mat: *const gr_mat_struct,
944        ctx: *mut gr_ctx_struct,
945    ) -> libc::c_int;
946    pub fn gr_mat_charpoly_danilevsky(
947        res: *mut gr_poly_struct,
948        mat: *const gr_mat_struct,
949        ctx: *mut gr_ctx_struct,
950    ) -> libc::c_int;
951    pub fn _gr_mat_charpoly_faddeev(
952        res: gr_ptr,
953        adj: *mut gr_mat_struct,
954        mat: *const gr_mat_struct,
955        ctx: *mut gr_ctx_struct,
956    ) -> libc::c_int;
957    pub fn gr_mat_charpoly_faddeev(
958        res: *mut gr_poly_struct,
959        adj: *mut gr_mat_struct,
960        mat: *const gr_mat_struct,
961        ctx: *mut gr_ctx_struct,
962    ) -> libc::c_int;
963    pub fn _gr_mat_charpoly_faddeev_bsgs(
964        res: gr_ptr,
965        adj: *mut gr_mat_struct,
966        mat: *const gr_mat_struct,
967        ctx: *mut gr_ctx_struct,
968    ) -> libc::c_int;
969    pub fn gr_mat_charpoly_faddeev_bsgs(
970        res: *mut gr_poly_struct,
971        adj: *mut gr_mat_struct,
972        mat: *const gr_mat_struct,
973        ctx: *mut gr_ctx_struct,
974    ) -> libc::c_int;
975    pub fn _gr_mat_charpoly_from_hessenberg(
976        res: gr_ptr,
977        mat: *const gr_mat_struct,
978        ctx: *mut gr_ctx_struct,
979    ) -> libc::c_int;
980    pub fn gr_mat_charpoly_from_hessenberg(
981        cp: *mut gr_poly_struct,
982        mat: *const gr_mat_struct,
983        ctx: *mut gr_ctx_struct,
984    ) -> libc::c_int;
985    pub fn _gr_mat_charpoly_gauss(
986        res: gr_ptr,
987        mat: *const gr_mat_struct,
988        ctx: *mut gr_ctx_struct,
989    ) -> libc::c_int;
990    pub fn gr_mat_charpoly_gauss(
991        cp: *mut gr_poly_struct,
992        mat: *const gr_mat_struct,
993        ctx: *mut gr_ctx_struct,
994    ) -> libc::c_int;
995    pub fn _gr_mat_charpoly_householder(
996        res: gr_ptr,
997        mat: *const gr_mat_struct,
998        ctx: *mut gr_ctx_struct,
999    ) -> libc::c_int;
1000    pub fn gr_mat_charpoly_householder(
1001        cp: *mut gr_poly_struct,
1002        mat: *const gr_mat_struct,
1003        ctx: *mut gr_ctx_struct,
1004    ) -> libc::c_int;
1005    pub fn _gr_mat_charpoly_generic(
1006        res: gr_ptr,
1007        mat: *const gr_mat_struct,
1008        ctx: *mut gr_ctx_struct,
1009    ) -> libc::c_int;
1010    pub fn gr_mat_charpoly_generic(
1011        cp: *mut gr_poly_struct,
1012        mat: *const gr_mat_struct,
1013        ctx: *mut gr_ctx_struct,
1014    ) -> libc::c_int;
1015    pub fn _gr_mat_charpoly(
1016        res: gr_ptr,
1017        mat: *const gr_mat_struct,
1018        ctx: *mut gr_ctx_struct,
1019    ) -> libc::c_int;
1020    pub fn gr_mat_charpoly(
1021        res: *mut gr_poly_struct,
1022        mat: *const gr_mat_struct,
1023        ctx: *mut gr_ctx_struct,
1024    ) -> libc::c_int;
1025    pub fn _gr_mat_companion(
1026        res: *mut gr_mat_struct,
1027        poly: gr_srcptr,
1028        ctx: *mut gr_ctx_struct,
1029    ) -> libc::c_int;
1030    pub fn gr_mat_companion(
1031        res: *mut gr_mat_struct,
1032        poly: *const gr_poly_struct,
1033        ctx: *mut gr_ctx_struct,
1034    ) -> libc::c_int;
1035    pub fn _gr_mat_companion_fraction(
1036        res_num: *mut gr_mat_struct,
1037        res_den: gr_ptr,
1038        poly: gr_srcptr,
1039        ctx: *mut gr_ctx_struct,
1040    ) -> libc::c_int;
1041    pub fn gr_mat_companion_fraction(
1042        res_num: *mut gr_mat_struct,
1043        res_den: gr_ptr,
1044        poly: *const gr_poly_struct,
1045        ctx: *mut gr_ctx_struct,
1046    ) -> libc::c_int;
1047    pub fn gr_mat_hessenberg(
1048        res: *mut gr_mat_struct,
1049        mat: *const gr_mat_struct,
1050        ctx: *mut gr_ctx_struct,
1051    ) -> libc::c_int;
1052    pub fn gr_mat_hessenberg_gauss(
1053        res: *mut gr_mat_struct,
1054        mat: *const gr_mat_struct,
1055        ctx: *mut gr_ctx_struct,
1056    ) -> libc::c_int;
1057    pub fn gr_mat_hessenberg_householder(
1058        res: *mut gr_mat_struct,
1059        mat: *const gr_mat_struct,
1060        ctx: *mut gr_ctx_struct,
1061    ) -> libc::c_int;
1062    pub fn gr_mat_is_hessenberg(mat: *const gr_mat_struct, ctx: *mut gr_ctx_struct) -> truth_t;
1063    pub fn gr_mat_reduce_row_generic(
1064        column: *mut slong,
1065        A: *mut gr_mat_struct,
1066        P: *mut slong,
1067        L: *mut slong,
1068        m: slong,
1069        ctx: *mut gr_ctx_struct,
1070    ) -> libc::c_int;
1071    pub fn gr_mat_reduce_row(
1072        column: *mut slong,
1073        A: *mut gr_mat_struct,
1074        P: *mut slong,
1075        L: *mut slong,
1076        m: slong,
1077        ctx: *mut gr_ctx_struct,
1078    ) -> libc::c_int;
1079    pub fn gr_mat_apply_row_similarity(
1080        A: *mut gr_mat_struct,
1081        r: slong,
1082        d: gr_ptr,
1083        ctx: *mut gr_ctx_struct,
1084    ) -> libc::c_int;
1085    pub fn gr_mat_minpoly_field(
1086        p: *mut gr_poly_struct,
1087        X: *const gr_mat_struct,
1088        ctx: *mut gr_ctx_struct,
1089    ) -> libc::c_int;
1090    pub fn gr_mat_eigenvalues(
1091        lambda: *mut gr_vec_struct,
1092        mult: *mut gr_vec_struct,
1093        mat: *const gr_mat_struct,
1094        flags: libc::c_int,
1095        ctx: *mut gr_ctx_struct,
1096    ) -> libc::c_int;
1097    pub fn gr_mat_eigenvalues_other(
1098        lambda: *mut gr_vec_struct,
1099        mult: *mut gr_vec_struct,
1100        mat: *const gr_mat_struct,
1101        mat_ctx: *mut gr_ctx_struct,
1102        flags: libc::c_int,
1103        ctx: *mut gr_ctx_struct,
1104    ) -> libc::c_int;
1105    pub fn gr_mat_diagonalization_precomp(
1106        D: *mut gr_vec_struct,
1107        L: *mut gr_mat_struct,
1108        R: *mut gr_mat_struct,
1109        A: *const gr_mat_struct,
1110        eigenvalues: *const gr_vec_struct,
1111        mult: *const gr_vec_struct,
1112        ctx: *mut gr_ctx_struct,
1113    ) -> libc::c_int;
1114    pub fn gr_mat_diagonalization_generic(
1115        D: *mut gr_vec_struct,
1116        L: *mut gr_mat_struct,
1117        R: *mut gr_mat_struct,
1118        A: *const gr_mat_struct,
1119        flags: libc::c_int,
1120        ctx: *mut gr_ctx_struct,
1121    ) -> libc::c_int;
1122    pub fn gr_mat_diagonalization(
1123        D: *mut gr_vec_struct,
1124        L: *mut gr_mat_struct,
1125        R: *mut gr_mat_struct,
1126        A: *const gr_mat_struct,
1127        flags: libc::c_int,
1128        ctx: *mut gr_ctx_struct,
1129    ) -> libc::c_int;
1130    pub fn gr_mat_set_jordan_blocks(
1131        mat: *mut gr_mat_struct,
1132        lambda: *const gr_vec_struct,
1133        num_blocks: slong,
1134        block_lambda: *mut slong,
1135        block_size: *mut slong,
1136        ctx: *mut gr_ctx_struct,
1137    ) -> libc::c_int;
1138    pub fn gr_mat_jordan_blocks(
1139        lambda: *mut gr_vec_struct,
1140        num_blocks: *mut slong,
1141        block_lambda: *mut slong,
1142        block_size: *mut slong,
1143        A: *const gr_mat_struct,
1144        ctx: *mut gr_ctx_struct,
1145    ) -> libc::c_int;
1146    pub fn gr_mat_jordan_transformation(
1147        mat: *mut gr_mat_struct,
1148        lambda: *const gr_vec_struct,
1149        num_blocks: slong,
1150        block_lambda: *mut slong,
1151        block_size: *mut slong,
1152        A: *const gr_mat_struct,
1153        ctx: *mut gr_ctx_struct,
1154    ) -> libc::c_int;
1155    pub fn gr_mat_jordan_form(
1156        J: *mut gr_mat_struct,
1157        P: *mut gr_mat_struct,
1158        A: *const gr_mat_struct,
1159        ctx: *mut gr_ctx_struct,
1160    ) -> libc::c_int;
1161    pub fn gr_mat_is_scalar(mat: *const gr_mat_struct, ctx: *mut gr_ctx_struct) -> truth_t;
1162    pub fn gr_mat_is_diagonal(mat: *const gr_mat_struct, ctx: *mut gr_ctx_struct) -> truth_t;
1163    pub fn gr_mat_is_lower_triangular(
1164        mat: *const gr_mat_struct,
1165        ctx: *mut gr_ctx_struct,
1166    ) -> truth_t;
1167    pub fn gr_mat_is_upper_triangular(
1168        mat: *const gr_mat_struct,
1169        ctx: *mut gr_ctx_struct,
1170    ) -> truth_t;
1171    pub fn gr_mat_mul_diag(
1172        C: *mut gr_mat_struct,
1173        A: *const gr_mat_struct,
1174        D: *const gr_vec_struct,
1175        ctx: *mut gr_ctx_struct,
1176    ) -> libc::c_int;
1177    pub fn gr_mat_diag_mul(
1178        C: *mut gr_mat_struct,
1179        D: *const gr_vec_struct,
1180        A: *const gr_mat_struct,
1181        ctx: *mut gr_ctx_struct,
1182    ) -> libc::c_int;
1183    pub fn gr_mat_func_jordan(
1184        res: *mut gr_mat_struct,
1185        A: *const gr_mat_struct,
1186        jet_func: __gr_method_vec_op,
1187        ctx: *mut gr_ctx_struct,
1188    ) -> libc::c_int;
1189    pub fn gr_mat_func_param_jordan(
1190        res: *mut gr_mat_struct,
1191        A: *const gr_mat_struct,
1192        jet_func: __gr_method_vec_scalar_op,
1193        c: gr_srcptr,
1194        ctx: *mut gr_ctx_struct,
1195    ) -> libc::c_int;
1196    pub fn gr_mat_exp_jordan(
1197        res: *mut gr_mat_struct,
1198        A: *const gr_mat_struct,
1199        ctx: *mut gr_ctx_struct,
1200    ) -> libc::c_int;
1201    pub fn gr_mat_exp(
1202        res: *mut gr_mat_struct,
1203        A: *const gr_mat_struct,
1204        ctx: *mut gr_ctx_struct,
1205    ) -> libc::c_int;
1206    pub fn gr_mat_log_jordan(
1207        res: *mut gr_mat_struct,
1208        A: *const gr_mat_struct,
1209        ctx: *mut gr_ctx_struct,
1210    ) -> libc::c_int;
1211    pub fn gr_mat_log(
1212        res: *mut gr_mat_struct,
1213        A: *const gr_mat_struct,
1214        ctx: *mut gr_ctx_struct,
1215    ) -> libc::c_int;
1216    pub fn gr_mat_pow_scalar_jordan(
1217        res: *mut gr_mat_struct,
1218        A: *const gr_mat_struct,
1219        c: gr_srcptr,
1220        ctx: *mut gr_ctx_struct,
1221    ) -> libc::c_int;
1222    pub fn gr_mat_pow_scalar(
1223        res: *mut gr_mat_struct,
1224        A: *const gr_mat_struct,
1225        c: gr_srcptr,
1226        ctx: *mut gr_ctx_struct,
1227    ) -> libc::c_int;
1228    pub fn gr_mat_pow_fmpq_jordan(
1229        res: *mut gr_mat_struct,
1230        mat: *const gr_mat_struct,
1231        exp: *const fmpq,
1232        ctx: *mut gr_ctx_struct,
1233    ) -> libc::c_int;
1234    pub fn gr_mat_pow_fmpq(
1235        res: *mut gr_mat_struct,
1236        mat: *const gr_mat_struct,
1237        exp: *const fmpq,
1238        ctx: *mut gr_ctx_struct,
1239    ) -> libc::c_int;
1240    pub fn gr_mat_sqrt(
1241        res: *mut gr_mat_struct,
1242        A: *const gr_mat_struct,
1243        ctx: *mut gr_ctx_struct,
1244    ) -> libc::c_int;
1245    pub fn gr_mat_rsqrt(
1246        res: *mut gr_mat_struct,
1247        A: *const gr_mat_struct,
1248        ctx: *mut gr_ctx_struct,
1249    ) -> libc::c_int;
1250    pub fn gr_mat_norm_max(
1251        res: gr_ptr,
1252        mat: *const gr_mat_struct,
1253        ctx: *mut gr_ctx_struct,
1254    ) -> libc::c_int;
1255    pub fn gr_mat_norm_1(
1256        res: gr_ptr,
1257        mat: *const gr_mat_struct,
1258        ctx: *mut gr_ctx_struct,
1259    ) -> libc::c_int;
1260    pub fn gr_mat_norm_inf(
1261        res: gr_ptr,
1262        mat: *const gr_mat_struct,
1263        ctx: *mut gr_ctx_struct,
1264    ) -> libc::c_int;
1265    pub fn gr_mat_norm_frobenius(
1266        res: gr_ptr,
1267        mat: *const gr_mat_struct,
1268        ctx: *mut gr_ctx_struct,
1269    ) -> libc::c_int;
1270    pub fn gr_mat_is_orthogonal(A: *const gr_mat_struct, ctx: *mut gr_ctx_struct) -> truth_t;
1271    pub fn gr_mat_is_row_orthogonal(A: *const gr_mat_struct, ctx: *mut gr_ctx_struct) -> truth_t;
1272    pub fn gr_mat_is_row_orthonormal(A: *const gr_mat_struct, ctx: *mut gr_ctx_struct) -> truth_t;
1273    pub fn gr_mat_is_col_orthogonal(A: *const gr_mat_struct, ctx: *mut gr_ctx_struct) -> truth_t;
1274    pub fn gr_mat_is_col_orthonormal(A: *const gr_mat_struct, ctx: *mut gr_ctx_struct) -> truth_t;
1275    pub fn gr_mat_randtest_orthogonal(
1276        A: *mut gr_mat_struct,
1277        state: *mut flint_rand_struct,
1278        ctx: *mut gr_ctx_struct,
1279    ) -> libc::c_int;
1280    pub fn gr_mat_lq_gso(
1281        L: *mut gr_mat_struct,
1282        Q: *mut gr_mat_struct,
1283        A: *const gr_mat_struct,
1284        ctx: *mut gr_ctx_struct,
1285    ) -> libc::c_int;
1286    pub fn gr_mat_lq_recursive(
1287        L: *mut gr_mat_struct,
1288        Q: *mut gr_mat_struct,
1289        A: *const gr_mat_struct,
1290        ctx: *mut gr_ctx_struct,
1291    ) -> libc::c_int;
1292    pub fn gr_mat_lq_generic(
1293        L: *mut gr_mat_struct,
1294        Q: *mut gr_mat_struct,
1295        A: *const gr_mat_struct,
1296        ctx: *mut gr_ctx_struct,
1297    ) -> libc::c_int;
1298    pub fn gr_mat_lq(
1299        L: *mut gr_mat_struct,
1300        Q: *mut gr_mat_struct,
1301        A: *const gr_mat_struct,
1302        ctx: *mut gr_ctx_struct,
1303    ) -> libc::c_int;
1304    pub fn gr_mat_qr(
1305        Q: *mut gr_mat_struct,
1306        R: *mut gr_mat_struct,
1307        A: *const gr_mat_struct,
1308        ctx: *mut gr_ctx_struct,
1309    ) -> libc::c_int;
1310    pub fn gr_mat_is_row_lll_reduced_naive(
1311        A: *const gr_mat_struct,
1312        delta: gr_srcptr,
1313        eta: gr_srcptr,
1314        ctx: *mut gr_ctx_struct,
1315    ) -> truth_t;
1316    pub fn gr_mat_is_row_lll_reduced_with_removal_naive(
1317        A: *const gr_mat_struct,
1318        delta: gr_srcptr,
1319        eta: gr_srcptr,
1320        gs_B: gr_srcptr,
1321        newd: slong,
1322        ctx: *mut gr_ctx_struct,
1323    ) -> truth_t;
1324    pub fn _gr_mat_gr_poly_solve_lode_newton_start(
1325        Y: *mut gr_mat_struct,
1326        Z: *mut gr_mat_struct,
1327        A_denominator_inv: *mut gr_poly_struct,
1328        A_numerator: *const gr_mat_struct,
1329        A_denominator: *const gr_poly_struct,
1330        Y0: *const gr_mat_struct,
1331        sol_poly_ctx: *mut gr_ctx_struct,
1332    ) -> libc::c_int;
1333    pub fn _gr_mat_gr_poly_solve_lode_newton_step(
1334        Y: *mut gr_mat_struct,
1335        Z: *mut gr_mat_struct,
1336        A_denominator_inv: *mut gr_poly_struct,
1337        len: slong,
1338        A_numerator: *const gr_mat_struct,
1339        A_denominator: *const gr_poly_struct,
1340        A_is_companion: libc::c_int,
1341        sol_poly_ctx: *mut gr_ctx_struct,
1342    ) -> libc::c_int;
1343    pub fn _gr_mat_gr_poly_solve_lode_newton(
1344        Y: *mut gr_mat_struct,
1345        Z: *mut gr_mat_struct,
1346        A_numerator: *const gr_mat_struct,
1347        A_denominator: *const gr_poly_struct,
1348        Y0: *const gr_mat_struct,
1349        len: slong,
1350        A_poly_ctx: *mut gr_ctx_struct,
1351        sol_poly_ctx: *mut gr_ctx_struct,
1352    ) -> libc::c_int;
1353    pub fn gr_mat_gr_poly_solve_lode_newton(
1354        Y: *mut gr_mat_struct,
1355        A_numerator: *const gr_mat_struct,
1356        A_denominator: *const gr_poly_struct,
1357        Y0: *const gr_mat_struct,
1358        len: slong,
1359        A_poly_ctx: *mut gr_ctx_struct,
1360        sol_poly_ctx: *mut gr_ctx_struct,
1361    ) -> libc::c_int;
1362    pub fn gr_mat_test_mul(
1363        mul_impl: gr_method_mat_binary_op,
1364        state: *mut flint_rand_struct,
1365        iters: slong,
1366        maxn: slong,
1367        ctx: *mut gr_ctx_struct,
1368    );
1369    pub fn gr_mat_test_lu(
1370        lu_impl: gr_method_mat_lu_op,
1371        state: *mut flint_rand_struct,
1372        iters: slong,
1373        maxn: slong,
1374        ctx: *mut gr_ctx_struct,
1375    );
1376    pub fn gr_mat_test_det(
1377        det_impl: gr_method_mat_unary_op_get_scalar,
1378        state: *mut flint_rand_struct,
1379        iters: slong,
1380        maxn: slong,
1381        ctx: *mut gr_ctx_struct,
1382    );
1383    pub fn gr_mat_test_charpoly(
1384        charpoly_impl: gr_method_mat_unary_op_get_scalar,
1385        state: *mut flint_rand_struct,
1386        iters: slong,
1387        maxn: slong,
1388        ctx: *mut gr_ctx_struct,
1389    );
1390    pub fn gr_mat_test_nonsingular_solve_tril(
1391        solve_impl: gr_method_mat_binary_op_with_flag,
1392        state: *mut flint_rand_struct,
1393        iters: slong,
1394        maxn: slong,
1395        ctx: *mut gr_ctx_struct,
1396    );
1397    pub fn gr_mat_test_nonsingular_solve_triu(
1398        solve_impl: gr_method_mat_binary_op_with_flag,
1399        state: *mut flint_rand_struct,
1400        iters: slong,
1401        maxn: slong,
1402        ctx: *mut gr_ctx_struct,
1403    );
1404    pub fn gr_mat_test_approx_mul_max_norm(
1405        mul_impl: gr_method_mat_binary_op,
1406        rel_tol: gr_srcptr,
1407        state: *mut flint_rand_struct,
1408        iters: slong,
1409        maxn: slong,
1410        ctx: *mut gr_ctx_struct,
1411    );
1412    pub fn gr_mat_test_approx_mul_pos_entrywise_accurate(
1413        mul_impl: gr_method_mat_binary_op,
1414        rel_tol: gr_srcptr,
1415        state: *mut flint_rand_struct,
1416        iters: slong,
1417        maxn: slong,
1418        ctx: *mut gr_ctx_struct,
1419    );
1420}