1use libc::*;
4use crate::deps::*;
5use crate::flint::*;
6use crate::fmpz_types::*;
7
8
9#[repr(C)]
10pub struct ecm_s {
11 pub t: nn_ptr,
12 pub u: nn_ptr,
13 pub v: nn_ptr,
14 pub w: nn_ptr,
15 pub x: nn_ptr,
16 pub z: nn_ptr,
17 pub a24: nn_ptr,
18 pub ninv: nn_ptr,
19 pub one: nn_ptr,
20 pub GCD_table: *mut libc::c_uchar,
21 pub prime_table: *mut *mut libc::c_uchar,
22 pub n_size: ulong,
23 pub normbits: ulong,
24}
25#[allow(clippy::unnecessary_operation, clippy::identity_op)]
26const _: () = {
27 ["Size of ecm_s"][::std::mem::size_of::<ecm_s>() - 104usize];
28 ["Alignment of ecm_s"][::std::mem::align_of::<ecm_s>() - 8usize];
29 ["Offset of field: ecm_s::t"][::std::mem::offset_of!(ecm_s, t) - 0usize];
30 ["Offset of field: ecm_s::u"][::std::mem::offset_of!(ecm_s, u) - 8usize];
31 ["Offset of field: ecm_s::v"][::std::mem::offset_of!(ecm_s, v) - 16usize];
32 ["Offset of field: ecm_s::w"][::std::mem::offset_of!(ecm_s, w) - 24usize];
33 ["Offset of field: ecm_s::x"][::std::mem::offset_of!(ecm_s, x) - 32usize];
34 ["Offset of field: ecm_s::z"][::std::mem::offset_of!(ecm_s, z) - 40usize];
35 ["Offset of field: ecm_s::a24"][::std::mem::offset_of!(ecm_s, a24) - 48usize];
36 ["Offset of field: ecm_s::ninv"][::std::mem::offset_of!(ecm_s, ninv) - 56usize];
37 ["Offset of field: ecm_s::one"][::std::mem::offset_of!(ecm_s, one) - 64usize];
38 ["Offset of field: ecm_s::GCD_table"][::std::mem::offset_of!(ecm_s, GCD_table) - 72usize];
39 ["Offset of field: ecm_s::prime_table"][::std::mem::offset_of!(ecm_s, prime_table) - 80usize];
40 ["Offset of field: ecm_s::n_size"][::std::mem::offset_of!(ecm_s, n_size) - 88usize];
41 ["Offset of field: ecm_s::normbits"][::std::mem::offset_of!(ecm_s, normbits) - 96usize];
42};
43impl Default for ecm_s {
44 fn default() -> Self {
45 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
46 unsafe {
47 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
48 s.assume_init()
49 }
50 }
51}
52pub type ecm_t = [ecm_s; 1usize];
53extern "C" {
54 pub fn fmpz_factor_init(factor: *mut fmpz_factor_struct);
55 pub fn fmpz_factor_clear(factor: *mut fmpz_factor_struct);
56 pub fn _fmpz_factor_fit_length(factor: *mut fmpz_factor_struct, len: slong);
57 pub fn _fmpz_factor_set_length(factor: *mut fmpz_factor_struct, newlen: slong);
58 pub fn _fmpz_factor_append(factor: *mut fmpz_factor_struct, p: *const fmpz, exp: ulong);
59 pub fn _fmpz_factor_append_ui(factor: *mut fmpz_factor_struct, p: ulong, exp: ulong);
60 pub fn _fmpz_factor_concat(
61 factor1: *mut fmpz_factor_struct,
62 factor2: *mut fmpz_factor_struct,
63 exp: ulong,
64 );
65 pub fn fmpz_factor_fprint(fs: *mut FILE, factor: *const fmpz_factor_struct) -> libc::c_int;
66 pub fn fmpz_factor_print(factor: *const fmpz_factor_struct) -> libc::c_int;
67 pub fn _fmpz_factor_extend_factor_ui(factor: *mut fmpz_factor_struct, n: ulong);
68 pub fn fmpz_factor_trial_range(
69 factor: *mut fmpz_factor_struct,
70 n: *const fmpz,
71 start: ulong,
72 num_primes: ulong,
73 ) -> libc::c_int;
74 pub fn fmpz_factor_trial(
75 factor: *mut fmpz_factor_struct,
76 n: *const fmpz,
77 num_primes: slong,
78 ) -> libc::c_int;
79 pub fn fmpz_factor_no_trial(factor: *mut fmpz_factor_struct, n: *const fmpz);
80 pub fn fmpz_factor_si(factor: *mut fmpz_factor_struct, n: slong);
81 pub fn fmpz_factor(factor: *mut fmpz_factor_struct, n: *const fmpz);
82 pub fn fmpz_factor_smooth(
83 factor: *mut fmpz_factor_struct,
84 n: *const fmpz,
85 bits: slong,
86 proved: libc::c_int,
87 ) -> libc::c_int;
88 pub fn fmpz_factor_pp1(
89 factor: *mut fmpz,
90 n: *const fmpz,
91 B1: ulong,
92 B2_sqrt: ulong,
93 c: ulong,
94 ) -> libc::c_int;
95 pub fn fmpz_factor_refine(res: *mut fmpz_factor_struct, f: *const fmpz_factor_struct);
96 pub fn flint_mpn_sqr_and_add_a(
97 y: nn_ptr,
98 a: nn_ptr,
99 n: nn_ptr,
100 n_size: ulong,
101 ninv: nn_ptr,
102 normbits: ulong,
103 );
104 pub fn flint_mpn_factor_pollard_brent_single(
105 factor: nn_ptr,
106 n: nn_ptr,
107 ninv: nn_ptr,
108 a: nn_ptr,
109 y: nn_ptr,
110 n_size: ulong,
111 normbits: ulong,
112 max_iters: ulong,
113 ) -> libc::c_int;
114 pub fn fmpz_factor_pollard_brent_single(
115 p_factor: *mut fmpz,
116 n_in: *mut fmpz,
117 yi: *mut fmpz,
118 ai: *mut fmpz,
119 max_iters: ulong,
120 ) -> libc::c_int;
121 pub fn fmpz_factor_pollard_brent(
122 factor: *mut fmpz,
123 state: *mut flint_rand_struct,
124 n: *mut fmpz,
125 max_tries: ulong,
126 max_iters: ulong,
127 ) -> libc::c_int;
128 pub fn fmpz_factor_expand_iterative(n: *mut fmpz, factor: *const fmpz_factor_struct);
129 pub fn fmpz_factor_expand_multiexp(n: *mut fmpz, factor: *const fmpz_factor_struct);
130 pub fn fmpz_factor_expand(n: *mut fmpz, factor: *const fmpz_factor_struct);
131 pub fn fmpz_factor_euler_phi(res: *mut fmpz, fac: *const fmpz_factor_struct);
132 pub fn fmpz_factor_moebius_mu(fac: *const fmpz_factor_struct) -> libc::c_int;
133 pub fn fmpz_factor_divisor_sigma(res: *mut fmpz, k: ulong, fac: *const fmpz_factor_struct);
134 pub fn fmpz_factor_ecm_init(ecm_inf: *mut ecm_s, sz: ulong);
135 pub fn fmpz_factor_ecm_clear(ecm_inf: *mut ecm_s);
136 pub fn fmpz_factor_ecm_double(
137 x: nn_ptr,
138 z: nn_ptr,
139 x0: nn_ptr,
140 z0: nn_ptr,
141 n: nn_ptr,
142 ecm_inf: *mut ecm_s,
143 );
144 pub fn fmpz_factor_ecm_add(
145 x: nn_ptr,
146 z: nn_ptr,
147 x1: nn_ptr,
148 z1: nn_ptr,
149 x2: nn_ptr,
150 z2: nn_ptr,
151 x0: nn_ptr,
152 z0: nn_ptr,
153 n: nn_ptr,
154 ecm_inf: *mut ecm_s,
155 );
156 pub fn fmpz_factor_ecm_mul_montgomery_ladder(
157 x: nn_ptr,
158 z: nn_ptr,
159 x0: nn_ptr,
160 z0: nn_ptr,
161 k: ulong,
162 n: nn_ptr,
163 ecm_inf: *mut ecm_s,
164 );
165 pub fn fmpz_factor_ecm_select_curve(
166 f: nn_ptr,
167 sig: nn_ptr,
168 n: nn_ptr,
169 ecm_inf: *mut ecm_s,
170 ) -> libc::c_int;
171 pub fn fmpz_factor_ecm_stage_I(
172 f: nn_ptr,
173 prime_array: *const ulong,
174 num: ulong,
175 B1: ulong,
176 n: nn_ptr,
177 ecm_inf: *mut ecm_s,
178 ) -> libc::c_int;
179 pub fn fmpz_factor_ecm_stage_II(
180 f: nn_ptr,
181 B1: ulong,
182 B2: ulong,
183 P: ulong,
184 n: nn_ptr,
185 ecm_inf: *mut ecm_s,
186 ) -> libc::c_int;
187 pub fn fmpz_factor_ecm(
188 f: *mut fmpz,
189 curves: ulong,
190 B1: ulong,
191 B2: ulong,
192 state: *mut flint_rand_struct,
193 n_in: *const fmpz,
194 ) -> libc::c_int;
195 pub fn fmpz_factor_get_fmpz(z: *mut fmpz, factor: *const fmpz_factor_struct, i: slong);
196}