use crate::deps::*;
use crate::flint::*;
extern "C" {
pub fn _d_vec_init(len: slong) -> *mut f64;
pub fn _d_vec_clear(vec: *mut f64);
pub fn _d_vec_randtest(
f: *mut f64,
state: *mut flint_rand_struct,
len: slong,
minexp: slong,
maxexp: slong,
);
pub fn _d_vec_set(vec1: *mut f64, vec2: *const f64, len2: slong);
pub fn _d_vec_zero(vec: *mut f64, len: slong);
pub fn _d_vec_equal(vec1: *const f64, vec2: *const f64, len: slong) -> libc::c_int;
pub fn _d_vec_approx_equal(
vec1: *const f64,
vec2: *const f64,
len: slong,
eps: f64,
) -> libc::c_int;
pub fn _d_vec_is_zero(vec: *const f64, len: slong) -> libc::c_int;
pub fn _d_vec_is_approx_zero(vec: *const f64, len: slong, eps: f64) -> libc::c_int;
pub fn _d_vec_add(res: *mut f64, vec1: *const f64, vec2: *const f64, len2: slong);
pub fn _d_vec_sub(res: *mut f64, vec1: *const f64, vec2: *const f64, len2: slong);
#[link_name = "_d_vec_mul_2exp__extern"]
pub fn _d_vec_mul_2exp(res: *mut f64, x: *const f64, len: slong, e: libc::c_int);
pub fn _d_vec_dot(vec1: *const f64, vec2: *const f64, len2: slong) -> f64;
pub fn _d_vec_norm(vec: *const f64, len: slong) -> f64;
pub fn _d_vec_dot_heuristic(
vec1: *const f64,
vec2: *const f64,
len2: slong,
err: *mut f64,
) -> f64;
pub fn _d_vec_dot_thrice(vec1: *const f64, vec2: *const f64, len2: slong, err: *mut f64)
-> f64;
}