# sage_setup: distribution = sagemath-flint
# distutils: libraries = flint
# distutils: depends = flint/bool_mat.h

################################################################################
# This file is auto-generated by the script
#   SAGE_ROOT/src/sage_setup/autogen/flint_autogen.py.
# From the commit 3e2c3a3e091106a25ca9c6fba28e02f2cbcd654a
# Do not modify by hand! Fix and rerun the script instead.
################################################################################

from libc.stdio cimport FILE
from sage.libs.gmp.types cimport *
from sage.libs.mpfr.types cimport *
from sage.libs.flint.types cimport *

cdef extern from "flint_wrap.h":
    int bool_mat_get_entry(const bool_mat_t mat, slong i, slong j) noexcept
    void bool_mat_set_entry(bool_mat_t mat, slong i, slong j, int x) noexcept
    void bool_mat_init(bool_mat_t mat, slong r, slong c) noexcept
    void bool_mat_clear(bool_mat_t mat) noexcept
    bint bool_mat_is_empty(const bool_mat_t mat) noexcept
    bint bool_mat_is_square(const bool_mat_t mat) noexcept
    void bool_mat_set(bool_mat_t dest, const bool_mat_t src) noexcept
    void bool_mat_print(const bool_mat_t mat) noexcept
    void bool_mat_fprint(FILE * file, const bool_mat_t mat) noexcept
    bint bool_mat_equal(const bool_mat_t mat1, const bool_mat_t mat2) noexcept
    int bool_mat_any(const bool_mat_t mat) noexcept
    int bool_mat_all(const bool_mat_t mat) noexcept
    bint bool_mat_is_diagonal(const bool_mat_t A) noexcept
    bint bool_mat_is_lower_triangular(const bool_mat_t A) noexcept
    bint bool_mat_is_transitive(const bool_mat_t mat) noexcept
    bint bool_mat_is_nilpotent(const bool_mat_t A) noexcept
    void bool_mat_randtest(bool_mat_t mat, flint_rand_t state) noexcept
    void bool_mat_randtest_diagonal(bool_mat_t mat, flint_rand_t state) noexcept
    void bool_mat_randtest_nilpotent(bool_mat_t mat, flint_rand_t state) noexcept
    void bool_mat_zero(bool_mat_t mat) noexcept
    void bool_mat_one(bool_mat_t mat) noexcept
    void bool_mat_directed_path(bool_mat_t A) noexcept
    void bool_mat_directed_cycle(bool_mat_t A) noexcept
    void bool_mat_transpose(bool_mat_t dest, const bool_mat_t src) noexcept
    void bool_mat_complement(bool_mat_t B, const bool_mat_t A) noexcept
    void bool_mat_add(bool_mat_t res, const bool_mat_t mat1, const bool_mat_t mat2) noexcept
    void bool_mat_mul(bool_mat_t res, const bool_mat_t mat1, const bool_mat_t mat2) noexcept
    void bool_mat_mul_entrywise(bool_mat_t res, const bool_mat_t mat1, const bool_mat_t mat2) noexcept
    void bool_mat_sqr(bool_mat_t B, const bool_mat_t A) noexcept
    void bool_mat_pow_ui(bool_mat_t B, const bool_mat_t A, ulong exp) noexcept
    int bool_mat_trace(const bool_mat_t mat) noexcept
    slong bool_mat_nilpotency_degree(const bool_mat_t A) noexcept
    void bool_mat_transitive_closure(bool_mat_t B, const bool_mat_t A) noexcept
    slong bool_mat_get_strongly_connected_components(slong * p, const bool_mat_t A) noexcept
    slong bool_mat_all_pairs_longest_walk(fmpz_mat_t B, const bool_mat_t A) noexcept
