# sage_setup: distribution = sagemath-flint
# distutils: libraries = flint
# distutils: depends = flint/nmod_vec.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":
    mp_ptr _nmod_vec_init(slong len) noexcept
    void _nmod_vec_clear(mp_ptr vec) noexcept
    void _nmod_vec_randtest(mp_ptr vec, flint_rand_t state, slong len, nmod_t mod) noexcept
    void _nmod_vec_set(mp_ptr res, mp_srcptr vec, slong len) noexcept
    void _nmod_vec_zero(mp_ptr vec, slong len) noexcept
    void _nmod_vec_swap(mp_ptr a, mp_ptr b, slong length) noexcept
    void _nmod_vec_reduce(mp_ptr res, mp_srcptr vec, slong len, nmod_t mod) noexcept
    flint_bitcnt_t _nmod_vec_max_bits(mp_srcptr vec, slong len) noexcept
    bint _nmod_vec_equal(mp_srcptr vec, mp_srcptr vec2, slong len) noexcept
    void _nmod_vec_print_pretty(mp_srcptr vec, slong len, nmod_t mod) noexcept
    int _nmod_vec_fprint_pretty(FILE * file, mp_srcptr vec, slong len, nmod_t mod) noexcept
    int _nmod_vec_print(mp_srcptr vec, slong len, nmod_t mod) noexcept
    int _nmod_vec_fprint(FILE * f, mp_srcptr vec, slong len, nmod_t mod) noexcept
    void _nmod_vec_add(mp_ptr res, mp_srcptr vec1, mp_srcptr vec2, slong len, nmod_t mod) noexcept
    void _nmod_vec_sub(mp_ptr res, mp_srcptr vec1, mp_srcptr vec2, slong len, nmod_t mod) noexcept
    void _nmod_vec_neg(mp_ptr res, mp_srcptr vec, slong len, nmod_t mod) noexcept
    void _nmod_vec_scalar_mul_nmod(mp_ptr res, mp_srcptr vec, slong len, mp_limb_t c, nmod_t mod) noexcept
    void _nmod_vec_scalar_mul_nmod_shoup(mp_ptr res, mp_srcptr vec, slong len, mp_limb_t c, nmod_t mod) noexcept
    void _nmod_vec_scalar_addmul_nmod(mp_ptr res, mp_srcptr vec, slong len, mp_limb_t c, nmod_t mod) noexcept
    int _nmod_vec_dot_bound_limbs(slong len, nmod_t mod) noexcept
    mp_limb_t _nmod_vec_dot(mp_srcptr vec1, mp_srcptr vec2, slong len, nmod_t mod, int nlimbs) noexcept
    mp_limb_t _nmod_vec_dot_rev(mp_srcptr vec1, mp_srcptr vec2, slong len, nmod_t mod, int nlimbs) noexcept
    mp_limb_t _nmod_vec_dot_ptr(mp_srcptr vec1, const mp_ptr * vec2, slong offset, slong len, nmod_t mod, int nlimbs) noexcept
