1#![allow(non_camel_case_types)]
2
3use flint_sys::deps::*;
6use flint_sys::flint::*;
7use flint_sys::fmpq::fmpq;
8use flint_sys::fmpz::fmpz;
9use libc::c_int;
10
11#[repr(C)]
12#[derive(Debug, Copy, Clone)]
13pub struct fmpr_struct {
14 pub man: fmpz,
15 pub exp: fmpz,
16}
17
18pub type fmpr_t = [fmpr_struct; 1usize];
19pub type fmpr_ptr = *mut fmpr_struct;
20pub type fmpr_srcptr = *const fmpr_struct;
21
22extern "C" {
23 pub fn _fmpr_normalise_naive(
24 man: *mut fmpz,
25 exp: *mut fmpz,
26 prec: mp_limb_signed_t,
27 rnd: c_int,
28 ) -> mp_limb_signed_t;
29 pub fn _fmpr_set_round(
30 rman: *mut fmpz,
31 rexp: *mut fmpz,
32 man: *mut fmpz,
33 exp: *mut fmpz,
34 prec: mp_limb_signed_t,
35 rnd: c_int,
36 ) -> mp_limb_signed_t;
37 pub fn _fmpr_set_round_mpn(
38 shift: *mut mp_limb_signed_t,
39 man: *mut fmpz,
40 x: mp_srcptr,
41 xn: mp_size_t,
42 negative: c_int,
43 prec: mp_limb_signed_t,
44 rnd: c_int,
45 ) -> mp_limb_signed_t;
46 pub fn fmpr_set_round_ui_2exp_fmpz(
47 z: *mut fmpr_struct,
48 lo: mp_limb_t,
49 exp: *mut fmpz,
50 negative: c_int,
51 prec: mp_limb_signed_t,
52 rnd: c_int,
53 ) -> mp_limb_signed_t;
54 pub fn fmpr_set_round_uiui_2exp_fmpz(
55 z: *mut fmpr_struct,
56 hi: mp_limb_t,
57 lo: mp_limb_t,
58 exp: *mut fmpz,
59 negative: c_int,
60 prec: mp_limb_signed_t,
61 rnd: c_int,
62 ) -> mp_limb_signed_t;
63 pub fn fmpr_ulp(u: *mut fmpr_struct, x: *mut fmpr_struct, prec: mp_limb_signed_t);
64 pub fn fmpr_check_ulp(
65 result: *mut fmpr_struct,
66 r: mp_limb_signed_t,
67 prec: mp_limb_signed_t,
68 ) -> c_int;
69 pub fn fmpr_cmp(x: *mut fmpr_struct, y: *mut fmpr_struct) -> c_int;
70 pub fn fmpr_cmpabs(x: *mut fmpr_struct, y: *mut fmpr_struct) -> c_int;
71 pub fn fmpr_cmpabs_ui(x: *mut fmpr_struct, y: mp_limb_t) -> c_int;
72 pub fn fmpr_randtest(
73 x: *mut fmpr_struct,
74 state: *mut flint_rand_s,
75 bits: mp_limb_signed_t,
76 exp_bits: mp_limb_signed_t,
77 );
78 pub fn fmpr_randtest_not_zero(
79 x: *mut fmpr_struct,
80 state: *mut flint_rand_s,
81 bits: mp_limb_signed_t,
82 exp_bits: mp_limb_signed_t,
83 );
84 pub fn fmpr_randtest_special(
85 x: *mut fmpr_struct,
86 state: *mut flint_rand_s,
87 bits: mp_limb_signed_t,
88 exp_bits: mp_limb_signed_t,
89 );
90 pub fn fmpr_get_mpfr(x: *mut __mpfr_struct, y: *mut fmpr_struct, rnd: mpfr_rnd_t) -> c_int;
91 pub fn fmpr_set_mpfr(x: *mut fmpr_struct, y: *mut __mpfr_struct);
92 pub fn fmpr_get_d(x: *mut fmpr_struct, rnd: c_int) -> f64;
93 pub fn fmpr_set_d(x: *mut fmpr_struct, v: f64);
94 pub fn _fmpr_add_eps(
95 z: *mut fmpr_struct,
96 x: *mut fmpr_struct,
97 sign: c_int,
98 prec: mp_limb_signed_t,
99 rnd: c_int,
100 ) -> mp_limb_signed_t;
101 pub fn _fmpr_add_mpn(
102 z: *mut fmpr_struct,
103 xman: mp_srcptr,
104 xn: mp_size_t,
105 xsign: c_int,
106 xexp: *mut fmpz,
107 yman: mp_srcptr,
108 yn: mp_size_t,
109 ysign: c_int,
110 yexp: *mut fmpz,
111 shift: mp_limb_signed_t,
112 prec: mp_limb_signed_t,
113 rnd: c_int,
114 ) -> mp_limb_signed_t;
115 pub fn _fmpr_add_1x1(
116 z: *mut fmpr_struct,
117 x: mp_limb_t,
118 xsign: c_int,
119 xexp: *mut fmpz,
120 y: mp_limb_t,
121 ysign: c_int,
122 yexp: *mut fmpz,
123 shift: mp_limb_signed_t,
124 prec: mp_limb_signed_t,
125 rnd: mp_limb_signed_t,
126 ) -> mp_limb_signed_t;
127 pub fn fmpr_add_naive(
128 z: *mut fmpr_struct,
129 x: *mut fmpr_struct,
130 y: *mut fmpr_struct,
131 prec: mp_limb_signed_t,
132 rnd: c_int,
133 ) -> mp_limb_signed_t;
134 pub fn _fmpr_mul_mpn(
135 z: *mut fmpr_struct,
136 xman: mp_srcptr,
137 xn: mp_size_t,
138 xexp: *mut fmpz,
139 yman: mp_srcptr,
140 yn: mp_size_t,
141 yexp: *mut fmpz,
142 negative: c_int,
143 prec: mp_limb_signed_t,
144 rnd: c_int,
145 ) -> mp_limb_signed_t;
146 pub fn _fmpr_mul_1x1(
147 z: *mut fmpr_struct,
148 u: mp_limb_t,
149 xexp: *mut fmpz,
150 v: mp_limb_t,
151 yexp: *mut fmpz,
152 negative: c_int,
153 prec: mp_limb_signed_t,
154 rnd: c_int,
155 ) -> mp_limb_signed_t;
156 pub fn fmpr_mul_naive(
157 z: *mut fmpr_struct,
158 x: *mut fmpr_struct,
159 y: *mut fmpr_struct,
160 prec: mp_limb_signed_t,
161 rnd: c_int,
162 ) -> mp_limb_signed_t;
163 pub fn fmpr_mul(
164 z: *mut fmpr_struct,
165 x: *mut fmpr_struct,
166 y: *mut fmpr_struct,
167 prec: mp_limb_signed_t,
168 rnd: c_int,
169 ) -> mp_limb_signed_t;
170 pub fn fmpr_mul_ui(
171 z: *mut fmpr_struct,
172 x: *mut fmpr_struct,
173 y: mp_limb_t,
174 prec: mp_limb_signed_t,
175 rnd: c_int,
176 ) -> mp_limb_signed_t;
177 pub fn fmpr_mul_si(
178 z: *mut fmpr_struct,
179 x: *mut fmpr_struct,
180 y: mp_limb_signed_t,
181 prec: mp_limb_signed_t,
182 rnd: c_int,
183 ) -> mp_limb_signed_t;
184 pub fn fmpr_mul_fmpz(
185 z: *mut fmpr_struct,
186 x: *mut fmpr_struct,
187 y: *mut fmpz,
188 prec: mp_limb_signed_t,
189 rnd: c_int,
190 ) -> mp_limb_signed_t;
191 pub fn fmpr_add(
192 z: *mut fmpr_struct,
193 x: *mut fmpr_struct,
194 y: *mut fmpr_struct,
195 prec: mp_limb_signed_t,
196 rnd: c_int,
197 ) -> mp_limb_signed_t;
198 pub fn fmpr_add_ui(
199 z: *mut fmpr_struct,
200 x: *mut fmpr_struct,
201 y: mp_limb_t,
202 prec: mp_limb_signed_t,
203 rnd: c_int,
204 ) -> mp_limb_signed_t;
205 pub fn fmpr_add_si(
206 z: *mut fmpr_struct,
207 x: *mut fmpr_struct,
208 y: mp_limb_signed_t,
209 prec: mp_limb_signed_t,
210 rnd: c_int,
211 ) -> mp_limb_signed_t;
212 pub fn fmpr_add_fmpz(
213 z: *mut fmpr_struct,
214 x: *mut fmpr_struct,
215 y: *mut fmpz,
216 prec: mp_limb_signed_t,
217 rnd: c_int,
218 ) -> mp_limb_signed_t;
219 pub fn fmpr_sub(
220 z: *mut fmpr_struct,
221 x: *mut fmpr_struct,
222 y: *mut fmpr_struct,
223 prec: mp_limb_signed_t,
224 rnd: c_int,
225 ) -> mp_limb_signed_t;
226 pub fn fmpr_sub_ui(
227 z: *mut fmpr_struct,
228 x: *mut fmpr_struct,
229 y: mp_limb_t,
230 prec: mp_limb_signed_t,
231 rnd: c_int,
232 ) -> mp_limb_signed_t;
233 pub fn fmpr_sub_si(
234 z: *mut fmpr_struct,
235 x: *mut fmpr_struct,
236 y: mp_limb_signed_t,
237 prec: mp_limb_signed_t,
238 rnd: c_int,
239 ) -> mp_limb_signed_t;
240 pub fn fmpr_sub_fmpz(
241 z: *mut fmpr_struct,
242 x: *mut fmpr_struct,
243 y: *mut fmpz,
244 prec: mp_limb_signed_t,
245 rnd: c_int,
246 ) -> mp_limb_signed_t;
247 pub fn fmpr_div(
248 z: *mut fmpr_struct,
249 x: *mut fmpr_struct,
250 y: *mut fmpr_struct,
251 prec: mp_limb_signed_t,
252 rnd: c_int,
253 ) -> mp_limb_signed_t;
254 pub fn fmpr_div_ui(
255 z: *mut fmpr_struct,
256 x: *mut fmpr_struct,
257 y: mp_limb_t,
258 prec: mp_limb_signed_t,
259 rnd: c_int,
260 ) -> mp_limb_signed_t;
261 pub fn fmpr_ui_div(
262 z: *mut fmpr_struct,
263 x: mp_limb_t,
264 y: *mut fmpr_struct,
265 prec: mp_limb_signed_t,
266 rnd: c_int,
267 ) -> mp_limb_signed_t;
268 pub fn fmpr_div_si(
269 z: *mut fmpr_struct,
270 x: *mut fmpr_struct,
271 y: mp_limb_signed_t,
272 prec: mp_limb_signed_t,
273 rnd: c_int,
274 ) -> mp_limb_signed_t;
275 pub fn fmpr_si_div(
276 z: *mut fmpr_struct,
277 x: mp_limb_signed_t,
278 y: *mut fmpr_struct,
279 prec: mp_limb_signed_t,
280 rnd: c_int,
281 ) -> mp_limb_signed_t;
282 pub fn fmpr_div_fmpz(
283 z: *mut fmpr_struct,
284 x: *mut fmpr_struct,
285 y: *mut fmpz,
286 prec: mp_limb_signed_t,
287 rnd: c_int,
288 ) -> mp_limb_signed_t;
289 pub fn fmpr_fmpz_div(
290 z: *mut fmpr_struct,
291 x: *mut fmpz,
292 y: *mut fmpr_struct,
293 prec: mp_limb_signed_t,
294 rnd: c_int,
295 ) -> mp_limb_signed_t;
296 pub fn fmpr_fmpz_div_fmpz(
297 z: *mut fmpr_struct,
298 x: *mut fmpz,
299 y: *mut fmpz,
300 prec: mp_limb_signed_t,
301 rnd: c_int,
302 ) -> mp_limb_signed_t;
303 pub fn fmpr_addmul(
304 z: *mut fmpr_struct,
305 x: *mut fmpr_struct,
306 y: *mut fmpr_struct,
307 prec: mp_limb_signed_t,
308 rnd: c_int,
309 ) -> mp_limb_signed_t;
310 pub fn fmpr_addmul_ui(
311 z: *mut fmpr_struct,
312 x: *mut fmpr_struct,
313 y: mp_limb_t,
314 prec: mp_limb_signed_t,
315 rnd: c_int,
316 ) -> mp_limb_signed_t;
317 pub fn fmpr_addmul_si(
318 z: *mut fmpr_struct,
319 x: *mut fmpr_struct,
320 y: mp_limb_signed_t,
321 prec: mp_limb_signed_t,
322 rnd: c_int,
323 ) -> mp_limb_signed_t;
324 pub fn fmpr_addmul_fmpz(
325 z: *mut fmpr_struct,
326 x: *mut fmpr_struct,
327 y: *mut fmpz,
328 prec: mp_limb_signed_t,
329 rnd: c_int,
330 ) -> mp_limb_signed_t;
331 pub fn fmpr_submul(
332 z: *mut fmpr_struct,
333 x: *mut fmpr_struct,
334 y: *mut fmpr_struct,
335 prec: mp_limb_signed_t,
336 rnd: c_int,
337 ) -> mp_limb_signed_t;
338 pub fn fmpr_submul_ui(
339 z: *mut fmpr_struct,
340 x: *mut fmpr_struct,
341 y: mp_limb_t,
342 prec: mp_limb_signed_t,
343 rnd: c_int,
344 ) -> mp_limb_signed_t;
345 pub fn fmpr_submul_si(
346 z: *mut fmpr_struct,
347 x: *mut fmpr_struct,
348 y: mp_limb_signed_t,
349 prec: mp_limb_signed_t,
350 rnd: c_int,
351 ) -> mp_limb_signed_t;
352 pub fn fmpr_submul_fmpz(
353 z: *mut fmpr_struct,
354 x: *mut fmpr_struct,
355 y: *mut fmpz,
356 prec: mp_limb_signed_t,
357 rnd: c_int,
358 ) -> mp_limb_signed_t;
359 pub fn fmpr_sqrt(
360 y: *mut fmpr_struct,
361 x: *mut fmpr_struct,
362 prec: mp_limb_signed_t,
363 rnd: c_int,
364 ) -> mp_limb_signed_t;
365 pub fn fmpr_sqrt_ui(
366 z: *mut fmpr_struct,
367 x: mp_limb_t,
368 prec: mp_limb_signed_t,
369 rnd: c_int,
370 ) -> mp_limb_signed_t;
371 pub fn fmpr_sqrt_fmpz(
372 z: *mut fmpr_struct,
373 x: *mut fmpz,
374 prec: mp_limb_signed_t,
375 rnd: c_int,
376 ) -> mp_limb_signed_t;
377 pub fn fmpr_rsqrt(
378 y: *mut fmpr_struct,
379 x: *mut fmpr_struct,
380 prec: mp_limb_signed_t,
381 rnd: c_int,
382 ) -> mp_limb_signed_t;
383 pub fn fmpr_root(
384 y: *mut fmpr_struct,
385 x: *mut fmpr_struct,
386 k: mp_limb_t,
387 prec: mp_limb_signed_t,
388 rnd: c_int,
389 ) -> mp_limb_signed_t;
390 pub fn fmpr_log(
391 y: *mut fmpr_struct,
392 x: *mut fmpr_struct,
393 prec: mp_limb_signed_t,
394 rnd: c_int,
395 ) -> mp_limb_signed_t;
396 pub fn fmpr_log1p(
397 y: *mut fmpr_struct,
398 x: *mut fmpr_struct,
399 prec: mp_limb_signed_t,
400 rnd: c_int,
401 ) -> mp_limb_signed_t;
402 pub fn fmpr_exp(
403 y: *mut fmpr_struct,
404 x: *mut fmpr_struct,
405 prec: mp_limb_signed_t,
406 rnd: c_int,
407 ) -> mp_limb_signed_t;
408 pub fn fmpr_expm1(
409 y: *mut fmpr_struct,
410 x: *mut fmpr_struct,
411 prec: mp_limb_signed_t,
412 rnd: c_int,
413 ) -> mp_limb_signed_t;
414 pub fn fmpr_print(x: *mut fmpr_struct);
415 pub fn fmpr_printd(x: *mut fmpr_struct, digits: mp_limb_signed_t);
416 pub fn fmpr_get_fmpq(y: *mut fmpq, x: *mut fmpr_struct);
417 pub fn fmpr_set_fmpq(
418 x: *mut fmpr_struct,
419 y: *mut fmpq,
420 prec: mp_limb_signed_t,
421 rnd: c_int,
422 ) -> mp_limb_signed_t;
423 pub fn fmpr_get_fmpz(z: *mut fmpz, x: *mut fmpr_struct, rnd: c_int);
424 pub fn fmpr_get_si(x: *mut fmpr_struct, rnd: c_int) -> mp_limb_signed_t;
425 pub fn fmpr_set_fmpz_2exp(x: *mut fmpr_struct, man: *mut fmpz, exp: *mut fmpz);
426 pub fn fmpr_get_fmpz_2exp(man: *mut fmpz, exp: *mut fmpz, x: *mut fmpr_struct);
427 pub fn fmpr_get_fmpz_fixed_fmpz(y: *mut fmpz, x: *mut fmpr_struct, e: *mut fmpz) -> c_int;
428 pub fn fmpr_get_fmpz_fixed_si(y: *mut fmpz, x: *mut fmpr_struct, e: mp_limb_signed_t) -> c_int;
429 pub fn fmpr_cmp_2exp_si(x: *mut fmpr_struct, e: mp_limb_signed_t) -> c_int;
430 pub fn fmpr_cmpabs_2exp_si(x: *mut fmpr_struct, e: mp_limb_signed_t) -> c_int;
431 pub fn fmpr_pow_sloppy_fmpz(
432 y: *mut fmpr_struct,
433 b: *mut fmpr_struct,
434 e: *mut fmpz,
435 prec: mp_limb_signed_t,
436 rnd: c_int,
437 );
438 pub fn fmpr_pow_sloppy_ui(
439 y: *mut fmpr_struct,
440 b: *mut fmpr_struct,
441 e: mp_limb_t,
442 prec: mp_limb_signed_t,
443 rnd: c_int,
444 );
445 pub fn fmpr_pow_sloppy_si(
446 y: *mut fmpr_struct,
447 b: *mut fmpr_struct,
448 e: mp_limb_signed_t,
449 prec: mp_limb_signed_t,
450 rnd: c_int,
451 );
452}