Skip to main content

flint_sys/
acb_poly.rs

1/* automatically generated by rust-bindgen 0.70.1 */
2
3use libc::*;
4use crate::deps::*;
5use crate::acb_types::*;
6use crate::arb_types::*;
7use crate::flint::*;
8use crate::fmpq_types::*;
9use crate::fmpz_types::*;
10
11
12extern "C" {
13    pub fn acb_poly_init(poly: *mut acb_poly_struct);
14    pub fn acb_poly_init2(poly: *mut acb_poly_struct, len: slong);
15    pub fn acb_poly_clear(poly: *mut acb_poly_struct);
16    pub fn acb_poly_fit_length(poly: *mut acb_poly_struct, len: slong);
17    pub fn _acb_poly_set_length(poly: *mut acb_poly_struct, len: slong);
18    pub fn _acb_poly_normalise(poly: *mut acb_poly_struct);
19    #[link_name = "acb_poly_swap__extern"]
20    pub fn acb_poly_swap(poly1: *mut acb_poly_struct, poly2: *mut acb_poly_struct);
21    #[link_name = "acb_poly_length__extern"]
22    pub fn acb_poly_length(poly: *const acb_poly_struct) -> slong;
23    #[link_name = "acb_poly_degree__extern"]
24    pub fn acb_poly_degree(poly: *const acb_poly_struct) -> slong;
25    pub fn acb_poly_valuation(poly: *const acb_poly_struct) -> slong;
26    #[link_name = "acb_poly_is_zero__extern"]
27    pub fn acb_poly_is_zero(z: *const acb_poly_struct) -> libc::c_int;
28    #[link_name = "acb_poly_is_one__extern"]
29    pub fn acb_poly_is_one(z: *const acb_poly_struct) -> libc::c_int;
30    #[link_name = "acb_poly_is_x__extern"]
31    pub fn acb_poly_is_x(z: *const acb_poly_struct) -> libc::c_int;
32    #[link_name = "acb_poly_zero__extern"]
33    pub fn acb_poly_zero(poly: *mut acb_poly_struct);
34    #[link_name = "acb_poly_one__extern"]
35    pub fn acb_poly_one(poly: *mut acb_poly_struct);
36    pub fn acb_poly_set_coeff_si(poly: *mut acb_poly_struct, n: slong, x: slong);
37    pub fn acb_poly_set_coeff_acb(poly: *mut acb_poly_struct, n: slong, x: *const acb_struct);
38    pub fn acb_poly_get_coeff_acb(x: *mut acb_struct, poly: *const acb_poly_struct, n: slong);
39    pub fn _acb_poly_shift_right(res: acb_ptr, poly: acb_srcptr, len: slong, n: slong);
40    pub fn acb_poly_shift_right(res: *mut acb_poly_struct, poly: *const acb_poly_struct, n: slong);
41    pub fn _acb_poly_shift_left(res: acb_ptr, poly: acb_srcptr, len: slong, n: slong);
42    pub fn acb_poly_shift_left(res: *mut acb_poly_struct, poly: *const acb_poly_struct, n: slong);
43    #[link_name = "acb_poly_truncate__extern"]
44    pub fn acb_poly_truncate(poly: *mut acb_poly_struct, newlen: slong);
45    pub fn _acb_poly_majorant(res: arb_ptr, vec: acb_srcptr, len: slong, prec: slong);
46    pub fn acb_poly_majorant(res: *mut arb_poly_struct, poly: *const acb_poly_struct, prec: slong);
47    pub fn acb_poly_fprintd(file: *mut FILE, poly: *const acb_poly_struct, digits: slong);
48    pub fn acb_poly_printd(poly: *const acb_poly_struct, digits: slong);
49    pub fn _acb_poly_evaluate_horner(
50        res: *mut acb_struct,
51        f: acb_srcptr,
52        len: slong,
53        a: *const acb_struct,
54        prec: slong,
55    );
56    pub fn acb_poly_evaluate_horner(
57        res: *mut acb_struct,
58        f: *const acb_poly_struct,
59        a: *const acb_struct,
60        prec: slong,
61    );
62    pub fn _acb_poly_evaluate_rectangular(
63        y: *mut acb_struct,
64        poly: acb_srcptr,
65        len: slong,
66        x: *const acb_struct,
67        prec: slong,
68    );
69    pub fn acb_poly_evaluate_rectangular(
70        res: *mut acb_struct,
71        f: *const acb_poly_struct,
72        a: *const acb_struct,
73        prec: slong,
74    );
75    pub fn _acb_poly_evaluate(
76        res: *mut acb_struct,
77        f: acb_srcptr,
78        len: slong,
79        a: *const acb_struct,
80        prec: slong,
81    );
82    pub fn acb_poly_evaluate(
83        res: *mut acb_struct,
84        f: *const acb_poly_struct,
85        a: *const acb_struct,
86        prec: slong,
87    );
88    pub fn _acb_poly_evaluate2_horner(
89        y: *mut acb_struct,
90        z: *mut acb_struct,
91        f: acb_srcptr,
92        len: slong,
93        x: *const acb_struct,
94        prec: slong,
95    );
96    pub fn acb_poly_evaluate2_horner(
97        y: *mut acb_struct,
98        z: *mut acb_struct,
99        f: *const acb_poly_struct,
100        x: *const acb_struct,
101        prec: slong,
102    );
103    pub fn _acb_poly_evaluate2_rectangular(
104        y: *mut acb_struct,
105        z: *mut acb_struct,
106        f: acb_srcptr,
107        len: slong,
108        x: *const acb_struct,
109        prec: slong,
110    );
111    pub fn acb_poly_evaluate2_rectangular(
112        y: *mut acb_struct,
113        z: *mut acb_struct,
114        f: *const acb_poly_struct,
115        x: *const acb_struct,
116        prec: slong,
117    );
118    pub fn _acb_poly_evaluate2(
119        y: *mut acb_struct,
120        z: *mut acb_struct,
121        f: acb_srcptr,
122        len: slong,
123        x: *const acb_struct,
124        prec: slong,
125    );
126    pub fn acb_poly_evaluate2(
127        y: *mut acb_struct,
128        z: *mut acb_struct,
129        f: *const acb_poly_struct,
130        x: *const acb_struct,
131        prec: slong,
132    );
133    pub fn _acb_poly_derivative(res: acb_ptr, poly: acb_srcptr, len: slong, prec: slong);
134    pub fn acb_poly_derivative(
135        res: *mut acb_poly_struct,
136        poly: *const acb_poly_struct,
137        prec: slong,
138    );
139    pub fn _acb_poly_nth_derivative(
140        res: acb_ptr,
141        poly: acb_srcptr,
142        n: ulong,
143        len: slong,
144        prec: slong,
145    );
146    pub fn acb_poly_nth_derivative(
147        res: *mut acb_poly_struct,
148        poly: *const acb_poly_struct,
149        n: ulong,
150        prec: slong,
151    );
152    pub fn _acb_poly_integral(res: acb_ptr, poly: acb_srcptr, len: slong, prec: slong);
153    pub fn acb_poly_integral(res: *mut acb_poly_struct, poly: *const acb_poly_struct, prec: slong);
154    pub fn acb_poly_borel_transform(
155        res: *mut acb_poly_struct,
156        poly: *const acb_poly_struct,
157        prec: slong,
158    );
159    pub fn _acb_poly_borel_transform(res: acb_ptr, poly: acb_srcptr, len: slong, prec: slong);
160    pub fn acb_poly_inv_borel_transform(
161        res: *mut acb_poly_struct,
162        poly: *const acb_poly_struct,
163        prec: slong,
164    );
165    pub fn _acb_poly_inv_borel_transform(res: acb_ptr, poly: acb_srcptr, len: slong, prec: slong);
166    pub fn _acb_poly_binomial_transform_basecase(
167        b: acb_ptr,
168        a: acb_srcptr,
169        alen: slong,
170        len: slong,
171        prec: slong,
172    );
173    pub fn acb_poly_binomial_transform_basecase(
174        b: *mut acb_poly_struct,
175        a: *const acb_poly_struct,
176        len: slong,
177        prec: slong,
178    );
179    pub fn _acb_poly_binomial_transform_convolution(
180        b: acb_ptr,
181        a: acb_srcptr,
182        alen: slong,
183        len: slong,
184        prec: slong,
185    );
186    pub fn acb_poly_binomial_transform_convolution(
187        b: *mut acb_poly_struct,
188        a: *const acb_poly_struct,
189        len: slong,
190        prec: slong,
191    );
192    pub fn _acb_poly_binomial_transform(
193        b: acb_ptr,
194        a: acb_srcptr,
195        alen: slong,
196        len: slong,
197        prec: slong,
198    );
199    pub fn acb_poly_binomial_transform(
200        b: *mut acb_poly_struct,
201        a: *const acb_poly_struct,
202        len: slong,
203        prec: slong,
204    );
205    pub fn _acb_poly_graeffe_transform(b: acb_ptr, a: acb_srcptr, len: slong, prec: slong);
206    pub fn acb_poly_graeffe_transform(
207        b: *mut acb_poly_struct,
208        a: *const acb_poly_struct,
209        prec: slong,
210    );
211    pub fn acb_poly_set(dest: *mut acb_poly_struct, src: *const acb_poly_struct);
212    pub fn acb_poly_set_round(dest: *mut acb_poly_struct, src: *const acb_poly_struct, prec: slong);
213    pub fn acb_poly_set_trunc(res: *mut acb_poly_struct, poly: *const acb_poly_struct, n: slong);
214    pub fn acb_poly_set_trunc_round(
215        res: *mut acb_poly_struct,
216        poly: *const acb_poly_struct,
217        n: slong,
218        prec: slong,
219    );
220    pub fn acb_poly_set_arb_poly(poly: *mut acb_poly_struct, re: *const arb_poly_struct);
221    pub fn acb_poly_set2_arb_poly(
222        poly: *mut acb_poly_struct,
223        re: *const arb_poly_struct,
224        im: *const arb_poly_struct,
225    );
226    pub fn acb_poly_set_fmpq_poly(
227        poly: *mut acb_poly_struct,
228        re: *const fmpq_poly_struct,
229        prec: slong,
230    );
231    pub fn acb_poly_set2_fmpq_poly(
232        poly: *mut acb_poly_struct,
233        re: *const fmpq_poly_struct,
234        im: *const fmpq_poly_struct,
235        prec: slong,
236    );
237    pub fn acb_poly_set_fmpz_poly(
238        poly: *mut acb_poly_struct,
239        src: *const fmpz_poly_struct,
240        prec: slong,
241    );
242    pub fn acb_poly_set2_fmpz_poly(
243        poly: *mut acb_poly_struct,
244        re: *const fmpz_poly_struct,
245        im: *const fmpz_poly_struct,
246        prec: slong,
247    );
248    pub fn acb_poly_get_unique_fmpz_poly(
249        res: *mut fmpz_poly_struct,
250        src: *const acb_poly_struct,
251    ) -> libc::c_int;
252    #[link_name = "acb_poly_set_acb__extern"]
253    pub fn acb_poly_set_acb(poly: *mut acb_poly_struct, c: *const acb_struct);
254    pub fn acb_poly_set_si(poly: *mut acb_poly_struct, c: slong);
255    pub fn acb_poly_randtest(
256        poly: *mut acb_poly_struct,
257        state: *mut flint_rand_struct,
258        len: slong,
259        prec: slong,
260        mag_bits: slong,
261    );
262    pub fn acb_poly_equal(A: *const acb_poly_struct, B: *const acb_poly_struct) -> libc::c_int;
263    pub fn acb_poly_contains_fmpz_poly(
264        poly1: *const acb_poly_struct,
265        poly2: *const fmpz_poly_struct,
266    ) -> libc::c_int;
267    pub fn acb_poly_contains_fmpq_poly(
268        poly1: *const acb_poly_struct,
269        poly2: *const fmpq_poly_struct,
270    ) -> libc::c_int;
271    pub fn _acb_poly_overlaps(
272        poly1: acb_srcptr,
273        len1: slong,
274        poly2: acb_srcptr,
275        len2: slong,
276    ) -> libc::c_int;
277    pub fn acb_poly_overlaps(
278        poly1: *const acb_poly_struct,
279        poly2: *const acb_poly_struct,
280    ) -> libc::c_int;
281    pub fn acb_poly_contains(
282        poly1: *const acb_poly_struct,
283        poly2: *const acb_poly_struct,
284    ) -> libc::c_int;
285    #[link_name = "acb_poly_is_real__extern"]
286    pub fn acb_poly_is_real(poly: *const acb_poly_struct) -> libc::c_int;
287    pub fn _acb_poly_add(
288        res: acb_ptr,
289        poly1: acb_srcptr,
290        len1: slong,
291        poly2: acb_srcptr,
292        len2: slong,
293        prec: slong,
294    );
295    pub fn acb_poly_add(
296        res: *mut acb_poly_struct,
297        poly1: *const acb_poly_struct,
298        poly2: *const acb_poly_struct,
299        prec: slong,
300    );
301    pub fn acb_poly_add_si(
302        res: *mut acb_poly_struct,
303        poly: *const acb_poly_struct,
304        c: slong,
305        prec: slong,
306    );
307    pub fn _acb_poly_sub(
308        res: acb_ptr,
309        poly1: acb_srcptr,
310        len1: slong,
311        poly2: acb_srcptr,
312        len2: slong,
313        prec: slong,
314    );
315    pub fn acb_poly_sub(
316        res: *mut acb_poly_struct,
317        poly1: *const acb_poly_struct,
318        poly2: *const acb_poly_struct,
319        prec: slong,
320    );
321    pub fn acb_poly_add_series(
322        res: *mut acb_poly_struct,
323        poly1: *const acb_poly_struct,
324        poly2: *const acb_poly_struct,
325        len: slong,
326        prec: slong,
327    );
328    pub fn acb_poly_sub_series(
329        res: *mut acb_poly_struct,
330        poly1: *const acb_poly_struct,
331        poly2: *const acb_poly_struct,
332        len: slong,
333        prec: slong,
334    );
335    #[link_name = "acb_poly_neg__extern"]
336    pub fn acb_poly_neg(res: *mut acb_poly_struct, poly: *const acb_poly_struct);
337    #[link_name = "acb_poly_scalar_mul_2exp_si__extern"]
338    pub fn acb_poly_scalar_mul_2exp_si(
339        res: *mut acb_poly_struct,
340        poly: *const acb_poly_struct,
341        c: slong,
342    );
343    #[link_name = "acb_poly_scalar_mul__extern"]
344    pub fn acb_poly_scalar_mul(
345        res: *mut acb_poly_struct,
346        poly: *const acb_poly_struct,
347        c: *const acb_struct,
348        prec: slong,
349    );
350    #[link_name = "acb_poly_scalar_div__extern"]
351    pub fn acb_poly_scalar_div(
352        res: *mut acb_poly_struct,
353        poly: *const acb_poly_struct,
354        c: *const acb_struct,
355        prec: slong,
356    );
357    pub fn acb_poly_mullow_classical(
358        res: *mut acb_poly_struct,
359        poly1: *const acb_poly_struct,
360        poly2: *const acb_poly_struct,
361        n: slong,
362        prec: slong,
363    );
364    pub fn _acb_poly_mullow_classical(
365        res: acb_ptr,
366        poly1: acb_srcptr,
367        len1: slong,
368        poly2: acb_srcptr,
369        len2: slong,
370        n: slong,
371        prec: slong,
372    );
373    pub fn _acb_poly_mullow_transpose(
374        res: acb_ptr,
375        poly1: acb_srcptr,
376        len1: slong,
377        poly2: acb_srcptr,
378        len2: slong,
379        n: slong,
380        prec: slong,
381    );
382    pub fn acb_poly_mullow_transpose(
383        res: *mut acb_poly_struct,
384        poly1: *const acb_poly_struct,
385        poly2: *const acb_poly_struct,
386        n: slong,
387        prec: slong,
388    );
389    pub fn _acb_poly_mullow_transpose_gauss(
390        res: acb_ptr,
391        poly1: acb_srcptr,
392        len1: slong,
393        poly2: acb_srcptr,
394        len2: slong,
395        n: slong,
396        prec: slong,
397    );
398    pub fn acb_poly_mullow_transpose_gauss(
399        res: *mut acb_poly_struct,
400        poly1: *const acb_poly_struct,
401        poly2: *const acb_poly_struct,
402        n: slong,
403        prec: slong,
404    );
405    pub fn _acb_poly_mullow(
406        res: acb_ptr,
407        poly1: acb_srcptr,
408        len1: slong,
409        poly2: acb_srcptr,
410        len2: slong,
411        n: slong,
412        prec: slong,
413    );
414    pub fn acb_poly_mullow(
415        res: *mut acb_poly_struct,
416        poly1: *const acb_poly_struct,
417        poly2: *const acb_poly_struct,
418        n: slong,
419        prec: slong,
420    );
421    pub fn _acb_poly_mul(
422        C: acb_ptr,
423        A: acb_srcptr,
424        lenA: slong,
425        B: acb_srcptr,
426        lenB: slong,
427        prec: slong,
428    );
429    pub fn acb_poly_mul(
430        res: *mut acb_poly_struct,
431        poly1: *const acb_poly_struct,
432        poly2: *const acb_poly_struct,
433        prec: slong,
434    );
435    pub fn _acb_poly_mulmid_transpose(
436        z: acb_ptr,
437        x: acb_srcptr,
438        xlen: slong,
439        y: acb_srcptr,
440        ylen: slong,
441        nlo: slong,
442        nhi: slong,
443        prec: slong,
444    );
445    pub fn acb_poly_mulmid_transpose(
446        res: *mut acb_poly_struct,
447        poly1: *const acb_poly_struct,
448        poly2: *const acb_poly_struct,
449        nlo: slong,
450        nhi: slong,
451        prec: slong,
452    );
453    pub fn _acb_poly_mulmid_classical(
454        z: acb_ptr,
455        x: acb_srcptr,
456        xlen: slong,
457        y: acb_srcptr,
458        ylen: slong,
459        nlo: slong,
460        nhi: slong,
461        prec: slong,
462    );
463    pub fn acb_poly_mulmid_classical(
464        res: *mut acb_poly_struct,
465        poly1: *const acb_poly_struct,
466        poly2: *const acb_poly_struct,
467        nlo: slong,
468        nhi: slong,
469        prec: slong,
470    );
471    pub fn _acb_poly_mulmid(
472        z: acb_ptr,
473        x: acb_srcptr,
474        xlen: slong,
475        y: acb_srcptr,
476        ylen: slong,
477        nlo: slong,
478        nhi: slong,
479        prec: slong,
480    );
481    pub fn acb_poly_mulmid(
482        res: *mut acb_poly_struct,
483        poly1: *const acb_poly_struct,
484        poly2: *const acb_poly_struct,
485        nlo: slong,
486        nhi: slong,
487        prec: slong,
488    );
489    #[link_name = "_acb_poly_mul_monic__extern"]
490    pub fn _acb_poly_mul_monic(
491        res: acb_ptr,
492        poly1: acb_srcptr,
493        len1: slong,
494        poly2: acb_srcptr,
495        len2: slong,
496        prec: slong,
497    );
498    pub fn _acb_poly_inv_series(Qinv: acb_ptr, Q: acb_srcptr, Qlen: slong, len: slong, prec: slong);
499    pub fn acb_poly_inv_series(
500        Qinv: *mut acb_poly_struct,
501        Q: *const acb_poly_struct,
502        n: slong,
503        prec: slong,
504    );
505    pub fn _acb_poly_div_series(
506        Q: acb_ptr,
507        A: acb_srcptr,
508        Alen: slong,
509        B: acb_srcptr,
510        Blen: slong,
511        n: slong,
512        prec: slong,
513    );
514    pub fn acb_poly_div_series(
515        Q: *mut acb_poly_struct,
516        A: *const acb_poly_struct,
517        B: *const acb_poly_struct,
518        n: slong,
519        prec: slong,
520    );
521    pub fn _acb_poly_reverse(res: acb_ptr, poly: acb_srcptr, len: slong, n: slong);
522    pub fn _acb_poly_div(
523        Q: acb_ptr,
524        A: acb_srcptr,
525        lenA: slong,
526        B: acb_srcptr,
527        lenB: slong,
528        prec: slong,
529    );
530    pub fn _acb_poly_divrem(
531        Q: acb_ptr,
532        R: acb_ptr,
533        A: acb_srcptr,
534        lenA: slong,
535        B: acb_srcptr,
536        lenB: slong,
537        prec: slong,
538    );
539    pub fn _acb_poly_rem(
540        R: acb_ptr,
541        A: acb_srcptr,
542        lenA: slong,
543        B: acb_srcptr,
544        lenB: slong,
545        prec: slong,
546    );
547    pub fn acb_poly_divrem(
548        Q: *mut acb_poly_struct,
549        R: *mut acb_poly_struct,
550        A: *const acb_poly_struct,
551        B: *const acb_poly_struct,
552        prec: slong,
553    ) -> libc::c_int;
554    pub fn _acb_poly_div_root(
555        Q: acb_ptr,
556        R: *mut acb_struct,
557        A: acb_srcptr,
558        len: slong,
559        c: *const acb_struct,
560        prec: slong,
561    );
562    pub fn _acb_poly_taylor_shift(poly: acb_ptr, c: *const acb_struct, n: slong, prec: slong);
563    pub fn acb_poly_taylor_shift(
564        g: *mut acb_poly_struct,
565        f: *const acb_poly_struct,
566        c: *const acb_struct,
567        prec: slong,
568    );
569    pub fn _acb_poly_compose(
570        res: acb_ptr,
571        poly1: acb_srcptr,
572        len1: slong,
573        poly2: acb_srcptr,
574        len2: slong,
575        prec: slong,
576    );
577    pub fn acb_poly_compose(
578        res: *mut acb_poly_struct,
579        poly1: *const acb_poly_struct,
580        poly2: *const acb_poly_struct,
581        prec: slong,
582    );
583    pub fn _acb_poly_compose_series(
584        res: acb_ptr,
585        poly1: acb_srcptr,
586        len1: slong,
587        poly2: acb_srcptr,
588        len2: slong,
589        n: slong,
590        prec: slong,
591    );
592    pub fn acb_poly_compose_series(
593        res: *mut acb_poly_struct,
594        poly1: *const acb_poly_struct,
595        poly2: *const acb_poly_struct,
596        n: slong,
597        prec: slong,
598    );
599    pub fn _acb_poly_revert_series(
600        Qinv: acb_ptr,
601        Q: acb_srcptr,
602        Qlen: slong,
603        n: slong,
604        prec: slong,
605    );
606    pub fn acb_poly_revert_series(
607        Qinv: *mut acb_poly_struct,
608        Q: *const acb_poly_struct,
609        n: slong,
610        prec: slong,
611    );
612    pub fn _acb_poly_evaluate_vec_fast_precomp(
613        vs: acb_ptr,
614        poly: acb_srcptr,
615        plen: slong,
616        tree: *mut acb_ptr,
617        len: slong,
618        prec: slong,
619    );
620    pub fn _acb_poly_evaluate_vec_fast(
621        ys: acb_ptr,
622        poly: acb_srcptr,
623        plen: slong,
624        xs: acb_srcptr,
625        n: slong,
626        prec: slong,
627    );
628    pub fn acb_poly_evaluate_vec_fast(
629        ys: acb_ptr,
630        poly: *const acb_poly_struct,
631        xs: acb_srcptr,
632        n: slong,
633        prec: slong,
634    );
635    pub fn _acb_poly_evaluate_vec_iter(
636        ys: acb_ptr,
637        poly: acb_srcptr,
638        plen: slong,
639        xs: acb_srcptr,
640        n: slong,
641        prec: slong,
642    );
643    pub fn acb_poly_evaluate_vec_iter(
644        ys: acb_ptr,
645        poly: *const acb_poly_struct,
646        xs: acb_srcptr,
647        n: slong,
648        prec: slong,
649    );
650    pub fn _acb_poly_interpolate_barycentric(
651        poly: acb_ptr,
652        xs: acb_srcptr,
653        ys: acb_srcptr,
654        n: slong,
655        prec: slong,
656    );
657    pub fn acb_poly_interpolate_barycentric(
658        poly: *mut acb_poly_struct,
659        xs: acb_srcptr,
660        ys: acb_srcptr,
661        n: slong,
662        prec: slong,
663    );
664    pub fn _acb_poly_interpolation_weights(w: acb_ptr, tree: *mut acb_ptr, len: slong, prec: slong);
665    pub fn _acb_poly_interpolate_fast_precomp(
666        poly: acb_ptr,
667        ys: acb_srcptr,
668        tree: *mut acb_ptr,
669        weights: acb_srcptr,
670        len: slong,
671        prec: slong,
672    );
673    pub fn _acb_poly_interpolate_fast(
674        poly: acb_ptr,
675        xs: acb_srcptr,
676        ys: acb_srcptr,
677        len: slong,
678        prec: slong,
679    );
680    pub fn acb_poly_interpolate_fast(
681        poly: *mut acb_poly_struct,
682        xs: acb_srcptr,
683        ys: acb_srcptr,
684        n: slong,
685        prec: slong,
686    );
687    pub fn _acb_poly_interpolate_newton(
688        poly: acb_ptr,
689        xs: acb_srcptr,
690        ys: acb_srcptr,
691        n: slong,
692        prec: slong,
693    );
694    pub fn acb_poly_interpolate_newton(
695        poly: *mut acb_poly_struct,
696        xs: acb_srcptr,
697        ys: acb_srcptr,
698        n: slong,
699        prec: slong,
700    );
701    pub fn _acb_poly_product_roots(poly: acb_ptr, xs: acb_srcptr, n: slong, prec: slong);
702    pub fn acb_poly_product_roots(
703        poly: *mut acb_poly_struct,
704        xs: acb_srcptr,
705        n: slong,
706        prec: slong,
707    );
708    pub fn _acb_poly_tree_alloc(len: slong) -> *mut acb_ptr;
709    pub fn _acb_poly_tree_free(tree: *mut acb_ptr, len: slong);
710    pub fn _acb_poly_tree_build(tree: *mut acb_ptr, roots: acb_srcptr, len: slong, prec: slong);
711    pub fn _acb_poly_root_inclusion(
712        r: *mut acb_struct,
713        m: *const acb_struct,
714        poly: acb_srcptr,
715        polyder: acb_srcptr,
716        len: slong,
717        prec: slong,
718    );
719    pub fn _acb_poly_validate_roots(
720        roots: acb_ptr,
721        poly: acb_srcptr,
722        len: slong,
723        prec: slong,
724    ) -> slong;
725    pub fn _acb_poly_find_roots(
726        roots: acb_ptr,
727        poly: acb_srcptr,
728        initial: acb_srcptr,
729        len: slong,
730        maxiter: slong,
731        prec: slong,
732    ) -> slong;
733    pub fn acb_poly_find_roots(
734        roots: acb_ptr,
735        poly: *const acb_poly_struct,
736        initial: acb_srcptr,
737        maxiter: slong,
738        prec: slong,
739    ) -> slong;
740    pub fn _acb_poly_root_bound_fujiwara(bound: *mut mag_struct, poly: acb_srcptr, len: slong);
741    pub fn acb_poly_root_bound_fujiwara(bound: *mut mag_struct, poly: *mut acb_poly_struct);
742    pub fn _acb_poly_validate_real_roots(
743        roots: acb_srcptr,
744        poly: acb_srcptr,
745        len: slong,
746        prec: slong,
747    ) -> libc::c_int;
748    pub fn acb_poly_validate_real_roots(
749        roots: acb_srcptr,
750        poly: *const acb_poly_struct,
751        prec: slong,
752    ) -> libc::c_int;
753    pub fn _acb_poly_pow_ui_trunc_binexp(
754        res: acb_ptr,
755        f: acb_srcptr,
756        flen: slong,
757        exp: ulong,
758        len: slong,
759        prec: slong,
760    );
761    pub fn acb_poly_pow_ui_trunc_binexp(
762        res: *mut acb_poly_struct,
763        poly: *const acb_poly_struct,
764        exp: ulong,
765        len: slong,
766        prec: slong,
767    );
768    pub fn _acb_poly_pow_ui(res: acb_ptr, f: acb_srcptr, flen: slong, exp: ulong, prec: slong);
769    pub fn acb_poly_pow_ui(
770        res: *mut acb_poly_struct,
771        poly: *const acb_poly_struct,
772        exp: ulong,
773        prec: slong,
774    );
775    pub fn _acb_poly_rsqrt_series(g: acb_ptr, h: acb_srcptr, hlen: slong, len: slong, prec: slong);
776    pub fn acb_poly_rsqrt_series(
777        g: *mut acb_poly_struct,
778        h: *const acb_poly_struct,
779        n: slong,
780        prec: slong,
781    );
782    pub fn _acb_poly_sqrt_series(g: acb_ptr, h: acb_srcptr, hlen: slong, len: slong, prec: slong);
783    pub fn acb_poly_sqrt_series(
784        g: *mut acb_poly_struct,
785        h: *const acb_poly_struct,
786        n: slong,
787        prec: slong,
788    );
789    pub fn _acb_poly_log_series(res: acb_ptr, f: acb_srcptr, flen: slong, n: slong, prec: slong);
790    pub fn acb_poly_log_series(
791        res: *mut acb_poly_struct,
792        f: *const acb_poly_struct,
793        n: slong,
794        prec: slong,
795    );
796    pub fn _acb_poly_log1p_series(res: acb_ptr, f: acb_srcptr, flen: slong, n: slong, prec: slong);
797    pub fn acb_poly_log1p_series(
798        res: *mut acb_poly_struct,
799        f: *const acb_poly_struct,
800        n: slong,
801        prec: slong,
802    );
803    pub fn _acb_poly_atan_series(res: acb_ptr, f: acb_srcptr, flen: slong, n: slong, prec: slong);
804    pub fn acb_poly_atan_series(
805        res: *mut acb_poly_struct,
806        f: *const acb_poly_struct,
807        n: slong,
808        prec: slong,
809    );
810    pub fn _acb_poly_exp_series_basecase(
811        f: acb_ptr,
812        h: acb_srcptr,
813        hlen: slong,
814        n: slong,
815        prec: slong,
816    );
817    pub fn acb_poly_exp_series_basecase(
818        f: *mut acb_poly_struct,
819        h: *const acb_poly_struct,
820        n: slong,
821        prec: slong,
822    );
823    pub fn _acb_poly_exp_series(f: acb_ptr, h: acb_srcptr, hlen: slong, n: slong, prec: slong);
824    pub fn acb_poly_exp_series(
825        f: *mut acb_poly_struct,
826        h: *const acb_poly_struct,
827        n: slong,
828        prec: slong,
829    );
830    pub fn _acb_poly_exp_pi_i_series(f: acb_ptr, h: acb_srcptr, hlen: slong, n: slong, prec: slong);
831    pub fn acb_poly_exp_pi_i_series(
832        f: *mut acb_poly_struct,
833        h: *const acb_poly_struct,
834        n: slong,
835        prec: slong,
836    );
837    pub fn _acb_poly_sinh_cosh_series_basecase(
838        s: acb_ptr,
839        c: acb_ptr,
840        h: acb_srcptr,
841        hlen: slong,
842        n: slong,
843        prec: slong,
844    );
845    pub fn acb_poly_sinh_cosh_series_basecase(
846        s: *mut acb_poly_struct,
847        c: *mut acb_poly_struct,
848        h: *const acb_poly_struct,
849        n: slong,
850        prec: slong,
851    );
852    pub fn _acb_poly_sinh_cosh_series_exponential(
853        s: acb_ptr,
854        c: acb_ptr,
855        h: acb_srcptr,
856        hlen: slong,
857        n: slong,
858        prec: slong,
859    );
860    pub fn acb_poly_sinh_cosh_series_exponential(
861        s: *mut acb_poly_struct,
862        c: *mut acb_poly_struct,
863        h: *const acb_poly_struct,
864        n: slong,
865        prec: slong,
866    );
867    pub fn _acb_poly_sinh_cosh_series(
868        s: acb_ptr,
869        c: acb_ptr,
870        h: acb_srcptr,
871        hlen: slong,
872        n: slong,
873        prec: slong,
874    );
875    pub fn acb_poly_sinh_cosh_series(
876        s: *mut acb_poly_struct,
877        c: *mut acb_poly_struct,
878        h: *const acb_poly_struct,
879        n: slong,
880        prec: slong,
881    );
882    pub fn _acb_poly_sinh_series(s: acb_ptr, h: acb_srcptr, hlen: slong, n: slong, prec: slong);
883    pub fn acb_poly_sinh_series(
884        s: *mut acb_poly_struct,
885        h: *const acb_poly_struct,
886        n: slong,
887        prec: slong,
888    );
889    pub fn _acb_poly_cosh_series(c: acb_ptr, h: acb_srcptr, hlen: slong, n: slong, prec: slong);
890    pub fn acb_poly_cosh_series(
891        c: *mut acb_poly_struct,
892        h: *const acb_poly_struct,
893        n: slong,
894        prec: slong,
895    );
896    pub fn _acb_poly_sin_cos_series(
897        s: acb_ptr,
898        c: acb_ptr,
899        h: acb_srcptr,
900        hlen: slong,
901        len: slong,
902        prec: slong,
903    );
904    pub fn acb_poly_sin_cos_series(
905        s: *mut acb_poly_struct,
906        c: *mut acb_poly_struct,
907        h: *const acb_poly_struct,
908        n: slong,
909        prec: slong,
910    );
911    pub fn _acb_poly_sin_series(g: acb_ptr, h: acb_srcptr, hlen: slong, n: slong, prec: slong);
912    pub fn acb_poly_sin_series(
913        g: *mut acb_poly_struct,
914        h: *const acb_poly_struct,
915        n: slong,
916        prec: slong,
917    );
918    pub fn _acb_poly_cos_series(g: acb_ptr, h: acb_srcptr, hlen: slong, n: slong, prec: slong);
919    pub fn acb_poly_cos_series(
920        g: *mut acb_poly_struct,
921        h: *const acb_poly_struct,
922        n: slong,
923        prec: slong,
924    );
925    pub fn _acb_poly_sin_cos_pi_series(
926        s: acb_ptr,
927        c: acb_ptr,
928        h: acb_srcptr,
929        hlen: slong,
930        len: slong,
931        prec: slong,
932    );
933    pub fn acb_poly_sin_cos_pi_series(
934        s: *mut acb_poly_struct,
935        c: *mut acb_poly_struct,
936        h: *const acb_poly_struct,
937        n: slong,
938        prec: slong,
939    );
940    pub fn _acb_poly_sin_pi_series(g: acb_ptr, h: acb_srcptr, hlen: slong, n: slong, prec: slong);
941    pub fn acb_poly_sin_pi_series(
942        g: *mut acb_poly_struct,
943        h: *const acb_poly_struct,
944        n: slong,
945        prec: slong,
946    );
947    pub fn _acb_poly_cos_pi_series(g: acb_ptr, h: acb_srcptr, hlen: slong, n: slong, prec: slong);
948    pub fn acb_poly_cos_pi_series(
949        g: *mut acb_poly_struct,
950        h: *const acb_poly_struct,
951        n: slong,
952        prec: slong,
953    );
954    pub fn _acb_poly_cot_pi_series(g: acb_ptr, h: acb_srcptr, hlen: slong, len: slong, prec: slong);
955    pub fn acb_poly_cot_pi_series(
956        res: *mut acb_poly_struct,
957        f: *const acb_poly_struct,
958        len: slong,
959        prec: slong,
960    );
961    pub fn _acb_poly_tan_series(g: acb_ptr, h: acb_srcptr, hlen: slong, len: slong, prec: slong);
962    pub fn acb_poly_tan_series(
963        g: *mut acb_poly_struct,
964        h: *const acb_poly_struct,
965        n: slong,
966        prec: slong,
967    );
968    pub fn _acb_poly_sinc_series(g: acb_ptr, h: acb_srcptr, hlen: slong, n: slong, prec: slong);
969    pub fn acb_poly_sinc_series(
970        g: *mut acb_poly_struct,
971        h: *const acb_poly_struct,
972        n: slong,
973        prec: slong,
974    );
975    pub fn _acb_poly_sinc_pi_series(g: acb_ptr, h: acb_srcptr, hlen: slong, n: slong, prec: slong);
976    pub fn acb_poly_sinc_pi_series(
977        g: *mut acb_poly_struct,
978        h: *const acb_poly_struct,
979        n: slong,
980        prec: slong,
981    );
982    pub fn _acb_poly_lambertw_series(
983        res: acb_ptr,
984        z: acb_srcptr,
985        zlen: slong,
986        k: *const fmpz,
987        flags: libc::c_int,
988        len: slong,
989        prec: slong,
990    );
991    pub fn acb_poly_lambertw_series(
992        res: *mut acb_poly_struct,
993        z: *const acb_poly_struct,
994        k: *const fmpz,
995        flags: libc::c_int,
996        len: slong,
997        prec: slong,
998    );
999    pub fn _acb_poly_gamma_series(
1000        res: acb_ptr,
1001        h: acb_srcptr,
1002        hlen: slong,
1003        len: slong,
1004        prec: slong,
1005    );
1006    pub fn acb_poly_gamma_series(
1007        res: *mut acb_poly_struct,
1008        f: *const acb_poly_struct,
1009        n: slong,
1010        prec: slong,
1011    );
1012    pub fn _acb_poly_rgamma_series(
1013        res: acb_ptr,
1014        h: acb_srcptr,
1015        hlen: slong,
1016        len: slong,
1017        prec: slong,
1018    );
1019    pub fn acb_poly_rgamma_series(
1020        res: *mut acb_poly_struct,
1021        f: *const acb_poly_struct,
1022        n: slong,
1023        prec: slong,
1024    );
1025    pub fn _acb_poly_lgamma_series(
1026        res: acb_ptr,
1027        h: acb_srcptr,
1028        hlen: slong,
1029        len: slong,
1030        prec: slong,
1031    );
1032    pub fn acb_poly_lgamma_series(
1033        res: *mut acb_poly_struct,
1034        f: *const acb_poly_struct,
1035        n: slong,
1036        prec: slong,
1037    );
1038    pub fn _acb_poly_digamma_series(
1039        res: acb_ptr,
1040        h: acb_srcptr,
1041        hlen: slong,
1042        len: slong,
1043        prec: slong,
1044    );
1045    pub fn acb_poly_digamma_series(
1046        res: *mut acb_poly_struct,
1047        f: *const acb_poly_struct,
1048        n: slong,
1049        prec: slong,
1050    );
1051    pub fn _acb_poly_rising_ui_series(
1052        res: acb_ptr,
1053        f: acb_srcptr,
1054        flen: slong,
1055        r: ulong,
1056        trunc: slong,
1057        prec: slong,
1058    );
1059    pub fn acb_poly_rising_ui_series(
1060        res: *mut acb_poly_struct,
1061        f: *const acb_poly_struct,
1062        r: ulong,
1063        trunc: slong,
1064        prec: slong,
1065    );
1066    pub fn _acb_poly_pow_acb_series(
1067        h: acb_ptr,
1068        f: acb_srcptr,
1069        flen: slong,
1070        g: *const acb_struct,
1071        len: slong,
1072        prec: slong,
1073    );
1074    pub fn acb_poly_pow_acb_series(
1075        h: *mut acb_poly_struct,
1076        f: *const acb_poly_struct,
1077        g: *const acb_struct,
1078        len: slong,
1079        prec: slong,
1080    );
1081    pub fn _acb_poly_pow_series(
1082        h: acb_ptr,
1083        f: acb_srcptr,
1084        flen: slong,
1085        g: acb_srcptr,
1086        glen: slong,
1087        len: slong,
1088        prec: slong,
1089    );
1090    pub fn acb_poly_pow_series(
1091        h: *mut acb_poly_struct,
1092        f: *const acb_poly_struct,
1093        g: *const acb_poly_struct,
1094        len: slong,
1095        prec: slong,
1096    );
1097    pub fn _acb_poly_binomial_pow_acb_series(
1098        h: acb_ptr,
1099        f: acb_srcptr,
1100        flen: slong,
1101        g: *const acb_struct,
1102        len: slong,
1103        prec: slong,
1104    );
1105    #[link_name = "_acb_poly_acb_pow_cpx__extern"]
1106    pub fn _acb_poly_acb_pow_cpx(
1107        w: acb_ptr,
1108        a: *const acb_struct,
1109        b: *const acb_struct,
1110        len: slong,
1111        prec: slong,
1112    );
1113    pub fn _acb_poly_acb_invpow_cpx(
1114        res: acb_ptr,
1115        N: *const acb_struct,
1116        c: *const acb_struct,
1117        trunc: slong,
1118        prec: slong,
1119    );
1120    pub fn _acb_poly_mullow_cpx(
1121        res: acb_ptr,
1122        src: acb_srcptr,
1123        len: slong,
1124        c: *const acb_struct,
1125        trunc: slong,
1126        prec: slong,
1127    );
1128    pub fn _acb_poly_powsum_series_naive(
1129        z: acb_ptr,
1130        s: *const acb_struct,
1131        a: *const acb_struct,
1132        q: *const acb_struct,
1133        n: slong,
1134        len: slong,
1135        prec: slong,
1136    );
1137    pub fn _acb_poly_powsum_series_naive_threaded(
1138        z: acb_ptr,
1139        s: *const acb_struct,
1140        a: *const acb_struct,
1141        q: *const acb_struct,
1142        n: slong,
1143        len: slong,
1144        prec: slong,
1145    );
1146    pub fn _acb_poly_powsum_one_series_sieved(
1147        z: acb_ptr,
1148        s: *const acb_struct,
1149        n: slong,
1150        len: slong,
1151        prec: slong,
1152    );
1153    pub fn _acb_poly_zeta_em_sum(
1154        z: acb_ptr,
1155        s: *const acb_struct,
1156        a: *const acb_struct,
1157        deflate: libc::c_int,
1158        N: ulong,
1159        M: ulong,
1160        d: slong,
1161        prec: slong,
1162    );
1163    pub fn _acb_poly_zeta_em_choose_param(
1164        bound: *mut mag_struct,
1165        N: *mut ulong,
1166        M: *mut ulong,
1167        s: *const acb_struct,
1168        a: *const acb_struct,
1169        d: slong,
1170        target: slong,
1171        prec: slong,
1172    );
1173    pub fn _acb_poly_zeta_em_bound1(
1174        bound: *mut mag_struct,
1175        s: *const acb_struct,
1176        a: *const acb_struct,
1177        N: slong,
1178        M: slong,
1179        d: slong,
1180        wp: slong,
1181    );
1182    pub fn _acb_poly_zeta_em_bound(
1183        vec: arb_ptr,
1184        s: *const acb_struct,
1185        a: *const acb_struct,
1186        N: ulong,
1187        M: ulong,
1188        d: slong,
1189        wp: slong,
1190    );
1191    pub fn _acb_poly_zeta_em_tail_naive(
1192        sum: acb_ptr,
1193        s: *const acb_struct,
1194        Na: *const acb_struct,
1195        Nasx: acb_srcptr,
1196        M: slong,
1197        len: slong,
1198        prec: slong,
1199    );
1200    pub fn _acb_poly_zeta_em_tail_bsplit(
1201        z: acb_ptr,
1202        s: *const acb_struct,
1203        Na: *const acb_struct,
1204        Nasx: acb_srcptr,
1205        M: slong,
1206        len: slong,
1207        prec: slong,
1208    );
1209    pub fn _acb_poly_zeta_cpx_series(
1210        z: acb_ptr,
1211        s: *const acb_struct,
1212        a: *const acb_struct,
1213        deflate: libc::c_int,
1214        d: slong,
1215        prec: slong,
1216    );
1217    pub fn _acb_poly_zeta_series(
1218        res: acb_ptr,
1219        h: acb_srcptr,
1220        hlen: slong,
1221        a: *const acb_struct,
1222        deflate: libc::c_int,
1223        len: slong,
1224        prec: slong,
1225    );
1226    pub fn acb_poly_zeta_series(
1227        res: *mut acb_poly_struct,
1228        f: *const acb_poly_struct,
1229        a: *const acb_struct,
1230        deflate: libc::c_int,
1231        n: slong,
1232        prec: slong,
1233    );
1234    pub fn _acb_poly_polylog_cpx_zeta(
1235        w: acb_ptr,
1236        s: *const acb_struct,
1237        z: *const acb_struct,
1238        len: slong,
1239        prec: slong,
1240    );
1241    pub fn _acb_poly_polylog_cpx_small(
1242        w: acb_ptr,
1243        s: *const acb_struct,
1244        z: *const acb_struct,
1245        len: slong,
1246        prec: slong,
1247    );
1248    pub fn _acb_poly_polylog_cpx(
1249        w: acb_ptr,
1250        s: *const acb_struct,
1251        z: *const acb_struct,
1252        len: slong,
1253        prec: slong,
1254    );
1255    pub fn _acb_poly_polylog_series(
1256        res: acb_ptr,
1257        s: acb_srcptr,
1258        slen: slong,
1259        z: *const acb_struct,
1260        len: slong,
1261        prec: slong,
1262    );
1263    pub fn acb_poly_polylog_series(
1264        res: *mut acb_poly_struct,
1265        s: *const acb_poly_struct,
1266        z: *const acb_struct,
1267        n: slong,
1268        prec: slong,
1269    );
1270    pub fn _acb_poly_agm1_series(res: acb_ptr, z: acb_srcptr, zlen: slong, len: slong, prec: slong);
1271    pub fn acb_poly_agm1_series(
1272        res: *mut acb_poly_struct,
1273        z: *const acb_poly_struct,
1274        n: slong,
1275        prec: slong,
1276    );
1277    pub fn _acb_poly_elliptic_k_series(
1278        res: acb_ptr,
1279        z: acb_srcptr,
1280        zlen: slong,
1281        len: slong,
1282        prec: slong,
1283    );
1284    pub fn acb_poly_elliptic_k_series(
1285        res: *mut acb_poly_struct,
1286        z: *const acb_poly_struct,
1287        n: slong,
1288        prec: slong,
1289    );
1290    pub fn _acb_poly_elliptic_p_series(
1291        res: acb_ptr,
1292        z: acb_srcptr,
1293        zlen: slong,
1294        tau: *const acb_struct,
1295        len: slong,
1296        prec: slong,
1297    );
1298    pub fn acb_poly_elliptic_p_series(
1299        res: *mut acb_poly_struct,
1300        z: *const acb_poly_struct,
1301        tau: *const acb_struct,
1302        n: slong,
1303        prec: slong,
1304    );
1305    pub fn _acb_poly_erf_series(g: acb_ptr, h: acb_srcptr, hlen: slong, n: slong, prec: slong);
1306    pub fn acb_poly_erf_series(
1307        g: *mut acb_poly_struct,
1308        h: *const acb_poly_struct,
1309        n: slong,
1310        prec: slong,
1311    );
1312    #[link_name = "acb_poly_allocated_bytes__extern"]
1313    pub fn acb_poly_allocated_bytes(x: *const acb_poly_struct) -> slong;
1314    pub fn cd_poly_roots_initial_values(
1315        z_r: *mut f64,
1316        z_i: *mut f64,
1317        p_r: *const f64,
1318        p_i: *const f64,
1319        n: slong,
1320        z0: *const f64,
1321        d: slong,
1322    );
1323    pub fn cd_poly_weierstrass(
1324        results_r: *mut f64,
1325        results_i: *mut f64,
1326        lc_r: f64,
1327        lc_i: f64,
1328        values_r: *const f64,
1329        values_i: *const f64,
1330        n_start: slong,
1331        n_end: slong,
1332        d: slong,
1333    );
1334    pub fn cd_poly_weierstrass_distinct_orders(
1335        results_r: *mut f64,
1336        results_i: *mut f64,
1337        lc_r: f64,
1338        lc_i: f64,
1339        col_values_r: *const f64,
1340        col_values_i: *const f64,
1341        d: slong,
1342        row_values_r: *const f64,
1343        row_values_i: *const f64,
1344        n_start: slong,
1345        n_end: slong,
1346    );
1347    pub fn cd_poly_wdk_update(
1348        z_r: *mut f64,
1349        z_i: *mut f64,
1350        vp_r: *const f64,
1351        vp_i: *const f64,
1352        wdk_r: *const f64,
1353        wdk_i: *const f64,
1354        n_start: slong,
1355        n_end: slong,
1356        stepsize_bound: f64,
1357    ) -> f64;
1358    pub fn cd_poly_refine_roots(z: *mut f64, p: *const f64, n: slong, stepsize_bound: f64) -> f64;
1359    pub fn cd_poly_refine_roots_with_pivot(
1360        z: *mut f64,
1361        p: *const f64,
1362        n: slong,
1363        stepsize_bound: f64,
1364    ) -> f64;
1365    pub fn cd_poly_horner(
1366        results_r: *mut f64,
1367        results_i: *mut f64,
1368        values_r: *const f64,
1369        values_i: *const f64,
1370        n_start: slong,
1371        n_end: slong,
1372        coefficients_r: *const f64,
1373        coefficients_i: *const f64,
1374        n: slong,
1375    );
1376    pub fn cd_poly_find_roots(
1377        z: *mut f64,
1378        p: *const f64,
1379        z0: *const f64,
1380        n: slong,
1381        num_iter: slong,
1382        reltol: f64,
1383    ) -> f64;
1384    pub fn _acb_poly_find_roots_double(
1385        roots: acb_ptr,
1386        poly: acb_srcptr,
1387        initial: acb_srcptr,
1388        len: slong,
1389        maxiter: slong,
1390        prec: slong,
1391    ) -> f64;
1392}