use libc::*;
use crate::deps::*;
use crate::flint::*;
use crate::fmpq_types::*;
use crate::fmpz_types::*;
use crate::padic_types::*;
extern "C" {
#[link_name = "_fmpz_vec_ord_p__extern"]
pub fn _fmpz_vec_ord_p(vec: *const fmpz, len: slong, p: *const fmpz) -> slong;
pub fn padic_poly_init(poly: *mut padic_poly_struct);
pub fn padic_poly_init2(poly: *mut padic_poly_struct, alloc: slong, prec: slong);
pub fn padic_poly_clear(poly: *mut padic_poly_struct);
pub fn padic_poly_realloc(poly: *mut padic_poly_struct, alloc: slong, p: *const fmpz);
pub fn padic_poly_fit_length(poly: *mut padic_poly_struct, len: slong);
#[link_name = "_padic_poly_set_length__extern"]
pub fn _padic_poly_set_length(poly: *mut padic_poly_struct, len: slong);
pub fn _padic_poly_normalise(poly: *mut padic_poly_struct);
pub fn _padic_poly_canonicalise(poly: *mut fmpz, v: *mut slong, len: slong, p: *const fmpz);
pub fn padic_poly_canonicalise(poly: *mut padic_poly_struct, p: *const fmpz);
pub fn padic_poly_reduce(poly: *mut padic_poly_struct, ctx: *const padic_ctx_struct);
#[link_name = "padic_poly_truncate__extern"]
pub fn padic_poly_truncate(poly: *mut padic_poly_struct, n: slong, p: *const fmpz);
#[link_name = "padic_poly_degree__extern"]
pub fn padic_poly_degree(poly: *const padic_poly_struct) -> slong;
#[link_name = "padic_poly_length__extern"]
pub fn padic_poly_length(poly: *const padic_poly_struct) -> slong;
#[link_name = "padic_poly_val__extern"]
pub fn padic_poly_val(poly: *const padic_poly_struct) -> slong;
pub fn padic_poly_randtest(
f: *mut padic_poly_struct,
state: *mut flint_rand_struct,
len: slong,
ctx: *const padic_ctx_struct,
);
pub fn padic_poly_randtest_not_zero(
f: *mut padic_poly_struct,
state: *mut flint_rand_struct,
len: slong,
ctx: *const padic_ctx_struct,
);
pub fn padic_poly_randtest_val(
f: *mut padic_poly_struct,
state: *mut flint_rand_struct,
val: slong,
len: slong,
ctx: *const padic_ctx_struct,
);
pub fn padic_poly_set(
poly1: *mut padic_poly_struct,
poly2: *const padic_poly_struct,
ctx: *const padic_ctx_struct,
);
pub fn padic_poly_set_padic(
poly: *mut padic_poly_struct,
x: *const padic_struct,
ctx: *const padic_ctx_struct,
);
pub fn padic_poly_set_si(poly: *mut padic_poly_struct, x: slong, ctx: *const padic_ctx_struct);
pub fn padic_poly_set_ui(poly: *mut padic_poly_struct, x: ulong, ctx: *const padic_ctx_struct);
pub fn padic_poly_set_fmpz(
poly: *mut padic_poly_struct,
x: *const fmpz,
ctx: *const padic_ctx_struct,
);
pub fn padic_poly_set_fmpq(
poly: *mut padic_poly_struct,
x: *const fmpq,
ctx: *const padic_ctx_struct,
);
pub fn padic_poly_set_fmpz_poly(
rop: *mut padic_poly_struct,
op: *const fmpz_poly_struct,
ctx: *const padic_ctx_struct,
);
pub fn padic_poly_set_fmpq_poly(
rop: *mut padic_poly_struct,
op: *const fmpq_poly_struct,
ctx: *const padic_ctx_struct,
);
pub fn padic_poly_get_fmpz_poly(
rop: *mut fmpz_poly_struct,
op: *const padic_poly_struct,
ctx: *const padic_ctx_struct,
) -> libc::c_int;
pub fn padic_poly_get_fmpq_poly(
rop: *mut fmpq_poly_struct,
op: *const padic_poly_struct,
ctx: *const padic_ctx_struct,
);
#[link_name = "padic_poly_zero__extern"]
pub fn padic_poly_zero(poly: *mut padic_poly_struct);
#[link_name = "padic_poly_one__extern"]
pub fn padic_poly_one(poly: *mut padic_poly_struct);
pub fn padic_poly_swap(poly1: *mut padic_poly_struct, poly2: *mut padic_poly_struct);
pub fn padic_poly_get_coeff_padic(
c: *mut padic_struct,
poly: *const padic_poly_struct,
n: slong,
ctx: *const padic_ctx_struct,
);
pub fn padic_poly_set_coeff_padic(
poly: *mut padic_poly_struct,
n: slong,
c: *const padic_struct,
ctx: *const padic_ctx_struct,
);
pub fn padic_poly_equal(
poly1: *const padic_poly_struct,
poly2: *const padic_poly_struct,
) -> libc::c_int;
#[link_name = "padic_poly_is_zero__extern"]
pub fn padic_poly_is_zero(poly: *const padic_poly_struct) -> libc::c_int;
#[link_name = "padic_poly_is_one__extern"]
pub fn padic_poly_is_one(poly: *const padic_poly_struct) -> libc::c_int;
pub fn _padic_poly_add(
rop: *mut fmpz,
rval: *mut slong,
N: slong,
op1: *const fmpz,
val1: slong,
len1: slong,
UNUSED_N1: slong,
op2: *const fmpz,
val2: slong,
len2: slong,
UNUSED_N2: slong,
ctx: *const padic_ctx_struct,
);
pub fn padic_poly_add(
f: *mut padic_poly_struct,
g: *const padic_poly_struct,
h: *const padic_poly_struct,
ctx: *const padic_ctx_struct,
);
pub fn _padic_poly_sub(
rop: *mut fmpz,
rval: *mut slong,
N: slong,
op1: *const fmpz,
val1: slong,
len1: slong,
UNUSED_N1: slong,
op2: *const fmpz,
val2: slong,
len2: slong,
UNUSED_N2: slong,
ctx: *const padic_ctx_struct,
);
pub fn padic_poly_sub(
f: *mut padic_poly_struct,
g: *const padic_poly_struct,
h: *const padic_poly_struct,
ctx: *const padic_ctx_struct,
);
pub fn padic_poly_neg(
f: *mut padic_poly_struct,
g: *const padic_poly_struct,
ctx: *const padic_ctx_struct,
);
pub fn _padic_poly_scalar_mul_padic(
rop: *mut fmpz,
rval: *mut slong,
N: slong,
op: *const fmpz,
val: slong,
len: slong,
c: *const padic_struct,
ctx: *const padic_ctx_struct,
);
pub fn padic_poly_scalar_mul_padic(
rop: *mut padic_poly_struct,
op: *const padic_poly_struct,
c: *const padic_struct,
ctx: *const padic_ctx_struct,
);
pub fn _padic_poly_mul(
rop: *mut fmpz,
rval: *mut slong,
N: slong,
op1: *const fmpz,
val1: slong,
len1: slong,
op2: *const fmpz,
val2: slong,
len2: slong,
ctx: *const padic_ctx_struct,
);
pub fn padic_poly_mul(
res: *mut padic_poly_struct,
poly1: *const padic_poly_struct,
poly2: *const padic_poly_struct,
ctx: *const padic_ctx_struct,
);
pub fn _padic_poly_pow(
rop: *mut fmpz,
rval: *mut slong,
N: slong,
op: *const fmpz,
val: slong,
len: slong,
e: ulong,
ctx: *const padic_ctx_struct,
);
pub fn padic_poly_pow(
rop: *mut padic_poly_struct,
op: *const padic_poly_struct,
e: ulong,
ctx: *const padic_ctx_struct,
);
pub fn padic_poly_inv_series(
g: *mut padic_poly_struct,
f: *const padic_poly_struct,
n: slong,
ctx: *const padic_ctx_struct,
);
pub fn _padic_poly_derivative(
rop: *mut fmpz,
rval: *mut slong,
N: slong,
op: *const fmpz,
val: slong,
len: slong,
ctx: *const padic_ctx_struct,
);
pub fn padic_poly_derivative(
rop: *mut padic_poly_struct,
op: *const padic_poly_struct,
ctx: *const padic_ctx_struct,
);
pub fn padic_poly_shift_left(
rop: *mut padic_poly_struct,
op: *const padic_poly_struct,
n: slong,
ctx: *const padic_ctx_struct,
);
pub fn padic_poly_shift_right(
rop: *mut padic_poly_struct,
op: *const padic_poly_struct,
n: slong,
ctx: *const padic_ctx_struct,
);
pub fn _padic_poly_evaluate_padic(
u: *mut fmpz,
v: *mut slong,
N: slong,
poly: *const fmpz,
val: slong,
len: slong,
a: *const fmpz,
b: slong,
ctx: *const padic_ctx_struct,
);
pub fn padic_poly_evaluate_padic(
y: *mut padic_struct,
poly: *const padic_poly_struct,
a: *const padic_struct,
ctx: *const padic_ctx_struct,
);
pub fn _padic_poly_compose(
rop: *mut fmpz,
rval: *mut slong,
N: slong,
op1: *const fmpz,
val1: slong,
len1: slong,
op2: *const fmpz,
val2: slong,
len2: slong,
ctx: *const padic_ctx_struct,
);
pub fn padic_poly_compose(
rop: *mut padic_poly_struct,
op1: *const padic_poly_struct,
op2: *const padic_poly_struct,
ctx: *const padic_ctx_struct,
);
pub fn _padic_poly_compose_pow(
rop: *mut fmpz,
rval: *mut slong,
N: slong,
op: *const fmpz,
val: slong,
len: slong,
k: slong,
ctx: *const padic_ctx_struct,
);
pub fn padic_poly_compose_pow(
rop: *mut padic_poly_struct,
op: *const padic_poly_struct,
k: slong,
ctx: *const padic_ctx_struct,
);
pub fn _padic_poly_fprint(
file: *mut FILE,
poly: *const fmpz,
val: slong,
len: slong,
ctx: *const padic_ctx_struct,
) -> libc::c_int;
pub fn padic_poly_fprint(
file: *mut FILE,
poly: *const padic_poly_struct,
ctx: *const padic_ctx_struct,
) -> libc::c_int;
pub fn _padic_poly_fprint_pretty(
file: *mut FILE,
poly: *const fmpz,
len: slong,
val: slong,
var: *const libc::c_char,
ctx: *const padic_ctx_struct,
) -> libc::c_int;
pub fn padic_poly_fprint_pretty(
file: *mut FILE,
poly: *const padic_poly_struct,
var: *const libc::c_char,
ctx: *const padic_ctx_struct,
) -> libc::c_int;
pub fn _padic_poly_print(
poly: *const fmpz,
val: slong,
len: slong,
ctx: *const padic_ctx_struct,
) -> libc::c_int;
pub fn padic_poly_print(
poly: *const padic_poly_struct,
ctx: *const padic_ctx_struct,
) -> libc::c_int;
pub fn _padic_poly_print_pretty(
poly: *const fmpz,
len: slong,
val: slong,
var: *const libc::c_char,
ctx: *const padic_ctx_struct,
) -> libc::c_int;
pub fn padic_poly_print_pretty(
poly: *const padic_poly_struct,
var: *const libc::c_char,
ctx: *const padic_ctx_struct,
) -> libc::c_int;
pub fn padic_poly_debug(poly: *const padic_poly_struct) -> libc::c_int;
pub fn _padic_poly_is_canonical(
op: *const fmpz,
val: slong,
len: slong,
ctx: *const padic_ctx_struct,
) -> libc::c_int;
pub fn padic_poly_is_canonical(
op: *const padic_poly_struct,
ctx: *const padic_ctx_struct,
) -> libc::c_int;
pub fn _padic_poly_is_reduced(
op: *const fmpz,
val: slong,
len: slong,
N: slong,
ctx: *const padic_ctx_struct,
) -> libc::c_int;
pub fn padic_poly_is_reduced(
op: *const padic_poly_struct,
ctx: *const padic_ctx_struct,
) -> libc::c_int;
}