#![allow(dead_code)]
use std::ffi::{c_int, c_void};
use std::os::raw::c_char;
#[repr(C, align(8))]
pub struct FmpzMPolyCtxBuf(pub [u8; 608]);
#[repr(C, align(8))]
pub struct FmpzMPolyBuf(pub [u8; 40]);
unsafe impl Send for FmpzMPolyCtxBuf {}
unsafe impl Sync for FmpzMPolyCtxBuf {}
unsafe impl Send for FmpzMPolyBuf {}
unsafe impl Sync for FmpzMPolyBuf {}
#[allow(non_camel_case_types)]
pub type slong = i64;
#[allow(non_camel_case_types)]
pub type ulong = u64;
#[allow(non_camel_case_types)]
pub type fmpz = slong;
#[repr(C)]
pub struct FmpzPolyStruct {
pub coeffs: *mut fmpz,
pub alloc: slong,
pub length: slong,
}
#[repr(C)]
pub struct FmpzPolyFactorStruct {
pub c: fmpz,
pub p: *mut FmpzPolyStruct,
pub exp: *mut slong,
pub num: slong,
pub alloc: slong,
}
#[repr(C)]
pub struct NmodStruct {
pub n: ulong,
pub ninv: ulong,
pub norm: ulong,
}
#[repr(C)]
pub struct NmodPolyStruct {
pub coeffs: *mut ulong,
pub alloc: slong,
pub length: slong,
pub mod_: NmodStruct,
}
#[repr(C)]
pub struct NmodPolyFactorStruct {
pub p: *mut NmodPolyStruct,
pub exp: *mut slong,
pub num: slong,
pub alloc: slong,
}
#[repr(C)]
pub struct FmpzMPolyFactorStruct {
pub constant: fmpz,
pub constant_den: fmpz,
pub poly: *mut FmpzMPolyBuf,
pub exp: *mut fmpz,
pub num: slong,
pub alloc: slong,
}
unsafe impl Send for FmpzPolyStruct {}
unsafe impl Sync for FmpzPolyStruct {}
#[repr(C)]
#[cfg(not(flint3_stride))]
pub struct FmpzMatStruct {
pub entries: *mut fmpz,
pub r: slong,
pub c: slong,
pub rows: *mut *mut fmpz,
}
#[repr(C)]
#[cfg(flint3_stride)]
pub struct FmpzMatStruct {
pub entries: *mut fmpz,
pub r: slong,
pub c: slong,
pub stride: slong,
}
#[repr(C)]
pub struct FmpzLllStruct {
pub delta: f64,
pub eta: f64,
pub rt: c_int,
pub gt: c_int,
}
pub const FMPZ_LLL_Z_BASIS: c_int = 1;
pub const FMPZ_LLL_EXACT: c_int = 1;
#[repr(C)]
pub struct FmpzFactorStruct {
pub sign: c_int,
pub p: *mut fmpz,
pub exp: *mut ulong,
pub alloc: slong,
pub num: slong,
}
#[repr(C)]
#[cfg(not(flint3_stride))]
pub struct NmodMatStruct {
pub entries: *mut ulong,
pub r: slong,
pub c: slong,
pub rows: *mut *mut ulong,
pub mod_: NmodStruct,
}
#[repr(C)]
#[cfg(flint3_stride)]
pub struct NmodMatStruct {
pub entries: *mut ulong,
pub r: slong,
pub c: slong,
pub stride: slong,
pub mod_: NmodStruct,
}
#[repr(C)]
#[cfg(not(flint3_stride))]
pub struct FqNmodMatStruct {
pub entries: *mut NmodPolyStruct,
pub r: slong,
pub c: slong,
pub rows: *mut *mut NmodPolyStruct,
}
#[repr(C)]
#[cfg(flint3_stride)]
pub struct FqNmodMatStruct {
pub entries: *mut NmodPolyStruct,
pub r: slong,
pub c: slong,
pub stride: slong,
}
#[repr(C, align(8))]
pub struct FqNmodCtxBuf(pub [u8; 512]);
#[repr(C, align(8))]
pub struct FqNmodPolyBuf(pub [u8; 128]);
#[repr(C)]
pub struct Fmpq {
pub num: fmpz,
pub den: fmpz,
}
#[repr(C, align(8))]
pub struct FmpqPolyBuf(pub [u8; 64]);
#[repr(C, align(8))]
pub struct NfBuf(pub [u8; 512]);
#[repr(C, align(8))]
pub struct NfElemBuf(pub [u8; 128]);
#[link(name = "flint")]
extern "C" {
pub fn flint_free(ptr: *mut c_void);
pub fn flint_cleanup();
pub fn fmpz_init(f: *mut fmpz);
pub fn fmpz_clear(f: *mut fmpz);
pub fn fmpz_set(f: *mut fmpz, g: *const fmpz);
pub fn fmpz_set_si(f: *mut fmpz, val: slong);
pub fn fmpz_get_si(f: *const fmpz) -> slong;
pub fn fmpz_get_str(str_: *mut c_char, b: c_int, f: *const fmpz) -> *mut c_char;
pub fn fmpz_set_str(f: *mut fmpz, str_: *const c_char, b: c_int) -> c_int;
pub fn fmpz_fits_si(f: *const fmpz) -> c_int;
pub fn fmpz_bits(f: *const fmpz) -> ulong;
pub fn fmpz_set_ui_array(out: *mut fmpz, in_: *const ulong, n: slong);
pub fn fmpz_get_ui_array(out: *mut ulong, n: slong, in_: *const fmpz);
pub fn fmpz_equal(f: *const fmpz, g: *const fmpz) -> c_int;
pub fn fmpz_cmp_ui(f: *const fmpz, x: ulong) -> c_int;
pub fn fmpz_add(f: *mut fmpz, g: *const fmpz, h: *const fmpz);
pub fn fmpz_sub(f: *mut fmpz, g: *const fmpz, h: *const fmpz);
pub fn fmpz_mul(f: *mut fmpz, g: *const fmpz, h: *const fmpz);
pub fn fmpz_tdiv_q(f: *mut fmpz, g: *const fmpz, h: *const fmpz);
pub fn fmpz_tdiv_qr(q: *mut fmpz, r: *mut fmpz, g: *const fmpz, h: *const fmpz);
pub fn fmpz_neg(f: *mut fmpz, g: *const fmpz);
pub fn fmpz_gcd(f: *mut fmpz, g: *const fmpz, h: *const fmpz);
pub fn fmpz_pow_ui(f: *mut fmpz, g: *const fmpz, x: ulong);
pub fn fmpz_set_ui(f: *mut fmpz, val: ulong);
pub fn fmpz_cmp(f: *const fmpz, g: *const fmpz) -> c_int;
pub fn fmpz_cmp_si(f: *const fmpz, s: slong) -> c_int;
pub fn fmpz_abs(f: *mut fmpz, g: *const fmpz);
pub fn fmpz_sub_ui(f: *mut fmpz, g: *const fmpz, h: ulong);
pub fn fmpz_mul_ui(f: *mut fmpz, g: *const fmpz, h: ulong);
pub fn fmpz_mod(f: *mut fmpz, x: *const fmpz, m: *const fmpz);
pub fn fmpz_powm(r: *mut fmpz, b: *const fmpz, e: *const fmpz, m: *const fmpz);
pub fn fmpz_invmod(res: *mut fmpz, x: *const fmpz, m: *const fmpz) -> c_int;
pub fn fmpz_sqrtmod(x: *mut fmpz, a: *const fmpz, p: *const fmpz) -> c_int;
pub fn fmpz_jacobi(a: *const fmpz, n: *const fmpz) -> c_int;
pub fn fmpz_is_prime(n: *const fmpz) -> c_int;
pub fn fmpz_nextprime(res: *mut fmpz, n: *const fmpz, proved: c_int);
pub fn fmpz_euler_phi(res: *mut fmpz, n: *const fmpz);
pub fn fmpz_factor_init(fac: *mut FmpzFactorStruct);
pub fn fmpz_factor_clear(fac: *mut FmpzFactorStruct);
pub fn fmpz_factor(fac: *mut FmpzFactorStruct, n: *const fmpz);
pub fn fmpz_factor_smooth(
fac: *mut FmpzFactorStruct,
n: *const fmpz,
bits: slong,
proved: c_int,
) -> c_int;
pub fn fmpz_is_probabprime(n: *const fmpz) -> c_int;
pub fn fmpz_fdiv_ui(g: *const fmpz, h: ulong) -> ulong;
pub fn fmpz_get_ui(f: *const fmpz) -> ulong;
pub fn fmpz_poly_init(poly: *mut FmpzPolyStruct);
pub fn fmpz_poly_clear(poly: *mut FmpzPolyStruct);
pub fn fmpz_poly_set(dst: *mut FmpzPolyStruct, src: *const FmpzPolyStruct);
pub fn fmpz_poly_set_coeff_si(poly: *mut FmpzPolyStruct, n: slong, x: slong);
pub fn fmpz_poly_get_coeff_si(poly: *const FmpzPolyStruct, n: slong) -> slong;
pub fn fmpz_poly_set_coeff_fmpz(poly: *mut FmpzPolyStruct, n: slong, x: *const fmpz);
pub fn fmpz_poly_get_coeff_fmpz(x: *mut fmpz, poly: *const FmpzPolyStruct, n: slong);
pub fn fmpz_poly_length(poly: *const FmpzPolyStruct) -> slong;
pub fn fmpz_poly_degree(poly: *const FmpzPolyStruct) -> slong;
pub fn fmpz_poly_add(
res: *mut FmpzPolyStruct,
a: *const FmpzPolyStruct,
b: *const FmpzPolyStruct,
);
pub fn fmpz_poly_sub(
res: *mut FmpzPolyStruct,
a: *const FmpzPolyStruct,
b: *const FmpzPolyStruct,
);
pub fn fmpz_poly_mul(
res: *mut FmpzPolyStruct,
a: *const FmpzPolyStruct,
b: *const FmpzPolyStruct,
);
pub fn fmpz_poly_pow(res: *mut FmpzPolyStruct, poly: *const FmpzPolyStruct, e: ulong);
pub fn fmpz_poly_gcd(
res: *mut FmpzPolyStruct,
a: *const FmpzPolyStruct,
b: *const FmpzPolyStruct,
);
pub fn fmpz_poly_div(
q: *mut FmpzPolyStruct,
a: *const FmpzPolyStruct,
b: *const FmpzPolyStruct,
);
pub fn fmpz_poly_equal(a: *const FmpzPolyStruct, b: *const FmpzPolyStruct) -> c_int;
pub fn fmpz_poly_get_str_pretty(poly: *const FmpzPolyStruct, x: *const c_char) -> *mut c_char;
pub fn fmpz_poly_factor_init(fac: *mut FmpzPolyFactorStruct);
pub fn fmpz_poly_factor_clear(fac: *mut FmpzPolyFactorStruct);
pub fn fmpz_poly_factor(fac: *mut FmpzPolyFactorStruct, poly: *const FmpzPolyStruct);
pub fn fmpz_poly_factor_get_fmpz_poly(
z: *mut FmpzPolyStruct,
fac: *const FmpzPolyFactorStruct,
i: slong,
);
pub fn fmpz_poly_factor_get_fmpz(z: *mut fmpz, fac: *const FmpzPolyFactorStruct);
pub fn fmpz_poly_swinnerton_dyer(poly: *mut FmpzPolyStruct, n: ulong);
pub fn fmpz_poly_cyclotomic(poly: *mut FmpzPolyStruct, n: ulong);
pub fn fmpz_mpoly_ctx_init(ctx: *mut FmpzMPolyCtxBuf, nvars: slong, ord: c_int);
pub fn fmpz_mpoly_ctx_clear(ctx: *mut FmpzMPolyCtxBuf);
pub fn fmpz_mpoly_init(A: *mut FmpzMPolyBuf, ctx: *const FmpzMPolyCtxBuf);
pub fn fmpz_mpoly_clear(A: *mut FmpzMPolyBuf, ctx: *const FmpzMPolyCtxBuf);
pub fn fmpz_mpoly_is_zero(A: *const FmpzMPolyBuf, ctx: *const FmpzMPolyCtxBuf) -> c_int;
pub fn fmpz_mpoly_length(A: *const FmpzMPolyBuf, ctx: *const FmpzMPolyCtxBuf) -> slong;
pub fn fmpz_mpoly_push_term_fmpz_ui(
A: *mut FmpzMPolyBuf,
c: *const fmpz,
exp: *const u64,
ctx: *const FmpzMPolyCtxBuf,
);
pub fn fmpz_mpoly_sort_terms(A: *mut FmpzMPolyBuf, ctx: *const FmpzMPolyCtxBuf);
pub fn fmpz_mpoly_combine_like_terms(A: *mut FmpzMPolyBuf, ctx: *const FmpzMPolyCtxBuf);
pub fn fmpz_mpoly_get_term_coeff_fmpz(
c: *mut fmpz,
A: *const FmpzMPolyBuf,
i: slong,
ctx: *const FmpzMPolyCtxBuf,
);
pub fn fmpz_mpoly_get_term_exp_ui(
exp: *mut u64,
A: *const FmpzMPolyBuf,
i: slong,
ctx: *const FmpzMPolyCtxBuf,
);
pub fn fmpz_mpoly_gcd(
G: *mut FmpzMPolyBuf,
A: *const FmpzMPolyBuf,
B: *const FmpzMPolyBuf,
ctx: *const FmpzMPolyCtxBuf,
) -> c_int;
pub fn fmpz_mpoly_divides(
Q: *mut FmpzMPolyBuf,
A: *const FmpzMPolyBuf,
B: *const FmpzMPolyBuf,
ctx: *const FmpzMPolyCtxBuf,
) -> c_int;
pub fn fmpz_mpoly_resultant(
R: *mut FmpzMPolyBuf,
A: *const FmpzMPolyBuf,
B: *const FmpzMPolyBuf,
var: slong,
ctx: *const FmpzMPolyCtxBuf,
) -> c_int;
pub fn fmpz_poly_derivative(res: *mut FmpzPolyStruct, poly: *const FmpzPolyStruct);
pub fn fmpz_mpoly_mul(
A: *mut FmpzMPolyBuf,
B: *const FmpzMPolyBuf,
C: *const FmpzMPolyBuf,
ctx: *const FmpzMPolyCtxBuf,
);
pub fn fmpz_mpoly_add(
A: *mut FmpzMPolyBuf,
B: *const FmpzMPolyBuf,
C: *const FmpzMPolyBuf,
ctx: *const FmpzMPolyCtxBuf,
);
pub fn fmpz_mpoly_sub(
A: *mut FmpzMPolyBuf,
B: *const FmpzMPolyBuf,
C: *const FmpzMPolyBuf,
ctx: *const FmpzMPolyCtxBuf,
);
pub fn fmpz_mpoly_set(
A: *mut FmpzMPolyBuf,
B: *const FmpzMPolyBuf,
ctx: *const FmpzMPolyCtxBuf,
);
pub fn fmpz_mpoly_pow_ui(
A: *mut FmpzMPolyBuf,
B: *const FmpzMPolyBuf,
k: ulong,
ctx: *const FmpzMPolyCtxBuf,
) -> c_int;
pub fn fmpz_mpoly_factor_init(f: *mut FmpzMPolyFactorStruct, ctx: *const FmpzMPolyCtxBuf);
pub fn fmpz_mpoly_factor_clear(f: *mut FmpzMPolyFactorStruct, ctx: *const FmpzMPolyCtxBuf);
pub fn fmpz_mpoly_factor(
f: *mut FmpzMPolyFactorStruct,
A: *const FmpzMPolyBuf,
ctx: *const FmpzMPolyCtxBuf,
) -> c_int;
pub fn fmpz_mpoly_factor_length(
f: *const FmpzMPolyFactorStruct,
ctx: *const FmpzMPolyCtxBuf,
) -> slong;
pub fn fmpz_mpoly_factor_get_base(
p: *mut FmpzMPolyBuf,
fac: *const FmpzMPolyFactorStruct,
i: slong,
ctx: *const FmpzMPolyCtxBuf,
);
pub fn fmpz_mpoly_factor_get_constant_fmpz(
c: *mut fmpz,
f: *const FmpzMPolyFactorStruct,
ctx: *const FmpzMPolyCtxBuf,
);
pub fn fmpz_mpoly_factor_get_exp_si(
f: *mut FmpzMPolyFactorStruct,
i: slong,
ctx: *const FmpzMPolyCtxBuf,
) -> slong;
pub fn fmpz_poly_resultant(res: *mut fmpz, a: *const FmpzPolyStruct, b: *const FmpzPolyStruct);
pub fn fmpz_poly_pseudo_divrem(
Q: *mut FmpzPolyStruct,
R: *mut FmpzPolyStruct,
d: *mut ulong,
A: *const FmpzPolyStruct,
B: *const FmpzPolyStruct,
);
pub fn fmpz_poly_neg(res: *mut FmpzPolyStruct, poly: *const FmpzPolyStruct);
pub fn fmpz_poly_scalar_mul_fmpz(
res: *mut FmpzPolyStruct,
poly: *const FmpzPolyStruct,
x: *const fmpz,
);
pub fn fmpz_poly_scalar_divexact_fmpz(
res: *mut FmpzPolyStruct,
poly: *const FmpzPolyStruct,
x: *const fmpz,
);
pub fn nmod_init(mod_: *mut NmodStruct, n: ulong);
pub fn nmod_poly_init(poly: *mut NmodPolyStruct, n: ulong);
pub fn nmod_poly_clear(poly: *mut NmodPolyStruct);
pub fn nmod_poly_set_coeff_ui(poly: *mut NmodPolyStruct, n: slong, c: ulong);
pub fn nmod_poly_factor_init(fac: *mut NmodPolyFactorStruct);
pub fn nmod_poly_factor_clear(fac: *mut NmodPolyFactorStruct);
pub fn nmod_poly_factor(
result: *mut NmodPolyFactorStruct,
input: *const NmodPolyStruct,
) -> ulong;
#[cfg(not(flint3))]
pub fn nmod_poly_factor_get_nmod_poly(
z: *mut NmodPolyStruct,
fac: *mut NmodPolyFactorStruct,
i: slong,
);
#[cfg(flint3)]
pub fn nmod_poly_factor_get_poly(
z: *mut NmodPolyStruct,
fac: *const NmodPolyFactorStruct,
i: slong,
);
pub fn nmod_poly_degree(poly: *const NmodPolyStruct) -> slong;
pub fn nmod_poly_get_coeff_ui(poly: *const NmodPolyStruct, j: slong) -> ulong;
pub fn fmpz_mat_init(mat: *mut FmpzMatStruct, rows: slong, cols: slong);
pub fn fmpz_mat_clear(mat: *mut FmpzMatStruct);
pub fn fmpz_mat_swap(mat1: *mut FmpzMatStruct, mat2: *mut FmpzMatStruct);
pub fn fmpz_mat_zero(mat: *mut FmpzMatStruct);
pub fn fmpz_mat_one(mat: *mut FmpzMatStruct);
pub fn fmpz_mat_set(dst: *mut FmpzMatStruct, src: *const FmpzMatStruct);
pub fn fmpz_mat_equal(a: *const FmpzMatStruct, b: *const FmpzMatStruct) -> c_int;
pub fn fmpz_mat_mul(c: *mut FmpzMatStruct, a: *const FmpzMatStruct, b: *const FmpzMatStruct);
pub fn fmpz_mat_transpose(dst: *mut FmpzMatStruct, src: *const FmpzMatStruct);
pub fn fmpz_mat_hnf_transform(
h: *mut FmpzMatStruct,
u: *mut FmpzMatStruct,
a: *const FmpzMatStruct,
);
pub fn fmpz_mat_snf(s: *mut FmpzMatStruct, a: *const FmpzMatStruct);
pub fn fmpz_mat_is_in_hnf(a: *const FmpzMatStruct) -> c_int;
pub fn fmpz_mat_is_in_snf(a: *const FmpzMatStruct) -> c_int;
pub fn fmpz_mat_entry(mat: *const FmpzMatStruct, i: slong, j: slong) -> *mut fmpz;
pub fn fmpz_mat_det(det: *mut fmpz, a: *const FmpzMatStruct);
pub fn fmpz_mat_rank(a: *const FmpzMatStruct) -> slong;
pub fn fmpz_mat_hnf(h: *mut FmpzMatStruct, a: *const FmpzMatStruct);
pub fn fmpz_mat_rref(b: *mut FmpzMatStruct, den: *mut fmpz, a: *const FmpzMatStruct) -> slong;
pub fn fmpz_lll_context_init_default(fl: *mut FmpzLllStruct);
pub fn fmpz_lll_context_init(
fl: *mut FmpzLllStruct,
delta: f64,
eta: f64,
rt: c_int,
gt: c_int,
);
pub fn fmpz_lll(b: *mut FmpzMatStruct, u: *mut FmpzMatStruct, fl: *const FmpzLllStruct);
pub fn fmpz_lll_is_reduced(
b: *const FmpzMatStruct,
fl: *const FmpzLllStruct,
prec: ulong,
) -> c_int;
pub fn n_is_prime(n: ulong) -> c_int;
pub fn nmod_poly_is_irreducible(f: *const NmodPolyStruct) -> c_int;
pub fn nmod_mat_init(mat: *mut NmodMatStruct, rows: slong, cols: slong, n: ulong);
pub fn nmod_mat_clear(mat: *mut NmodMatStruct);
pub fn nmod_mat_set(dst: *mut NmodMatStruct, src: *const NmodMatStruct);
pub fn nmod_mat_equal(a: *const NmodMatStruct, b: *const NmodMatStruct) -> c_int;
pub fn nmod_mat_set_entry(mat: *mut NmodMatStruct, i: slong, j: slong, x: ulong);
pub fn nmod_mat_get_entry(mat: *const NmodMatStruct, i: slong, j: slong) -> ulong;
pub fn nmod_mat_add(c: *mut NmodMatStruct, a: *const NmodMatStruct, b: *const NmodMatStruct);
pub fn nmod_mat_sub(c: *mut NmodMatStruct, a: *const NmodMatStruct, b: *const NmodMatStruct);
pub fn nmod_mat_neg(b: *mut NmodMatStruct, a: *const NmodMatStruct);
pub fn nmod_mat_scalar_mul(b: *mut NmodMatStruct, a: *const NmodMatStruct, c: ulong);
pub fn nmod_mat_mul(c: *mut NmodMatStruct, a: *const NmodMatStruct, b: *const NmodMatStruct);
pub fn nmod_mat_transpose(b: *mut NmodMatStruct, a: *const NmodMatStruct);
pub fn nmod_mat_rank(a: *const NmodMatStruct) -> slong;
pub fn nmod_mat_rref(a: *mut NmodMatStruct) -> slong;
pub fn nmod_mat_nullspace(x: *mut NmodMatStruct, a: *const NmodMatStruct) -> slong;
pub fn nmod_mat_inv(b: *mut NmodMatStruct, a: *const NmodMatStruct) -> c_int;
pub fn nmod_mat_det(a: *const NmodMatStruct) -> ulong;
pub fn nmod_mat_charpoly(p: *mut NmodPolyStruct, m: *const NmodMatStruct);
pub fn nmod_mat_can_solve(
x: *mut NmodMatStruct,
a: *const NmodMatStruct,
b: *const NmodMatStruct,
) -> c_int;
pub fn fq_nmod_ctx_init_ui(ctx: *mut FqNmodCtxBuf, p: ulong, d: slong, var: *const c_char);
pub fn fq_nmod_ctx_init_modulus(
ctx: *mut FqNmodCtxBuf,
modulus: *const NmodPolyStruct,
var: *const c_char,
);
pub fn fq_nmod_ctx_clear(ctx: *mut FqNmodCtxBuf);
pub fn fq_nmod_ctx_modulus(ctx: *const FqNmodCtxBuf) -> *const NmodPolyStruct;
pub fn fq_nmod_zero(rop: *mut NmodPolyStruct, ctx: *const FqNmodCtxBuf);
pub fn fq_nmod_mul(
rop: *mut NmodPolyStruct,
op1: *const NmodPolyStruct,
op2: *const NmodPolyStruct,
ctx: *const FqNmodCtxBuf,
);
pub fn fq_nmod_mat_init(
mat: *mut FqNmodMatStruct,
rows: slong,
cols: slong,
ctx: *const FqNmodCtxBuf,
);
pub fn fq_nmod_mat_clear(mat: *mut FqNmodMatStruct, ctx: *const FqNmodCtxBuf);
pub fn fq_nmod_mat_set(
dst: *mut FqNmodMatStruct,
src: *const FqNmodMatStruct,
ctx: *const FqNmodCtxBuf,
);
pub fn fq_nmod_mat_equal(
a: *const FqNmodMatStruct,
b: *const FqNmodMatStruct,
ctx: *const FqNmodCtxBuf,
) -> c_int;
pub fn fq_nmod_mat_entry(
mat: *const FqNmodMatStruct,
i: slong,
j: slong,
) -> *mut NmodPolyStruct;
pub fn fq_nmod_mat_entry_set(
mat: *mut FqNmodMatStruct,
i: slong,
j: slong,
x: *const NmodPolyStruct,
ctx: *const FqNmodCtxBuf,
);
pub fn fq_nmod_mat_add(
c: *mut FqNmodMatStruct,
a: *const FqNmodMatStruct,
b: *const FqNmodMatStruct,
ctx: *const FqNmodCtxBuf,
);
pub fn fq_nmod_mat_sub(
c: *mut FqNmodMatStruct,
a: *const FqNmodMatStruct,
b: *const FqNmodMatStruct,
ctx: *const FqNmodCtxBuf,
);
pub fn fq_nmod_mat_neg(
b: *mut FqNmodMatStruct,
a: *const FqNmodMatStruct,
ctx: *const FqNmodCtxBuf,
);
pub fn fq_nmod_mat_mul(
c: *mut FqNmodMatStruct,
a: *const FqNmodMatStruct,
b: *const FqNmodMatStruct,
ctx: *const FqNmodCtxBuf,
);
pub fn fq_nmod_mat_transpose(
b: *mut FqNmodMatStruct,
a: *const FqNmodMatStruct,
ctx: *const FqNmodCtxBuf,
);
pub fn fq_nmod_mat_rank(a: *const FqNmodMatStruct, ctx: *const FqNmodCtxBuf) -> slong;
pub fn fq_nmod_mat_rref(
b: *mut FqNmodMatStruct,
a: *const FqNmodMatStruct,
ctx: *const FqNmodCtxBuf,
) -> slong;
pub fn fq_nmod_mat_nullspace(
x: *mut FqNmodMatStruct,
a: *const FqNmodMatStruct,
ctx: *const FqNmodCtxBuf,
) -> slong;
pub fn fq_nmod_mat_inv(
b: *mut FqNmodMatStruct,
a: *const FqNmodMatStruct,
ctx: *const FqNmodCtxBuf,
) -> c_int;
pub fn fq_nmod_mat_charpoly(
p: *mut FqNmodPolyBuf,
m: *const FqNmodMatStruct,
ctx: *const FqNmodCtxBuf,
);
pub fn fq_nmod_mat_can_solve(
x: *mut FqNmodMatStruct,
a: *const FqNmodMatStruct,
b: *const FqNmodMatStruct,
ctx: *const FqNmodCtxBuf,
) -> c_int;
pub fn fq_nmod_poly_init(poly: *mut FqNmodPolyBuf, ctx: *const FqNmodCtxBuf);
pub fn fq_nmod_poly_clear(poly: *mut FqNmodPolyBuf, ctx: *const FqNmodCtxBuf);
pub fn fq_nmod_poly_length(poly: *const FqNmodPolyBuf, ctx: *const FqNmodCtxBuf) -> slong;
pub fn fq_nmod_poly_get_coeff(
x: *mut NmodPolyStruct,
poly: *const FqNmodPolyBuf,
n: slong,
ctx: *const FqNmodCtxBuf,
);
pub fn fmpq_init(x: *mut Fmpq);
pub fn fmpq_clear(x: *mut Fmpq);
pub fn fmpq_canonicalise(x: *mut Fmpq);
pub fn fmpq_get_str(str_: *mut c_char, b: c_int, x: *const Fmpq) -> *mut c_char;
pub fn fmpq_poly_init(poly: *mut FmpqPolyBuf);
pub fn fmpq_poly_clear(poly: *mut FmpqPolyBuf);
pub fn fmpq_poly_degree(poly: *const FmpqPolyBuf) -> slong;
pub fn fmpq_poly_set_fmpz_poly(rop: *mut FmpqPolyBuf, op: *const FmpzPolyStruct);
pub fn fmpq_poly_set_coeff_fmpq(poly: *mut FmpqPolyBuf, n: slong, x: *const Fmpq);
pub fn nf_init(nf: *mut NfBuf, pol: *const FmpqPolyBuf);
pub fn nf_clear(nf: *mut NfBuf);
pub fn nf_elem_init(a: *mut NfElemBuf, nf: *const NfBuf);
pub fn nf_elem_clear(a: *mut NfElemBuf, nf: *const NfBuf);
pub fn nf_elem_set(a: *mut NfElemBuf, b: *const NfElemBuf, nf: *const NfBuf);
pub fn nf_elem_zero(a: *mut NfElemBuf, nf: *const NfBuf);
pub fn nf_elem_one(a: *mut NfElemBuf, nf: *const NfBuf);
pub fn nf_elem_gen(a: *mut NfElemBuf, nf: *const NfBuf);
pub fn nf_elem_is_zero(a: *const NfElemBuf, nf: *const NfBuf) -> c_int;
pub fn nf_elem_is_one(a: *const NfElemBuf, nf: *const NfBuf) -> c_int;
pub fn nf_elem_equal(a: *const NfElemBuf, b: *const NfElemBuf, nf: *const NfBuf) -> c_int;
pub fn nf_elem_neg(r: *mut NfElemBuf, a: *const NfElemBuf, nf: *const NfBuf);
pub fn nf_elem_add(
r: *mut NfElemBuf,
a: *const NfElemBuf,
b: *const NfElemBuf,
nf: *const NfBuf,
);
pub fn nf_elem_sub(
r: *mut NfElemBuf,
a: *const NfElemBuf,
b: *const NfElemBuf,
nf: *const NfBuf,
);
pub fn nf_elem_mul(
r: *mut NfElemBuf,
a: *const NfElemBuf,
b: *const NfElemBuf,
nf: *const NfBuf,
);
pub fn nf_elem_div(
r: *mut NfElemBuf,
a: *const NfElemBuf,
b: *const NfElemBuf,
nf: *const NfBuf,
);
pub fn nf_elem_inv(r: *mut NfElemBuf, a: *const NfElemBuf, nf: *const NfBuf);
pub fn nf_elem_pow(r: *mut NfElemBuf, a: *const NfElemBuf, e: ulong, nf: *const NfBuf);
pub fn nf_elem_norm(res: *mut Fmpq, a: *const NfElemBuf, nf: *const NfBuf);
pub fn nf_elem_trace(res: *mut Fmpq, a: *const NfElemBuf, nf: *const NfBuf);
pub fn nf_elem_get_coeff_fmpq(c: *mut Fmpq, a: *const NfElemBuf, i: slong, nf: *const NfBuf);
pub fn nf_elem_set_fmpq_poly(a: *mut NfElemBuf, pol: *const FmpqPolyBuf, nf: *const NfBuf);
pub fn nf_elem_get_str_pretty(
a: *const NfElemBuf,
var: *const c_char,
nf: *const NfBuf,
) -> *mut c_char;
pub fn arith_number_of_partitions(x: *mut fmpz, n: ulong);
pub fn arith_bernoulli_number(x: *mut Fmpq, n: ulong);
pub fn arith_euler_number(res: *mut fmpz, n: ulong);
pub fn arith_harmonic_number(x: *mut Fmpq, n: slong);
pub fn arith_stirling_number_1(s: *mut fmpz, n: slong, k: slong);
pub fn arith_stirling_number_1u(s: *mut fmpz, n: slong, k: slong);
pub fn arith_stirling_number_2(s: *mut fmpz, n: slong, k: slong);
pub fn arith_sum_of_squares(r: *mut fmpz, k: ulong, n: *const fmpz);
pub fn fmpz_moebius_mu(n: *const fmpz) -> c_int;
pub fn fmpz_divisor_sigma(res: *mut fmpz, k: ulong, n: *const fmpz);
pub fn fmpz_poly_discriminant(res: *mut fmpz, poly: *const FmpzPolyStruct);
pub fn fmpz_mpoly_term_exp_fits_ui(
A: *const FmpzMPolyBuf,
i: slong,
ctx: *const FmpzMPolyCtxBuf,
) -> c_int;
}