use libc::*;
use crate::deps::*;
use crate::flint::*;
extern "C" {
#[link_name = "_fmpz_vec_init__extern"]
pub fn _fmpz_vec_init(len: slong) -> *mut fmpz;
pub fn _fmpz_vec_clear(vec: *mut fmpz, len: slong);
pub fn _fmpz_vec_randtest(
f: *mut fmpz,
state: *mut flint_rand_struct,
len: slong,
bits: flint_bitcnt_t,
);
pub fn _fmpz_vec_randtest_unsigned(
f: *mut fmpz,
state: *mut flint_rand_struct,
len: slong,
bits: flint_bitcnt_t,
);
pub fn _fmpz_vec_max_bits(vec: *const fmpz, len: slong) -> slong;
pub fn _fmpz_vec_max_bits_ref(vec: *const fmpz, len: slong) -> slong;
pub fn _fmpz_vec_sum_max_bits(
sumabs: *mut slong,
maxabs: *mut slong,
coeffs: *const fmpz,
length: slong,
);
pub fn _fmpz_vec_max_limbs(vec: *const fmpz, len: slong) -> slong;
pub fn _fmpz_vec_height(height: *mut fmpz, vec: *const fmpz, len: slong);
pub fn _fmpz_vec_height_index(vec: *const fmpz, len: slong) -> slong;
pub fn _fmpz_vec_fprint(file: *mut FILE, vec: *const fmpz, len: slong) -> libc::c_int;
pub fn _fmpz_vec_fread(file: *mut FILE, vec: *mut *mut fmpz, len: *mut slong) -> libc::c_int;
pub fn _fmpz_vec_print(vec: *const fmpz, len: slong) -> libc::c_int;
pub fn _fmpz_vec_read(vec: *mut *mut fmpz, len: *mut slong) -> libc::c_int;
pub fn _fmpz_vec_get_nmod_vec(res: nn_ptr, poly: *const fmpz, len: slong, mod_: nmod_t);
pub fn _fmpz_vec_set_nmod_vec(res: *mut fmpz, poly: nn_srcptr, len: slong, mod_: nmod_t);
pub fn _fmpz_vec_get_fft(
coeffs_f: *mut *mut ulong,
coeffs_m: *const fmpz,
l: slong,
length: slong,
);
pub fn _fmpz_vec_set_fft(
coeffs_m: *mut fmpz,
length: slong,
coeffs_f: *const nn_ptr,
limbs: slong,
sign: slong,
);
pub fn _fmpz_vec_get_d_vec_2exp(appv: *mut f64, vec: *const fmpz, len: slong) -> slong;
pub fn _fmpz_vec_set(vec1: *mut fmpz, vec2: *const fmpz, len2: slong);
pub fn _fmpz_vec_swap(vec1: *mut fmpz, vec2: *mut fmpz, len2: slong);
pub fn _fmpz_vec_zero(vec: *mut fmpz, len: slong);
pub fn _fmpz_vec_scalar_abs(vec1: *mut fmpz, vec2: *const fmpz, len2: slong);
pub fn _fmpz_vec_equal(vec1: *const fmpz, vec2: *const fmpz, len: slong) -> libc::c_int;
pub fn _fmpz_vec_is_zero(vec: *const fmpz, len: slong) -> libc::c_int;
pub fn _fmpz_vec_min(vec1: *mut fmpz, vec2: *const fmpz, vec3: *const fmpz, len: slong);
pub fn _fmpz_vec_max(vec1: *mut fmpz, vec2: *const fmpz, vec3: *const fmpz, len: slong);
pub fn _fmpz_vec_min_inplace(vec1: *mut fmpz, vec2: *const fmpz, len: slong);
pub fn _fmpz_vec_max_inplace(vec1: *mut fmpz, vec2: *const fmpz, len: slong);
pub fn _fmpz_vec_sort(vec: *mut fmpz, len: slong);
pub fn _fmpz_vec_add(res: *mut fmpz, vec1: *const fmpz, vec2: *const fmpz, len2: slong);
pub fn _fmpz_vec_sub(res: *mut fmpz, vec1: *const fmpz, vec2: *const fmpz, len2: slong);
pub fn _fmpz_vec_neg(vec1: *mut fmpz, vec2: *const fmpz, len2: slong);
pub fn _fmpz_vec_scalar_mul_si(vec1: *mut fmpz, vec2: *const fmpz, len2: slong, c: slong);
pub fn _fmpz_vec_scalar_mul_ui(vec1: *mut fmpz, vec2: *const fmpz, len2: slong, c: ulong);
pub fn _fmpz_vec_scalar_mul_fmpz(
vec1: *mut fmpz,
vec2: *const fmpz,
len2: slong,
x: *const fmpz,
);
pub fn _fmpz_vec_scalar_mul_2exp(vec1: *mut fmpz, vec2: *const fmpz, len2: slong, exp: ulong);
pub fn _fmpz_vec_scalar_divexact_si(vec1: *mut fmpz, vec2: *const fmpz, len2: slong, c: slong);
pub fn _fmpz_vec_scalar_divexact_ui(vec1: *mut fmpz, vec2: *const fmpz, len2: slong, c: ulong);
pub fn _fmpz_vec_scalar_divexact_fmpz(
vec1: *mut fmpz,
vec2: *const fmpz,
len2: slong,
x: *const fmpz,
);
pub fn _fmpz_vec_scalar_fdiv_q_si(vec1: *mut fmpz, vec2: *const fmpz, len2: slong, c: slong);
pub fn _fmpz_vec_scalar_fdiv_q_ui(vec1: *mut fmpz, vec2: *const fmpz, len2: slong, c: ulong);
pub fn _fmpz_vec_scalar_fdiv_q_fmpz(
vec1: *mut fmpz,
vec2: *const fmpz,
len2: slong,
c: *const fmpz,
);
pub fn _fmpz_vec_scalar_fdiv_q_2exp(
vec1: *mut fmpz,
vec2: *const fmpz,
len2: slong,
exp: ulong,
);
pub fn _fmpz_vec_scalar_fdiv_r_2exp(
vec1: *mut fmpz,
vec2: *const fmpz,
len2: slong,
exp: ulong,
);
pub fn _fmpz_vec_scalar_tdiv_q_si(vec1: *mut fmpz, vec2: *const fmpz, len2: slong, c: slong);
pub fn _fmpz_vec_scalar_tdiv_q_ui(vec1: *mut fmpz, vec2: *const fmpz, len2: slong, c: ulong);
pub fn _fmpz_vec_scalar_tdiv_q_fmpz(
vec1: *mut fmpz,
vec2: *const fmpz,
len2: slong,
c: *const fmpz,
);
pub fn _fmpz_vec_scalar_tdiv_q_2exp(
vec1: *mut fmpz,
vec2: *const fmpz,
len2: slong,
exp: ulong,
);
pub fn _fmpz_vec_scalar_addmul_si(vec1: *mut fmpz, vec2: *const fmpz, len2: slong, c: slong);
pub fn _fmpz_vec_scalar_addmul_ui(vec1: *mut fmpz, vec2: *const fmpz, len2: slong, c: ulong);
pub fn _fmpz_vec_scalar_addmul_fmpz(
poly1: *mut fmpz,
poly2: *const fmpz,
len2: slong,
x: *const fmpz,
);
pub fn _fmpz_vec_scalar_addmul_si_2exp(
vec1: *mut fmpz,
vec2: *const fmpz,
len2: slong,
c: slong,
exp: ulong,
);
pub fn _fmpz_vec_scalar_submul_si(vec1: *mut fmpz, vec2: *const fmpz, len2: slong, c: slong);
pub fn _fmpz_vec_scalar_submul_fmpz(
vec1: *mut fmpz,
vec2: *const fmpz,
len2: slong,
x: *const fmpz,
);
pub fn _fmpz_vec_scalar_submul_si_2exp(
vec1: *mut fmpz,
vec2: *const fmpz,
len2: slong,
c: slong,
exp: ulong,
);
pub fn _fmpz_vec_sum(res: *mut fmpz, vec: *const fmpz, len: slong);
pub fn _fmpz_vec_prod(res: *mut fmpz, vec: *const fmpz, len: slong);
pub fn _fmpz_ui_vec_prod(res: *mut fmpz, vec: nn_srcptr, len: slong);
pub fn _fmpz_vec_scalar_mod_fmpz(res: *mut fmpz, vec: *const fmpz, len: slong, p: *const fmpz);
pub fn _fmpz_vec_scalar_smod_fmpz(res: *mut fmpz, vec: *const fmpz, len: slong, p: *const fmpz);
pub fn _fmpz_vec_content(res: *mut fmpz, vec: *const fmpz, len: slong);
pub fn _fmpz_vec_content_chained(
res: *mut fmpz,
vec: *const fmpz,
len: slong,
inp: *const fmpz,
);
pub fn _fmpz_vec_lcm(res: *mut fmpz, vec: *const fmpz, len: slong);
pub fn _fmpz_vec_dot_general_naive(
res: *mut fmpz,
initial: *const fmpz,
subtract: libc::c_int,
a: *const fmpz,
b: *const fmpz,
reverse: libc::c_int,
len: slong,
);
pub fn _fmpz_vec_dot_general(
res: *mut fmpz,
initial: *const fmpz,
subtract: libc::c_int,
a: *const fmpz,
b: *const fmpz,
reverse: libc::c_int,
len: slong,
);
#[link_name = "_fmpz_vec_dot__extern"]
pub fn _fmpz_vec_dot(res: *mut fmpz, vec1: *const fmpz, vec2: *const fmpz, len2: slong);
}