1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#![allow(non_camel_case_types)]

//! *See the [FLINT documentation](http://flintlib.org/doc/fq_default_poly_factor.html).


use crate::deps::*;
use crate::fq_poly_factor::fq_poly_factor_t;
use crate::fq_nmod_poly_factor::fq_nmod_poly_factor_t;
use crate::fq_zech_poly_factor::fq_zech_poly_factor_t;
use crate::fq_default::{fq_default_struct, fq_default_ctx_struct};
use crate::fq_default_poly::fq_default_poly_struct;
use libc::{c_char, c_int};


#[repr(C)]
#[derive(Copy, Clone)]
pub union fq_default_poly_factor_struct {
    pub fq: fq_poly_factor_t,
    pub fq_nmod: fq_nmod_poly_factor_t,
    pub fq_zech: fq_zech_poly_factor_t,
}

pub type fq_default_poly_factor_t = [fq_default_poly_factor_struct; 1usize];

extern "C" {
    pub fn fq_default_poly_factor_init(
        fac: *mut fq_default_poly_factor_struct,
        ctx: *mut fq_default_ctx_struct,
    );
    pub fn fq_default_poly_factor_clear(
        fac: *mut fq_default_poly_factor_struct,
        ctx: *mut fq_default_ctx_struct,
    );
    pub fn fq_default_poly_factor_realloc(
        fac: *mut fq_default_poly_factor_struct,
        alloc: mp_limb_signed_t,
        ctx: *mut fq_default_ctx_struct,
    );
    pub fn fq_default_poly_factor_fit_length(
        fac: *mut fq_default_poly_factor_struct,
        len: mp_limb_signed_t,
        ctx: *mut fq_default_ctx_struct,
    );
    pub fn fq_default_poly_factor_length(
        fac: *mut fq_default_poly_factor_struct,
        ctx: *mut fq_default_ctx_struct,
    ) -> mp_limb_signed_t;
    pub fn fq_default_poly_factor_exp(
        fac: *mut fq_default_poly_factor_struct,
        i: mp_limb_signed_t,
        ctx: *mut fq_default_ctx_struct,
    ) -> mp_limb_signed_t;
    pub fn fq_default_poly_factor_set(
        res: *mut fq_default_poly_factor_struct,
        fac: *mut fq_default_poly_factor_struct,
        ctx: *mut fq_default_ctx_struct,
    );
    pub fn fq_default_poly_factor_insert(
        fac: *mut fq_default_poly_factor_struct,
        poly: *mut fq_default_poly_struct,
        exp: mp_limb_signed_t,
        ctx: *mut fq_default_ctx_struct,
    );
    pub fn fq_default_poly_factor_get_poly(
        poly: *mut fq_default_poly_struct,
        fac: *mut fq_default_poly_factor_struct,
        i: mp_limb_signed_t,
        ctx: *mut fq_default_ctx_struct,
    );
    pub fn fq_default_poly_factor_print(
        fac: *mut fq_default_poly_factor_struct,
        ctx: *mut fq_default_ctx_struct,
    );
    pub fn fq_default_poly_factor_print_pretty(
        fac: *mut fq_default_poly_factor_struct,
        var: *const c_char,
        ctx: *mut fq_default_ctx_struct,
    );
    pub fn fq_default_poly_factor_concat(
        res: *mut fq_default_poly_factor_struct,
        fac: *mut fq_default_poly_factor_struct,
        ctx: *mut fq_default_ctx_struct,
    );
    pub fn fq_default_poly_factor_pow(
        fac: *mut fq_default_poly_factor_struct,
        exp: mp_limb_signed_t,
        ctx: *mut fq_default_ctx_struct,
    );
    pub fn fq_default_poly_is_squarefree(
        f: *mut fq_default_poly_struct,
        ctx: *mut fq_default_ctx_struct,
    ) -> c_int;
    pub fn fq_default_poly_factor_squarefree(
        res: *mut fq_default_poly_factor_struct,
        f: *mut fq_default_poly_struct,
        ctx: *mut fq_default_ctx_struct,
    );
    pub fn fq_default_poly_is_irreducible(
        f: *mut fq_default_poly_struct,
        ctx: *mut fq_default_ctx_struct,
    ) -> c_int;
    pub fn fq_default_poly_factor_distinct_deg(
        res: *mut fq_default_poly_factor_struct,
        poly: *mut fq_default_poly_struct,
        degs: *const *mut mp_limb_signed_t,
        ctx: *mut fq_default_ctx_struct,
    );
    pub fn fq_default_poly_factor_equal_deg(
        factors: *mut fq_default_poly_factor_struct,
        pol: *mut fq_default_poly_struct,
        d: mp_limb_signed_t,
        ctx: *mut fq_default_ctx_struct,
    );
    pub fn fq_default_poly_factor(
        result: *mut fq_default_poly_factor_struct,
        leading_coeff: *mut fq_default_struct,
        input: *mut fq_default_poly_struct,
        ctx: *mut fq_default_ctx_struct,
    );
    pub fn fq_default_poly_factor_split_single(
        linfactor: *mut fq_default_poly_struct,
        input: *mut fq_default_poly_struct,
        ctx: *mut fq_default_ctx_struct,
    );
    pub fn fq_default_poly_roots(
        r: *mut fq_default_poly_factor_struct,
        f: *mut fq_default_poly_struct,
        with_multiplicity: c_int,
        ctx: *mut fq_default_ctx_struct,
    );
}