1#![allow(non_camel_case_types)]
2
3use flint_sys::deps::*;
6use flint_sys::flint::*;
7use flint_sys::fmpz_mat::fmpz_mat_struct;
8use libc::FILE;
9
10#[repr(C)]
11#[derive(Debug, Copy, Clone)]
12pub struct bool_mat_struct {
13 pub entries: *mut ::std::os::raw::c_int,
14 pub r: mp_limb_signed_t,
15 pub c: mp_limb_signed_t,
16 pub rows: *mut *mut ::std::os::raw::c_int,
17}
18
19pub type bool_mat_t = [bool_mat_struct; 1usize];
20
21extern "C" {
22 pub fn bool_mat_init(mat: *mut bool_mat_struct, r: mp_limb_signed_t, c: mp_limb_signed_t);
23 pub fn bool_mat_clear(mat: *mut bool_mat_struct);
24 pub fn bool_mat_set(dest: *mut bool_mat_struct, src: *mut bool_mat_struct);
25 pub fn bool_mat_randtest(mat: *mut bool_mat_struct, state: *mut flint_rand_s);
26 pub fn bool_mat_randtest_diagonal(mat: *mut bool_mat_struct, state: *mut flint_rand_s);
27 pub fn bool_mat_randtest_nilpotent(mat: *mut bool_mat_struct, state: *mut flint_rand_s);
28 pub fn bool_mat_fprint(file: *mut FILE, mat: *mut bool_mat_struct);
29 pub fn bool_mat_equal(
30 mat1: *mut bool_mat_struct,
31 mat2: *mut bool_mat_struct,
32 ) -> ::std::os::raw::c_int;
33 pub fn bool_mat_any(mat: *mut bool_mat_struct) -> ::std::os::raw::c_int;
34 pub fn bool_mat_all(mat: *mut bool_mat_struct) -> ::std::os::raw::c_int;
35 pub fn bool_mat_is_diagonal(mat: *mut bool_mat_struct) -> ::std::os::raw::c_int;
36 pub fn bool_mat_is_lower_triangular(mat: *mut bool_mat_struct) -> ::std::os::raw::c_int;
37 pub fn bool_mat_is_transitive(mat: *mut bool_mat_struct) -> ::std::os::raw::c_int;
38 pub fn bool_mat_is_nilpotent(mat: *mut bool_mat_struct) -> ::std::os::raw::c_int;
39 pub fn bool_mat_zero(mat: *mut bool_mat_struct);
40 pub fn bool_mat_one(mat: *mut bool_mat_struct);
41 pub fn bool_mat_directed_path(mat: *mut bool_mat_struct);
42 pub fn bool_mat_directed_cycle(mat: *mut bool_mat_struct);
43 pub fn bool_mat_transpose(mat1: *mut bool_mat_struct, mat2: *mut bool_mat_struct);
44 pub fn bool_mat_complement(mat1: *mut bool_mat_struct, mat2: *mut bool_mat_struct);
45 pub fn bool_mat_add(
46 res: *mut bool_mat_struct,
47 mat1: *mut bool_mat_struct,
48 mat2: *mut bool_mat_struct,
49 );
50 pub fn bool_mat_mul(
51 res: *mut bool_mat_struct,
52 mat1: *mut bool_mat_struct,
53 mat2: *mut bool_mat_struct,
54 );
55 pub fn bool_mat_mul_entrywise(
56 res: *mut bool_mat_struct,
57 mat1: *mut bool_mat_struct,
58 mat2: *mut bool_mat_struct,
59 );
60 pub fn bool_mat_pow_ui(B: *mut bool_mat_struct, A: *mut bool_mat_struct, exp: mp_limb_t);
61 pub fn bool_mat_trace(mat: *mut bool_mat_struct) -> ::std::os::raw::c_int;
62 pub fn bool_mat_nilpotency_degree(mat: *mut bool_mat_struct) -> mp_limb_signed_t;
63 pub fn bool_mat_transitive_closure(dest: *mut bool_mat_struct, src: *mut bool_mat_struct);
64 pub fn bool_mat_get_strongly_connected_components(
65 partition: *mut mp_limb_signed_t,
66 A: *mut bool_mat_struct,
67 ) -> mp_limb_signed_t;
68 pub fn bool_mat_all_pairs_longest_walk(
69 B: *mut fmpz_mat_struct,
70 A: *mut bool_mat_struct,
71 ) -> mp_limb_signed_t;
72}