arb_sys/
bool_mat.rs

1#![allow(non_camel_case_types)]
2
3//! *See the [Arb documentation](https://arblib.org/).
4
5use 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}