arb_sys/
fmpr.rs

1#![allow(non_camel_case_types)]
2
3//! *See the [Arb documentation](https://arblib.org/).
4
5use 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}