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
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]

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

use crate::deps::*;
use crate::fmpq::{fmpq, fmpq_t};
use crate::fmpq_mpoly::*;
use crate::fmpz::fmpz;
use crate::fmpz_mpoly_factor::fmpz_mpoly_factor_struct;

#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct fmpq_mpoly_factor_struct {
    pub constant: fmpq_t,
    pub poly: *mut fmpq_mpoly_struct,
    pub exp: *mut fmpz,
    pub num: mp_limb_signed_t,
    pub alloc: mp_limb_signed_t,
}
pub type fmpq_mpoly_factor_t = [fmpq_mpoly_factor_struct; 1usize];
extern "C" {
    pub fn fmpq_mpoly_factor_init(
        f: *mut fmpq_mpoly_factor_struct,
        ctx: *mut fmpq_mpoly_ctx_struct,
    );
}
extern "C" {
    pub fn fmpq_mpoly_factor_realloc(
        f: *mut fmpq_mpoly_factor_struct,
        alloc: mp_limb_signed_t,
        ctx: *mut fmpq_mpoly_ctx_struct,
    );
}
extern "C" {
    pub fn fmpq_mpoly_factor_fit_length(
        f: *mut fmpq_mpoly_factor_struct,
        len: mp_limb_signed_t,
        ctx: *mut fmpq_mpoly_ctx_struct,
    );
}
extern "C" {
    pub fn fmpq_mpoly_factor_clear(
        f: *mut fmpq_mpoly_factor_struct,
        ctx: *mut fmpq_mpoly_ctx_struct,
    );
}
extern "C" {
    pub fn fmpq_mpoly_factor_length(
        f: *mut fmpq_mpoly_factor_struct,
        ctx: *mut fmpq_mpoly_ctx_struct,
    ) -> mp_limb_signed_t;
}
extern "C" {
    pub fn fmpq_mpoly_factor_get_constant_fmpq(
        c: *mut fmpq,
        f: *mut fmpq_mpoly_factor_struct,
        ctx: *mut fmpq_mpoly_ctx_struct,
    );
}
extern "C" {
    pub fn fmpq_mpoly_factor_get_base(
        p: *mut fmpq_mpoly_struct,
        f: *mut fmpq_mpoly_factor_struct,
        i: mp_limb_signed_t,
        ctx: *mut fmpq_mpoly_ctx_struct,
    );
}
extern "C" {
    pub fn fmpq_mpoly_factor_swap_base(
        p: *mut fmpq_mpoly_struct,
        f: *mut fmpq_mpoly_factor_struct,
        i: mp_limb_signed_t,
        ctx: *mut fmpq_mpoly_ctx_struct,
    );
}
extern "C" {
    pub fn fmpq_mpoly_factor_get_exp_si(
        f: *mut fmpq_mpoly_factor_struct,
        i: mp_limb_signed_t,
        ctx: *mut fmpq_mpoly_ctx_struct,
    ) -> mp_limb_signed_t;
}
extern "C" {
    pub fn fmpq_mpoly_factor_sort(
        f: *mut fmpq_mpoly_factor_struct,
        ctx: *mut fmpq_mpoly_ctx_struct,
    );
}
extern "C" {
    pub fn fmpq_mpoly_factor_make_monic(
        f: *mut fmpq_mpoly_factor_struct,
        ctx: *mut fmpq_mpoly_ctx_struct,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn fmpq_mpoly_factor_make_integral(
        f: *mut fmpq_mpoly_factor_struct,
        ctx: *mut fmpq_mpoly_ctx_struct,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn fmpq_mpoly_factor_squarefree(
        f: *mut fmpq_mpoly_factor_struct,
        A: *mut fmpq_mpoly_struct,
        ctx: *mut fmpq_mpoly_ctx_struct,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn fmpq_mpoly_factor(
        f: *mut fmpq_mpoly_factor_struct,
        A: *mut fmpq_mpoly_struct,
        ctx: *mut fmpq_mpoly_ctx_struct,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn _fmpq_mpoly_factor_swap_fmpz_mpoly_factor(
        f: *mut fmpq_mpoly_factor_struct,
        g: *mut fmpz_mpoly_factor_struct,
        c: *mut fmpq,
        ctx: *mut fmpq_mpoly_ctx_struct,
    );
}
extern "C" {
    pub fn fmpq_mpoly_factor_expand(
        A: *mut fmpq_mpoly_struct,
        f: *mut fmpq_mpoly_factor_struct,
        ctx: *mut fmpq_mpoly_ctx_struct,
    ) -> ::std::os::raw::c_int;
}