# sage_setup: distribution = sagemath-flint
# distutils: libraries = flint
# distutils: depends = flint/d_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":
    void d_mat_init(d_mat_t mat, slong rows, slong cols) noexcept
    void d_mat_clear(d_mat_t mat) noexcept
    void d_mat_set(d_mat_t mat1, const d_mat_t mat2) noexcept
    void d_mat_swap(d_mat_t mat1, d_mat_t mat2) noexcept
    void d_mat_swap_entrywise(d_mat_t mat1, d_mat_t mat2) noexcept
    double d_mat_entry(d_mat_t mat, slong i, slong j) noexcept
    double d_mat_get_entry(const d_mat_t mat, slong i, slong j) noexcept
    double * d_mat_entry_ptr(const d_mat_t mat, slong i, slong j) noexcept
    void d_mat_zero(d_mat_t mat) noexcept
    void d_mat_one(d_mat_t mat) noexcept
    void d_mat_randtest(d_mat_t mat, flint_rand_t state, slong minexp, slong maxexp) noexcept
    void d_mat_print(const d_mat_t mat) noexcept
    bint d_mat_equal(const d_mat_t mat1, const d_mat_t mat2) noexcept
    bint d_mat_approx_equal(const d_mat_t mat1, const d_mat_t mat2, double eps) noexcept
    bint d_mat_is_zero(const d_mat_t mat) noexcept
    bint d_mat_is_approx_zero(const d_mat_t mat, double eps) noexcept
    bint d_mat_is_empty(const d_mat_t mat) noexcept
    bint d_mat_is_square(const d_mat_t mat) noexcept
    void d_mat_transpose(d_mat_t B, const d_mat_t A) noexcept
    void d_mat_mul_classical(d_mat_t C, const d_mat_t A, const d_mat_t B) noexcept
    void d_mat_gso(d_mat_t B, const d_mat_t A) noexcept
    void d_mat_qr(d_mat_t Q, d_mat_t R, const d_mat_t A) noexcept
