antic/
bindings.rs

1/* automatically generated by rust-bindgen */
2
3pub const __GMP_HAVE_HOST_CPU_FAMILY_power: u32 = 0;
4pub const __GMP_HAVE_HOST_CPU_FAMILY_powerpc: u32 = 0;
5pub const GMP_LIMB_BITS: u32 = 64;
6pub const GMP_NAIL_BITS: u32 = 0;
7pub const GMP_NUMB_BITS: u32 = 64;
8pub const __GNU_MP__: u32 = 6;
9pub const _LIBC_LIMITS_H_: u32 = 1;
10pub const _FEATURES_H: u32 = 1;
11pub const _DEFAULT_SOURCE: u32 = 1;
12pub const __USE_ISOC11: u32 = 1;
13pub const __USE_ISOC99: u32 = 1;
14pub const __USE_ISOC95: u32 = 1;
15pub const __USE_POSIX_IMPLICITLY: u32 = 1;
16pub const _POSIX_SOURCE: u32 = 1;
17pub const _POSIX_C_SOURCE: u32 = 200809;
18pub const __USE_POSIX: u32 = 1;
19pub const __USE_POSIX2: u32 = 1;
20pub const __USE_POSIX199309: u32 = 1;
21pub const __USE_POSIX199506: u32 = 1;
22pub const __USE_XOPEN2K: u32 = 1;
23pub const __USE_XOPEN2K8: u32 = 1;
24pub const _ATFILE_SOURCE: u32 = 1;
25pub const __USE_MISC: u32 = 1;
26pub const __USE_ATFILE: u32 = 1;
27pub const __USE_FORTIFY_LEVEL: u32 = 0;
28pub const __GLIBC_USE_DEPRECATED_GETS: u32 = 0;
29pub const __GLIBC_USE_DEPRECATED_SCANF: u32 = 0;
30pub const _STDC_PREDEF_H: u32 = 1;
31pub const __STDC_IEC_559__: u32 = 1;
32pub const __STDC_IEC_559_COMPLEX__: u32 = 1;
33pub const __STDC_ISO_10646__: u32 = 201706;
34pub const __GNU_LIBRARY__: u32 = 6;
35pub const __GLIBC__: u32 = 2;
36pub const __GLIBC_MINOR__: u32 = 30;
37pub const _SYS_CDEFS_H: u32 = 1;
38pub const __glibc_c99_flexarr_available: u32 = 1;
39pub const __WORDSIZE: u32 = 64;
40pub const __WORDSIZE_TIME64_COMPAT32: u32 = 1;
41pub const __SYSCALL_WORDSIZE: u32 = 64;
42pub const __HAVE_GENERIC_SELECTION: u32 = 1;
43pub const __GLIBC_USE_LIB_EXT2: u32 = 0;
44pub const __GLIBC_USE_IEC_60559_BFP_EXT: u32 = 0;
45pub const __GLIBC_USE_IEC_60559_FUNCS_EXT: u32 = 0;
46pub const __GLIBC_USE_IEC_60559_TYPES_EXT: u32 = 0;
47pub const MB_LEN_MAX: u32 = 16;
48pub const _BITS_POSIX1_LIM_H: u32 = 1;
49pub const _POSIX_AIO_LISTIO_MAX: u32 = 2;
50pub const _POSIX_AIO_MAX: u32 = 1;
51pub const _POSIX_ARG_MAX: u32 = 4096;
52pub const _POSIX_CHILD_MAX: u32 = 25;
53pub const _POSIX_DELAYTIMER_MAX: u32 = 32;
54pub const _POSIX_HOST_NAME_MAX: u32 = 255;
55pub const _POSIX_LINK_MAX: u32 = 8;
56pub const _POSIX_LOGIN_NAME_MAX: u32 = 9;
57pub const _POSIX_MAX_CANON: u32 = 255;
58pub const _POSIX_MAX_INPUT: u32 = 255;
59pub const _POSIX_MQ_OPEN_MAX: u32 = 8;
60pub const _POSIX_MQ_PRIO_MAX: u32 = 32;
61pub const _POSIX_NAME_MAX: u32 = 14;
62pub const _POSIX_NGROUPS_MAX: u32 = 8;
63pub const _POSIX_OPEN_MAX: u32 = 20;
64pub const _POSIX_PATH_MAX: u32 = 256;
65pub const _POSIX_PIPE_BUF: u32 = 512;
66pub const _POSIX_RE_DUP_MAX: u32 = 255;
67pub const _POSIX_RTSIG_MAX: u32 = 8;
68pub const _POSIX_SEM_NSEMS_MAX: u32 = 256;
69pub const _POSIX_SEM_VALUE_MAX: u32 = 32767;
70pub const _POSIX_SIGQUEUE_MAX: u32 = 32;
71pub const _POSIX_SSIZE_MAX: u32 = 32767;
72pub const _POSIX_STREAM_MAX: u32 = 8;
73pub const _POSIX_SYMLINK_MAX: u32 = 255;
74pub const _POSIX_SYMLOOP_MAX: u32 = 8;
75pub const _POSIX_TIMER_MAX: u32 = 32;
76pub const _POSIX_TTY_NAME_MAX: u32 = 9;
77pub const _POSIX_TZNAME_MAX: u32 = 6;
78pub const _POSIX_CLOCKRES_MIN: u32 = 20000000;
79pub const NR_OPEN: u32 = 1024;
80pub const NGROUPS_MAX: u32 = 65536;
81pub const ARG_MAX: u32 = 131072;
82pub const LINK_MAX: u32 = 127;
83pub const MAX_CANON: u32 = 255;
84pub const MAX_INPUT: u32 = 255;
85pub const NAME_MAX: u32 = 255;
86pub const PATH_MAX: u32 = 4096;
87pub const PIPE_BUF: u32 = 4096;
88pub const XATTR_NAME_MAX: u32 = 255;
89pub const XATTR_SIZE_MAX: u32 = 65536;
90pub const XATTR_LIST_MAX: u32 = 65536;
91pub const RTSIG_MAX: u32 = 32;
92pub const _POSIX_THREAD_KEYS_MAX: u32 = 128;
93pub const PTHREAD_KEYS_MAX: u32 = 1024;
94pub const _POSIX_THREAD_DESTRUCTOR_ITERATIONS: u32 = 4;
95pub const PTHREAD_DESTRUCTOR_ITERATIONS: u32 = 4;
96pub const _POSIX_THREAD_THREADS_MAX: u32 = 64;
97pub const AIO_PRIO_DELTA_MAX: u32 = 20;
98pub const PTHREAD_STACK_MIN: u32 = 16384;
99pub const DELAYTIMER_MAX: u32 = 2147483647;
100pub const TTY_NAME_MAX: u32 = 32;
101pub const LOGIN_NAME_MAX: u32 = 256;
102pub const HOST_NAME_MAX: u32 = 64;
103pub const MQ_PRIO_MAX: u32 = 32768;
104pub const SEM_VALUE_MAX: u32 = 2147483647;
105pub const _BITS_POSIX2_LIM_H: u32 = 1;
106pub const _POSIX2_BC_BASE_MAX: u32 = 99;
107pub const _POSIX2_BC_DIM_MAX: u32 = 2048;
108pub const _POSIX2_BC_SCALE_MAX: u32 = 99;
109pub const _POSIX2_BC_STRING_MAX: u32 = 1000;
110pub const _POSIX2_COLL_WEIGHTS_MAX: u32 = 2;
111pub const _POSIX2_EXPR_NEST_MAX: u32 = 32;
112pub const _POSIX2_LINE_MAX: u32 = 2048;
113pub const _POSIX2_RE_DUP_MAX: u32 = 255;
114pub const _POSIX2_CHARCLASS_NAME_MAX: u32 = 14;
115pub const BC_BASE_MAX: u32 = 99;
116pub const BC_DIM_MAX: u32 = 2048;
117pub const BC_SCALE_MAX: u32 = 99;
118pub const BC_STRING_MAX: u32 = 1000;
119pub const COLL_WEIGHTS_MAX: u32 = 255;
120pub const EXPR_NEST_MAX: u32 = 32;
121pub const LINE_MAX: u32 = 2048;
122pub const CHARCLASS_NAME_MAX: u32 = 2048;
123pub const RE_DUP_MAX: u32 = 32767;
124pub const __GMP_LIBGMP_DLL: u32 = 0;
125pub const __GMP_MP_SIZE_T_INT: u32 = 0;
126pub const __GMP_INLINE_PROTOTYPES: u32 = 1;
127pub const __GMP_CC: &'static [u8; 21usize] = b"x86_64-linux-gnu-gcc\0";
128pub const __GMP_CFLAGS : & 'static [ u8 ; 123usize ] = b"-g -O2 -fdebug-prefix-map=/build/gmp-7RFi5X/gmp-6.2.0+dfsg=. -fstack-protector-strong -Wformat -Werror=format-security -O3\0" ;
129pub const __GNU_MP_VERSION: u32 = 6;
130pub const __GNU_MP_VERSION_MINOR: u32 = 2;
131pub const __GNU_MP_VERSION_PATCHLEVEL: u32 = 0;
132pub const __GNU_MP_RELEASE: u32 = 60200;
133pub const _SYS_PARAM_H: u32 = 1;
134pub const _SYS_TYPES_H: u32 = 1;
135pub const _BITS_TYPES_H: u32 = 1;
136pub const __TIMESIZE: u32 = 64;
137pub const _BITS_TYPESIZES_H: u32 = 1;
138pub const __OFF_T_MATCHES_OFF64_T: u32 = 1;
139pub const __INO_T_MATCHES_INO64_T: u32 = 1;
140pub const __RLIM_T_MATCHES_RLIM64_T: u32 = 1;
141pub const __FD_SETSIZE: u32 = 1024;
142pub const _BITS_TIME64_H: u32 = 1;
143pub const __clock_t_defined: u32 = 1;
144pub const __clockid_t_defined: u32 = 1;
145pub const __time_t_defined: u32 = 1;
146pub const __timer_t_defined: u32 = 1;
147pub const _BITS_STDINT_INTN_H: u32 = 1;
148pub const __BIT_TYPES_DEFINED__: u32 = 1;
149pub const _ENDIAN_H: u32 = 1;
150pub const __LITTLE_ENDIAN: u32 = 1234;
151pub const __BIG_ENDIAN: u32 = 4321;
152pub const __PDP_ENDIAN: u32 = 3412;
153pub const __BYTE_ORDER: u32 = 1234;
154pub const __FLOAT_WORD_ORDER: u32 = 1234;
155pub const LITTLE_ENDIAN: u32 = 1234;
156pub const BIG_ENDIAN: u32 = 4321;
157pub const PDP_ENDIAN: u32 = 3412;
158pub const BYTE_ORDER: u32 = 1234;
159pub const _BITS_BYTESWAP_H: u32 = 1;
160pub const _BITS_UINTN_IDENTITY_H: u32 = 1;
161pub const _SYS_SELECT_H: u32 = 1;
162pub const __FD_ZERO_STOS: &'static [u8; 6usize] = b"stosq\0";
163pub const __sigset_t_defined: u32 = 1;
164pub const __timeval_defined: u32 = 1;
165pub const _STRUCT_TIMESPEC: u32 = 1;
166pub const FD_SETSIZE: u32 = 1024;
167pub const _BITS_PTHREADTYPES_COMMON_H: u32 = 1;
168pub const _THREAD_SHARED_TYPES_H: u32 = 1;
169pub const _BITS_PTHREADTYPES_ARCH_H: u32 = 1;
170pub const __SIZEOF_PTHREAD_MUTEX_T: u32 = 40;
171pub const __SIZEOF_PTHREAD_ATTR_T: u32 = 56;
172pub const __SIZEOF_PTHREAD_RWLOCK_T: u32 = 56;
173pub const __SIZEOF_PTHREAD_BARRIER_T: u32 = 32;
174pub const __SIZEOF_PTHREAD_MUTEXATTR_T: u32 = 4;
175pub const __SIZEOF_PTHREAD_COND_T: u32 = 48;
176pub const __SIZEOF_PTHREAD_CONDATTR_T: u32 = 4;
177pub const __SIZEOF_PTHREAD_RWLOCKATTR_T: u32 = 8;
178pub const __SIZEOF_PTHREAD_BARRIERATTR_T: u32 = 4;
179pub const __PTHREAD_MUTEX_LOCK_ELISION: u32 = 1;
180pub const __PTHREAD_MUTEX_NUSERS_AFTER_KIND: u32 = 0;
181pub const __PTHREAD_MUTEX_USE_UNION: u32 = 0;
182pub const __PTHREAD_RWLOCK_INT_FLAGS_SHARED: u32 = 1;
183pub const __PTHREAD_MUTEX_HAVE_PREV: u32 = 1;
184pub const __have_pthread_attr_t: u32 = 1;
185pub const _BITS_SIGNUM_H: u32 = 1;
186pub const _BITS_SIGNUM_GENERIC_H: u32 = 1;
187pub const SIGINT: u32 = 2;
188pub const SIGILL: u32 = 4;
189pub const SIGABRT: u32 = 6;
190pub const SIGFPE: u32 = 8;
191pub const SIGSEGV: u32 = 11;
192pub const SIGTERM: u32 = 15;
193pub const SIGHUP: u32 = 1;
194pub const SIGQUIT: u32 = 3;
195pub const SIGTRAP: u32 = 5;
196pub const SIGKILL: u32 = 9;
197pub const SIGBUS: u32 = 10;
198pub const SIGSYS: u32 = 12;
199pub const SIGPIPE: u32 = 13;
200pub const SIGALRM: u32 = 14;
201pub const SIGURG: u32 = 16;
202pub const SIGSTOP: u32 = 17;
203pub const SIGTSTP: u32 = 18;
204pub const SIGCONT: u32 = 19;
205pub const SIGCHLD: u32 = 20;
206pub const SIGTTIN: u32 = 21;
207pub const SIGTTOU: u32 = 22;
208pub const SIGPOLL: u32 = 23;
209pub const SIGXCPU: u32 = 24;
210pub const SIGXFSZ: u32 = 25;
211pub const SIGVTALRM: u32 = 26;
212pub const SIGPROF: u32 = 27;
213pub const SIGUSR1: u32 = 30;
214pub const SIGUSR2: u32 = 31;
215pub const SIGWINCH: u32 = 28;
216pub const SIGIO: u32 = 23;
217pub const SIGIOT: u32 = 6;
218pub const SIGCLD: u32 = 20;
219pub const __SIGRTMIN: u32 = 32;
220pub const __SIGRTMAX: u32 = 32;
221pub const _NSIG: u32 = 33;
222pub const SIGSTKFLT: u32 = 16;
223pub const SIGPWR: u32 = 30;
224pub const __sig_atomic_t_defined: u32 = 1;
225pub const __siginfo_t_defined: u32 = 1;
226pub const __SI_MAX_SIZE: u32 = 128;
227pub const _BITS_SIGINFO_ARCH_H: u32 = 1;
228pub const __SI_ERRNO_THEN_CODE: u32 = 1;
229pub const __SI_HAVE_SIGSYS: u32 = 1;
230pub const _BITS_SIGINFO_CONSTS_H: u32 = 1;
231pub const __SI_ASYNCIO_AFTER_SIGIO: u32 = 1;
232pub const __sigevent_t_defined: u32 = 1;
233pub const __SIGEV_MAX_SIZE: u32 = 64;
234pub const _BITS_SIGEVENT_CONSTS_H: u32 = 1;
235pub const NSIG: u32 = 33;
236pub const _BITS_SIGACTION_H: u32 = 1;
237pub const SA_NOCLDSTOP: u32 = 1;
238pub const SA_NOCLDWAIT: u32 = 2;
239pub const SA_SIGINFO: u32 = 4;
240pub const SA_ONSTACK: u32 = 134217728;
241pub const SA_RESTART: u32 = 268435456;
242pub const SA_NODEFER: u32 = 1073741824;
243pub const SA_RESETHAND: u32 = 2147483648;
244pub const SA_INTERRUPT: u32 = 536870912;
245pub const SA_NOMASK: u32 = 1073741824;
246pub const SA_ONESHOT: u32 = 2147483648;
247pub const SA_STACK: u32 = 134217728;
248pub const SIG_BLOCK: u32 = 0;
249pub const SIG_UNBLOCK: u32 = 1;
250pub const SIG_SETMASK: u32 = 2;
251pub const _BITS_SIGCONTEXT_H: u32 = 1;
252pub const FP_XSTATE_MAGIC1: u32 = 1179670611;
253pub const FP_XSTATE_MAGIC2: u32 = 1179670597;
254pub const __stack_t_defined: u32 = 1;
255pub const _SYS_UCONTEXT_H: u32 = 1;
256pub const __NGREG: u32 = 23;
257pub const NGREG: u32 = 23;
258pub const _BITS_SIGSTACK_H: u32 = 1;
259pub const MINSIGSTKSZ: u32 = 2048;
260pub const SIGSTKSZ: u32 = 8192;
261pub const _BITS_SS_FLAGS_H: u32 = 1;
262pub const __sigstack_defined: u32 = 1;
263pub const _BITS_SIGTHREAD_H: u32 = 1;
264pub const HZ: u32 = 100;
265pub const EXEC_PAGESIZE: u32 = 4096;
266pub const NOGROUP: i32 = -1;
267pub const MAXHOSTNAMELEN: u32 = 64;
268pub const MAXSYMLINKS: u32 = 20;
269pub const NOFILE: u32 = 256;
270pub const NCARGS: u32 = 131072;
271pub const NGROUPS: u32 = 65536;
272pub const CANBSIZ: u32 = 255;
273pub const MAXPATHLEN: u32 = 4096;
274pub const DEV_BSIZE: u32 = 512;
275pub const MPFR_VERSION_MAJOR: u32 = 4;
276pub const MPFR_VERSION_MINOR: u32 = 0;
277pub const MPFR_VERSION_PATCHLEVEL: u32 = 2;
278pub const MPFR_VERSION_STRING: &'static [u8; 6usize] = b"4.0.2\0";
279pub const MPFR_FLAGS_UNDERFLOW: u32 = 1;
280pub const MPFR_FLAGS_OVERFLOW: u32 = 2;
281pub const MPFR_FLAGS_NAN: u32 = 4;
282pub const MPFR_FLAGS_INEXACT: u32 = 8;
283pub const MPFR_FLAGS_ERANGE: u32 = 16;
284pub const MPFR_FLAGS_DIVBY0: u32 = 32;
285pub const MPFR_FLAGS_ALL: u32 = 63;
286pub const _MPFR_PREC_FORMAT: u32 = 3;
287pub const _MPFR_EXP_FORMAT: u32 = 3;
288pub const MPFR_PREC_MIN: u32 = 1;
289pub const MPFR_USE_C99_FEATURE: u32 = 1;
290pub const __GNUC_VA_LIST: u32 = 1;
291pub const _STDIO_H: u32 = 1;
292pub const _____fpos_t_defined: u32 = 1;
293pub const ____mbstate_t_defined: u32 = 1;
294pub const _____fpos64_t_defined: u32 = 1;
295pub const ____FILE_defined: u32 = 1;
296pub const __FILE_defined: u32 = 1;
297pub const __struct_FILE_defined: u32 = 1;
298pub const _IO_EOF_SEEN: u32 = 16;
299pub const _IO_ERR_SEEN: u32 = 32;
300pub const _IO_USER_LOCK: u32 = 32768;
301pub const _IOFBF: u32 = 0;
302pub const _IOLBF: u32 = 1;
303pub const _IONBF: u32 = 2;
304pub const BUFSIZ: u32 = 8192;
305pub const EOF: i32 = -1;
306pub const SEEK_SET: u32 = 0;
307pub const SEEK_CUR: u32 = 1;
308pub const SEEK_END: u32 = 2;
309pub const P_tmpdir: &'static [u8; 5usize] = b"/tmp\0";
310pub const _BITS_STDIO_LIM_H: u32 = 1;
311pub const L_tmpnam: u32 = 20;
312pub const TMP_MAX: u32 = 238328;
313pub const FILENAME_MAX: u32 = 4096;
314pub const L_ctermid: u32 = 9;
315pub const FOPEN_MAX: u32 = 16;
316pub const _STDLIB_H: u32 = 1;
317pub const WNOHANG: u32 = 1;
318pub const WUNTRACED: u32 = 2;
319pub const WSTOPPED: u32 = 2;
320pub const WEXITED: u32 = 4;
321pub const WCONTINUED: u32 = 8;
322pub const WNOWAIT: u32 = 16777216;
323pub const __WNOTHREAD: u32 = 536870912;
324pub const __WALL: u32 = 1073741824;
325pub const __WCLONE: u32 = 2147483648;
326pub const __ENUM_IDTYPE_T: u32 = 1;
327pub const __W_CONTINUED: u32 = 65535;
328pub const __WCOREFLAG: u32 = 128;
329pub const __HAVE_FLOAT128: u32 = 0;
330pub const __HAVE_DISTINCT_FLOAT128: u32 = 0;
331pub const __HAVE_FLOAT64X: u32 = 1;
332pub const __HAVE_FLOAT64X_LONG_DOUBLE: u32 = 1;
333pub const __HAVE_FLOAT16: u32 = 0;
334pub const __HAVE_FLOAT32: u32 = 1;
335pub const __HAVE_FLOAT64: u32 = 1;
336pub const __HAVE_FLOAT32X: u32 = 1;
337pub const __HAVE_FLOAT128X: u32 = 0;
338pub const __HAVE_DISTINCT_FLOAT16: u32 = 0;
339pub const __HAVE_DISTINCT_FLOAT32: u32 = 0;
340pub const __HAVE_DISTINCT_FLOAT64: u32 = 0;
341pub const __HAVE_DISTINCT_FLOAT32X: u32 = 0;
342pub const __HAVE_DISTINCT_FLOAT64X: u32 = 0;
343pub const __HAVE_DISTINCT_FLOAT128X: u32 = 0;
344pub const __HAVE_FLOATN_NOT_TYPEDEF: u32 = 0;
345pub const __ldiv_t_defined: u32 = 1;
346pub const __lldiv_t_defined: u32 = 1;
347pub const RAND_MAX: u32 = 2147483647;
348pub const EXIT_FAILURE: u32 = 1;
349pub const EXIT_SUCCESS: u32 = 0;
350pub const _ALLOCA_H: u32 = 1;
351pub const FLINT_KNOW_STRONG_ORDER: u32 = 0;
352pub const HAVE_BLAS: u32 = 0;
353pub const HAVE_TLS: u32 = 1;
354pub const HAVE_FENV: u32 = 1;
355pub const HAVE_PTHREAD: u32 = 1;
356pub const HAVE_GC: u32 = 0;
357pub const HAVE_CPU_SET_T: u32 = 1;
358pub const FLINT_REENTRANT: u32 = 0;
359pub const WANT_ASSERT: u32 = 0;
360pub const __FLINT_VERSION: u32 = 2;
361pub const __FLINT_VERSION_MINOR: u32 = 6;
362pub const __FLINT_VERSION_PATCHLEVEL: u32 = 0;
363pub const FLINT_VERSION: &'static [u8; 6usize] = b"2.6.0\0";
364pub const __FLINT_RELEASE: u32 = 20600;
365pub const WORD_FMT: &'static [u8; 3usize] = b"%l\0";
366pub const WORD_WIDTH_FMT: &'static [u8; 4usize] = b"%*l\0";
367pub const FLINT_BITS: u32 = 64;
368pub const FLINT_D_BITS: u32 = 53;
369pub const FLINT64: u32 = 1;
370pub const FLINT_MAX_FACTORS_IN_LIMB: u32 = 15;
371pub const FLINT_ODDPRIME_SMALL_CUTOFF: u32 = 4096;
372pub const FLINT_NUM_PRIMES_SMALL: u32 = 172;
373pub const FLINT_PRIMES_SMALL_CUTOFF: u32 = 1030;
374pub const FLINT_PSEUDOSQUARES_CUTOFF: u32 = 1000;
375pub const FLINT_FACTOR_TRIAL_PRIMES: u32 = 3000;
376pub const FLINT_PRIMES_TAB_DEFAULT_CUTOFF: u32 = 1000000;
377pub const FLINT_FACTOR_SQUFOF_ITERS: u32 = 50000;
378pub const FLINT_FACTOR_ONE_LINE_ITERS: u32 = 40000;
379pub const FLINT_PRIME_PI_ODD_LOOKUP_CUTOFF: u32 = 311;
380pub const FLINT_SIEVE_SIZE: u32 = 65536;
381pub const _PTHREAD_H: u32 = 1;
382pub const _SCHED_H: u32 = 1;
383pub const _BITS_SCHED_H: u32 = 1;
384pub const SCHED_OTHER: u32 = 0;
385pub const SCHED_FIFO: u32 = 1;
386pub const SCHED_RR: u32 = 2;
387pub const _BITS_TYPES_STRUCT_SCHED_PARAM: u32 = 1;
388pub const _BITS_CPU_SET_H: u32 = 1;
389pub const __CPU_SETSIZE: u32 = 1024;
390pub const _TIME_H: u32 = 1;
391pub const _BITS_TIME_H: u32 = 1;
392pub const CLOCK_REALTIME: u32 = 0;
393pub const CLOCK_MONOTONIC: u32 = 1;
394pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2;
395pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3;
396pub const CLOCK_MONOTONIC_RAW: u32 = 4;
397pub const CLOCK_REALTIME_COARSE: u32 = 5;
398pub const CLOCK_MONOTONIC_COARSE: u32 = 6;
399pub const CLOCK_BOOTTIME: u32 = 7;
400pub const CLOCK_REALTIME_ALARM: u32 = 8;
401pub const CLOCK_BOOTTIME_ALARM: u32 = 9;
402pub const CLOCK_TAI: u32 = 11;
403pub const TIMER_ABSTIME: u32 = 1;
404pub const __struct_tm_defined: u32 = 1;
405pub const __itimerspec_defined: u32 = 1;
406pub const _BITS_TYPES_LOCALE_T_H: u32 = 1;
407pub const _BITS_TYPES___LOCALE_T_H: u32 = 1;
408pub const TIME_UTC: u32 = 1;
409pub const _BITS_SETJMP_H: u32 = 1;
410pub const PTHREAD_ONCE_INIT: u32 = 0;
411pub const PTHREAD_BARRIER_SERIAL_THREAD: i32 = -1;
412pub const FLINT_FMPZ_LOG_MULTI_MOD_CUTOFF: u32 = 2;
413pub const FLINT_DEFAULT_THREAD_LIMIT: u32 = 99999;
414pub const NMOD_MAT_MUL_TRANSPOSE_CUTOFF: u32 = 20;
415pub const NMOD_MAT_SOLVE_TRI_ROWS_CUTOFF: u32 = 64;
416pub const NMOD_MAT_SOLVE_TRI_COLS_CUTOFF: u32 = 64;
417pub const NMOD_MAT_LU_RECURSIVE_CUTOFF: u32 = 4;
418pub const NMOD_MAT_OPTIMAL_MODULUS_BITS: u32 = 59;
419pub const NMOD_DIVREM_DIVCONQUER_CUTOFF: u32 = 300;
420pub const NMOD_DIV_DIVCONQUER_CUTOFF: u32 = 300;
421pub const NMOD_POLY_HGCD_CUTOFF: u32 = 100;
422pub const NMOD_POLY_GCD_CUTOFF: u32 = 340;
423pub const NMOD_POLY_SMALL_GCD_CUTOFF: u32 = 200;
424pub const FMPZ_POLY_INV_NEWTON_CUTOFF: u32 = 32;
425pub const FMPZ_POLY_SQRT_DIVCONQUER_CUTOFF: u32 = 16;
426pub const FMPZ_POLY_SQRTREM_DIVCONQUER_CUTOFF: u32 = 16;
427pub const _MATH_H: u32 = 1;
428pub const _BITS_LIBM_SIMD_DECL_STUBS_H: u32 = 1;
429pub const __FP_LOGB0_IS_MIN: u32 = 1;
430pub const __FP_LOGBNAN_IS_MIN: u32 = 1;
431pub const FP_ILOGB0: i32 = -2147483648;
432pub const FP_ILOGBNAN: i32 = -2147483648;
433pub const __MATH_DECLARING_DOUBLE: u32 = 1;
434pub const __MATH_DECLARING_FLOATN: u32 = 0;
435pub const __MATH_DECLARE_LDOUBLE: u32 = 1;
436pub const FP_NAN: u32 = 0;
437pub const FP_INFINITE: u32 = 1;
438pub const FP_ZERO: u32 = 2;
439pub const FP_SUBNORMAL: u32 = 3;
440pub const FP_NORMAL: u32 = 4;
441pub const MATH_ERRNO: u32 = 1;
442pub const MATH_ERREXCEPT: u32 = 2;
443pub const math_errhandling: u32 = 3;
444pub const M_E: f64 = 2.718281828459045;
445pub const M_LOG2E: f64 = 1.4426950408889634;
446pub const M_LOG10E: f64 = 0.4342944819032518;
447pub const M_LN2: f64 = 0.6931471805599453;
448pub const M_LN10: f64 = 2.302585092994046;
449pub const M_PI: f64 = 3.141592653589793;
450pub const M_PI_2: f64 = 1.5707963267948966;
451pub const M_PI_4: f64 = 0.7853981633974483;
452pub const M_1_PI: f64 = 0.3183098861837907;
453pub const M_2_PI: f64 = 0.6366197723675814;
454pub const M_2_SQRTPI: f64 = 1.1283791670955126;
455pub const M_SQRT2: f64 = 1.4142135623730951;
456pub const M_SQRT1_2: f64 = 0.7071067811865476;
457pub const D_BITS: u32 = 53;
458pub const WEAK_CANONICALISE_CUTOFF: u32 = 25600;
459pub const FMPZ_MOD_MAT_MUL_TRANSPOSE_CUTOFF: u32 = 10;
460pub const FMPZ_MOD_POLY_HGCD_CUTOFF: u32 = 128;
461pub const FMPZ_MOD_POLY_GCD_CUTOFF: u32 = 256;
462pub const FMPZ_MOD_POLY_INV_NEWTON_CUTOFF: u32 = 64;
463pub const NF_POWERS_CUTOFF: u32 = 30;
464pub const NF_GENERIC: u32 = 0;
465pub const NF_MONIC: u32 = 1;
466pub const NF_LINEAR: u32 = 2;
467pub const NF_QUADRATIC: u32 = 4;
468pub type wchar_t = ::std::os::raw::c_int;
469#[repr(C)]
470#[repr(align(16))]
471#[derive(Debug, Copy, Clone)]
472pub struct max_align_t {
473    pub __clang_max_align_nonce1: ::std::os::raw::c_longlong,
474    pub __bindgen_padding_0: u64,
475    pub __clang_max_align_nonce2: u128,
476}
477#[test]
478fn bindgen_test_layout_max_align_t() {
479    assert_eq!(
480        ::std::mem::size_of::<max_align_t>(),
481        32usize,
482        concat!("Size of: ", stringify!(max_align_t))
483    );
484    assert_eq!(
485        ::std::mem::align_of::<max_align_t>(),
486        16usize,
487        concat!("Alignment of ", stringify!(max_align_t))
488    );
489    assert_eq!(
490        unsafe {
491            &(*(::std::ptr::null::<max_align_t>())).__clang_max_align_nonce1 as *const _ as usize
492        },
493        0usize,
494        concat!(
495            "Offset of field: ",
496            stringify!(max_align_t),
497            "::",
498            stringify!(__clang_max_align_nonce1)
499        )
500    );
501    assert_eq!(
502        unsafe {
503            &(*(::std::ptr::null::<max_align_t>())).__clang_max_align_nonce2 as *const _ as usize
504        },
505        16usize,
506        concat!(
507            "Offset of field: ",
508            stringify!(max_align_t),
509            "::",
510            stringify!(__clang_max_align_nonce2)
511        )
512    );
513}
514pub type mp_limb_t = ::std::os::raw::c_ulong;
515pub type mp_limb_signed_t = ::std::os::raw::c_long;
516pub type mp_bitcnt_t = ::std::os::raw::c_ulong;
517#[repr(C)]
518#[derive(Debug, Copy, Clone)]
519pub struct __mpz_struct {
520    pub _mp_alloc: ::std::os::raw::c_int,
521    pub _mp_size: ::std::os::raw::c_int,
522    pub _mp_d: *mut mp_limb_t,
523}
524#[test]
525fn bindgen_test_layout___mpz_struct() {
526    assert_eq!(
527        ::std::mem::size_of::<__mpz_struct>(),
528        16usize,
529        concat!("Size of: ", stringify!(__mpz_struct))
530    );
531    assert_eq!(
532        ::std::mem::align_of::<__mpz_struct>(),
533        8usize,
534        concat!("Alignment of ", stringify!(__mpz_struct))
535    );
536    assert_eq!(
537        unsafe { &(*(::std::ptr::null::<__mpz_struct>()))._mp_alloc as *const _ as usize },
538        0usize,
539        concat!(
540            "Offset of field: ",
541            stringify!(__mpz_struct),
542            "::",
543            stringify!(_mp_alloc)
544        )
545    );
546    assert_eq!(
547        unsafe { &(*(::std::ptr::null::<__mpz_struct>()))._mp_size as *const _ as usize },
548        4usize,
549        concat!(
550            "Offset of field: ",
551            stringify!(__mpz_struct),
552            "::",
553            stringify!(_mp_size)
554        )
555    );
556    assert_eq!(
557        unsafe { &(*(::std::ptr::null::<__mpz_struct>()))._mp_d as *const _ as usize },
558        8usize,
559        concat!(
560            "Offset of field: ",
561            stringify!(__mpz_struct),
562            "::",
563            stringify!(_mp_d)
564        )
565    );
566}
567pub type MP_INT = __mpz_struct;
568pub type mpz_t = [__mpz_struct; 1usize];
569pub type mp_ptr = *mut mp_limb_t;
570pub type mp_srcptr = *const mp_limb_t;
571pub type mp_size_t = ::std::os::raw::c_long;
572pub type mp_exp_t = ::std::os::raw::c_long;
573#[repr(C)]
574#[derive(Debug, Copy, Clone)]
575pub struct __mpq_struct {
576    pub _mp_num: __mpz_struct,
577    pub _mp_den: __mpz_struct,
578}
579#[test]
580fn bindgen_test_layout___mpq_struct() {
581    assert_eq!(
582        ::std::mem::size_of::<__mpq_struct>(),
583        32usize,
584        concat!("Size of: ", stringify!(__mpq_struct))
585    );
586    assert_eq!(
587        ::std::mem::align_of::<__mpq_struct>(),
588        8usize,
589        concat!("Alignment of ", stringify!(__mpq_struct))
590    );
591    assert_eq!(
592        unsafe { &(*(::std::ptr::null::<__mpq_struct>()))._mp_num as *const _ as usize },
593        0usize,
594        concat!(
595            "Offset of field: ",
596            stringify!(__mpq_struct),
597            "::",
598            stringify!(_mp_num)
599        )
600    );
601    assert_eq!(
602        unsafe { &(*(::std::ptr::null::<__mpq_struct>()))._mp_den as *const _ as usize },
603        16usize,
604        concat!(
605            "Offset of field: ",
606            stringify!(__mpq_struct),
607            "::",
608            stringify!(_mp_den)
609        )
610    );
611}
612pub type MP_RAT = __mpq_struct;
613pub type mpq_t = [__mpq_struct; 1usize];
614#[repr(C)]
615#[derive(Debug, Copy, Clone)]
616pub struct __mpf_struct {
617    pub _mp_prec: ::std::os::raw::c_int,
618    pub _mp_size: ::std::os::raw::c_int,
619    pub _mp_exp: mp_exp_t,
620    pub _mp_d: *mut mp_limb_t,
621}
622#[test]
623fn bindgen_test_layout___mpf_struct() {
624    assert_eq!(
625        ::std::mem::size_of::<__mpf_struct>(),
626        24usize,
627        concat!("Size of: ", stringify!(__mpf_struct))
628    );
629    assert_eq!(
630        ::std::mem::align_of::<__mpf_struct>(),
631        8usize,
632        concat!("Alignment of ", stringify!(__mpf_struct))
633    );
634    assert_eq!(
635        unsafe { &(*(::std::ptr::null::<__mpf_struct>()))._mp_prec as *const _ as usize },
636        0usize,
637        concat!(
638            "Offset of field: ",
639            stringify!(__mpf_struct),
640            "::",
641            stringify!(_mp_prec)
642        )
643    );
644    assert_eq!(
645        unsafe { &(*(::std::ptr::null::<__mpf_struct>()))._mp_size as *const _ as usize },
646        4usize,
647        concat!(
648            "Offset of field: ",
649            stringify!(__mpf_struct),
650            "::",
651            stringify!(_mp_size)
652        )
653    );
654    assert_eq!(
655        unsafe { &(*(::std::ptr::null::<__mpf_struct>()))._mp_exp as *const _ as usize },
656        8usize,
657        concat!(
658            "Offset of field: ",
659            stringify!(__mpf_struct),
660            "::",
661            stringify!(_mp_exp)
662        )
663    );
664    assert_eq!(
665        unsafe { &(*(::std::ptr::null::<__mpf_struct>()))._mp_d as *const _ as usize },
666        16usize,
667        concat!(
668            "Offset of field: ",
669            stringify!(__mpf_struct),
670            "::",
671            stringify!(_mp_d)
672        )
673    );
674}
675pub type mpf_t = [__mpf_struct; 1usize];
676pub const gmp_randalg_t_GMP_RAND_ALG_DEFAULT: gmp_randalg_t = 0;
677pub const gmp_randalg_t_GMP_RAND_ALG_LC: gmp_randalg_t = 0;
678pub type gmp_randalg_t = u32;
679#[repr(C)]
680#[derive(Copy, Clone)]
681pub struct __gmp_randstate_struct {
682    pub _mp_seed: mpz_t,
683    pub _mp_alg: gmp_randalg_t,
684    pub _mp_algdata: __gmp_randstate_struct__bindgen_ty_1,
685}
686#[repr(C)]
687#[derive(Copy, Clone)]
688pub union __gmp_randstate_struct__bindgen_ty_1 {
689    pub _mp_lc: *mut ::std::os::raw::c_void,
690    _bindgen_union_align: u64,
691}
692#[test]
693fn bindgen_test_layout___gmp_randstate_struct__bindgen_ty_1() {
694    assert_eq!(
695        ::std::mem::size_of::<__gmp_randstate_struct__bindgen_ty_1>(),
696        8usize,
697        concat!(
698            "Size of: ",
699            stringify!(__gmp_randstate_struct__bindgen_ty_1)
700        )
701    );
702    assert_eq!(
703        ::std::mem::align_of::<__gmp_randstate_struct__bindgen_ty_1>(),
704        8usize,
705        concat!(
706            "Alignment of ",
707            stringify!(__gmp_randstate_struct__bindgen_ty_1)
708        )
709    );
710    assert_eq!(
711        unsafe {
712            &(*(::std::ptr::null::<__gmp_randstate_struct__bindgen_ty_1>()))._mp_lc as *const _
713                as usize
714        },
715        0usize,
716        concat!(
717            "Offset of field: ",
718            stringify!(__gmp_randstate_struct__bindgen_ty_1),
719            "::",
720            stringify!(_mp_lc)
721        )
722    );
723}
724#[test]
725fn bindgen_test_layout___gmp_randstate_struct() {
726    assert_eq!(
727        ::std::mem::size_of::<__gmp_randstate_struct>(),
728        32usize,
729        concat!("Size of: ", stringify!(__gmp_randstate_struct))
730    );
731    assert_eq!(
732        ::std::mem::align_of::<__gmp_randstate_struct>(),
733        8usize,
734        concat!("Alignment of ", stringify!(__gmp_randstate_struct))
735    );
736    assert_eq!(
737        unsafe { &(*(::std::ptr::null::<__gmp_randstate_struct>()))._mp_seed as *const _ as usize },
738        0usize,
739        concat!(
740            "Offset of field: ",
741            stringify!(__gmp_randstate_struct),
742            "::",
743            stringify!(_mp_seed)
744        )
745    );
746    assert_eq!(
747        unsafe { &(*(::std::ptr::null::<__gmp_randstate_struct>()))._mp_alg as *const _ as usize },
748        16usize,
749        concat!(
750            "Offset of field: ",
751            stringify!(__gmp_randstate_struct),
752            "::",
753            stringify!(_mp_alg)
754        )
755    );
756    assert_eq!(
757        unsafe {
758            &(*(::std::ptr::null::<__gmp_randstate_struct>()))._mp_algdata as *const _ as usize
759        },
760        24usize,
761        concat!(
762            "Offset of field: ",
763            stringify!(__gmp_randstate_struct),
764            "::",
765            stringify!(_mp_algdata)
766        )
767    );
768}
769pub type gmp_randstate_t = [__gmp_randstate_struct; 1usize];
770pub type mpz_srcptr = *const __mpz_struct;
771pub type mpz_ptr = *mut __mpz_struct;
772pub type mpf_srcptr = *const __mpf_struct;
773pub type mpf_ptr = *mut __mpf_struct;
774pub type mpq_srcptr = *const __mpq_struct;
775pub type mpq_ptr = *mut __mpq_struct;
776extern "C" {
777    pub fn __gmp_set_memory_functions(
778        arg1: ::std::option::Option<
779            unsafe extern "C" fn(arg1: usize) -> *mut ::std::os::raw::c_void,
780        >,
781        arg2: ::std::option::Option<
782            unsafe extern "C" fn(
783                arg1: *mut ::std::os::raw::c_void,
784                arg2: usize,
785                arg3: usize,
786            ) -> *mut ::std::os::raw::c_void,
787        >,
788        arg3: ::std::option::Option<
789            unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void, arg2: usize),
790        >,
791    );
792}
793extern "C" {
794    pub fn __gmp_get_memory_functions(
795        arg1: *mut ::std::option::Option<
796            unsafe extern "C" fn(arg1: usize) -> *mut ::std::os::raw::c_void,
797        >,
798        arg2: *mut ::std::option::Option<
799            unsafe extern "C" fn(
800                arg1: *mut ::std::os::raw::c_void,
801                arg2: usize,
802                arg3: usize,
803            ) -> *mut ::std::os::raw::c_void,
804        >,
805        arg3: *mut ::std::option::Option<
806            unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void, arg2: usize),
807        >,
808    );
809}
810extern "C" {
811    pub static __gmp_bits_per_limb: ::std::os::raw::c_int;
812}
813extern "C" {
814    pub static mut __gmp_errno: ::std::os::raw::c_int;
815}
816extern "C" {
817    pub static __gmp_version: *const ::std::os::raw::c_char;
818}
819extern "C" {
820    pub fn __gmp_randinit(arg1: *mut __gmp_randstate_struct, arg2: gmp_randalg_t, ...);
821}
822extern "C" {
823    pub fn __gmp_randinit_default(arg1: *mut __gmp_randstate_struct);
824}
825extern "C" {
826    pub fn __gmp_randinit_lc_2exp(
827        arg1: *mut __gmp_randstate_struct,
828        arg2: mpz_srcptr,
829        arg3: ::std::os::raw::c_ulong,
830        arg4: mp_bitcnt_t,
831    );
832}
833extern "C" {
834    pub fn __gmp_randinit_lc_2exp_size(
835        arg1: *mut __gmp_randstate_struct,
836        arg2: mp_bitcnt_t,
837    ) -> ::std::os::raw::c_int;
838}
839extern "C" {
840    pub fn __gmp_randinit_mt(arg1: *mut __gmp_randstate_struct);
841}
842extern "C" {
843    pub fn __gmp_randinit_set(
844        arg1: *mut __gmp_randstate_struct,
845        arg2: *const __gmp_randstate_struct,
846    );
847}
848extern "C" {
849    pub fn __gmp_randseed(arg1: *mut __gmp_randstate_struct, arg2: mpz_srcptr);
850}
851extern "C" {
852    pub fn __gmp_randseed_ui(arg1: *mut __gmp_randstate_struct, arg2: ::std::os::raw::c_ulong);
853}
854extern "C" {
855    pub fn __gmp_randclear(arg1: *mut __gmp_randstate_struct);
856}
857extern "C" {
858    pub fn __gmp_urandomb_ui(
859        arg1: *mut __gmp_randstate_struct,
860        arg2: ::std::os::raw::c_ulong,
861    ) -> ::std::os::raw::c_ulong;
862}
863extern "C" {
864    pub fn __gmp_urandomm_ui(
865        arg1: *mut __gmp_randstate_struct,
866        arg2: ::std::os::raw::c_ulong,
867    ) -> ::std::os::raw::c_ulong;
868}
869extern "C" {
870    pub fn __gmp_asprintf(
871        arg1: *mut *mut ::std::os::raw::c_char,
872        arg2: *const ::std::os::raw::c_char,
873        ...
874    ) -> ::std::os::raw::c_int;
875}
876extern "C" {
877    pub fn __gmp_printf(arg1: *const ::std::os::raw::c_char, ...) -> ::std::os::raw::c_int;
878}
879extern "C" {
880    pub fn __gmp_snprintf(
881        arg1: *mut ::std::os::raw::c_char,
882        arg2: usize,
883        arg3: *const ::std::os::raw::c_char,
884        ...
885    ) -> ::std::os::raw::c_int;
886}
887extern "C" {
888    pub fn __gmp_sprintf(
889        arg1: *mut ::std::os::raw::c_char,
890        arg2: *const ::std::os::raw::c_char,
891        ...
892    ) -> ::std::os::raw::c_int;
893}
894extern "C" {
895    pub fn __gmp_scanf(arg1: *const ::std::os::raw::c_char, ...) -> ::std::os::raw::c_int;
896}
897extern "C" {
898    pub fn __gmp_sscanf(
899        arg1: *const ::std::os::raw::c_char,
900        arg2: *const ::std::os::raw::c_char,
901        ...
902    ) -> ::std::os::raw::c_int;
903}
904extern "C" {
905    pub fn __gmpz_realloc(arg1: mpz_ptr, arg2: mp_size_t) -> *mut ::std::os::raw::c_void;
906}
907extern "C" {
908    pub fn __gmpz_abs(arg1: mpz_ptr, arg2: mpz_srcptr);
909}
910extern "C" {
911    pub fn __gmpz_add(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
912}
913extern "C" {
914    pub fn __gmpz_add_ui(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: ::std::os::raw::c_ulong);
915}
916extern "C" {
917    pub fn __gmpz_addmul(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
918}
919extern "C" {
920    pub fn __gmpz_addmul_ui(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: ::std::os::raw::c_ulong);
921}
922extern "C" {
923    pub fn __gmpz_and(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
924}
925extern "C" {
926    pub fn __gmpz_array_init(arg1: mpz_ptr, arg2: mp_size_t, arg3: mp_size_t);
927}
928extern "C" {
929    pub fn __gmpz_bin_ui(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: ::std::os::raw::c_ulong);
930}
931extern "C" {
932    pub fn __gmpz_bin_uiui(
933        arg1: mpz_ptr,
934        arg2: ::std::os::raw::c_ulong,
935        arg3: ::std::os::raw::c_ulong,
936    );
937}
938extern "C" {
939    pub fn __gmpz_cdiv_q(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
940}
941extern "C" {
942    pub fn __gmpz_cdiv_q_2exp(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mp_bitcnt_t);
943}
944extern "C" {
945    pub fn __gmpz_cdiv_q_ui(
946        arg1: mpz_ptr,
947        arg2: mpz_srcptr,
948        arg3: ::std::os::raw::c_ulong,
949    ) -> ::std::os::raw::c_ulong;
950}
951extern "C" {
952    pub fn __gmpz_cdiv_qr(arg1: mpz_ptr, arg2: mpz_ptr, arg3: mpz_srcptr, arg4: mpz_srcptr);
953}
954extern "C" {
955    pub fn __gmpz_cdiv_qr_ui(
956        arg1: mpz_ptr,
957        arg2: mpz_ptr,
958        arg3: mpz_srcptr,
959        arg4: ::std::os::raw::c_ulong,
960    ) -> ::std::os::raw::c_ulong;
961}
962extern "C" {
963    pub fn __gmpz_cdiv_r(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
964}
965extern "C" {
966    pub fn __gmpz_cdiv_r_2exp(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mp_bitcnt_t);
967}
968extern "C" {
969    pub fn __gmpz_cdiv_r_ui(
970        arg1: mpz_ptr,
971        arg2: mpz_srcptr,
972        arg3: ::std::os::raw::c_ulong,
973    ) -> ::std::os::raw::c_ulong;
974}
975extern "C" {
976    pub fn __gmpz_cdiv_ui(
977        arg1: mpz_srcptr,
978        arg2: ::std::os::raw::c_ulong,
979    ) -> ::std::os::raw::c_ulong;
980}
981extern "C" {
982    pub fn __gmpz_clear(arg1: mpz_ptr);
983}
984extern "C" {
985    pub fn __gmpz_clears(arg1: mpz_ptr, ...);
986}
987extern "C" {
988    pub fn __gmpz_clrbit(arg1: mpz_ptr, arg2: mp_bitcnt_t);
989}
990extern "C" {
991    pub fn __gmpz_cmp(arg1: mpz_srcptr, arg2: mpz_srcptr) -> ::std::os::raw::c_int;
992}
993extern "C" {
994    pub fn __gmpz_cmp_d(arg1: mpz_srcptr, arg2: f64) -> ::std::os::raw::c_int;
995}
996extern "C" {
997    pub fn __gmpz_cmp_si(arg1: mpz_srcptr, arg2: ::std::os::raw::c_long) -> ::std::os::raw::c_int;
998}
999extern "C" {
1000    pub fn __gmpz_cmp_ui(arg1: mpz_srcptr, arg2: ::std::os::raw::c_ulong) -> ::std::os::raw::c_int;
1001}
1002extern "C" {
1003    pub fn __gmpz_cmpabs(arg1: mpz_srcptr, arg2: mpz_srcptr) -> ::std::os::raw::c_int;
1004}
1005extern "C" {
1006    pub fn __gmpz_cmpabs_d(arg1: mpz_srcptr, arg2: f64) -> ::std::os::raw::c_int;
1007}
1008extern "C" {
1009    pub fn __gmpz_cmpabs_ui(
1010        arg1: mpz_srcptr,
1011        arg2: ::std::os::raw::c_ulong,
1012    ) -> ::std::os::raw::c_int;
1013}
1014extern "C" {
1015    pub fn __gmpz_com(arg1: mpz_ptr, arg2: mpz_srcptr);
1016}
1017extern "C" {
1018    pub fn __gmpz_combit(arg1: mpz_ptr, arg2: mp_bitcnt_t);
1019}
1020extern "C" {
1021    pub fn __gmpz_congruent_p(
1022        arg1: mpz_srcptr,
1023        arg2: mpz_srcptr,
1024        arg3: mpz_srcptr,
1025    ) -> ::std::os::raw::c_int;
1026}
1027extern "C" {
1028    pub fn __gmpz_congruent_2exp_p(
1029        arg1: mpz_srcptr,
1030        arg2: mpz_srcptr,
1031        arg3: mp_bitcnt_t,
1032    ) -> ::std::os::raw::c_int;
1033}
1034extern "C" {
1035    pub fn __gmpz_congruent_ui_p(
1036        arg1: mpz_srcptr,
1037        arg2: ::std::os::raw::c_ulong,
1038        arg3: ::std::os::raw::c_ulong,
1039    ) -> ::std::os::raw::c_int;
1040}
1041extern "C" {
1042    pub fn __gmpz_divexact(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
1043}
1044extern "C" {
1045    pub fn __gmpz_divexact_ui(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: ::std::os::raw::c_ulong);
1046}
1047extern "C" {
1048    pub fn __gmpz_divisible_p(arg1: mpz_srcptr, arg2: mpz_srcptr) -> ::std::os::raw::c_int;
1049}
1050extern "C" {
1051    pub fn __gmpz_divisible_ui_p(
1052        arg1: mpz_srcptr,
1053        arg2: ::std::os::raw::c_ulong,
1054    ) -> ::std::os::raw::c_int;
1055}
1056extern "C" {
1057    pub fn __gmpz_divisible_2exp_p(arg1: mpz_srcptr, arg2: mp_bitcnt_t) -> ::std::os::raw::c_int;
1058}
1059extern "C" {
1060    pub fn __gmpz_dump(arg1: mpz_srcptr);
1061}
1062extern "C" {
1063    pub fn __gmpz_export(
1064        arg1: *mut ::std::os::raw::c_void,
1065        arg2: *mut usize,
1066        arg3: ::std::os::raw::c_int,
1067        arg4: usize,
1068        arg5: ::std::os::raw::c_int,
1069        arg6: usize,
1070        arg7: mpz_srcptr,
1071    ) -> *mut ::std::os::raw::c_void;
1072}
1073extern "C" {
1074    pub fn __gmpz_fac_ui(arg1: mpz_ptr, arg2: ::std::os::raw::c_ulong);
1075}
1076extern "C" {
1077    pub fn __gmpz_2fac_ui(arg1: mpz_ptr, arg2: ::std::os::raw::c_ulong);
1078}
1079extern "C" {
1080    pub fn __gmpz_mfac_uiui(
1081        arg1: mpz_ptr,
1082        arg2: ::std::os::raw::c_ulong,
1083        arg3: ::std::os::raw::c_ulong,
1084    );
1085}
1086extern "C" {
1087    pub fn __gmpz_primorial_ui(arg1: mpz_ptr, arg2: ::std::os::raw::c_ulong);
1088}
1089extern "C" {
1090    pub fn __gmpz_fdiv_q(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
1091}
1092extern "C" {
1093    pub fn __gmpz_fdiv_q_2exp(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mp_bitcnt_t);
1094}
1095extern "C" {
1096    pub fn __gmpz_fdiv_q_ui(
1097        arg1: mpz_ptr,
1098        arg2: mpz_srcptr,
1099        arg3: ::std::os::raw::c_ulong,
1100    ) -> ::std::os::raw::c_ulong;
1101}
1102extern "C" {
1103    pub fn __gmpz_fdiv_qr(arg1: mpz_ptr, arg2: mpz_ptr, arg3: mpz_srcptr, arg4: mpz_srcptr);
1104}
1105extern "C" {
1106    pub fn __gmpz_fdiv_qr_ui(
1107        arg1: mpz_ptr,
1108        arg2: mpz_ptr,
1109        arg3: mpz_srcptr,
1110        arg4: ::std::os::raw::c_ulong,
1111    ) -> ::std::os::raw::c_ulong;
1112}
1113extern "C" {
1114    pub fn __gmpz_fdiv_r(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
1115}
1116extern "C" {
1117    pub fn __gmpz_fdiv_r_2exp(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mp_bitcnt_t);
1118}
1119extern "C" {
1120    pub fn __gmpz_fdiv_r_ui(
1121        arg1: mpz_ptr,
1122        arg2: mpz_srcptr,
1123        arg3: ::std::os::raw::c_ulong,
1124    ) -> ::std::os::raw::c_ulong;
1125}
1126extern "C" {
1127    pub fn __gmpz_fdiv_ui(
1128        arg1: mpz_srcptr,
1129        arg2: ::std::os::raw::c_ulong,
1130    ) -> ::std::os::raw::c_ulong;
1131}
1132extern "C" {
1133    pub fn __gmpz_fib_ui(arg1: mpz_ptr, arg2: ::std::os::raw::c_ulong);
1134}
1135extern "C" {
1136    pub fn __gmpz_fib2_ui(arg1: mpz_ptr, arg2: mpz_ptr, arg3: ::std::os::raw::c_ulong);
1137}
1138extern "C" {
1139    pub fn __gmpz_fits_sint_p(arg1: mpz_srcptr) -> ::std::os::raw::c_int;
1140}
1141extern "C" {
1142    pub fn __gmpz_fits_slong_p(arg1: mpz_srcptr) -> ::std::os::raw::c_int;
1143}
1144extern "C" {
1145    pub fn __gmpz_fits_sshort_p(arg1: mpz_srcptr) -> ::std::os::raw::c_int;
1146}
1147extern "C" {
1148    pub fn __gmpz_fits_uint_p(arg1: mpz_srcptr) -> ::std::os::raw::c_int;
1149}
1150extern "C" {
1151    pub fn __gmpz_fits_ulong_p(arg1: mpz_srcptr) -> ::std::os::raw::c_int;
1152}
1153extern "C" {
1154    pub fn __gmpz_fits_ushort_p(arg1: mpz_srcptr) -> ::std::os::raw::c_int;
1155}
1156extern "C" {
1157    pub fn __gmpz_gcd(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
1158}
1159extern "C" {
1160    pub fn __gmpz_gcd_ui(
1161        arg1: mpz_ptr,
1162        arg2: mpz_srcptr,
1163        arg3: ::std::os::raw::c_ulong,
1164    ) -> ::std::os::raw::c_ulong;
1165}
1166extern "C" {
1167    pub fn __gmpz_gcdext(
1168        arg1: mpz_ptr,
1169        arg2: mpz_ptr,
1170        arg3: mpz_ptr,
1171        arg4: mpz_srcptr,
1172        arg5: mpz_srcptr,
1173    );
1174}
1175extern "C" {
1176    pub fn __gmpz_get_d(arg1: mpz_srcptr) -> f64;
1177}
1178extern "C" {
1179    pub fn __gmpz_get_d_2exp(arg1: *mut ::std::os::raw::c_long, arg2: mpz_srcptr) -> f64;
1180}
1181extern "C" {
1182    pub fn __gmpz_get_si(arg1: mpz_srcptr) -> ::std::os::raw::c_long;
1183}
1184extern "C" {
1185    pub fn __gmpz_get_str(
1186        arg1: *mut ::std::os::raw::c_char,
1187        arg2: ::std::os::raw::c_int,
1188        arg3: mpz_srcptr,
1189    ) -> *mut ::std::os::raw::c_char;
1190}
1191extern "C" {
1192    pub fn __gmpz_get_ui(arg1: mpz_srcptr) -> ::std::os::raw::c_ulong;
1193}
1194extern "C" {
1195    pub fn __gmpz_getlimbn(arg1: mpz_srcptr, arg2: mp_size_t) -> mp_limb_t;
1196}
1197extern "C" {
1198    pub fn __gmpz_hamdist(arg1: mpz_srcptr, arg2: mpz_srcptr) -> mp_bitcnt_t;
1199}
1200extern "C" {
1201    pub fn __gmpz_import(
1202        arg1: mpz_ptr,
1203        arg2: usize,
1204        arg3: ::std::os::raw::c_int,
1205        arg4: usize,
1206        arg5: ::std::os::raw::c_int,
1207        arg6: usize,
1208        arg7: *const ::std::os::raw::c_void,
1209    );
1210}
1211extern "C" {
1212    pub fn __gmpz_init(arg1: mpz_ptr);
1213}
1214extern "C" {
1215    pub fn __gmpz_init2(arg1: mpz_ptr, arg2: mp_bitcnt_t);
1216}
1217extern "C" {
1218    pub fn __gmpz_inits(arg1: mpz_ptr, ...);
1219}
1220extern "C" {
1221    pub fn __gmpz_init_set(arg1: mpz_ptr, arg2: mpz_srcptr);
1222}
1223extern "C" {
1224    pub fn __gmpz_init_set_d(arg1: mpz_ptr, arg2: f64);
1225}
1226extern "C" {
1227    pub fn __gmpz_init_set_si(arg1: mpz_ptr, arg2: ::std::os::raw::c_long);
1228}
1229extern "C" {
1230    pub fn __gmpz_init_set_str(
1231        arg1: mpz_ptr,
1232        arg2: *const ::std::os::raw::c_char,
1233        arg3: ::std::os::raw::c_int,
1234    ) -> ::std::os::raw::c_int;
1235}
1236extern "C" {
1237    pub fn __gmpz_init_set_ui(arg1: mpz_ptr, arg2: ::std::os::raw::c_ulong);
1238}
1239extern "C" {
1240    pub fn __gmpz_invert(
1241        arg1: mpz_ptr,
1242        arg2: mpz_srcptr,
1243        arg3: mpz_srcptr,
1244    ) -> ::std::os::raw::c_int;
1245}
1246extern "C" {
1247    pub fn __gmpz_ior(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
1248}
1249extern "C" {
1250    pub fn __gmpz_jacobi(arg1: mpz_srcptr, arg2: mpz_srcptr) -> ::std::os::raw::c_int;
1251}
1252extern "C" {
1253    pub fn __gmpz_kronecker_si(
1254        arg1: mpz_srcptr,
1255        arg2: ::std::os::raw::c_long,
1256    ) -> ::std::os::raw::c_int;
1257}
1258extern "C" {
1259    pub fn __gmpz_kronecker_ui(
1260        arg1: mpz_srcptr,
1261        arg2: ::std::os::raw::c_ulong,
1262    ) -> ::std::os::raw::c_int;
1263}
1264extern "C" {
1265    pub fn __gmpz_si_kronecker(
1266        arg1: ::std::os::raw::c_long,
1267        arg2: mpz_srcptr,
1268    ) -> ::std::os::raw::c_int;
1269}
1270extern "C" {
1271    pub fn __gmpz_ui_kronecker(
1272        arg1: ::std::os::raw::c_ulong,
1273        arg2: mpz_srcptr,
1274    ) -> ::std::os::raw::c_int;
1275}
1276extern "C" {
1277    pub fn __gmpz_lcm(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
1278}
1279extern "C" {
1280    pub fn __gmpz_lcm_ui(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: ::std::os::raw::c_ulong);
1281}
1282extern "C" {
1283    pub fn __gmpz_lucnum_ui(arg1: mpz_ptr, arg2: ::std::os::raw::c_ulong);
1284}
1285extern "C" {
1286    pub fn __gmpz_lucnum2_ui(arg1: mpz_ptr, arg2: mpz_ptr, arg3: ::std::os::raw::c_ulong);
1287}
1288extern "C" {
1289    pub fn __gmpz_millerrabin(
1290        arg1: mpz_srcptr,
1291        arg2: ::std::os::raw::c_int,
1292    ) -> ::std::os::raw::c_int;
1293}
1294extern "C" {
1295    pub fn __gmpz_mod(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
1296}
1297extern "C" {
1298    pub fn __gmpz_mul(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
1299}
1300extern "C" {
1301    pub fn __gmpz_mul_2exp(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mp_bitcnt_t);
1302}
1303extern "C" {
1304    pub fn __gmpz_mul_si(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: ::std::os::raw::c_long);
1305}
1306extern "C" {
1307    pub fn __gmpz_mul_ui(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: ::std::os::raw::c_ulong);
1308}
1309extern "C" {
1310    pub fn __gmpz_neg(arg1: mpz_ptr, arg2: mpz_srcptr);
1311}
1312extern "C" {
1313    pub fn __gmpz_nextprime(arg1: mpz_ptr, arg2: mpz_srcptr);
1314}
1315extern "C" {
1316    pub fn __gmpz_perfect_power_p(arg1: mpz_srcptr) -> ::std::os::raw::c_int;
1317}
1318extern "C" {
1319    pub fn __gmpz_perfect_square_p(arg1: mpz_srcptr) -> ::std::os::raw::c_int;
1320}
1321extern "C" {
1322    pub fn __gmpz_popcount(arg1: mpz_srcptr) -> mp_bitcnt_t;
1323}
1324extern "C" {
1325    pub fn __gmpz_pow_ui(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: ::std::os::raw::c_ulong);
1326}
1327extern "C" {
1328    pub fn __gmpz_powm(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr, arg4: mpz_srcptr);
1329}
1330extern "C" {
1331    pub fn __gmpz_powm_sec(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr, arg4: mpz_srcptr);
1332}
1333extern "C" {
1334    pub fn __gmpz_powm_ui(
1335        arg1: mpz_ptr,
1336        arg2: mpz_srcptr,
1337        arg3: ::std::os::raw::c_ulong,
1338        arg4: mpz_srcptr,
1339    );
1340}
1341extern "C" {
1342    pub fn __gmpz_probab_prime_p(
1343        arg1: mpz_srcptr,
1344        arg2: ::std::os::raw::c_int,
1345    ) -> ::std::os::raw::c_int;
1346}
1347extern "C" {
1348    pub fn __gmpz_random(arg1: mpz_ptr, arg2: mp_size_t);
1349}
1350extern "C" {
1351    pub fn __gmpz_random2(arg1: mpz_ptr, arg2: mp_size_t);
1352}
1353extern "C" {
1354    pub fn __gmpz_realloc2(arg1: mpz_ptr, arg2: mp_bitcnt_t);
1355}
1356extern "C" {
1357    pub fn __gmpz_remove(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr) -> mp_bitcnt_t;
1358}
1359extern "C" {
1360    pub fn __gmpz_root(
1361        arg1: mpz_ptr,
1362        arg2: mpz_srcptr,
1363        arg3: ::std::os::raw::c_ulong,
1364    ) -> ::std::os::raw::c_int;
1365}
1366extern "C" {
1367    pub fn __gmpz_rootrem(
1368        arg1: mpz_ptr,
1369        arg2: mpz_ptr,
1370        arg3: mpz_srcptr,
1371        arg4: ::std::os::raw::c_ulong,
1372    );
1373}
1374extern "C" {
1375    pub fn __gmpz_rrandomb(arg1: mpz_ptr, arg2: *mut __gmp_randstate_struct, arg3: mp_bitcnt_t);
1376}
1377extern "C" {
1378    pub fn __gmpz_scan0(arg1: mpz_srcptr, arg2: mp_bitcnt_t) -> mp_bitcnt_t;
1379}
1380extern "C" {
1381    pub fn __gmpz_scan1(arg1: mpz_srcptr, arg2: mp_bitcnt_t) -> mp_bitcnt_t;
1382}
1383extern "C" {
1384    pub fn __gmpz_set(arg1: mpz_ptr, arg2: mpz_srcptr);
1385}
1386extern "C" {
1387    pub fn __gmpz_set_d(arg1: mpz_ptr, arg2: f64);
1388}
1389extern "C" {
1390    pub fn __gmpz_set_f(arg1: mpz_ptr, arg2: mpf_srcptr);
1391}
1392extern "C" {
1393    pub fn __gmpz_set_q(arg1: mpz_ptr, arg2: mpq_srcptr);
1394}
1395extern "C" {
1396    pub fn __gmpz_set_si(arg1: mpz_ptr, arg2: ::std::os::raw::c_long);
1397}
1398extern "C" {
1399    pub fn __gmpz_set_str(
1400        arg1: mpz_ptr,
1401        arg2: *const ::std::os::raw::c_char,
1402        arg3: ::std::os::raw::c_int,
1403    ) -> ::std::os::raw::c_int;
1404}
1405extern "C" {
1406    pub fn __gmpz_set_ui(arg1: mpz_ptr, arg2: ::std::os::raw::c_ulong);
1407}
1408extern "C" {
1409    pub fn __gmpz_setbit(arg1: mpz_ptr, arg2: mp_bitcnt_t);
1410}
1411extern "C" {
1412    pub fn __gmpz_size(arg1: mpz_srcptr) -> usize;
1413}
1414extern "C" {
1415    pub fn __gmpz_sizeinbase(arg1: mpz_srcptr, arg2: ::std::os::raw::c_int) -> usize;
1416}
1417extern "C" {
1418    pub fn __gmpz_sqrt(arg1: mpz_ptr, arg2: mpz_srcptr);
1419}
1420extern "C" {
1421    pub fn __gmpz_sqrtrem(arg1: mpz_ptr, arg2: mpz_ptr, arg3: mpz_srcptr);
1422}
1423extern "C" {
1424    pub fn __gmpz_sub(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
1425}
1426extern "C" {
1427    pub fn __gmpz_sub_ui(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: ::std::os::raw::c_ulong);
1428}
1429extern "C" {
1430    pub fn __gmpz_ui_sub(arg1: mpz_ptr, arg2: ::std::os::raw::c_ulong, arg3: mpz_srcptr);
1431}
1432extern "C" {
1433    pub fn __gmpz_submul(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
1434}
1435extern "C" {
1436    pub fn __gmpz_submul_ui(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: ::std::os::raw::c_ulong);
1437}
1438extern "C" {
1439    pub fn __gmpz_swap(arg1: mpz_ptr, arg2: mpz_ptr);
1440}
1441extern "C" {
1442    pub fn __gmpz_tdiv_ui(
1443        arg1: mpz_srcptr,
1444        arg2: ::std::os::raw::c_ulong,
1445    ) -> ::std::os::raw::c_ulong;
1446}
1447extern "C" {
1448    pub fn __gmpz_tdiv_q(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
1449}
1450extern "C" {
1451    pub fn __gmpz_tdiv_q_2exp(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mp_bitcnt_t);
1452}
1453extern "C" {
1454    pub fn __gmpz_tdiv_q_ui(
1455        arg1: mpz_ptr,
1456        arg2: mpz_srcptr,
1457        arg3: ::std::os::raw::c_ulong,
1458    ) -> ::std::os::raw::c_ulong;
1459}
1460extern "C" {
1461    pub fn __gmpz_tdiv_qr(arg1: mpz_ptr, arg2: mpz_ptr, arg3: mpz_srcptr, arg4: mpz_srcptr);
1462}
1463extern "C" {
1464    pub fn __gmpz_tdiv_qr_ui(
1465        arg1: mpz_ptr,
1466        arg2: mpz_ptr,
1467        arg3: mpz_srcptr,
1468        arg4: ::std::os::raw::c_ulong,
1469    ) -> ::std::os::raw::c_ulong;
1470}
1471extern "C" {
1472    pub fn __gmpz_tdiv_r(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
1473}
1474extern "C" {
1475    pub fn __gmpz_tdiv_r_2exp(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mp_bitcnt_t);
1476}
1477extern "C" {
1478    pub fn __gmpz_tdiv_r_ui(
1479        arg1: mpz_ptr,
1480        arg2: mpz_srcptr,
1481        arg3: ::std::os::raw::c_ulong,
1482    ) -> ::std::os::raw::c_ulong;
1483}
1484extern "C" {
1485    pub fn __gmpz_tstbit(arg1: mpz_srcptr, arg2: mp_bitcnt_t) -> ::std::os::raw::c_int;
1486}
1487extern "C" {
1488    pub fn __gmpz_ui_pow_ui(
1489        arg1: mpz_ptr,
1490        arg2: ::std::os::raw::c_ulong,
1491        arg3: ::std::os::raw::c_ulong,
1492    );
1493}
1494extern "C" {
1495    pub fn __gmpz_urandomb(arg1: mpz_ptr, arg2: *mut __gmp_randstate_struct, arg3: mp_bitcnt_t);
1496}
1497extern "C" {
1498    pub fn __gmpz_urandomm(arg1: mpz_ptr, arg2: *mut __gmp_randstate_struct, arg3: mpz_srcptr);
1499}
1500extern "C" {
1501    pub fn __gmpz_xor(arg1: mpz_ptr, arg2: mpz_srcptr, arg3: mpz_srcptr);
1502}
1503extern "C" {
1504    pub fn __gmpz_limbs_read(arg1: mpz_srcptr) -> mp_srcptr;
1505}
1506extern "C" {
1507    pub fn __gmpz_limbs_write(arg1: mpz_ptr, arg2: mp_size_t) -> mp_ptr;
1508}
1509extern "C" {
1510    pub fn __gmpz_limbs_modify(arg1: mpz_ptr, arg2: mp_size_t) -> mp_ptr;
1511}
1512extern "C" {
1513    pub fn __gmpz_limbs_finish(arg1: mpz_ptr, arg2: mp_size_t);
1514}
1515extern "C" {
1516    pub fn __gmpz_roinit_n(arg1: mpz_ptr, arg2: mp_srcptr, arg3: mp_size_t) -> mpz_srcptr;
1517}
1518extern "C" {
1519    pub fn __gmpq_abs(arg1: mpq_ptr, arg2: mpq_srcptr);
1520}
1521extern "C" {
1522    pub fn __gmpq_add(arg1: mpq_ptr, arg2: mpq_srcptr, arg3: mpq_srcptr);
1523}
1524extern "C" {
1525    pub fn __gmpq_canonicalize(arg1: mpq_ptr);
1526}
1527extern "C" {
1528    pub fn __gmpq_clear(arg1: mpq_ptr);
1529}
1530extern "C" {
1531    pub fn __gmpq_clears(arg1: mpq_ptr, ...);
1532}
1533extern "C" {
1534    pub fn __gmpq_cmp(arg1: mpq_srcptr, arg2: mpq_srcptr) -> ::std::os::raw::c_int;
1535}
1536extern "C" {
1537    pub fn __gmpq_cmp_si(
1538        arg1: mpq_srcptr,
1539        arg2: ::std::os::raw::c_long,
1540        arg3: ::std::os::raw::c_ulong,
1541    ) -> ::std::os::raw::c_int;
1542}
1543extern "C" {
1544    pub fn __gmpq_cmp_ui(
1545        arg1: mpq_srcptr,
1546        arg2: ::std::os::raw::c_ulong,
1547        arg3: ::std::os::raw::c_ulong,
1548    ) -> ::std::os::raw::c_int;
1549}
1550extern "C" {
1551    pub fn __gmpq_cmp_z(arg1: mpq_srcptr, arg2: mpz_srcptr) -> ::std::os::raw::c_int;
1552}
1553extern "C" {
1554    pub fn __gmpq_div(arg1: mpq_ptr, arg2: mpq_srcptr, arg3: mpq_srcptr);
1555}
1556extern "C" {
1557    pub fn __gmpq_div_2exp(arg1: mpq_ptr, arg2: mpq_srcptr, arg3: mp_bitcnt_t);
1558}
1559extern "C" {
1560    pub fn __gmpq_equal(arg1: mpq_srcptr, arg2: mpq_srcptr) -> ::std::os::raw::c_int;
1561}
1562extern "C" {
1563    pub fn __gmpq_get_num(arg1: mpz_ptr, arg2: mpq_srcptr);
1564}
1565extern "C" {
1566    pub fn __gmpq_get_den(arg1: mpz_ptr, arg2: mpq_srcptr);
1567}
1568extern "C" {
1569    pub fn __gmpq_get_d(arg1: mpq_srcptr) -> f64;
1570}
1571extern "C" {
1572    pub fn __gmpq_get_str(
1573        arg1: *mut ::std::os::raw::c_char,
1574        arg2: ::std::os::raw::c_int,
1575        arg3: mpq_srcptr,
1576    ) -> *mut ::std::os::raw::c_char;
1577}
1578extern "C" {
1579    pub fn __gmpq_init(arg1: mpq_ptr);
1580}
1581extern "C" {
1582    pub fn __gmpq_inits(arg1: mpq_ptr, ...);
1583}
1584extern "C" {
1585    pub fn __gmpq_inv(arg1: mpq_ptr, arg2: mpq_srcptr);
1586}
1587extern "C" {
1588    pub fn __gmpq_mul(arg1: mpq_ptr, arg2: mpq_srcptr, arg3: mpq_srcptr);
1589}
1590extern "C" {
1591    pub fn __gmpq_mul_2exp(arg1: mpq_ptr, arg2: mpq_srcptr, arg3: mp_bitcnt_t);
1592}
1593extern "C" {
1594    pub fn __gmpq_neg(arg1: mpq_ptr, arg2: mpq_srcptr);
1595}
1596extern "C" {
1597    pub fn __gmpq_set(arg1: mpq_ptr, arg2: mpq_srcptr);
1598}
1599extern "C" {
1600    pub fn __gmpq_set_d(arg1: mpq_ptr, arg2: f64);
1601}
1602extern "C" {
1603    pub fn __gmpq_set_den(arg1: mpq_ptr, arg2: mpz_srcptr);
1604}
1605extern "C" {
1606    pub fn __gmpq_set_f(arg1: mpq_ptr, arg2: mpf_srcptr);
1607}
1608extern "C" {
1609    pub fn __gmpq_set_num(arg1: mpq_ptr, arg2: mpz_srcptr);
1610}
1611extern "C" {
1612    pub fn __gmpq_set_si(
1613        arg1: mpq_ptr,
1614        arg2: ::std::os::raw::c_long,
1615        arg3: ::std::os::raw::c_ulong,
1616    );
1617}
1618extern "C" {
1619    pub fn __gmpq_set_str(
1620        arg1: mpq_ptr,
1621        arg2: *const ::std::os::raw::c_char,
1622        arg3: ::std::os::raw::c_int,
1623    ) -> ::std::os::raw::c_int;
1624}
1625extern "C" {
1626    pub fn __gmpq_set_ui(
1627        arg1: mpq_ptr,
1628        arg2: ::std::os::raw::c_ulong,
1629        arg3: ::std::os::raw::c_ulong,
1630    );
1631}
1632extern "C" {
1633    pub fn __gmpq_set_z(arg1: mpq_ptr, arg2: mpz_srcptr);
1634}
1635extern "C" {
1636    pub fn __gmpq_sub(arg1: mpq_ptr, arg2: mpq_srcptr, arg3: mpq_srcptr);
1637}
1638extern "C" {
1639    pub fn __gmpq_swap(arg1: mpq_ptr, arg2: mpq_ptr);
1640}
1641extern "C" {
1642    pub fn __gmpf_abs(arg1: mpf_ptr, arg2: mpf_srcptr);
1643}
1644extern "C" {
1645    pub fn __gmpf_add(arg1: mpf_ptr, arg2: mpf_srcptr, arg3: mpf_srcptr);
1646}
1647extern "C" {
1648    pub fn __gmpf_add_ui(arg1: mpf_ptr, arg2: mpf_srcptr, arg3: ::std::os::raw::c_ulong);
1649}
1650extern "C" {
1651    pub fn __gmpf_ceil(arg1: mpf_ptr, arg2: mpf_srcptr);
1652}
1653extern "C" {
1654    pub fn __gmpf_clear(arg1: mpf_ptr);
1655}
1656extern "C" {
1657    pub fn __gmpf_clears(arg1: mpf_ptr, ...);
1658}
1659extern "C" {
1660    pub fn __gmpf_cmp(arg1: mpf_srcptr, arg2: mpf_srcptr) -> ::std::os::raw::c_int;
1661}
1662extern "C" {
1663    pub fn __gmpf_cmp_z(arg1: mpf_srcptr, arg2: mpz_srcptr) -> ::std::os::raw::c_int;
1664}
1665extern "C" {
1666    pub fn __gmpf_cmp_d(arg1: mpf_srcptr, arg2: f64) -> ::std::os::raw::c_int;
1667}
1668extern "C" {
1669    pub fn __gmpf_cmp_si(arg1: mpf_srcptr, arg2: ::std::os::raw::c_long) -> ::std::os::raw::c_int;
1670}
1671extern "C" {
1672    pub fn __gmpf_cmp_ui(arg1: mpf_srcptr, arg2: ::std::os::raw::c_ulong) -> ::std::os::raw::c_int;
1673}
1674extern "C" {
1675    pub fn __gmpf_div(arg1: mpf_ptr, arg2: mpf_srcptr, arg3: mpf_srcptr);
1676}
1677extern "C" {
1678    pub fn __gmpf_div_2exp(arg1: mpf_ptr, arg2: mpf_srcptr, arg3: mp_bitcnt_t);
1679}
1680extern "C" {
1681    pub fn __gmpf_div_ui(arg1: mpf_ptr, arg2: mpf_srcptr, arg3: ::std::os::raw::c_ulong);
1682}
1683extern "C" {
1684    pub fn __gmpf_dump(arg1: mpf_srcptr);
1685}
1686extern "C" {
1687    pub fn __gmpf_eq(
1688        arg1: mpf_srcptr,
1689        arg2: mpf_srcptr,
1690        arg3: mp_bitcnt_t,
1691    ) -> ::std::os::raw::c_int;
1692}
1693extern "C" {
1694    pub fn __gmpf_fits_sint_p(arg1: mpf_srcptr) -> ::std::os::raw::c_int;
1695}
1696extern "C" {
1697    pub fn __gmpf_fits_slong_p(arg1: mpf_srcptr) -> ::std::os::raw::c_int;
1698}
1699extern "C" {
1700    pub fn __gmpf_fits_sshort_p(arg1: mpf_srcptr) -> ::std::os::raw::c_int;
1701}
1702extern "C" {
1703    pub fn __gmpf_fits_uint_p(arg1: mpf_srcptr) -> ::std::os::raw::c_int;
1704}
1705extern "C" {
1706    pub fn __gmpf_fits_ulong_p(arg1: mpf_srcptr) -> ::std::os::raw::c_int;
1707}
1708extern "C" {
1709    pub fn __gmpf_fits_ushort_p(arg1: mpf_srcptr) -> ::std::os::raw::c_int;
1710}
1711extern "C" {
1712    pub fn __gmpf_floor(arg1: mpf_ptr, arg2: mpf_srcptr);
1713}
1714extern "C" {
1715    pub fn __gmpf_get_d(arg1: mpf_srcptr) -> f64;
1716}
1717extern "C" {
1718    pub fn __gmpf_get_d_2exp(arg1: *mut ::std::os::raw::c_long, arg2: mpf_srcptr) -> f64;
1719}
1720extern "C" {
1721    pub fn __gmpf_get_default_prec() -> mp_bitcnt_t;
1722}
1723extern "C" {
1724    pub fn __gmpf_get_prec(arg1: mpf_srcptr) -> mp_bitcnt_t;
1725}
1726extern "C" {
1727    pub fn __gmpf_get_si(arg1: mpf_srcptr) -> ::std::os::raw::c_long;
1728}
1729extern "C" {
1730    pub fn __gmpf_get_str(
1731        arg1: *mut ::std::os::raw::c_char,
1732        arg2: *mut mp_exp_t,
1733        arg3: ::std::os::raw::c_int,
1734        arg4: usize,
1735        arg5: mpf_srcptr,
1736    ) -> *mut ::std::os::raw::c_char;
1737}
1738extern "C" {
1739    pub fn __gmpf_get_ui(arg1: mpf_srcptr) -> ::std::os::raw::c_ulong;
1740}
1741extern "C" {
1742    pub fn __gmpf_init(arg1: mpf_ptr);
1743}
1744extern "C" {
1745    pub fn __gmpf_init2(arg1: mpf_ptr, arg2: mp_bitcnt_t);
1746}
1747extern "C" {
1748    pub fn __gmpf_inits(arg1: mpf_ptr, ...);
1749}
1750extern "C" {
1751    pub fn __gmpf_init_set(arg1: mpf_ptr, arg2: mpf_srcptr);
1752}
1753extern "C" {
1754    pub fn __gmpf_init_set_d(arg1: mpf_ptr, arg2: f64);
1755}
1756extern "C" {
1757    pub fn __gmpf_init_set_si(arg1: mpf_ptr, arg2: ::std::os::raw::c_long);
1758}
1759extern "C" {
1760    pub fn __gmpf_init_set_str(
1761        arg1: mpf_ptr,
1762        arg2: *const ::std::os::raw::c_char,
1763        arg3: ::std::os::raw::c_int,
1764    ) -> ::std::os::raw::c_int;
1765}
1766extern "C" {
1767    pub fn __gmpf_init_set_ui(arg1: mpf_ptr, arg2: ::std::os::raw::c_ulong);
1768}
1769extern "C" {
1770    pub fn __gmpf_integer_p(arg1: mpf_srcptr) -> ::std::os::raw::c_int;
1771}
1772extern "C" {
1773    pub fn __gmpf_mul(arg1: mpf_ptr, arg2: mpf_srcptr, arg3: mpf_srcptr);
1774}
1775extern "C" {
1776    pub fn __gmpf_mul_2exp(arg1: mpf_ptr, arg2: mpf_srcptr, arg3: mp_bitcnt_t);
1777}
1778extern "C" {
1779    pub fn __gmpf_mul_ui(arg1: mpf_ptr, arg2: mpf_srcptr, arg3: ::std::os::raw::c_ulong);
1780}
1781extern "C" {
1782    pub fn __gmpf_neg(arg1: mpf_ptr, arg2: mpf_srcptr);
1783}
1784extern "C" {
1785    pub fn __gmpf_pow_ui(arg1: mpf_ptr, arg2: mpf_srcptr, arg3: ::std::os::raw::c_ulong);
1786}
1787extern "C" {
1788    pub fn __gmpf_random2(arg1: mpf_ptr, arg2: mp_size_t, arg3: mp_exp_t);
1789}
1790extern "C" {
1791    pub fn __gmpf_reldiff(arg1: mpf_ptr, arg2: mpf_srcptr, arg3: mpf_srcptr);
1792}
1793extern "C" {
1794    pub fn __gmpf_set(arg1: mpf_ptr, arg2: mpf_srcptr);
1795}
1796extern "C" {
1797    pub fn __gmpf_set_d(arg1: mpf_ptr, arg2: f64);
1798}
1799extern "C" {
1800    pub fn __gmpf_set_default_prec(arg1: mp_bitcnt_t);
1801}
1802extern "C" {
1803    pub fn __gmpf_set_prec(arg1: mpf_ptr, arg2: mp_bitcnt_t);
1804}
1805extern "C" {
1806    pub fn __gmpf_set_prec_raw(arg1: mpf_ptr, arg2: mp_bitcnt_t);
1807}
1808extern "C" {
1809    pub fn __gmpf_set_q(arg1: mpf_ptr, arg2: mpq_srcptr);
1810}
1811extern "C" {
1812    pub fn __gmpf_set_si(arg1: mpf_ptr, arg2: ::std::os::raw::c_long);
1813}
1814extern "C" {
1815    pub fn __gmpf_set_str(
1816        arg1: mpf_ptr,
1817        arg2: *const ::std::os::raw::c_char,
1818        arg3: ::std::os::raw::c_int,
1819    ) -> ::std::os::raw::c_int;
1820}
1821extern "C" {
1822    pub fn __gmpf_set_ui(arg1: mpf_ptr, arg2: ::std::os::raw::c_ulong);
1823}
1824extern "C" {
1825    pub fn __gmpf_set_z(arg1: mpf_ptr, arg2: mpz_srcptr);
1826}
1827extern "C" {
1828    pub fn __gmpf_size(arg1: mpf_srcptr) -> usize;
1829}
1830extern "C" {
1831    pub fn __gmpf_sqrt(arg1: mpf_ptr, arg2: mpf_srcptr);
1832}
1833extern "C" {
1834    pub fn __gmpf_sqrt_ui(arg1: mpf_ptr, arg2: ::std::os::raw::c_ulong);
1835}
1836extern "C" {
1837    pub fn __gmpf_sub(arg1: mpf_ptr, arg2: mpf_srcptr, arg3: mpf_srcptr);
1838}
1839extern "C" {
1840    pub fn __gmpf_sub_ui(arg1: mpf_ptr, arg2: mpf_srcptr, arg3: ::std::os::raw::c_ulong);
1841}
1842extern "C" {
1843    pub fn __gmpf_swap(arg1: mpf_ptr, arg2: mpf_ptr);
1844}
1845extern "C" {
1846    pub fn __gmpf_trunc(arg1: mpf_ptr, arg2: mpf_srcptr);
1847}
1848extern "C" {
1849    pub fn __gmpf_ui_div(arg1: mpf_ptr, arg2: ::std::os::raw::c_ulong, arg3: mpf_srcptr);
1850}
1851extern "C" {
1852    pub fn __gmpf_ui_sub(arg1: mpf_ptr, arg2: ::std::os::raw::c_ulong, arg3: mpf_srcptr);
1853}
1854extern "C" {
1855    pub fn __gmpf_urandomb(
1856        arg1: *mut __mpf_struct,
1857        arg2: *mut __gmp_randstate_struct,
1858        arg3: mp_bitcnt_t,
1859    );
1860}
1861extern "C" {
1862    pub fn __gmpn_add(
1863        arg1: mp_ptr,
1864        arg2: mp_srcptr,
1865        arg3: mp_size_t,
1866        arg4: mp_srcptr,
1867        arg5: mp_size_t,
1868    ) -> mp_limb_t;
1869}
1870extern "C" {
1871    pub fn __gmpn_add_1(
1872        arg1: mp_ptr,
1873        arg2: mp_srcptr,
1874        arg3: mp_size_t,
1875        arg4: mp_limb_t,
1876    ) -> mp_limb_t;
1877}
1878extern "C" {
1879    pub fn __gmpn_add_n(
1880        arg1: mp_ptr,
1881        arg2: mp_srcptr,
1882        arg3: mp_srcptr,
1883        arg4: mp_size_t,
1884    ) -> mp_limb_t;
1885}
1886extern "C" {
1887    pub fn __gmpn_addmul_1(
1888        arg1: mp_ptr,
1889        arg2: mp_srcptr,
1890        arg3: mp_size_t,
1891        arg4: mp_limb_t,
1892    ) -> mp_limb_t;
1893}
1894extern "C" {
1895    pub fn __gmpn_cmp(arg1: mp_srcptr, arg2: mp_srcptr, arg3: mp_size_t) -> ::std::os::raw::c_int;
1896}
1897extern "C" {
1898    pub fn __gmpn_zero_p(arg1: mp_srcptr, arg2: mp_size_t) -> ::std::os::raw::c_int;
1899}
1900extern "C" {
1901    pub fn __gmpn_divexact_1(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t, arg4: mp_limb_t);
1902}
1903extern "C" {
1904    pub fn __gmpn_divexact_by3c(
1905        arg1: mp_ptr,
1906        arg2: mp_srcptr,
1907        arg3: mp_size_t,
1908        arg4: mp_limb_t,
1909    ) -> mp_limb_t;
1910}
1911extern "C" {
1912    pub fn __gmpn_divrem(
1913        arg1: mp_ptr,
1914        arg2: mp_size_t,
1915        arg3: mp_ptr,
1916        arg4: mp_size_t,
1917        arg5: mp_srcptr,
1918        arg6: mp_size_t,
1919    ) -> mp_limb_t;
1920}
1921extern "C" {
1922    pub fn __gmpn_divrem_1(
1923        arg1: mp_ptr,
1924        arg2: mp_size_t,
1925        arg3: mp_srcptr,
1926        arg4: mp_size_t,
1927        arg5: mp_limb_t,
1928    ) -> mp_limb_t;
1929}
1930extern "C" {
1931    pub fn __gmpn_divrem_2(
1932        arg1: mp_ptr,
1933        arg2: mp_size_t,
1934        arg3: mp_ptr,
1935        arg4: mp_size_t,
1936        arg5: mp_srcptr,
1937    ) -> mp_limb_t;
1938}
1939extern "C" {
1940    pub fn __gmpn_div_qr_1(
1941        arg1: mp_ptr,
1942        arg2: *mut mp_limb_t,
1943        arg3: mp_srcptr,
1944        arg4: mp_size_t,
1945        arg5: mp_limb_t,
1946    ) -> mp_limb_t;
1947}
1948extern "C" {
1949    pub fn __gmpn_div_qr_2(
1950        arg1: mp_ptr,
1951        arg2: mp_ptr,
1952        arg3: mp_srcptr,
1953        arg4: mp_size_t,
1954        arg5: mp_srcptr,
1955    ) -> mp_limb_t;
1956}
1957extern "C" {
1958    pub fn __gmpn_gcd(
1959        arg1: mp_ptr,
1960        arg2: mp_ptr,
1961        arg3: mp_size_t,
1962        arg4: mp_ptr,
1963        arg5: mp_size_t,
1964    ) -> mp_size_t;
1965}
1966extern "C" {
1967    pub fn __gmpn_gcd_11(arg1: mp_limb_t, arg2: mp_limb_t) -> mp_limb_t;
1968}
1969extern "C" {
1970    pub fn __gmpn_gcd_1(arg1: mp_srcptr, arg2: mp_size_t, arg3: mp_limb_t) -> mp_limb_t;
1971}
1972extern "C" {
1973    pub fn __gmpn_gcdext_1(
1974        arg1: *mut mp_limb_signed_t,
1975        arg2: *mut mp_limb_signed_t,
1976        arg3: mp_limb_t,
1977        arg4: mp_limb_t,
1978    ) -> mp_limb_t;
1979}
1980extern "C" {
1981    pub fn __gmpn_gcdext(
1982        arg1: mp_ptr,
1983        arg2: mp_ptr,
1984        arg3: *mut mp_size_t,
1985        arg4: mp_ptr,
1986        arg5: mp_size_t,
1987        arg6: mp_ptr,
1988        arg7: mp_size_t,
1989    ) -> mp_size_t;
1990}
1991extern "C" {
1992    pub fn __gmpn_get_str(
1993        arg1: *mut ::std::os::raw::c_uchar,
1994        arg2: ::std::os::raw::c_int,
1995        arg3: mp_ptr,
1996        arg4: mp_size_t,
1997    ) -> usize;
1998}
1999extern "C" {
2000    pub fn __gmpn_hamdist(arg1: mp_srcptr, arg2: mp_srcptr, arg3: mp_size_t) -> mp_bitcnt_t;
2001}
2002extern "C" {
2003    pub fn __gmpn_lshift(
2004        arg1: mp_ptr,
2005        arg2: mp_srcptr,
2006        arg3: mp_size_t,
2007        arg4: ::std::os::raw::c_uint,
2008    ) -> mp_limb_t;
2009}
2010extern "C" {
2011    pub fn __gmpn_mod_1(arg1: mp_srcptr, arg2: mp_size_t, arg3: mp_limb_t) -> mp_limb_t;
2012}
2013extern "C" {
2014    pub fn __gmpn_mul(
2015        arg1: mp_ptr,
2016        arg2: mp_srcptr,
2017        arg3: mp_size_t,
2018        arg4: mp_srcptr,
2019        arg5: mp_size_t,
2020    ) -> mp_limb_t;
2021}
2022extern "C" {
2023    pub fn __gmpn_mul_1(
2024        arg1: mp_ptr,
2025        arg2: mp_srcptr,
2026        arg3: mp_size_t,
2027        arg4: mp_limb_t,
2028    ) -> mp_limb_t;
2029}
2030extern "C" {
2031    pub fn __gmpn_mul_n(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_srcptr, arg4: mp_size_t);
2032}
2033extern "C" {
2034    pub fn __gmpn_sqr(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t);
2035}
2036extern "C" {
2037    pub fn __gmpn_neg(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t) -> mp_limb_t;
2038}
2039extern "C" {
2040    pub fn __gmpn_com(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t);
2041}
2042extern "C" {
2043    pub fn __gmpn_perfect_square_p(arg1: mp_srcptr, arg2: mp_size_t) -> ::std::os::raw::c_int;
2044}
2045extern "C" {
2046    pub fn __gmpn_perfect_power_p(arg1: mp_srcptr, arg2: mp_size_t) -> ::std::os::raw::c_int;
2047}
2048extern "C" {
2049    pub fn __gmpn_popcount(arg1: mp_srcptr, arg2: mp_size_t) -> mp_bitcnt_t;
2050}
2051extern "C" {
2052    pub fn __gmpn_pow_1(
2053        arg1: mp_ptr,
2054        arg2: mp_srcptr,
2055        arg3: mp_size_t,
2056        arg4: mp_limb_t,
2057        arg5: mp_ptr,
2058    ) -> mp_size_t;
2059}
2060extern "C" {
2061    pub fn __gmpn_preinv_mod_1(
2062        arg1: mp_srcptr,
2063        arg2: mp_size_t,
2064        arg3: mp_limb_t,
2065        arg4: mp_limb_t,
2066    ) -> mp_limb_t;
2067}
2068extern "C" {
2069    pub fn __gmpn_random(arg1: mp_ptr, arg2: mp_size_t);
2070}
2071extern "C" {
2072    pub fn __gmpn_random2(arg1: mp_ptr, arg2: mp_size_t);
2073}
2074extern "C" {
2075    pub fn __gmpn_rshift(
2076        arg1: mp_ptr,
2077        arg2: mp_srcptr,
2078        arg3: mp_size_t,
2079        arg4: ::std::os::raw::c_uint,
2080    ) -> mp_limb_t;
2081}
2082extern "C" {
2083    pub fn __gmpn_scan0(arg1: mp_srcptr, arg2: mp_bitcnt_t) -> mp_bitcnt_t;
2084}
2085extern "C" {
2086    pub fn __gmpn_scan1(arg1: mp_srcptr, arg2: mp_bitcnt_t) -> mp_bitcnt_t;
2087}
2088extern "C" {
2089    pub fn __gmpn_set_str(
2090        arg1: mp_ptr,
2091        arg2: *const ::std::os::raw::c_uchar,
2092        arg3: usize,
2093        arg4: ::std::os::raw::c_int,
2094    ) -> mp_size_t;
2095}
2096extern "C" {
2097    pub fn __gmpn_sizeinbase(
2098        arg1: mp_srcptr,
2099        arg2: mp_size_t,
2100        arg3: ::std::os::raw::c_int,
2101    ) -> usize;
2102}
2103extern "C" {
2104    pub fn __gmpn_sqrtrem(
2105        arg1: mp_ptr,
2106        arg2: mp_ptr,
2107        arg3: mp_srcptr,
2108        arg4: mp_size_t,
2109    ) -> mp_size_t;
2110}
2111extern "C" {
2112    pub fn __gmpn_sub(
2113        arg1: mp_ptr,
2114        arg2: mp_srcptr,
2115        arg3: mp_size_t,
2116        arg4: mp_srcptr,
2117        arg5: mp_size_t,
2118    ) -> mp_limb_t;
2119}
2120extern "C" {
2121    pub fn __gmpn_sub_1(
2122        arg1: mp_ptr,
2123        arg2: mp_srcptr,
2124        arg3: mp_size_t,
2125        arg4: mp_limb_t,
2126    ) -> mp_limb_t;
2127}
2128extern "C" {
2129    pub fn __gmpn_sub_n(
2130        arg1: mp_ptr,
2131        arg2: mp_srcptr,
2132        arg3: mp_srcptr,
2133        arg4: mp_size_t,
2134    ) -> mp_limb_t;
2135}
2136extern "C" {
2137    pub fn __gmpn_submul_1(
2138        arg1: mp_ptr,
2139        arg2: mp_srcptr,
2140        arg3: mp_size_t,
2141        arg4: mp_limb_t,
2142    ) -> mp_limb_t;
2143}
2144extern "C" {
2145    pub fn __gmpn_tdiv_qr(
2146        arg1: mp_ptr,
2147        arg2: mp_ptr,
2148        arg3: mp_size_t,
2149        arg4: mp_srcptr,
2150        arg5: mp_size_t,
2151        arg6: mp_srcptr,
2152        arg7: mp_size_t,
2153    );
2154}
2155extern "C" {
2156    pub fn __gmpn_and_n(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_srcptr, arg4: mp_size_t);
2157}
2158extern "C" {
2159    pub fn __gmpn_andn_n(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_srcptr, arg4: mp_size_t);
2160}
2161extern "C" {
2162    pub fn __gmpn_nand_n(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_srcptr, arg4: mp_size_t);
2163}
2164extern "C" {
2165    pub fn __gmpn_ior_n(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_srcptr, arg4: mp_size_t);
2166}
2167extern "C" {
2168    pub fn __gmpn_iorn_n(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_srcptr, arg4: mp_size_t);
2169}
2170extern "C" {
2171    pub fn __gmpn_nior_n(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_srcptr, arg4: mp_size_t);
2172}
2173extern "C" {
2174    pub fn __gmpn_xor_n(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_srcptr, arg4: mp_size_t);
2175}
2176extern "C" {
2177    pub fn __gmpn_xnor_n(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_srcptr, arg4: mp_size_t);
2178}
2179extern "C" {
2180    pub fn __gmpn_copyi(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t);
2181}
2182extern "C" {
2183    pub fn __gmpn_copyd(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t);
2184}
2185extern "C" {
2186    pub fn __gmpn_zero(arg1: mp_ptr, arg2: mp_size_t);
2187}
2188extern "C" {
2189    pub fn __gmpn_cnd_add_n(
2190        arg1: mp_limb_t,
2191        arg2: mp_ptr,
2192        arg3: mp_srcptr,
2193        arg4: mp_srcptr,
2194        arg5: mp_size_t,
2195    ) -> mp_limb_t;
2196}
2197extern "C" {
2198    pub fn __gmpn_cnd_sub_n(
2199        arg1: mp_limb_t,
2200        arg2: mp_ptr,
2201        arg3: mp_srcptr,
2202        arg4: mp_srcptr,
2203        arg5: mp_size_t,
2204    ) -> mp_limb_t;
2205}
2206extern "C" {
2207    pub fn __gmpn_sec_add_1(
2208        arg1: mp_ptr,
2209        arg2: mp_srcptr,
2210        arg3: mp_size_t,
2211        arg4: mp_limb_t,
2212        arg5: mp_ptr,
2213    ) -> mp_limb_t;
2214}
2215extern "C" {
2216    pub fn __gmpn_sec_add_1_itch(arg1: mp_size_t) -> mp_size_t;
2217}
2218extern "C" {
2219    pub fn __gmpn_sec_sub_1(
2220        arg1: mp_ptr,
2221        arg2: mp_srcptr,
2222        arg3: mp_size_t,
2223        arg4: mp_limb_t,
2224        arg5: mp_ptr,
2225    ) -> mp_limb_t;
2226}
2227extern "C" {
2228    pub fn __gmpn_sec_sub_1_itch(arg1: mp_size_t) -> mp_size_t;
2229}
2230extern "C" {
2231    pub fn __gmpn_cnd_swap(
2232        arg1: mp_limb_t,
2233        arg2: *mut mp_limb_t,
2234        arg3: *mut mp_limb_t,
2235        arg4: mp_size_t,
2236    );
2237}
2238extern "C" {
2239    pub fn __gmpn_sec_mul(
2240        arg1: mp_ptr,
2241        arg2: mp_srcptr,
2242        arg3: mp_size_t,
2243        arg4: mp_srcptr,
2244        arg5: mp_size_t,
2245        arg6: mp_ptr,
2246    );
2247}
2248extern "C" {
2249    pub fn __gmpn_sec_mul_itch(arg1: mp_size_t, arg2: mp_size_t) -> mp_size_t;
2250}
2251extern "C" {
2252    pub fn __gmpn_sec_sqr(arg1: mp_ptr, arg2: mp_srcptr, arg3: mp_size_t, arg4: mp_ptr);
2253}
2254extern "C" {
2255    pub fn __gmpn_sec_sqr_itch(arg1: mp_size_t) -> mp_size_t;
2256}
2257extern "C" {
2258    pub fn __gmpn_sec_powm(
2259        arg1: mp_ptr,
2260        arg2: mp_srcptr,
2261        arg3: mp_size_t,
2262        arg4: mp_srcptr,
2263        arg5: mp_bitcnt_t,
2264        arg6: mp_srcptr,
2265        arg7: mp_size_t,
2266        arg8: mp_ptr,
2267    );
2268}
2269extern "C" {
2270    pub fn __gmpn_sec_powm_itch(arg1: mp_size_t, arg2: mp_bitcnt_t, arg3: mp_size_t) -> mp_size_t;
2271}
2272extern "C" {
2273    pub fn __gmpn_sec_tabselect(
2274        arg1: *mut mp_limb_t,
2275        arg2: *const mp_limb_t,
2276        arg3: mp_size_t,
2277        arg4: mp_size_t,
2278        arg5: mp_size_t,
2279    );
2280}
2281extern "C" {
2282    pub fn __gmpn_sec_div_qr(
2283        arg1: mp_ptr,
2284        arg2: mp_ptr,
2285        arg3: mp_size_t,
2286        arg4: mp_srcptr,
2287        arg5: mp_size_t,
2288        arg6: mp_ptr,
2289    ) -> mp_limb_t;
2290}
2291extern "C" {
2292    pub fn __gmpn_sec_div_qr_itch(arg1: mp_size_t, arg2: mp_size_t) -> mp_size_t;
2293}
2294extern "C" {
2295    pub fn __gmpn_sec_div_r(
2296        arg1: mp_ptr,
2297        arg2: mp_size_t,
2298        arg3: mp_srcptr,
2299        arg4: mp_size_t,
2300        arg5: mp_ptr,
2301    );
2302}
2303extern "C" {
2304    pub fn __gmpn_sec_div_r_itch(arg1: mp_size_t, arg2: mp_size_t) -> mp_size_t;
2305}
2306extern "C" {
2307    pub fn __gmpn_sec_invert(
2308        arg1: mp_ptr,
2309        arg2: mp_ptr,
2310        arg3: mp_srcptr,
2311        arg4: mp_size_t,
2312        arg5: mp_bitcnt_t,
2313        arg6: mp_ptr,
2314    ) -> ::std::os::raw::c_int;
2315}
2316extern "C" {
2317    pub fn __gmpn_sec_invert_itch(arg1: mp_size_t) -> mp_size_t;
2318}
2319pub const GMP_ERROR_NONE: _bindgen_ty_1 = 0;
2320pub const GMP_ERROR_UNSUPPORTED_ARGUMENT: _bindgen_ty_1 = 1;
2321pub const GMP_ERROR_DIVISION_BY_ZERO: _bindgen_ty_1 = 2;
2322pub const GMP_ERROR_SQRT_OF_NEGATIVE: _bindgen_ty_1 = 4;
2323pub const GMP_ERROR_INVALID_ARGUMENT: _bindgen_ty_1 = 8;
2324pub type _bindgen_ty_1 = u32;
2325pub type __u_char = ::std::os::raw::c_uchar;
2326pub type __u_short = ::std::os::raw::c_ushort;
2327pub type __u_int = ::std::os::raw::c_uint;
2328pub type __u_long = ::std::os::raw::c_ulong;
2329pub type __int8_t = ::std::os::raw::c_schar;
2330pub type __uint8_t = ::std::os::raw::c_uchar;
2331pub type __int16_t = ::std::os::raw::c_short;
2332pub type __uint16_t = ::std::os::raw::c_ushort;
2333pub type __int32_t = ::std::os::raw::c_int;
2334pub type __uint32_t = ::std::os::raw::c_uint;
2335pub type __int64_t = ::std::os::raw::c_long;
2336pub type __uint64_t = ::std::os::raw::c_ulong;
2337pub type __int_least8_t = __int8_t;
2338pub type __uint_least8_t = __uint8_t;
2339pub type __int_least16_t = __int16_t;
2340pub type __uint_least16_t = __uint16_t;
2341pub type __int_least32_t = __int32_t;
2342pub type __uint_least32_t = __uint32_t;
2343pub type __int_least64_t = __int64_t;
2344pub type __uint_least64_t = __uint64_t;
2345pub type __quad_t = ::std::os::raw::c_long;
2346pub type __u_quad_t = ::std::os::raw::c_ulong;
2347pub type __intmax_t = ::std::os::raw::c_long;
2348pub type __uintmax_t = ::std::os::raw::c_ulong;
2349pub type __dev_t = ::std::os::raw::c_ulong;
2350pub type __uid_t = ::std::os::raw::c_uint;
2351pub type __gid_t = ::std::os::raw::c_uint;
2352pub type __ino_t = ::std::os::raw::c_ulong;
2353pub type __ino64_t = ::std::os::raw::c_ulong;
2354pub type __mode_t = ::std::os::raw::c_uint;
2355pub type __nlink_t = ::std::os::raw::c_ulong;
2356pub type __off_t = ::std::os::raw::c_long;
2357pub type __off64_t = ::std::os::raw::c_long;
2358pub type __pid_t = ::std::os::raw::c_int;
2359#[repr(C)]
2360#[derive(Debug, Copy, Clone)]
2361pub struct __fsid_t {
2362    pub __val: [::std::os::raw::c_int; 2usize],
2363}
2364#[test]
2365fn bindgen_test_layout___fsid_t() {
2366    assert_eq!(
2367        ::std::mem::size_of::<__fsid_t>(),
2368        8usize,
2369        concat!("Size of: ", stringify!(__fsid_t))
2370    );
2371    assert_eq!(
2372        ::std::mem::align_of::<__fsid_t>(),
2373        4usize,
2374        concat!("Alignment of ", stringify!(__fsid_t))
2375    );
2376    assert_eq!(
2377        unsafe { &(*(::std::ptr::null::<__fsid_t>())).__val as *const _ as usize },
2378        0usize,
2379        concat!(
2380            "Offset of field: ",
2381            stringify!(__fsid_t),
2382            "::",
2383            stringify!(__val)
2384        )
2385    );
2386}
2387pub type __clock_t = ::std::os::raw::c_long;
2388pub type __rlim_t = ::std::os::raw::c_ulong;
2389pub type __rlim64_t = ::std::os::raw::c_ulong;
2390pub type __id_t = ::std::os::raw::c_uint;
2391pub type __time_t = ::std::os::raw::c_long;
2392pub type __useconds_t = ::std::os::raw::c_uint;
2393pub type __suseconds_t = ::std::os::raw::c_long;
2394pub type __daddr_t = ::std::os::raw::c_int;
2395pub type __key_t = ::std::os::raw::c_int;
2396pub type __clockid_t = ::std::os::raw::c_int;
2397pub type __timer_t = *mut ::std::os::raw::c_void;
2398pub type __blksize_t = ::std::os::raw::c_long;
2399pub type __blkcnt_t = ::std::os::raw::c_long;
2400pub type __blkcnt64_t = ::std::os::raw::c_long;
2401pub type __fsblkcnt_t = ::std::os::raw::c_ulong;
2402pub type __fsblkcnt64_t = ::std::os::raw::c_ulong;
2403pub type __fsfilcnt_t = ::std::os::raw::c_ulong;
2404pub type __fsfilcnt64_t = ::std::os::raw::c_ulong;
2405pub type __fsword_t = ::std::os::raw::c_long;
2406pub type __ssize_t = ::std::os::raw::c_long;
2407pub type __syscall_slong_t = ::std::os::raw::c_long;
2408pub type __syscall_ulong_t = ::std::os::raw::c_ulong;
2409pub type __loff_t = __off64_t;
2410pub type __caddr_t = *mut ::std::os::raw::c_char;
2411pub type __intptr_t = ::std::os::raw::c_long;
2412pub type __socklen_t = ::std::os::raw::c_uint;
2413pub type __sig_atomic_t = ::std::os::raw::c_int;
2414pub type u_char = __u_char;
2415pub type u_short = __u_short;
2416pub type u_int = __u_int;
2417pub type u_long = __u_long;
2418pub type quad_t = __quad_t;
2419pub type u_quad_t = __u_quad_t;
2420pub type fsid_t = __fsid_t;
2421pub type loff_t = __loff_t;
2422pub type ino_t = __ino_t;
2423pub type dev_t = __dev_t;
2424pub type gid_t = __gid_t;
2425pub type mode_t = __mode_t;
2426pub type nlink_t = __nlink_t;
2427pub type uid_t = __uid_t;
2428pub type off_t = __off_t;
2429pub type pid_t = __pid_t;
2430pub type id_t = __id_t;
2431pub type daddr_t = __daddr_t;
2432pub type caddr_t = __caddr_t;
2433pub type key_t = __key_t;
2434pub type clock_t = __clock_t;
2435pub type clockid_t = __clockid_t;
2436pub type time_t = __time_t;
2437pub type timer_t = __timer_t;
2438pub type ulongxx = ::std::os::raw::c_ulong;
2439pub type ushort = ::std::os::raw::c_ushort;
2440pub type uint = ::std::os::raw::c_uint;
2441pub type u_int8_t = __uint8_t;
2442pub type u_int16_t = __uint16_t;
2443pub type u_int32_t = __uint32_t;
2444pub type u_int64_t = __uint64_t;
2445pub type register_t = ::std::os::raw::c_long;
2446#[repr(C)]
2447#[derive(Debug, Copy, Clone)]
2448pub struct __sigset_t {
2449    pub __val: [::std::os::raw::c_ulong; 16usize],
2450}
2451#[test]
2452fn bindgen_test_layout___sigset_t() {
2453    assert_eq!(
2454        ::std::mem::size_of::<__sigset_t>(),
2455        128usize,
2456        concat!("Size of: ", stringify!(__sigset_t))
2457    );
2458    assert_eq!(
2459        ::std::mem::align_of::<__sigset_t>(),
2460        8usize,
2461        concat!("Alignment of ", stringify!(__sigset_t))
2462    );
2463    assert_eq!(
2464        unsafe { &(*(::std::ptr::null::<__sigset_t>())).__val as *const _ as usize },
2465        0usize,
2466        concat!(
2467            "Offset of field: ",
2468            stringify!(__sigset_t),
2469            "::",
2470            stringify!(__val)
2471        )
2472    );
2473}
2474pub type sigset_t = __sigset_t;
2475#[repr(C)]
2476#[derive(Debug, Copy, Clone)]
2477pub struct timeval {
2478    pub tv_sec: __time_t,
2479    pub tv_usec: __suseconds_t,
2480}
2481#[test]
2482fn bindgen_test_layout_timeval() {
2483    assert_eq!(
2484        ::std::mem::size_of::<timeval>(),
2485        16usize,
2486        concat!("Size of: ", stringify!(timeval))
2487    );
2488    assert_eq!(
2489        ::std::mem::align_of::<timeval>(),
2490        8usize,
2491        concat!("Alignment of ", stringify!(timeval))
2492    );
2493    assert_eq!(
2494        unsafe { &(*(::std::ptr::null::<timeval>())).tv_sec as *const _ as usize },
2495        0usize,
2496        concat!(
2497            "Offset of field: ",
2498            stringify!(timeval),
2499            "::",
2500            stringify!(tv_sec)
2501        )
2502    );
2503    assert_eq!(
2504        unsafe { &(*(::std::ptr::null::<timeval>())).tv_usec as *const _ as usize },
2505        8usize,
2506        concat!(
2507            "Offset of field: ",
2508            stringify!(timeval),
2509            "::",
2510            stringify!(tv_usec)
2511        )
2512    );
2513}
2514#[repr(C)]
2515#[derive(Debug, Copy, Clone)]
2516pub struct timespec {
2517    pub tv_sec: __time_t,
2518    pub tv_nsec: __syscall_slong_t,
2519}
2520#[test]
2521fn bindgen_test_layout_timespec() {
2522    assert_eq!(
2523        ::std::mem::size_of::<timespec>(),
2524        16usize,
2525        concat!("Size of: ", stringify!(timespec))
2526    );
2527    assert_eq!(
2528        ::std::mem::align_of::<timespec>(),
2529        8usize,
2530        concat!("Alignment of ", stringify!(timespec))
2531    );
2532    assert_eq!(
2533        unsafe { &(*(::std::ptr::null::<timespec>())).tv_sec as *const _ as usize },
2534        0usize,
2535        concat!(
2536            "Offset of field: ",
2537            stringify!(timespec),
2538            "::",
2539            stringify!(tv_sec)
2540        )
2541    );
2542    assert_eq!(
2543        unsafe { &(*(::std::ptr::null::<timespec>())).tv_nsec as *const _ as usize },
2544        8usize,
2545        concat!(
2546            "Offset of field: ",
2547            stringify!(timespec),
2548            "::",
2549            stringify!(tv_nsec)
2550        )
2551    );
2552}
2553pub type suseconds_t = __suseconds_t;
2554pub type __fd_mask = ::std::os::raw::c_long;
2555#[repr(C)]
2556#[derive(Debug, Copy, Clone)]
2557pub struct fd_set {
2558    pub __fds_bits: [__fd_mask; 16usize],
2559}
2560#[test]
2561fn bindgen_test_layout_fd_set() {
2562    assert_eq!(
2563        ::std::mem::size_of::<fd_set>(),
2564        128usize,
2565        concat!("Size of: ", stringify!(fd_set))
2566    );
2567    assert_eq!(
2568        ::std::mem::align_of::<fd_set>(),
2569        8usize,
2570        concat!("Alignment of ", stringify!(fd_set))
2571    );
2572    assert_eq!(
2573        unsafe { &(*(::std::ptr::null::<fd_set>())).__fds_bits as *const _ as usize },
2574        0usize,
2575        concat!(
2576            "Offset of field: ",
2577            stringify!(fd_set),
2578            "::",
2579            stringify!(__fds_bits)
2580        )
2581    );
2582}
2583pub type fd_mask = __fd_mask;
2584extern "C" {
2585    pub fn select(
2586        __nfds: ::std::os::raw::c_int,
2587        __readfds: *mut fd_set,
2588        __writefds: *mut fd_set,
2589        __exceptfds: *mut fd_set,
2590        __timeout: *mut timeval,
2591    ) -> ::std::os::raw::c_int;
2592}
2593extern "C" {
2594    pub fn pselect(
2595        __nfds: ::std::os::raw::c_int,
2596        __readfds: *mut fd_set,
2597        __writefds: *mut fd_set,
2598        __exceptfds: *mut fd_set,
2599        __timeout: *const timespec,
2600        __sigmask: *const __sigset_t,
2601    ) -> ::std::os::raw::c_int;
2602}
2603pub type blksize_t = __blksize_t;
2604pub type blkcnt_t = __blkcnt_t;
2605pub type fsblkcnt_t = __fsblkcnt_t;
2606pub type fsfilcnt_t = __fsfilcnt_t;
2607#[repr(C)]
2608#[derive(Debug, Copy, Clone)]
2609pub struct __pthread_rwlock_arch_t {
2610    pub __readers: ::std::os::raw::c_uint,
2611    pub __writers: ::std::os::raw::c_uint,
2612    pub __wrphase_futex: ::std::os::raw::c_uint,
2613    pub __writers_futex: ::std::os::raw::c_uint,
2614    pub __pad3: ::std::os::raw::c_uint,
2615    pub __pad4: ::std::os::raw::c_uint,
2616    pub __cur_writer: ::std::os::raw::c_int,
2617    pub __shared: ::std::os::raw::c_int,
2618    pub __rwelision: ::std::os::raw::c_schar,
2619    pub __pad1: [::std::os::raw::c_uchar; 7usize],
2620    pub __pad2: ::std::os::raw::c_ulong,
2621    pub __flags: ::std::os::raw::c_uint,
2622}
2623#[test]
2624fn bindgen_test_layout___pthread_rwlock_arch_t() {
2625    assert_eq!(
2626        ::std::mem::size_of::<__pthread_rwlock_arch_t>(),
2627        56usize,
2628        concat!("Size of: ", stringify!(__pthread_rwlock_arch_t))
2629    );
2630    assert_eq!(
2631        ::std::mem::align_of::<__pthread_rwlock_arch_t>(),
2632        8usize,
2633        concat!("Alignment of ", stringify!(__pthread_rwlock_arch_t))
2634    );
2635    assert_eq!(
2636        unsafe {
2637            &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__readers as *const _ as usize
2638        },
2639        0usize,
2640        concat!(
2641            "Offset of field: ",
2642            stringify!(__pthread_rwlock_arch_t),
2643            "::",
2644            stringify!(__readers)
2645        )
2646    );
2647    assert_eq!(
2648        unsafe {
2649            &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__writers as *const _ as usize
2650        },
2651        4usize,
2652        concat!(
2653            "Offset of field: ",
2654            stringify!(__pthread_rwlock_arch_t),
2655            "::",
2656            stringify!(__writers)
2657        )
2658    );
2659    assert_eq!(
2660        unsafe {
2661            &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__wrphase_futex as *const _ as usize
2662        },
2663        8usize,
2664        concat!(
2665            "Offset of field: ",
2666            stringify!(__pthread_rwlock_arch_t),
2667            "::",
2668            stringify!(__wrphase_futex)
2669        )
2670    );
2671    assert_eq!(
2672        unsafe {
2673            &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__writers_futex as *const _ as usize
2674        },
2675        12usize,
2676        concat!(
2677            "Offset of field: ",
2678            stringify!(__pthread_rwlock_arch_t),
2679            "::",
2680            stringify!(__writers_futex)
2681        )
2682    );
2683    assert_eq!(
2684        unsafe { &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__pad3 as *const _ as usize },
2685        16usize,
2686        concat!(
2687            "Offset of field: ",
2688            stringify!(__pthread_rwlock_arch_t),
2689            "::",
2690            stringify!(__pad3)
2691        )
2692    );
2693    assert_eq!(
2694        unsafe { &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__pad4 as *const _ as usize },
2695        20usize,
2696        concat!(
2697            "Offset of field: ",
2698            stringify!(__pthread_rwlock_arch_t),
2699            "::",
2700            stringify!(__pad4)
2701        )
2702    );
2703    assert_eq!(
2704        unsafe {
2705            &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__cur_writer as *const _ as usize
2706        },
2707        24usize,
2708        concat!(
2709            "Offset of field: ",
2710            stringify!(__pthread_rwlock_arch_t),
2711            "::",
2712            stringify!(__cur_writer)
2713        )
2714    );
2715    assert_eq!(
2716        unsafe {
2717            &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__shared as *const _ as usize
2718        },
2719        28usize,
2720        concat!(
2721            "Offset of field: ",
2722            stringify!(__pthread_rwlock_arch_t),
2723            "::",
2724            stringify!(__shared)
2725        )
2726    );
2727    assert_eq!(
2728        unsafe {
2729            &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__rwelision as *const _ as usize
2730        },
2731        32usize,
2732        concat!(
2733            "Offset of field: ",
2734            stringify!(__pthread_rwlock_arch_t),
2735            "::",
2736            stringify!(__rwelision)
2737        )
2738    );
2739    assert_eq!(
2740        unsafe { &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__pad1 as *const _ as usize },
2741        33usize,
2742        concat!(
2743            "Offset of field: ",
2744            stringify!(__pthread_rwlock_arch_t),
2745            "::",
2746            stringify!(__pad1)
2747        )
2748    );
2749    assert_eq!(
2750        unsafe { &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__pad2 as *const _ as usize },
2751        40usize,
2752        concat!(
2753            "Offset of field: ",
2754            stringify!(__pthread_rwlock_arch_t),
2755            "::",
2756            stringify!(__pad2)
2757        )
2758    );
2759    assert_eq!(
2760        unsafe { &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__flags as *const _ as usize },
2761        48usize,
2762        concat!(
2763            "Offset of field: ",
2764            stringify!(__pthread_rwlock_arch_t),
2765            "::",
2766            stringify!(__flags)
2767        )
2768    );
2769}
2770#[repr(C)]
2771#[derive(Debug, Copy, Clone)]
2772pub struct __pthread_internal_list {
2773    pub __prev: *mut __pthread_internal_list,
2774    pub __next: *mut __pthread_internal_list,
2775}
2776#[test]
2777fn bindgen_test_layout___pthread_internal_list() {
2778    assert_eq!(
2779        ::std::mem::size_of::<__pthread_internal_list>(),
2780        16usize,
2781        concat!("Size of: ", stringify!(__pthread_internal_list))
2782    );
2783    assert_eq!(
2784        ::std::mem::align_of::<__pthread_internal_list>(),
2785        8usize,
2786        concat!("Alignment of ", stringify!(__pthread_internal_list))
2787    );
2788    assert_eq!(
2789        unsafe { &(*(::std::ptr::null::<__pthread_internal_list>())).__prev as *const _ as usize },
2790        0usize,
2791        concat!(
2792            "Offset of field: ",
2793            stringify!(__pthread_internal_list),
2794            "::",
2795            stringify!(__prev)
2796        )
2797    );
2798    assert_eq!(
2799        unsafe { &(*(::std::ptr::null::<__pthread_internal_list>())).__next as *const _ as usize },
2800        8usize,
2801        concat!(
2802            "Offset of field: ",
2803            stringify!(__pthread_internal_list),
2804            "::",
2805            stringify!(__next)
2806        )
2807    );
2808}
2809pub type __pthread_list_t = __pthread_internal_list;
2810#[repr(C)]
2811#[derive(Debug, Copy, Clone)]
2812pub struct __pthread_mutex_s {
2813    pub __lock: ::std::os::raw::c_int,
2814    pub __count: ::std::os::raw::c_uint,
2815    pub __owner: ::std::os::raw::c_int,
2816    pub __nusers: ::std::os::raw::c_uint,
2817    pub __kind: ::std::os::raw::c_int,
2818    pub __spins: ::std::os::raw::c_short,
2819    pub __elision: ::std::os::raw::c_short,
2820    pub __list: __pthread_list_t,
2821}
2822#[test]
2823fn bindgen_test_layout___pthread_mutex_s() {
2824    assert_eq!(
2825        ::std::mem::size_of::<__pthread_mutex_s>(),
2826        40usize,
2827        concat!("Size of: ", stringify!(__pthread_mutex_s))
2828    );
2829    assert_eq!(
2830        ::std::mem::align_of::<__pthread_mutex_s>(),
2831        8usize,
2832        concat!("Alignment of ", stringify!(__pthread_mutex_s))
2833    );
2834    assert_eq!(
2835        unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__lock as *const _ as usize },
2836        0usize,
2837        concat!(
2838            "Offset of field: ",
2839            stringify!(__pthread_mutex_s),
2840            "::",
2841            stringify!(__lock)
2842        )
2843    );
2844    assert_eq!(
2845        unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__count as *const _ as usize },
2846        4usize,
2847        concat!(
2848            "Offset of field: ",
2849            stringify!(__pthread_mutex_s),
2850            "::",
2851            stringify!(__count)
2852        )
2853    );
2854    assert_eq!(
2855        unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__owner as *const _ as usize },
2856        8usize,
2857        concat!(
2858            "Offset of field: ",
2859            stringify!(__pthread_mutex_s),
2860            "::",
2861            stringify!(__owner)
2862        )
2863    );
2864    assert_eq!(
2865        unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__nusers as *const _ as usize },
2866        12usize,
2867        concat!(
2868            "Offset of field: ",
2869            stringify!(__pthread_mutex_s),
2870            "::",
2871            stringify!(__nusers)
2872        )
2873    );
2874    assert_eq!(
2875        unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__kind as *const _ as usize },
2876        16usize,
2877        concat!(
2878            "Offset of field: ",
2879            stringify!(__pthread_mutex_s),
2880            "::",
2881            stringify!(__kind)
2882        )
2883    );
2884    assert_eq!(
2885        unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__spins as *const _ as usize },
2886        20usize,
2887        concat!(
2888            "Offset of field: ",
2889            stringify!(__pthread_mutex_s),
2890            "::",
2891            stringify!(__spins)
2892        )
2893    );
2894    assert_eq!(
2895        unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__elision as *const _ as usize },
2896        22usize,
2897        concat!(
2898            "Offset of field: ",
2899            stringify!(__pthread_mutex_s),
2900            "::",
2901            stringify!(__elision)
2902        )
2903    );
2904    assert_eq!(
2905        unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__list as *const _ as usize },
2906        24usize,
2907        concat!(
2908            "Offset of field: ",
2909            stringify!(__pthread_mutex_s),
2910            "::",
2911            stringify!(__list)
2912        )
2913    );
2914}
2915#[repr(C)]
2916#[derive(Copy, Clone)]
2917pub struct __pthread_cond_s {
2918    pub __bindgen_anon_1: __pthread_cond_s__bindgen_ty_1,
2919    pub __bindgen_anon_2: __pthread_cond_s__bindgen_ty_2,
2920    pub __g_refs: [::std::os::raw::c_uint; 2usize],
2921    pub __g_size: [::std::os::raw::c_uint; 2usize],
2922    pub __g1_orig_size: ::std::os::raw::c_uint,
2923    pub __wrefs: ::std::os::raw::c_uint,
2924    pub __g_signals: [::std::os::raw::c_uint; 2usize],
2925}
2926#[repr(C)]
2927#[derive(Copy, Clone)]
2928pub union __pthread_cond_s__bindgen_ty_1 {
2929    pub __wseq: ::std::os::raw::c_ulonglong,
2930    pub __wseq32: __pthread_cond_s__bindgen_ty_1__bindgen_ty_1,
2931    _bindgen_union_align: u64,
2932}
2933#[repr(C)]
2934#[derive(Debug, Copy, Clone)]
2935pub struct __pthread_cond_s__bindgen_ty_1__bindgen_ty_1 {
2936    pub __low: ::std::os::raw::c_uint,
2937    pub __high: ::std::os::raw::c_uint,
2938}
2939#[test]
2940fn bindgen_test_layout___pthread_cond_s__bindgen_ty_1__bindgen_ty_1() {
2941    assert_eq!(
2942        ::std::mem::size_of::<__pthread_cond_s__bindgen_ty_1__bindgen_ty_1>(),
2943        8usize,
2944        concat!(
2945            "Size of: ",
2946            stringify!(__pthread_cond_s__bindgen_ty_1__bindgen_ty_1)
2947        )
2948    );
2949    assert_eq!(
2950        ::std::mem::align_of::<__pthread_cond_s__bindgen_ty_1__bindgen_ty_1>(),
2951        4usize,
2952        concat!(
2953            "Alignment of ",
2954            stringify!(__pthread_cond_s__bindgen_ty_1__bindgen_ty_1)
2955        )
2956    );
2957    assert_eq!(
2958        unsafe {
2959            &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_1__bindgen_ty_1>())).__low
2960                as *const _ as usize
2961        },
2962        0usize,
2963        concat!(
2964            "Offset of field: ",
2965            stringify!(__pthread_cond_s__bindgen_ty_1__bindgen_ty_1),
2966            "::",
2967            stringify!(__low)
2968        )
2969    );
2970    assert_eq!(
2971        unsafe {
2972            &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_1__bindgen_ty_1>())).__high
2973                as *const _ as usize
2974        },
2975        4usize,
2976        concat!(
2977            "Offset of field: ",
2978            stringify!(__pthread_cond_s__bindgen_ty_1__bindgen_ty_1),
2979            "::",
2980            stringify!(__high)
2981        )
2982    );
2983}
2984#[test]
2985fn bindgen_test_layout___pthread_cond_s__bindgen_ty_1() {
2986    assert_eq!(
2987        ::std::mem::size_of::<__pthread_cond_s__bindgen_ty_1>(),
2988        8usize,
2989        concat!("Size of: ", stringify!(__pthread_cond_s__bindgen_ty_1))
2990    );
2991    assert_eq!(
2992        ::std::mem::align_of::<__pthread_cond_s__bindgen_ty_1>(),
2993        8usize,
2994        concat!("Alignment of ", stringify!(__pthread_cond_s__bindgen_ty_1))
2995    );
2996    assert_eq!(
2997        unsafe {
2998            &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_1>())).__wseq as *const _ as usize
2999        },
3000        0usize,
3001        concat!(
3002            "Offset of field: ",
3003            stringify!(__pthread_cond_s__bindgen_ty_1),
3004            "::",
3005            stringify!(__wseq)
3006        )
3007    );
3008    assert_eq!(
3009        unsafe {
3010            &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_1>())).__wseq32 as *const _ as usize
3011        },
3012        0usize,
3013        concat!(
3014            "Offset of field: ",
3015            stringify!(__pthread_cond_s__bindgen_ty_1),
3016            "::",
3017            stringify!(__wseq32)
3018        )
3019    );
3020}
3021#[repr(C)]
3022#[derive(Copy, Clone)]
3023pub union __pthread_cond_s__bindgen_ty_2 {
3024    pub __g1_start: ::std::os::raw::c_ulonglong,
3025    pub __g1_start32: __pthread_cond_s__bindgen_ty_2__bindgen_ty_1,
3026    _bindgen_union_align: u64,
3027}
3028#[repr(C)]
3029#[derive(Debug, Copy, Clone)]
3030pub struct __pthread_cond_s__bindgen_ty_2__bindgen_ty_1 {
3031    pub __low: ::std::os::raw::c_uint,
3032    pub __high: ::std::os::raw::c_uint,
3033}
3034#[test]
3035fn bindgen_test_layout___pthread_cond_s__bindgen_ty_2__bindgen_ty_1() {
3036    assert_eq!(
3037        ::std::mem::size_of::<__pthread_cond_s__bindgen_ty_2__bindgen_ty_1>(),
3038        8usize,
3039        concat!(
3040            "Size of: ",
3041            stringify!(__pthread_cond_s__bindgen_ty_2__bindgen_ty_1)
3042        )
3043    );
3044    assert_eq!(
3045        ::std::mem::align_of::<__pthread_cond_s__bindgen_ty_2__bindgen_ty_1>(),
3046        4usize,
3047        concat!(
3048            "Alignment of ",
3049            stringify!(__pthread_cond_s__bindgen_ty_2__bindgen_ty_1)
3050        )
3051    );
3052    assert_eq!(
3053        unsafe {
3054            &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_2__bindgen_ty_1>())).__low
3055                as *const _ as usize
3056        },
3057        0usize,
3058        concat!(
3059            "Offset of field: ",
3060            stringify!(__pthread_cond_s__bindgen_ty_2__bindgen_ty_1),
3061            "::",
3062            stringify!(__low)
3063        )
3064    );
3065    assert_eq!(
3066        unsafe {
3067            &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_2__bindgen_ty_1>())).__high
3068                as *const _ as usize
3069        },
3070        4usize,
3071        concat!(
3072            "Offset of field: ",
3073            stringify!(__pthread_cond_s__bindgen_ty_2__bindgen_ty_1),
3074            "::",
3075            stringify!(__high)
3076        )
3077    );
3078}
3079#[test]
3080fn bindgen_test_layout___pthread_cond_s__bindgen_ty_2() {
3081    assert_eq!(
3082        ::std::mem::size_of::<__pthread_cond_s__bindgen_ty_2>(),
3083        8usize,
3084        concat!("Size of: ", stringify!(__pthread_cond_s__bindgen_ty_2))
3085    );
3086    assert_eq!(
3087        ::std::mem::align_of::<__pthread_cond_s__bindgen_ty_2>(),
3088        8usize,
3089        concat!("Alignment of ", stringify!(__pthread_cond_s__bindgen_ty_2))
3090    );
3091    assert_eq!(
3092        unsafe {
3093            &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_2>())).__g1_start as *const _
3094                as usize
3095        },
3096        0usize,
3097        concat!(
3098            "Offset of field: ",
3099            stringify!(__pthread_cond_s__bindgen_ty_2),
3100            "::",
3101            stringify!(__g1_start)
3102        )
3103    );
3104    assert_eq!(
3105        unsafe {
3106            &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_2>())).__g1_start32 as *const _
3107                as usize
3108        },
3109        0usize,
3110        concat!(
3111            "Offset of field: ",
3112            stringify!(__pthread_cond_s__bindgen_ty_2),
3113            "::",
3114            stringify!(__g1_start32)
3115        )
3116    );
3117}
3118#[test]
3119fn bindgen_test_layout___pthread_cond_s() {
3120    assert_eq!(
3121        ::std::mem::size_of::<__pthread_cond_s>(),
3122        48usize,
3123        concat!("Size of: ", stringify!(__pthread_cond_s))
3124    );
3125    assert_eq!(
3126        ::std::mem::align_of::<__pthread_cond_s>(),
3127        8usize,
3128        concat!("Alignment of ", stringify!(__pthread_cond_s))
3129    );
3130    assert_eq!(
3131        unsafe { &(*(::std::ptr::null::<__pthread_cond_s>())).__g_refs as *const _ as usize },
3132        16usize,
3133        concat!(
3134            "Offset of field: ",
3135            stringify!(__pthread_cond_s),
3136            "::",
3137            stringify!(__g_refs)
3138        )
3139    );
3140    assert_eq!(
3141        unsafe { &(*(::std::ptr::null::<__pthread_cond_s>())).__g_size as *const _ as usize },
3142        24usize,
3143        concat!(
3144            "Offset of field: ",
3145            stringify!(__pthread_cond_s),
3146            "::",
3147            stringify!(__g_size)
3148        )
3149    );
3150    assert_eq!(
3151        unsafe { &(*(::std::ptr::null::<__pthread_cond_s>())).__g1_orig_size as *const _ as usize },
3152        32usize,
3153        concat!(
3154            "Offset of field: ",
3155            stringify!(__pthread_cond_s),
3156            "::",
3157            stringify!(__g1_orig_size)
3158        )
3159    );
3160    assert_eq!(
3161        unsafe { &(*(::std::ptr::null::<__pthread_cond_s>())).__wrefs as *const _ as usize },
3162        36usize,
3163        concat!(
3164            "Offset of field: ",
3165            stringify!(__pthread_cond_s),
3166            "::",
3167            stringify!(__wrefs)
3168        )
3169    );
3170    assert_eq!(
3171        unsafe { &(*(::std::ptr::null::<__pthread_cond_s>())).__g_signals as *const _ as usize },
3172        40usize,
3173        concat!(
3174            "Offset of field: ",
3175            stringify!(__pthread_cond_s),
3176            "::",
3177            stringify!(__g_signals)
3178        )
3179    );
3180}
3181pub type pthread_t = ::std::os::raw::c_ulong;
3182#[repr(C)]
3183#[derive(Copy, Clone)]
3184pub union pthread_mutexattr_t {
3185    pub __size: [::std::os::raw::c_char; 4usize],
3186    pub __align: ::std::os::raw::c_int,
3187    _bindgen_union_align: u32,
3188}
3189#[test]
3190fn bindgen_test_layout_pthread_mutexattr_t() {
3191    assert_eq!(
3192        ::std::mem::size_of::<pthread_mutexattr_t>(),
3193        4usize,
3194        concat!("Size of: ", stringify!(pthread_mutexattr_t))
3195    );
3196    assert_eq!(
3197        ::std::mem::align_of::<pthread_mutexattr_t>(),
3198        4usize,
3199        concat!("Alignment of ", stringify!(pthread_mutexattr_t))
3200    );
3201    assert_eq!(
3202        unsafe { &(*(::std::ptr::null::<pthread_mutexattr_t>())).__size as *const _ as usize },
3203        0usize,
3204        concat!(
3205            "Offset of field: ",
3206            stringify!(pthread_mutexattr_t),
3207            "::",
3208            stringify!(__size)
3209        )
3210    );
3211    assert_eq!(
3212        unsafe { &(*(::std::ptr::null::<pthread_mutexattr_t>())).__align as *const _ as usize },
3213        0usize,
3214        concat!(
3215            "Offset of field: ",
3216            stringify!(pthread_mutexattr_t),
3217            "::",
3218            stringify!(__align)
3219        )
3220    );
3221}
3222#[repr(C)]
3223#[derive(Copy, Clone)]
3224pub union pthread_condattr_t {
3225    pub __size: [::std::os::raw::c_char; 4usize],
3226    pub __align: ::std::os::raw::c_int,
3227    _bindgen_union_align: u32,
3228}
3229#[test]
3230fn bindgen_test_layout_pthread_condattr_t() {
3231    assert_eq!(
3232        ::std::mem::size_of::<pthread_condattr_t>(),
3233        4usize,
3234        concat!("Size of: ", stringify!(pthread_condattr_t))
3235    );
3236    assert_eq!(
3237        ::std::mem::align_of::<pthread_condattr_t>(),
3238        4usize,
3239        concat!("Alignment of ", stringify!(pthread_condattr_t))
3240    );
3241    assert_eq!(
3242        unsafe { &(*(::std::ptr::null::<pthread_condattr_t>())).__size as *const _ as usize },
3243        0usize,
3244        concat!(
3245            "Offset of field: ",
3246            stringify!(pthread_condattr_t),
3247            "::",
3248            stringify!(__size)
3249        )
3250    );
3251    assert_eq!(
3252        unsafe { &(*(::std::ptr::null::<pthread_condattr_t>())).__align as *const _ as usize },
3253        0usize,
3254        concat!(
3255            "Offset of field: ",
3256            stringify!(pthread_condattr_t),
3257            "::",
3258            stringify!(__align)
3259        )
3260    );
3261}
3262pub type pthread_key_t = ::std::os::raw::c_uint;
3263pub type pthread_once_t = ::std::os::raw::c_int;
3264#[repr(C)]
3265#[derive(Copy, Clone)]
3266pub union pthread_attr_t {
3267    pub __size: [::std::os::raw::c_char; 56usize],
3268    pub __align: ::std::os::raw::c_long,
3269    _bindgen_union_align: [u64; 7usize],
3270}
3271#[test]
3272fn bindgen_test_layout_pthread_attr_t() {
3273    assert_eq!(
3274        ::std::mem::size_of::<pthread_attr_t>(),
3275        56usize,
3276        concat!("Size of: ", stringify!(pthread_attr_t))
3277    );
3278    assert_eq!(
3279        ::std::mem::align_of::<pthread_attr_t>(),
3280        8usize,
3281        concat!("Alignment of ", stringify!(pthread_attr_t))
3282    );
3283    assert_eq!(
3284        unsafe { &(*(::std::ptr::null::<pthread_attr_t>())).__size as *const _ as usize },
3285        0usize,
3286        concat!(
3287            "Offset of field: ",
3288            stringify!(pthread_attr_t),
3289            "::",
3290            stringify!(__size)
3291        )
3292    );
3293    assert_eq!(
3294        unsafe { &(*(::std::ptr::null::<pthread_attr_t>())).__align as *const _ as usize },
3295        0usize,
3296        concat!(
3297            "Offset of field: ",
3298            stringify!(pthread_attr_t),
3299            "::",
3300            stringify!(__align)
3301        )
3302    );
3303}
3304#[repr(C)]
3305#[derive(Copy, Clone)]
3306pub union pthread_mutex_t {
3307    pub __data: __pthread_mutex_s,
3308    pub __size: [::std::os::raw::c_char; 40usize],
3309    pub __align: ::std::os::raw::c_long,
3310    _bindgen_union_align: [u64; 5usize],
3311}
3312#[test]
3313fn bindgen_test_layout_pthread_mutex_t() {
3314    assert_eq!(
3315        ::std::mem::size_of::<pthread_mutex_t>(),
3316        40usize,
3317        concat!("Size of: ", stringify!(pthread_mutex_t))
3318    );
3319    assert_eq!(
3320        ::std::mem::align_of::<pthread_mutex_t>(),
3321        8usize,
3322        concat!("Alignment of ", stringify!(pthread_mutex_t))
3323    );
3324    assert_eq!(
3325        unsafe { &(*(::std::ptr::null::<pthread_mutex_t>())).__data as *const _ as usize },
3326        0usize,
3327        concat!(
3328            "Offset of field: ",
3329            stringify!(pthread_mutex_t),
3330            "::",
3331            stringify!(__data)
3332        )
3333    );
3334    assert_eq!(
3335        unsafe { &(*(::std::ptr::null::<pthread_mutex_t>())).__size as *const _ as usize },
3336        0usize,
3337        concat!(
3338            "Offset of field: ",
3339            stringify!(pthread_mutex_t),
3340            "::",
3341            stringify!(__size)
3342        )
3343    );
3344    assert_eq!(
3345        unsafe { &(*(::std::ptr::null::<pthread_mutex_t>())).__align as *const _ as usize },
3346        0usize,
3347        concat!(
3348            "Offset of field: ",
3349            stringify!(pthread_mutex_t),
3350            "::",
3351            stringify!(__align)
3352        )
3353    );
3354}
3355#[repr(C)]
3356#[derive(Copy, Clone)]
3357pub union pthread_cond_t {
3358    pub __data: __pthread_cond_s,
3359    pub __size: [::std::os::raw::c_char; 48usize],
3360    pub __align: ::std::os::raw::c_longlong,
3361    _bindgen_union_align: [u64; 6usize],
3362}
3363#[test]
3364fn bindgen_test_layout_pthread_cond_t() {
3365    assert_eq!(
3366        ::std::mem::size_of::<pthread_cond_t>(),
3367        48usize,
3368        concat!("Size of: ", stringify!(pthread_cond_t))
3369    );
3370    assert_eq!(
3371        ::std::mem::align_of::<pthread_cond_t>(),
3372        8usize,
3373        concat!("Alignment of ", stringify!(pthread_cond_t))
3374    );
3375    assert_eq!(
3376        unsafe { &(*(::std::ptr::null::<pthread_cond_t>())).__data as *const _ as usize },
3377        0usize,
3378        concat!(
3379            "Offset of field: ",
3380            stringify!(pthread_cond_t),
3381            "::",
3382            stringify!(__data)
3383        )
3384    );
3385    assert_eq!(
3386        unsafe { &(*(::std::ptr::null::<pthread_cond_t>())).__size as *const _ as usize },
3387        0usize,
3388        concat!(
3389            "Offset of field: ",
3390            stringify!(pthread_cond_t),
3391            "::",
3392            stringify!(__size)
3393        )
3394    );
3395    assert_eq!(
3396        unsafe { &(*(::std::ptr::null::<pthread_cond_t>())).__align as *const _ as usize },
3397        0usize,
3398        concat!(
3399            "Offset of field: ",
3400            stringify!(pthread_cond_t),
3401            "::",
3402            stringify!(__align)
3403        )
3404    );
3405}
3406#[repr(C)]
3407#[derive(Copy, Clone)]
3408pub union pthread_rwlock_t {
3409    pub __data: __pthread_rwlock_arch_t,
3410    pub __size: [::std::os::raw::c_char; 56usize],
3411    pub __align: ::std::os::raw::c_long,
3412    _bindgen_union_align: [u64; 7usize],
3413}
3414#[test]
3415fn bindgen_test_layout_pthread_rwlock_t() {
3416    assert_eq!(
3417        ::std::mem::size_of::<pthread_rwlock_t>(),
3418        56usize,
3419        concat!("Size of: ", stringify!(pthread_rwlock_t))
3420    );
3421    assert_eq!(
3422        ::std::mem::align_of::<pthread_rwlock_t>(),
3423        8usize,
3424        concat!("Alignment of ", stringify!(pthread_rwlock_t))
3425    );
3426    assert_eq!(
3427        unsafe { &(*(::std::ptr::null::<pthread_rwlock_t>())).__data as *const _ as usize },
3428        0usize,
3429        concat!(
3430            "Offset of field: ",
3431            stringify!(pthread_rwlock_t),
3432            "::",
3433            stringify!(__data)
3434        )
3435    );
3436    assert_eq!(
3437        unsafe { &(*(::std::ptr::null::<pthread_rwlock_t>())).__size as *const _ as usize },
3438        0usize,
3439        concat!(
3440            "Offset of field: ",
3441            stringify!(pthread_rwlock_t),
3442            "::",
3443            stringify!(__size)
3444        )
3445    );
3446    assert_eq!(
3447        unsafe { &(*(::std::ptr::null::<pthread_rwlock_t>())).__align as *const _ as usize },
3448        0usize,
3449        concat!(
3450            "Offset of field: ",
3451            stringify!(pthread_rwlock_t),
3452            "::",
3453            stringify!(__align)
3454        )
3455    );
3456}
3457#[repr(C)]
3458#[derive(Copy, Clone)]
3459pub union pthread_rwlockattr_t {
3460    pub __size: [::std::os::raw::c_char; 8usize],
3461    pub __align: ::std::os::raw::c_long,
3462    _bindgen_union_align: u64,
3463}
3464#[test]
3465fn bindgen_test_layout_pthread_rwlockattr_t() {
3466    assert_eq!(
3467        ::std::mem::size_of::<pthread_rwlockattr_t>(),
3468        8usize,
3469        concat!("Size of: ", stringify!(pthread_rwlockattr_t))
3470    );
3471    assert_eq!(
3472        ::std::mem::align_of::<pthread_rwlockattr_t>(),
3473        8usize,
3474        concat!("Alignment of ", stringify!(pthread_rwlockattr_t))
3475    );
3476    assert_eq!(
3477        unsafe { &(*(::std::ptr::null::<pthread_rwlockattr_t>())).__size as *const _ as usize },
3478        0usize,
3479        concat!(
3480            "Offset of field: ",
3481            stringify!(pthread_rwlockattr_t),
3482            "::",
3483            stringify!(__size)
3484        )
3485    );
3486    assert_eq!(
3487        unsafe { &(*(::std::ptr::null::<pthread_rwlockattr_t>())).__align as *const _ as usize },
3488        0usize,
3489        concat!(
3490            "Offset of field: ",
3491            stringify!(pthread_rwlockattr_t),
3492            "::",
3493            stringify!(__align)
3494        )
3495    );
3496}
3497pub type pthread_spinlock_t = ::std::os::raw::c_int;
3498#[repr(C)]
3499#[derive(Copy, Clone)]
3500pub union pthread_barrier_t {
3501    pub __size: [::std::os::raw::c_char; 32usize],
3502    pub __align: ::std::os::raw::c_long,
3503    _bindgen_union_align: [u64; 4usize],
3504}
3505#[test]
3506fn bindgen_test_layout_pthread_barrier_t() {
3507    assert_eq!(
3508        ::std::mem::size_of::<pthread_barrier_t>(),
3509        32usize,
3510        concat!("Size of: ", stringify!(pthread_barrier_t))
3511    );
3512    assert_eq!(
3513        ::std::mem::align_of::<pthread_barrier_t>(),
3514        8usize,
3515        concat!("Alignment of ", stringify!(pthread_barrier_t))
3516    );
3517    assert_eq!(
3518        unsafe { &(*(::std::ptr::null::<pthread_barrier_t>())).__size as *const _ as usize },
3519        0usize,
3520        concat!(
3521            "Offset of field: ",
3522            stringify!(pthread_barrier_t),
3523            "::",
3524            stringify!(__size)
3525        )
3526    );
3527    assert_eq!(
3528        unsafe { &(*(::std::ptr::null::<pthread_barrier_t>())).__align as *const _ as usize },
3529        0usize,
3530        concat!(
3531            "Offset of field: ",
3532            stringify!(pthread_barrier_t),
3533            "::",
3534            stringify!(__align)
3535        )
3536    );
3537}
3538#[repr(C)]
3539#[derive(Copy, Clone)]
3540pub union pthread_barrierattr_t {
3541    pub __size: [::std::os::raw::c_char; 4usize],
3542    pub __align: ::std::os::raw::c_int,
3543    _bindgen_union_align: u32,
3544}
3545#[test]
3546fn bindgen_test_layout_pthread_barrierattr_t() {
3547    assert_eq!(
3548        ::std::mem::size_of::<pthread_barrierattr_t>(),
3549        4usize,
3550        concat!("Size of: ", stringify!(pthread_barrierattr_t))
3551    );
3552    assert_eq!(
3553        ::std::mem::align_of::<pthread_barrierattr_t>(),
3554        4usize,
3555        concat!("Alignment of ", stringify!(pthread_barrierattr_t))
3556    );
3557    assert_eq!(
3558        unsafe { &(*(::std::ptr::null::<pthread_barrierattr_t>())).__size as *const _ as usize },
3559        0usize,
3560        concat!(
3561            "Offset of field: ",
3562            stringify!(pthread_barrierattr_t),
3563            "::",
3564            stringify!(__size)
3565        )
3566    );
3567    assert_eq!(
3568        unsafe { &(*(::std::ptr::null::<pthread_barrierattr_t>())).__align as *const _ as usize },
3569        0usize,
3570        concat!(
3571            "Offset of field: ",
3572            stringify!(pthread_barrierattr_t),
3573            "::",
3574            stringify!(__align)
3575        )
3576    );
3577}
3578pub type sig_atomic_t = __sig_atomic_t;
3579#[repr(C)]
3580#[derive(Copy, Clone)]
3581pub union sigval {
3582    pub sival_int: ::std::os::raw::c_int,
3583    pub sival_ptr: *mut ::std::os::raw::c_void,
3584    _bindgen_union_align: u64,
3585}
3586#[test]
3587fn bindgen_test_layout_sigval() {
3588    assert_eq!(
3589        ::std::mem::size_of::<sigval>(),
3590        8usize,
3591        concat!("Size of: ", stringify!(sigval))
3592    );
3593    assert_eq!(
3594        ::std::mem::align_of::<sigval>(),
3595        8usize,
3596        concat!("Alignment of ", stringify!(sigval))
3597    );
3598    assert_eq!(
3599        unsafe { &(*(::std::ptr::null::<sigval>())).sival_int as *const _ as usize },
3600        0usize,
3601        concat!(
3602            "Offset of field: ",
3603            stringify!(sigval),
3604            "::",
3605            stringify!(sival_int)
3606        )
3607    );
3608    assert_eq!(
3609        unsafe { &(*(::std::ptr::null::<sigval>())).sival_ptr as *const _ as usize },
3610        0usize,
3611        concat!(
3612            "Offset of field: ",
3613            stringify!(sigval),
3614            "::",
3615            stringify!(sival_ptr)
3616        )
3617    );
3618}
3619pub type __sigval_t = sigval;
3620#[repr(C)]
3621#[derive(Copy, Clone)]
3622pub struct siginfo_t {
3623    pub si_signo: ::std::os::raw::c_int,
3624    pub si_errno: ::std::os::raw::c_int,
3625    pub si_code: ::std::os::raw::c_int,
3626    pub __pad0: ::std::os::raw::c_int,
3627    pub _sifields: siginfo_t__bindgen_ty_1,
3628}
3629#[repr(C)]
3630#[derive(Copy, Clone)]
3631pub union siginfo_t__bindgen_ty_1 {
3632    pub _pad: [::std::os::raw::c_int; 28usize],
3633    pub _kill: siginfo_t__bindgen_ty_1__bindgen_ty_1,
3634    pub _timer: siginfo_t__bindgen_ty_1__bindgen_ty_2,
3635    pub _rt: siginfo_t__bindgen_ty_1__bindgen_ty_3,
3636    pub _sigchld: siginfo_t__bindgen_ty_1__bindgen_ty_4,
3637    pub _sigfault: siginfo_t__bindgen_ty_1__bindgen_ty_5,
3638    pub _sigpoll: siginfo_t__bindgen_ty_1__bindgen_ty_6,
3639    pub _sigsys: siginfo_t__bindgen_ty_1__bindgen_ty_7,
3640    _bindgen_union_align: [u64; 14usize],
3641}
3642#[repr(C)]
3643#[derive(Debug, Copy, Clone)]
3644pub struct siginfo_t__bindgen_ty_1__bindgen_ty_1 {
3645    pub si_pid: __pid_t,
3646    pub si_uid: __uid_t,
3647}
3648#[test]
3649fn bindgen_test_layout_siginfo_t__bindgen_ty_1__bindgen_ty_1() {
3650    assert_eq!(
3651        ::std::mem::size_of::<siginfo_t__bindgen_ty_1__bindgen_ty_1>(),
3652        8usize,
3653        concat!(
3654            "Size of: ",
3655            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_1)
3656        )
3657    );
3658    assert_eq!(
3659        ::std::mem::align_of::<siginfo_t__bindgen_ty_1__bindgen_ty_1>(),
3660        4usize,
3661        concat!(
3662            "Alignment of ",
3663            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_1)
3664        )
3665    );
3666    assert_eq!(
3667        unsafe {
3668            &(*(::std::ptr::null::<siginfo_t__bindgen_ty_1__bindgen_ty_1>())).si_pid as *const _
3669                as usize
3670        },
3671        0usize,
3672        concat!(
3673            "Offset of field: ",
3674            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_1),
3675            "::",
3676            stringify!(si_pid)
3677        )
3678    );
3679    assert_eq!(
3680        unsafe {
3681            &(*(::std::ptr::null::<siginfo_t__bindgen_ty_1__bindgen_ty_1>())).si_uid as *const _
3682                as usize
3683        },
3684        4usize,
3685        concat!(
3686            "Offset of field: ",
3687            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_1),
3688            "::",
3689            stringify!(si_uid)
3690        )
3691    );
3692}
3693#[repr(C)]
3694#[derive(Copy, Clone)]
3695pub struct siginfo_t__bindgen_ty_1__bindgen_ty_2 {
3696    pub si_tid: ::std::os::raw::c_int,
3697    pub si_overrun: ::std::os::raw::c_int,
3698    pub si_sigval: __sigval_t,
3699}
3700#[test]
3701fn bindgen_test_layout_siginfo_t__bindgen_ty_1__bindgen_ty_2() {
3702    assert_eq!(
3703        ::std::mem::size_of::<siginfo_t__bindgen_ty_1__bindgen_ty_2>(),
3704        16usize,
3705        concat!(
3706            "Size of: ",
3707            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_2)
3708        )
3709    );
3710    assert_eq!(
3711        ::std::mem::align_of::<siginfo_t__bindgen_ty_1__bindgen_ty_2>(),
3712        8usize,
3713        concat!(
3714            "Alignment of ",
3715            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_2)
3716        )
3717    );
3718    assert_eq!(
3719        unsafe {
3720            &(*(::std::ptr::null::<siginfo_t__bindgen_ty_1__bindgen_ty_2>())).si_tid as *const _
3721                as usize
3722        },
3723        0usize,
3724        concat!(
3725            "Offset of field: ",
3726            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_2),
3727            "::",
3728            stringify!(si_tid)
3729        )
3730    );
3731    assert_eq!(
3732        unsafe {
3733            &(*(::std::ptr::null::<siginfo_t__bindgen_ty_1__bindgen_ty_2>())).si_overrun as *const _
3734                as usize
3735        },
3736        4usize,
3737        concat!(
3738            "Offset of field: ",
3739            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_2),
3740            "::",
3741            stringify!(si_overrun)
3742        )
3743    );
3744    assert_eq!(
3745        unsafe {
3746            &(*(::std::ptr::null::<siginfo_t__bindgen_ty_1__bindgen_ty_2>())).si_sigval as *const _
3747                as usize
3748        },
3749        8usize,
3750        concat!(
3751            "Offset of field: ",
3752            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_2),
3753            "::",
3754            stringify!(si_sigval)
3755        )
3756    );
3757}
3758#[repr(C)]
3759#[derive(Copy, Clone)]
3760pub struct siginfo_t__bindgen_ty_1__bindgen_ty_3 {
3761    pub si_pid: __pid_t,
3762    pub si_uid: __uid_t,
3763    pub si_sigval: __sigval_t,
3764}
3765#[test]
3766fn bindgen_test_layout_siginfo_t__bindgen_ty_1__bindgen_ty_3() {
3767    assert_eq!(
3768        ::std::mem::size_of::<siginfo_t__bindgen_ty_1__bindgen_ty_3>(),
3769        16usize,
3770        concat!(
3771            "Size of: ",
3772            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_3)
3773        )
3774    );
3775    assert_eq!(
3776        ::std::mem::align_of::<siginfo_t__bindgen_ty_1__bindgen_ty_3>(),
3777        8usize,
3778        concat!(
3779            "Alignment of ",
3780            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_3)
3781        )
3782    );
3783    assert_eq!(
3784        unsafe {
3785            &(*(::std::ptr::null::<siginfo_t__bindgen_ty_1__bindgen_ty_3>())).si_pid as *const _
3786                as usize
3787        },
3788        0usize,
3789        concat!(
3790            "Offset of field: ",
3791            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_3),
3792            "::",
3793            stringify!(si_pid)
3794        )
3795    );
3796    assert_eq!(
3797        unsafe {
3798            &(*(::std::ptr::null::<siginfo_t__bindgen_ty_1__bindgen_ty_3>())).si_uid as *const _
3799                as usize
3800        },
3801        4usize,
3802        concat!(
3803            "Offset of field: ",
3804            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_3),
3805            "::",
3806            stringify!(si_uid)
3807        )
3808    );
3809    assert_eq!(
3810        unsafe {
3811            &(*(::std::ptr::null::<siginfo_t__bindgen_ty_1__bindgen_ty_3>())).si_sigval as *const _
3812                as usize
3813        },
3814        8usize,
3815        concat!(
3816            "Offset of field: ",
3817            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_3),
3818            "::",
3819            stringify!(si_sigval)
3820        )
3821    );
3822}
3823#[repr(C)]
3824#[derive(Debug, Copy, Clone)]
3825pub struct siginfo_t__bindgen_ty_1__bindgen_ty_4 {
3826    pub si_pid: __pid_t,
3827    pub si_uid: __uid_t,
3828    pub si_status: ::std::os::raw::c_int,
3829    pub si_utime: __clock_t,
3830    pub si_stime: __clock_t,
3831}
3832#[test]
3833fn bindgen_test_layout_siginfo_t__bindgen_ty_1__bindgen_ty_4() {
3834    assert_eq!(
3835        ::std::mem::size_of::<siginfo_t__bindgen_ty_1__bindgen_ty_4>(),
3836        32usize,
3837        concat!(
3838            "Size of: ",
3839            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_4)
3840        )
3841    );
3842    assert_eq!(
3843        ::std::mem::align_of::<siginfo_t__bindgen_ty_1__bindgen_ty_4>(),
3844        8usize,
3845        concat!(
3846            "Alignment of ",
3847            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_4)
3848        )
3849    );
3850    assert_eq!(
3851        unsafe {
3852            &(*(::std::ptr::null::<siginfo_t__bindgen_ty_1__bindgen_ty_4>())).si_pid as *const _
3853                as usize
3854        },
3855        0usize,
3856        concat!(
3857            "Offset of field: ",
3858            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_4),
3859            "::",
3860            stringify!(si_pid)
3861        )
3862    );
3863    assert_eq!(
3864        unsafe {
3865            &(*(::std::ptr::null::<siginfo_t__bindgen_ty_1__bindgen_ty_4>())).si_uid as *const _
3866                as usize
3867        },
3868        4usize,
3869        concat!(
3870            "Offset of field: ",
3871            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_4),
3872            "::",
3873            stringify!(si_uid)
3874        )
3875    );
3876    assert_eq!(
3877        unsafe {
3878            &(*(::std::ptr::null::<siginfo_t__bindgen_ty_1__bindgen_ty_4>())).si_status as *const _
3879                as usize
3880        },
3881        8usize,
3882        concat!(
3883            "Offset of field: ",
3884            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_4),
3885            "::",
3886            stringify!(si_status)
3887        )
3888    );
3889    assert_eq!(
3890        unsafe {
3891            &(*(::std::ptr::null::<siginfo_t__bindgen_ty_1__bindgen_ty_4>())).si_utime as *const _
3892                as usize
3893        },
3894        16usize,
3895        concat!(
3896            "Offset of field: ",
3897            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_4),
3898            "::",
3899            stringify!(si_utime)
3900        )
3901    );
3902    assert_eq!(
3903        unsafe {
3904            &(*(::std::ptr::null::<siginfo_t__bindgen_ty_1__bindgen_ty_4>())).si_stime as *const _
3905                as usize
3906        },
3907        24usize,
3908        concat!(
3909            "Offset of field: ",
3910            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_4),
3911            "::",
3912            stringify!(si_stime)
3913        )
3914    );
3915}
3916#[repr(C)]
3917#[derive(Copy, Clone)]
3918pub struct siginfo_t__bindgen_ty_1__bindgen_ty_5 {
3919    pub si_addr: *mut ::std::os::raw::c_void,
3920    pub si_addr_lsb: ::std::os::raw::c_short,
3921    pub _bounds: siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1,
3922}
3923#[repr(C)]
3924#[derive(Copy, Clone)]
3925pub union siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1 {
3926    pub _addr_bnd: siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1,
3927    pub _pkey: __uint32_t,
3928    _bindgen_union_align: [u64; 2usize],
3929}
3930#[repr(C)]
3931#[derive(Debug, Copy, Clone)]
3932pub struct siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 {
3933    pub _lower: *mut ::std::os::raw::c_void,
3934    pub _upper: *mut ::std::os::raw::c_void,
3935}
3936#[test]
3937fn bindgen_test_layout_siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1() {
3938    assert_eq!(
3939        ::std::mem::size_of::<siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1>(),
3940        16usize,
3941        concat!(
3942            "Size of: ",
3943            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1)
3944        )
3945    );
3946    assert_eq!(
3947        ::std::mem::align_of::<siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1>(),
3948        8usize,
3949        concat!(
3950            "Alignment of ",
3951            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1)
3952        )
3953    );
3954    assert_eq!(
3955        unsafe {
3956            &(*(::std::ptr::null::<
3957                siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1,
3958            >()))
3959            ._lower as *const _ as usize
3960        },
3961        0usize,
3962        concat!(
3963            "Offset of field: ",
3964            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1),
3965            "::",
3966            stringify!(_lower)
3967        )
3968    );
3969    assert_eq!(
3970        unsafe {
3971            &(*(::std::ptr::null::<
3972                siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1,
3973            >()))
3974            ._upper as *const _ as usize
3975        },
3976        8usize,
3977        concat!(
3978            "Offset of field: ",
3979            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1),
3980            "::",
3981            stringify!(_upper)
3982        )
3983    );
3984}
3985#[test]
3986fn bindgen_test_layout_siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1() {
3987    assert_eq!(
3988        ::std::mem::size_of::<siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1>(),
3989        16usize,
3990        concat!(
3991            "Size of: ",
3992            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1)
3993        )
3994    );
3995    assert_eq!(
3996        ::std::mem::align_of::<siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1>(),
3997        8usize,
3998        concat!(
3999            "Alignment of ",
4000            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1)
4001        )
4002    );
4003    assert_eq!(
4004        unsafe {
4005            &(*(::std::ptr::null::<siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1>()))
4006                ._addr_bnd as *const _ as usize
4007        },
4008        0usize,
4009        concat!(
4010            "Offset of field: ",
4011            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1),
4012            "::",
4013            stringify!(_addr_bnd)
4014        )
4015    );
4016    assert_eq!(
4017        unsafe {
4018            &(*(::std::ptr::null::<siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1>()))._pkey
4019                as *const _ as usize
4020        },
4021        0usize,
4022        concat!(
4023            "Offset of field: ",
4024            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1),
4025            "::",
4026            stringify!(_pkey)
4027        )
4028    );
4029}
4030#[test]
4031fn bindgen_test_layout_siginfo_t__bindgen_ty_1__bindgen_ty_5() {
4032    assert_eq!(
4033        ::std::mem::size_of::<siginfo_t__bindgen_ty_1__bindgen_ty_5>(),
4034        32usize,
4035        concat!(
4036            "Size of: ",
4037            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_5)
4038        )
4039    );
4040    assert_eq!(
4041        ::std::mem::align_of::<siginfo_t__bindgen_ty_1__bindgen_ty_5>(),
4042        8usize,
4043        concat!(
4044            "Alignment of ",
4045            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_5)
4046        )
4047    );
4048    assert_eq!(
4049        unsafe {
4050            &(*(::std::ptr::null::<siginfo_t__bindgen_ty_1__bindgen_ty_5>())).si_addr as *const _
4051                as usize
4052        },
4053        0usize,
4054        concat!(
4055            "Offset of field: ",
4056            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_5),
4057            "::",
4058            stringify!(si_addr)
4059        )
4060    );
4061    assert_eq!(
4062        unsafe {
4063            &(*(::std::ptr::null::<siginfo_t__bindgen_ty_1__bindgen_ty_5>())).si_addr_lsb
4064                as *const _ as usize
4065        },
4066        8usize,
4067        concat!(
4068            "Offset of field: ",
4069            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_5),
4070            "::",
4071            stringify!(si_addr_lsb)
4072        )
4073    );
4074    assert_eq!(
4075        unsafe {
4076            &(*(::std::ptr::null::<siginfo_t__bindgen_ty_1__bindgen_ty_5>()))._bounds as *const _
4077                as usize
4078        },
4079        16usize,
4080        concat!(
4081            "Offset of field: ",
4082            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_5),
4083            "::",
4084            stringify!(_bounds)
4085        )
4086    );
4087}
4088#[repr(C)]
4089#[derive(Debug, Copy, Clone)]
4090pub struct siginfo_t__bindgen_ty_1__bindgen_ty_6 {
4091    pub si_band: ::std::os::raw::c_long,
4092    pub si_fd: ::std::os::raw::c_int,
4093}
4094#[test]
4095fn bindgen_test_layout_siginfo_t__bindgen_ty_1__bindgen_ty_6() {
4096    assert_eq!(
4097        ::std::mem::size_of::<siginfo_t__bindgen_ty_1__bindgen_ty_6>(),
4098        16usize,
4099        concat!(
4100            "Size of: ",
4101            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_6)
4102        )
4103    );
4104    assert_eq!(
4105        ::std::mem::align_of::<siginfo_t__bindgen_ty_1__bindgen_ty_6>(),
4106        8usize,
4107        concat!(
4108            "Alignment of ",
4109            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_6)
4110        )
4111    );
4112    assert_eq!(
4113        unsafe {
4114            &(*(::std::ptr::null::<siginfo_t__bindgen_ty_1__bindgen_ty_6>())).si_band as *const _
4115                as usize
4116        },
4117        0usize,
4118        concat!(
4119            "Offset of field: ",
4120            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_6),
4121            "::",
4122            stringify!(si_band)
4123        )
4124    );
4125    assert_eq!(
4126        unsafe {
4127            &(*(::std::ptr::null::<siginfo_t__bindgen_ty_1__bindgen_ty_6>())).si_fd as *const _
4128                as usize
4129        },
4130        8usize,
4131        concat!(
4132            "Offset of field: ",
4133            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_6),
4134            "::",
4135            stringify!(si_fd)
4136        )
4137    );
4138}
4139#[repr(C)]
4140#[derive(Debug, Copy, Clone)]
4141pub struct siginfo_t__bindgen_ty_1__bindgen_ty_7 {
4142    pub _call_addr: *mut ::std::os::raw::c_void,
4143    pub _syscall: ::std::os::raw::c_int,
4144    pub _arch: ::std::os::raw::c_uint,
4145}
4146#[test]
4147fn bindgen_test_layout_siginfo_t__bindgen_ty_1__bindgen_ty_7() {
4148    assert_eq!(
4149        ::std::mem::size_of::<siginfo_t__bindgen_ty_1__bindgen_ty_7>(),
4150        16usize,
4151        concat!(
4152            "Size of: ",
4153            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_7)
4154        )
4155    );
4156    assert_eq!(
4157        ::std::mem::align_of::<siginfo_t__bindgen_ty_1__bindgen_ty_7>(),
4158        8usize,
4159        concat!(
4160            "Alignment of ",
4161            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_7)
4162        )
4163    );
4164    assert_eq!(
4165        unsafe {
4166            &(*(::std::ptr::null::<siginfo_t__bindgen_ty_1__bindgen_ty_7>()))._call_addr as *const _
4167                as usize
4168        },
4169        0usize,
4170        concat!(
4171            "Offset of field: ",
4172            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_7),
4173            "::",
4174            stringify!(_call_addr)
4175        )
4176    );
4177    assert_eq!(
4178        unsafe {
4179            &(*(::std::ptr::null::<siginfo_t__bindgen_ty_1__bindgen_ty_7>()))._syscall as *const _
4180                as usize
4181        },
4182        8usize,
4183        concat!(
4184            "Offset of field: ",
4185            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_7),
4186            "::",
4187            stringify!(_syscall)
4188        )
4189    );
4190    assert_eq!(
4191        unsafe {
4192            &(*(::std::ptr::null::<siginfo_t__bindgen_ty_1__bindgen_ty_7>()))._arch as *const _
4193                as usize
4194        },
4195        12usize,
4196        concat!(
4197            "Offset of field: ",
4198            stringify!(siginfo_t__bindgen_ty_1__bindgen_ty_7),
4199            "::",
4200            stringify!(_arch)
4201        )
4202    );
4203}
4204#[test]
4205fn bindgen_test_layout_siginfo_t__bindgen_ty_1() {
4206    assert_eq!(
4207        ::std::mem::size_of::<siginfo_t__bindgen_ty_1>(),
4208        112usize,
4209        concat!("Size of: ", stringify!(siginfo_t__bindgen_ty_1))
4210    );
4211    assert_eq!(
4212        ::std::mem::align_of::<siginfo_t__bindgen_ty_1>(),
4213        8usize,
4214        concat!("Alignment of ", stringify!(siginfo_t__bindgen_ty_1))
4215    );
4216    assert_eq!(
4217        unsafe { &(*(::std::ptr::null::<siginfo_t__bindgen_ty_1>()))._pad as *const _ as usize },
4218        0usize,
4219        concat!(
4220            "Offset of field: ",
4221            stringify!(siginfo_t__bindgen_ty_1),
4222            "::",
4223            stringify!(_pad)
4224        )
4225    );
4226    assert_eq!(
4227        unsafe { &(*(::std::ptr::null::<siginfo_t__bindgen_ty_1>()))._kill as *const _ as usize },
4228        0usize,
4229        concat!(
4230            "Offset of field: ",
4231            stringify!(siginfo_t__bindgen_ty_1),
4232            "::",
4233            stringify!(_kill)
4234        )
4235    );
4236    assert_eq!(
4237        unsafe { &(*(::std::ptr::null::<siginfo_t__bindgen_ty_1>()))._timer as *const _ as usize },
4238        0usize,
4239        concat!(
4240            "Offset of field: ",
4241            stringify!(siginfo_t__bindgen_ty_1),
4242            "::",
4243            stringify!(_timer)
4244        )
4245    );
4246    assert_eq!(
4247        unsafe { &(*(::std::ptr::null::<siginfo_t__bindgen_ty_1>()))._rt as *const _ as usize },
4248        0usize,
4249        concat!(
4250            "Offset of field: ",
4251            stringify!(siginfo_t__bindgen_ty_1),
4252            "::",
4253            stringify!(_rt)
4254        )
4255    );
4256    assert_eq!(
4257        unsafe {
4258            &(*(::std::ptr::null::<siginfo_t__bindgen_ty_1>()))._sigchld as *const _ as usize
4259        },
4260        0usize,
4261        concat!(
4262            "Offset of field: ",
4263            stringify!(siginfo_t__bindgen_ty_1),
4264            "::",
4265            stringify!(_sigchld)
4266        )
4267    );
4268    assert_eq!(
4269        unsafe {
4270            &(*(::std::ptr::null::<siginfo_t__bindgen_ty_1>()))._sigfault as *const _ as usize
4271        },
4272        0usize,
4273        concat!(
4274            "Offset of field: ",
4275            stringify!(siginfo_t__bindgen_ty_1),
4276            "::",
4277            stringify!(_sigfault)
4278        )
4279    );
4280    assert_eq!(
4281        unsafe {
4282            &(*(::std::ptr::null::<siginfo_t__bindgen_ty_1>()))._sigpoll as *const _ as usize
4283        },
4284        0usize,
4285        concat!(
4286            "Offset of field: ",
4287            stringify!(siginfo_t__bindgen_ty_1),
4288            "::",
4289            stringify!(_sigpoll)
4290        )
4291    );
4292    assert_eq!(
4293        unsafe { &(*(::std::ptr::null::<siginfo_t__bindgen_ty_1>()))._sigsys as *const _ as usize },
4294        0usize,
4295        concat!(
4296            "Offset of field: ",
4297            stringify!(siginfo_t__bindgen_ty_1),
4298            "::",
4299            stringify!(_sigsys)
4300        )
4301    );
4302}
4303#[test]
4304fn bindgen_test_layout_siginfo_t() {
4305    assert_eq!(
4306        ::std::mem::size_of::<siginfo_t>(),
4307        128usize,
4308        concat!("Size of: ", stringify!(siginfo_t))
4309    );
4310    assert_eq!(
4311        ::std::mem::align_of::<siginfo_t>(),
4312        8usize,
4313        concat!("Alignment of ", stringify!(siginfo_t))
4314    );
4315    assert_eq!(
4316        unsafe { &(*(::std::ptr::null::<siginfo_t>())).si_signo as *const _ as usize },
4317        0usize,
4318        concat!(
4319            "Offset of field: ",
4320            stringify!(siginfo_t),
4321            "::",
4322            stringify!(si_signo)
4323        )
4324    );
4325    assert_eq!(
4326        unsafe { &(*(::std::ptr::null::<siginfo_t>())).si_errno as *const _ as usize },
4327        4usize,
4328        concat!(
4329            "Offset of field: ",
4330            stringify!(siginfo_t),
4331            "::",
4332            stringify!(si_errno)
4333        )
4334    );
4335    assert_eq!(
4336        unsafe { &(*(::std::ptr::null::<siginfo_t>())).si_code as *const _ as usize },
4337        8usize,
4338        concat!(
4339            "Offset of field: ",
4340            stringify!(siginfo_t),
4341            "::",
4342            stringify!(si_code)
4343        )
4344    );
4345    assert_eq!(
4346        unsafe { &(*(::std::ptr::null::<siginfo_t>())).__pad0 as *const _ as usize },
4347        12usize,
4348        concat!(
4349            "Offset of field: ",
4350            stringify!(siginfo_t),
4351            "::",
4352            stringify!(__pad0)
4353        )
4354    );
4355    assert_eq!(
4356        unsafe { &(*(::std::ptr::null::<siginfo_t>()))._sifields as *const _ as usize },
4357        16usize,
4358        concat!(
4359            "Offset of field: ",
4360            stringify!(siginfo_t),
4361            "::",
4362            stringify!(_sifields)
4363        )
4364    );
4365}
4366pub const SI_ASYNCNL: _bindgen_ty_2 = -60;
4367pub const SI_DETHREAD: _bindgen_ty_2 = -7;
4368pub const SI_TKILL: _bindgen_ty_2 = -6;
4369pub const SI_SIGIO: _bindgen_ty_2 = -5;
4370pub const SI_ASYNCIO: _bindgen_ty_2 = -4;
4371pub const SI_MESGQ: _bindgen_ty_2 = -3;
4372pub const SI_TIMER: _bindgen_ty_2 = -2;
4373pub const SI_QUEUE: _bindgen_ty_2 = -1;
4374pub const SI_USER: _bindgen_ty_2 = 0;
4375pub const SI_KERNEL: _bindgen_ty_2 = 128;
4376pub type _bindgen_ty_2 = i32;
4377pub const ILL_ILLOPC: _bindgen_ty_3 = 1;
4378pub const ILL_ILLOPN: _bindgen_ty_3 = 2;
4379pub const ILL_ILLADR: _bindgen_ty_3 = 3;
4380pub const ILL_ILLTRP: _bindgen_ty_3 = 4;
4381pub const ILL_PRVOPC: _bindgen_ty_3 = 5;
4382pub const ILL_PRVREG: _bindgen_ty_3 = 6;
4383pub const ILL_COPROC: _bindgen_ty_3 = 7;
4384pub const ILL_BADSTK: _bindgen_ty_3 = 8;
4385pub const ILL_BADIADDR: _bindgen_ty_3 = 9;
4386pub type _bindgen_ty_3 = u32;
4387pub const FPE_INTDIV: _bindgen_ty_4 = 1;
4388pub const FPE_INTOVF: _bindgen_ty_4 = 2;
4389pub const FPE_FLTDIV: _bindgen_ty_4 = 3;
4390pub const FPE_FLTOVF: _bindgen_ty_4 = 4;
4391pub const FPE_FLTUND: _bindgen_ty_4 = 5;
4392pub const FPE_FLTRES: _bindgen_ty_4 = 6;
4393pub const FPE_FLTINV: _bindgen_ty_4 = 7;
4394pub const FPE_FLTSUB: _bindgen_ty_4 = 8;
4395pub const FPE_FLTUNK: _bindgen_ty_4 = 14;
4396pub const FPE_CONDTRAP: _bindgen_ty_4 = 15;
4397pub type _bindgen_ty_4 = u32;
4398pub const SEGV_MAPERR: _bindgen_ty_5 = 1;
4399pub const SEGV_ACCERR: _bindgen_ty_5 = 2;
4400pub const SEGV_BNDERR: _bindgen_ty_5 = 3;
4401pub const SEGV_PKUERR: _bindgen_ty_5 = 4;
4402pub const SEGV_ACCADI: _bindgen_ty_5 = 5;
4403pub const SEGV_ADIDERR: _bindgen_ty_5 = 6;
4404pub const SEGV_ADIPERR: _bindgen_ty_5 = 7;
4405pub type _bindgen_ty_5 = u32;
4406pub const BUS_ADRALN: _bindgen_ty_6 = 1;
4407pub const BUS_ADRERR: _bindgen_ty_6 = 2;
4408pub const BUS_OBJERR: _bindgen_ty_6 = 3;
4409pub const BUS_MCEERR_AR: _bindgen_ty_6 = 4;
4410pub const BUS_MCEERR_AO: _bindgen_ty_6 = 5;
4411pub type _bindgen_ty_6 = u32;
4412pub const CLD_EXITED: _bindgen_ty_7 = 1;
4413pub const CLD_KILLED: _bindgen_ty_7 = 2;
4414pub const CLD_DUMPED: _bindgen_ty_7 = 3;
4415pub const CLD_TRAPPED: _bindgen_ty_7 = 4;
4416pub const CLD_STOPPED: _bindgen_ty_7 = 5;
4417pub const CLD_CONTINUED: _bindgen_ty_7 = 6;
4418pub type _bindgen_ty_7 = u32;
4419pub const POLL_IN: _bindgen_ty_8 = 1;
4420pub const POLL_OUT: _bindgen_ty_8 = 2;
4421pub const POLL_MSG: _bindgen_ty_8 = 3;
4422pub const POLL_ERR: _bindgen_ty_8 = 4;
4423pub const POLL_PRI: _bindgen_ty_8 = 5;
4424pub const POLL_HUP: _bindgen_ty_8 = 6;
4425pub type _bindgen_ty_8 = u32;
4426pub type sigval_t = __sigval_t;
4427#[repr(C)]
4428#[derive(Copy, Clone)]
4429pub struct sigevent {
4430    pub sigev_value: __sigval_t,
4431    pub sigev_signo: ::std::os::raw::c_int,
4432    pub sigev_notify: ::std::os::raw::c_int,
4433    pub _sigev_un: sigevent__bindgen_ty_1,
4434}
4435#[repr(C)]
4436#[derive(Copy, Clone)]
4437pub union sigevent__bindgen_ty_1 {
4438    pub _pad: [::std::os::raw::c_int; 12usize],
4439    pub _tid: __pid_t,
4440    pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1,
4441    _bindgen_union_align: [u64; 6usize],
4442}
4443#[repr(C)]
4444#[derive(Debug, Copy, Clone)]
4445pub struct sigevent__bindgen_ty_1__bindgen_ty_1 {
4446    pub _function: ::std::option::Option<unsafe extern "C" fn(arg1: __sigval_t)>,
4447    pub _attribute: *mut pthread_attr_t,
4448}
4449#[test]
4450fn bindgen_test_layout_sigevent__bindgen_ty_1__bindgen_ty_1() {
4451    assert_eq!(
4452        ::std::mem::size_of::<sigevent__bindgen_ty_1__bindgen_ty_1>(),
4453        16usize,
4454        concat!(
4455            "Size of: ",
4456            stringify!(sigevent__bindgen_ty_1__bindgen_ty_1)
4457        )
4458    );
4459    assert_eq!(
4460        ::std::mem::align_of::<sigevent__bindgen_ty_1__bindgen_ty_1>(),
4461        8usize,
4462        concat!(
4463            "Alignment of ",
4464            stringify!(sigevent__bindgen_ty_1__bindgen_ty_1)
4465        )
4466    );
4467    assert_eq!(
4468        unsafe {
4469            &(*(::std::ptr::null::<sigevent__bindgen_ty_1__bindgen_ty_1>()))._function as *const _
4470                as usize
4471        },
4472        0usize,
4473        concat!(
4474            "Offset of field: ",
4475            stringify!(sigevent__bindgen_ty_1__bindgen_ty_1),
4476            "::",
4477            stringify!(_function)
4478        )
4479    );
4480    assert_eq!(
4481        unsafe {
4482            &(*(::std::ptr::null::<sigevent__bindgen_ty_1__bindgen_ty_1>()))._attribute as *const _
4483                as usize
4484        },
4485        8usize,
4486        concat!(
4487            "Offset of field: ",
4488            stringify!(sigevent__bindgen_ty_1__bindgen_ty_1),
4489            "::",
4490            stringify!(_attribute)
4491        )
4492    );
4493}
4494#[test]
4495fn bindgen_test_layout_sigevent__bindgen_ty_1() {
4496    assert_eq!(
4497        ::std::mem::size_of::<sigevent__bindgen_ty_1>(),
4498        48usize,
4499        concat!("Size of: ", stringify!(sigevent__bindgen_ty_1))
4500    );
4501    assert_eq!(
4502        ::std::mem::align_of::<sigevent__bindgen_ty_1>(),
4503        8usize,
4504        concat!("Alignment of ", stringify!(sigevent__bindgen_ty_1))
4505    );
4506    assert_eq!(
4507        unsafe { &(*(::std::ptr::null::<sigevent__bindgen_ty_1>()))._pad as *const _ as usize },
4508        0usize,
4509        concat!(
4510            "Offset of field: ",
4511            stringify!(sigevent__bindgen_ty_1),
4512            "::",
4513            stringify!(_pad)
4514        )
4515    );
4516    assert_eq!(
4517        unsafe { &(*(::std::ptr::null::<sigevent__bindgen_ty_1>()))._tid as *const _ as usize },
4518        0usize,
4519        concat!(
4520            "Offset of field: ",
4521            stringify!(sigevent__bindgen_ty_1),
4522            "::",
4523            stringify!(_tid)
4524        )
4525    );
4526    assert_eq!(
4527        unsafe {
4528            &(*(::std::ptr::null::<sigevent__bindgen_ty_1>()))._sigev_thread as *const _ as usize
4529        },
4530        0usize,
4531        concat!(
4532            "Offset of field: ",
4533            stringify!(sigevent__bindgen_ty_1),
4534            "::",
4535            stringify!(_sigev_thread)
4536        )
4537    );
4538}
4539#[test]
4540fn bindgen_test_layout_sigevent() {
4541    assert_eq!(
4542        ::std::mem::size_of::<sigevent>(),
4543        64usize,
4544        concat!("Size of: ", stringify!(sigevent))
4545    );
4546    assert_eq!(
4547        ::std::mem::align_of::<sigevent>(),
4548        8usize,
4549        concat!("Alignment of ", stringify!(sigevent))
4550    );
4551    assert_eq!(
4552        unsafe { &(*(::std::ptr::null::<sigevent>())).sigev_value as *const _ as usize },
4553        0usize,
4554        concat!(
4555            "Offset of field: ",
4556            stringify!(sigevent),
4557            "::",
4558            stringify!(sigev_value)
4559        )
4560    );
4561    assert_eq!(
4562        unsafe { &(*(::std::ptr::null::<sigevent>())).sigev_signo as *const _ as usize },
4563        8usize,
4564        concat!(
4565            "Offset of field: ",
4566            stringify!(sigevent),
4567            "::",
4568            stringify!(sigev_signo)
4569        )
4570    );
4571    assert_eq!(
4572        unsafe { &(*(::std::ptr::null::<sigevent>())).sigev_notify as *const _ as usize },
4573        12usize,
4574        concat!(
4575            "Offset of field: ",
4576            stringify!(sigevent),
4577            "::",
4578            stringify!(sigev_notify)
4579        )
4580    );
4581    assert_eq!(
4582        unsafe { &(*(::std::ptr::null::<sigevent>()))._sigev_un as *const _ as usize },
4583        16usize,
4584        concat!(
4585            "Offset of field: ",
4586            stringify!(sigevent),
4587            "::",
4588            stringify!(_sigev_un)
4589        )
4590    );
4591}
4592pub type sigevent_t = sigevent;
4593pub const SIGEV_SIGNAL: _bindgen_ty_9 = 0;
4594pub const SIGEV_NONE: _bindgen_ty_9 = 1;
4595pub const SIGEV_THREAD: _bindgen_ty_9 = 2;
4596pub const SIGEV_THREAD_ID: _bindgen_ty_9 = 4;
4597pub type _bindgen_ty_9 = u32;
4598pub type __sighandler_t = ::std::option::Option<unsafe extern "C" fn(arg1: ::std::os::raw::c_int)>;
4599extern "C" {
4600    pub fn __sysv_signal(__sig: ::std::os::raw::c_int, __handler: __sighandler_t)
4601        -> __sighandler_t;
4602}
4603extern "C" {
4604    pub fn signal(__sig: ::std::os::raw::c_int, __handler: __sighandler_t) -> __sighandler_t;
4605}
4606extern "C" {
4607    pub fn kill(__pid: __pid_t, __sig: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
4608}
4609extern "C" {
4610    pub fn killpg(__pgrp: __pid_t, __sig: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
4611}
4612extern "C" {
4613    pub fn raise(__sig: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
4614}
4615extern "C" {
4616    pub fn ssignal(__sig: ::std::os::raw::c_int, __handler: __sighandler_t) -> __sighandler_t;
4617}
4618extern "C" {
4619    pub fn gsignal(__sig: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
4620}
4621extern "C" {
4622    pub fn psignal(__sig: ::std::os::raw::c_int, __s: *const ::std::os::raw::c_char);
4623}
4624extern "C" {
4625    pub fn psiginfo(__pinfo: *const siginfo_t, __s: *const ::std::os::raw::c_char);
4626}
4627extern "C" {
4628    pub fn sigblock(__mask: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
4629}
4630extern "C" {
4631    pub fn sigsetmask(__mask: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
4632}
4633extern "C" {
4634    pub fn siggetmask() -> ::std::os::raw::c_int;
4635}
4636pub type sig_t = __sighandler_t;
4637extern "C" {
4638    pub fn sigemptyset(__set: *mut sigset_t) -> ::std::os::raw::c_int;
4639}
4640extern "C" {
4641    pub fn sigfillset(__set: *mut sigset_t) -> ::std::os::raw::c_int;
4642}
4643extern "C" {
4644    pub fn sigaddset(__set: *mut sigset_t, __signo: ::std::os::raw::c_int)
4645        -> ::std::os::raw::c_int;
4646}
4647extern "C" {
4648    pub fn sigdelset(__set: *mut sigset_t, __signo: ::std::os::raw::c_int)
4649        -> ::std::os::raw::c_int;
4650}
4651extern "C" {
4652    pub fn sigismember(
4653        __set: *const sigset_t,
4654        __signo: ::std::os::raw::c_int,
4655    ) -> ::std::os::raw::c_int;
4656}
4657#[repr(C)]
4658#[derive(Copy, Clone)]
4659pub struct sigaction {
4660    pub __sigaction_handler: sigaction__bindgen_ty_1,
4661    pub sa_mask: __sigset_t,
4662    pub sa_flags: ::std::os::raw::c_int,
4663    pub sa_restorer: ::std::option::Option<unsafe extern "C" fn()>,
4664}
4665#[repr(C)]
4666#[derive(Copy, Clone)]
4667pub union sigaction__bindgen_ty_1 {
4668    pub sa_handler: __sighandler_t,
4669    pub sa_sigaction: ::std::option::Option<
4670        unsafe extern "C" fn(
4671            arg1: ::std::os::raw::c_int,
4672            arg2: *mut siginfo_t,
4673            arg3: *mut ::std::os::raw::c_void,
4674        ),
4675    >,
4676    _bindgen_union_align: u64,
4677}
4678#[test]
4679fn bindgen_test_layout_sigaction__bindgen_ty_1() {
4680    assert_eq!(
4681        ::std::mem::size_of::<sigaction__bindgen_ty_1>(),
4682        8usize,
4683        concat!("Size of: ", stringify!(sigaction__bindgen_ty_1))
4684    );
4685    assert_eq!(
4686        ::std::mem::align_of::<sigaction__bindgen_ty_1>(),
4687        8usize,
4688        concat!("Alignment of ", stringify!(sigaction__bindgen_ty_1))
4689    );
4690    assert_eq!(
4691        unsafe {
4692            &(*(::std::ptr::null::<sigaction__bindgen_ty_1>())).sa_handler as *const _ as usize
4693        },
4694        0usize,
4695        concat!(
4696            "Offset of field: ",
4697            stringify!(sigaction__bindgen_ty_1),
4698            "::",
4699            stringify!(sa_handler)
4700        )
4701    );
4702    assert_eq!(
4703        unsafe {
4704            &(*(::std::ptr::null::<sigaction__bindgen_ty_1>())).sa_sigaction as *const _ as usize
4705        },
4706        0usize,
4707        concat!(
4708            "Offset of field: ",
4709            stringify!(sigaction__bindgen_ty_1),
4710            "::",
4711            stringify!(sa_sigaction)
4712        )
4713    );
4714}
4715#[test]
4716fn bindgen_test_layout_sigaction() {
4717    assert_eq!(
4718        ::std::mem::size_of::<sigaction>(),
4719        152usize,
4720        concat!("Size of: ", stringify!(sigaction))
4721    );
4722    assert_eq!(
4723        ::std::mem::align_of::<sigaction>(),
4724        8usize,
4725        concat!("Alignment of ", stringify!(sigaction))
4726    );
4727    assert_eq!(
4728        unsafe { &(*(::std::ptr::null::<sigaction>())).__sigaction_handler as *const _ as usize },
4729        0usize,
4730        concat!(
4731            "Offset of field: ",
4732            stringify!(sigaction),
4733            "::",
4734            stringify!(__sigaction_handler)
4735        )
4736    );
4737    assert_eq!(
4738        unsafe { &(*(::std::ptr::null::<sigaction>())).sa_mask as *const _ as usize },
4739        8usize,
4740        concat!(
4741            "Offset of field: ",
4742            stringify!(sigaction),
4743            "::",
4744            stringify!(sa_mask)
4745        )
4746    );
4747    assert_eq!(
4748        unsafe { &(*(::std::ptr::null::<sigaction>())).sa_flags as *const _ as usize },
4749        136usize,
4750        concat!(
4751            "Offset of field: ",
4752            stringify!(sigaction),
4753            "::",
4754            stringify!(sa_flags)
4755        )
4756    );
4757    assert_eq!(
4758        unsafe { &(*(::std::ptr::null::<sigaction>())).sa_restorer as *const _ as usize },
4759        144usize,
4760        concat!(
4761            "Offset of field: ",
4762            stringify!(sigaction),
4763            "::",
4764            stringify!(sa_restorer)
4765        )
4766    );
4767}
4768extern "C" {
4769    pub fn sigprocmask(
4770        __how: ::std::os::raw::c_int,
4771        __set: *const sigset_t,
4772        __oset: *mut sigset_t,
4773    ) -> ::std::os::raw::c_int;
4774}
4775extern "C" {
4776    pub fn sigsuspend(__set: *const sigset_t) -> ::std::os::raw::c_int;
4777}
4778extern "C" {
4779    pub fn sigaction(
4780        __sig: ::std::os::raw::c_int,
4781        __act: *const sigaction,
4782        __oact: *mut sigaction,
4783    ) -> ::std::os::raw::c_int;
4784}
4785extern "C" {
4786    pub fn sigpending(__set: *mut sigset_t) -> ::std::os::raw::c_int;
4787}
4788extern "C" {
4789    pub fn sigwait(
4790        __set: *const sigset_t,
4791        __sig: *mut ::std::os::raw::c_int,
4792    ) -> ::std::os::raw::c_int;
4793}
4794extern "C" {
4795    pub fn sigwaitinfo(__set: *const sigset_t, __info: *mut siginfo_t) -> ::std::os::raw::c_int;
4796}
4797extern "C" {
4798    pub fn sigtimedwait(
4799        __set: *const sigset_t,
4800        __info: *mut siginfo_t,
4801        __timeout: *const timespec,
4802    ) -> ::std::os::raw::c_int;
4803}
4804extern "C" {
4805    pub fn sigqueue(
4806        __pid: __pid_t,
4807        __sig: ::std::os::raw::c_int,
4808        __val: sigval,
4809    ) -> ::std::os::raw::c_int;
4810}
4811extern "C" {
4812    pub static mut _sys_siglist: [*const ::std::os::raw::c_char; 65usize];
4813}
4814extern "C" {
4815    pub static mut sys_siglist: [*const ::std::os::raw::c_char; 65usize];
4816}
4817#[repr(C)]
4818#[derive(Debug, Copy, Clone)]
4819pub struct _fpx_sw_bytes {
4820    pub magic1: __uint32_t,
4821    pub extended_size: __uint32_t,
4822    pub xstate_bv: __uint64_t,
4823    pub xstate_size: __uint32_t,
4824    pub __glibc_reserved1: [__uint32_t; 7usize],
4825}
4826#[test]
4827fn bindgen_test_layout__fpx_sw_bytes() {
4828    assert_eq!(
4829        ::std::mem::size_of::<_fpx_sw_bytes>(),
4830        48usize,
4831        concat!("Size of: ", stringify!(_fpx_sw_bytes))
4832    );
4833    assert_eq!(
4834        ::std::mem::align_of::<_fpx_sw_bytes>(),
4835        8usize,
4836        concat!("Alignment of ", stringify!(_fpx_sw_bytes))
4837    );
4838    assert_eq!(
4839        unsafe { &(*(::std::ptr::null::<_fpx_sw_bytes>())).magic1 as *const _ as usize },
4840        0usize,
4841        concat!(
4842            "Offset of field: ",
4843            stringify!(_fpx_sw_bytes),
4844            "::",
4845            stringify!(magic1)
4846        )
4847    );
4848    assert_eq!(
4849        unsafe { &(*(::std::ptr::null::<_fpx_sw_bytes>())).extended_size as *const _ as usize },
4850        4usize,
4851        concat!(
4852            "Offset of field: ",
4853            stringify!(_fpx_sw_bytes),
4854            "::",
4855            stringify!(extended_size)
4856        )
4857    );
4858    assert_eq!(
4859        unsafe { &(*(::std::ptr::null::<_fpx_sw_bytes>())).xstate_bv as *const _ as usize },
4860        8usize,
4861        concat!(
4862            "Offset of field: ",
4863            stringify!(_fpx_sw_bytes),
4864            "::",
4865            stringify!(xstate_bv)
4866        )
4867    );
4868    assert_eq!(
4869        unsafe { &(*(::std::ptr::null::<_fpx_sw_bytes>())).xstate_size as *const _ as usize },
4870        16usize,
4871        concat!(
4872            "Offset of field: ",
4873            stringify!(_fpx_sw_bytes),
4874            "::",
4875            stringify!(xstate_size)
4876        )
4877    );
4878    assert_eq!(
4879        unsafe { &(*(::std::ptr::null::<_fpx_sw_bytes>())).__glibc_reserved1 as *const _ as usize },
4880        20usize,
4881        concat!(
4882            "Offset of field: ",
4883            stringify!(_fpx_sw_bytes),
4884            "::",
4885            stringify!(__glibc_reserved1)
4886        )
4887    );
4888}
4889#[repr(C)]
4890#[derive(Debug, Copy, Clone)]
4891pub struct _fpreg {
4892    pub significand: [::std::os::raw::c_ushort; 4usize],
4893    pub exponent: ::std::os::raw::c_ushort,
4894}
4895#[test]
4896fn bindgen_test_layout__fpreg() {
4897    assert_eq!(
4898        ::std::mem::size_of::<_fpreg>(),
4899        10usize,
4900        concat!("Size of: ", stringify!(_fpreg))
4901    );
4902    assert_eq!(
4903        ::std::mem::align_of::<_fpreg>(),
4904        2usize,
4905        concat!("Alignment of ", stringify!(_fpreg))
4906    );
4907    assert_eq!(
4908        unsafe { &(*(::std::ptr::null::<_fpreg>())).significand as *const _ as usize },
4909        0usize,
4910        concat!(
4911            "Offset of field: ",
4912            stringify!(_fpreg),
4913            "::",
4914            stringify!(significand)
4915        )
4916    );
4917    assert_eq!(
4918        unsafe { &(*(::std::ptr::null::<_fpreg>())).exponent as *const _ as usize },
4919        8usize,
4920        concat!(
4921            "Offset of field: ",
4922            stringify!(_fpreg),
4923            "::",
4924            stringify!(exponent)
4925        )
4926    );
4927}
4928#[repr(C)]
4929#[derive(Debug, Copy, Clone)]
4930pub struct _fpxreg {
4931    pub significand: [::std::os::raw::c_ushort; 4usize],
4932    pub exponent: ::std::os::raw::c_ushort,
4933    pub __glibc_reserved1: [::std::os::raw::c_ushort; 3usize],
4934}
4935#[test]
4936fn bindgen_test_layout__fpxreg() {
4937    assert_eq!(
4938        ::std::mem::size_of::<_fpxreg>(),
4939        16usize,
4940        concat!("Size of: ", stringify!(_fpxreg))
4941    );
4942    assert_eq!(
4943        ::std::mem::align_of::<_fpxreg>(),
4944        2usize,
4945        concat!("Alignment of ", stringify!(_fpxreg))
4946    );
4947    assert_eq!(
4948        unsafe { &(*(::std::ptr::null::<_fpxreg>())).significand as *const _ as usize },
4949        0usize,
4950        concat!(
4951            "Offset of field: ",
4952            stringify!(_fpxreg),
4953            "::",
4954            stringify!(significand)
4955        )
4956    );
4957    assert_eq!(
4958        unsafe { &(*(::std::ptr::null::<_fpxreg>())).exponent as *const _ as usize },
4959        8usize,
4960        concat!(
4961            "Offset of field: ",
4962            stringify!(_fpxreg),
4963            "::",
4964            stringify!(exponent)
4965        )
4966    );
4967    assert_eq!(
4968        unsafe { &(*(::std::ptr::null::<_fpxreg>())).__glibc_reserved1 as *const _ as usize },
4969        10usize,
4970        concat!(
4971            "Offset of field: ",
4972            stringify!(_fpxreg),
4973            "::",
4974            stringify!(__glibc_reserved1)
4975        )
4976    );
4977}
4978#[repr(C)]
4979#[derive(Debug, Copy, Clone)]
4980pub struct _xmmreg {
4981    pub element: [__uint32_t; 4usize],
4982}
4983#[test]
4984fn bindgen_test_layout__xmmreg() {
4985    assert_eq!(
4986        ::std::mem::size_of::<_xmmreg>(),
4987        16usize,
4988        concat!("Size of: ", stringify!(_xmmreg))
4989    );
4990    assert_eq!(
4991        ::std::mem::align_of::<_xmmreg>(),
4992        4usize,
4993        concat!("Alignment of ", stringify!(_xmmreg))
4994    );
4995    assert_eq!(
4996        unsafe { &(*(::std::ptr::null::<_xmmreg>())).element as *const _ as usize },
4997        0usize,
4998        concat!(
4999            "Offset of field: ",
5000            stringify!(_xmmreg),
5001            "::",
5002            stringify!(element)
5003        )
5004    );
5005}
5006#[repr(C)]
5007#[derive(Debug, Copy, Clone)]
5008pub struct _fpstate {
5009    pub cwd: __uint16_t,
5010    pub swd: __uint16_t,
5011    pub ftw: __uint16_t,
5012    pub fop: __uint16_t,
5013    pub rip: __uint64_t,
5014    pub rdp: __uint64_t,
5015    pub mxcsr: __uint32_t,
5016    pub mxcr_mask: __uint32_t,
5017    pub _st: [_fpxreg; 8usize],
5018    pub _xmm: [_xmmreg; 16usize],
5019    pub __glibc_reserved1: [__uint32_t; 24usize],
5020}
5021#[test]
5022fn bindgen_test_layout__fpstate() {
5023    assert_eq!(
5024        ::std::mem::size_of::<_fpstate>(),
5025        512usize,
5026        concat!("Size of: ", stringify!(_fpstate))
5027    );
5028    assert_eq!(
5029        ::std::mem::align_of::<_fpstate>(),
5030        8usize,
5031        concat!("Alignment of ", stringify!(_fpstate))
5032    );
5033    assert_eq!(
5034        unsafe { &(*(::std::ptr::null::<_fpstate>())).cwd as *const _ as usize },
5035        0usize,
5036        concat!(
5037            "Offset of field: ",
5038            stringify!(_fpstate),
5039            "::",
5040            stringify!(cwd)
5041        )
5042    );
5043    assert_eq!(
5044        unsafe { &(*(::std::ptr::null::<_fpstate>())).swd as *const _ as usize },
5045        2usize,
5046        concat!(
5047            "Offset of field: ",
5048            stringify!(_fpstate),
5049            "::",
5050            stringify!(swd)
5051        )
5052    );
5053    assert_eq!(
5054        unsafe { &(*(::std::ptr::null::<_fpstate>())).ftw as *const _ as usize },
5055        4usize,
5056        concat!(
5057            "Offset of field: ",
5058            stringify!(_fpstate),
5059            "::",
5060            stringify!(ftw)
5061        )
5062    );
5063    assert_eq!(
5064        unsafe { &(*(::std::ptr::null::<_fpstate>())).fop as *const _ as usize },
5065        6usize,
5066        concat!(
5067            "Offset of field: ",
5068            stringify!(_fpstate),
5069            "::",
5070            stringify!(fop)
5071        )
5072    );
5073    assert_eq!(
5074        unsafe { &(*(::std::ptr::null::<_fpstate>())).rip as *const _ as usize },
5075        8usize,
5076        concat!(
5077            "Offset of field: ",
5078            stringify!(_fpstate),
5079            "::",
5080            stringify!(rip)
5081        )
5082    );
5083    assert_eq!(
5084        unsafe { &(*(::std::ptr::null::<_fpstate>())).rdp as *const _ as usize },
5085        16usize,
5086        concat!(
5087            "Offset of field: ",
5088            stringify!(_fpstate),
5089            "::",
5090            stringify!(rdp)
5091        )
5092    );
5093    assert_eq!(
5094        unsafe { &(*(::std::ptr::null::<_fpstate>())).mxcsr as *const _ as usize },
5095        24usize,
5096        concat!(
5097            "Offset of field: ",
5098            stringify!(_fpstate),
5099            "::",
5100            stringify!(mxcsr)
5101        )
5102    );
5103    assert_eq!(
5104        unsafe { &(*(::std::ptr::null::<_fpstate>())).mxcr_mask as *const _ as usize },
5105        28usize,
5106        concat!(
5107            "Offset of field: ",
5108            stringify!(_fpstate),
5109            "::",
5110            stringify!(mxcr_mask)
5111        )
5112    );
5113    assert_eq!(
5114        unsafe { &(*(::std::ptr::null::<_fpstate>()))._st as *const _ as usize },
5115        32usize,
5116        concat!(
5117            "Offset of field: ",
5118            stringify!(_fpstate),
5119            "::",
5120            stringify!(_st)
5121        )
5122    );
5123    assert_eq!(
5124        unsafe { &(*(::std::ptr::null::<_fpstate>()))._xmm as *const _ as usize },
5125        160usize,
5126        concat!(
5127            "Offset of field: ",
5128            stringify!(_fpstate),
5129            "::",
5130            stringify!(_xmm)
5131        )
5132    );
5133    assert_eq!(
5134        unsafe { &(*(::std::ptr::null::<_fpstate>())).__glibc_reserved1 as *const _ as usize },
5135        416usize,
5136        concat!(
5137            "Offset of field: ",
5138            stringify!(_fpstate),
5139            "::",
5140            stringify!(__glibc_reserved1)
5141        )
5142    );
5143}
5144#[repr(C)]
5145#[derive(Copy, Clone)]
5146pub struct sigcontext {
5147    pub r8: __uint64_t,
5148    pub r9: __uint64_t,
5149    pub r10: __uint64_t,
5150    pub r11: __uint64_t,
5151    pub r12: __uint64_t,
5152    pub r13: __uint64_t,
5153    pub r14: __uint64_t,
5154    pub r15: __uint64_t,
5155    pub rdi: __uint64_t,
5156    pub rsi: __uint64_t,
5157    pub rbp: __uint64_t,
5158    pub rbx: __uint64_t,
5159    pub rdx: __uint64_t,
5160    pub rax: __uint64_t,
5161    pub rcx: __uint64_t,
5162    pub rsp: __uint64_t,
5163    pub rip: __uint64_t,
5164    pub eflags: __uint64_t,
5165    pub cs: ::std::os::raw::c_ushort,
5166    pub gs: ::std::os::raw::c_ushort,
5167    pub fs: ::std::os::raw::c_ushort,
5168    pub __pad0: ::std::os::raw::c_ushort,
5169    pub err: __uint64_t,
5170    pub trapno: __uint64_t,
5171    pub oldmask: __uint64_t,
5172    pub cr2: __uint64_t,
5173    pub __bindgen_anon_1: sigcontext__bindgen_ty_1,
5174    pub __reserved1: [__uint64_t; 8usize],
5175}
5176#[repr(C)]
5177#[derive(Copy, Clone)]
5178pub union sigcontext__bindgen_ty_1 {
5179    pub fpstate: *mut _fpstate,
5180    pub __fpstate_word: __uint64_t,
5181    _bindgen_union_align: u64,
5182}
5183#[test]
5184fn bindgen_test_layout_sigcontext__bindgen_ty_1() {
5185    assert_eq!(
5186        ::std::mem::size_of::<sigcontext__bindgen_ty_1>(),
5187        8usize,
5188        concat!("Size of: ", stringify!(sigcontext__bindgen_ty_1))
5189    );
5190    assert_eq!(
5191        ::std::mem::align_of::<sigcontext__bindgen_ty_1>(),
5192        8usize,
5193        concat!("Alignment of ", stringify!(sigcontext__bindgen_ty_1))
5194    );
5195    assert_eq!(
5196        unsafe {
5197            &(*(::std::ptr::null::<sigcontext__bindgen_ty_1>())).fpstate as *const _ as usize
5198        },
5199        0usize,
5200        concat!(
5201            "Offset of field: ",
5202            stringify!(sigcontext__bindgen_ty_1),
5203            "::",
5204            stringify!(fpstate)
5205        )
5206    );
5207    assert_eq!(
5208        unsafe {
5209            &(*(::std::ptr::null::<sigcontext__bindgen_ty_1>())).__fpstate_word as *const _ as usize
5210        },
5211        0usize,
5212        concat!(
5213            "Offset of field: ",
5214            stringify!(sigcontext__bindgen_ty_1),
5215            "::",
5216            stringify!(__fpstate_word)
5217        )
5218    );
5219}
5220#[test]
5221fn bindgen_test_layout_sigcontext() {
5222    assert_eq!(
5223        ::std::mem::size_of::<sigcontext>(),
5224        256usize,
5225        concat!("Size of: ", stringify!(sigcontext))
5226    );
5227    assert_eq!(
5228        ::std::mem::align_of::<sigcontext>(),
5229        8usize,
5230        concat!("Alignment of ", stringify!(sigcontext))
5231    );
5232    assert_eq!(
5233        unsafe { &(*(::std::ptr::null::<sigcontext>())).r8 as *const _ as usize },
5234        0usize,
5235        concat!(
5236            "Offset of field: ",
5237            stringify!(sigcontext),
5238            "::",
5239            stringify!(r8)
5240        )
5241    );
5242    assert_eq!(
5243        unsafe { &(*(::std::ptr::null::<sigcontext>())).r9 as *const _ as usize },
5244        8usize,
5245        concat!(
5246            "Offset of field: ",
5247            stringify!(sigcontext),
5248            "::",
5249            stringify!(r9)
5250        )
5251    );
5252    assert_eq!(
5253        unsafe { &(*(::std::ptr::null::<sigcontext>())).r10 as *const _ as usize },
5254        16usize,
5255        concat!(
5256            "Offset of field: ",
5257            stringify!(sigcontext),
5258            "::",
5259            stringify!(r10)
5260        )
5261    );
5262    assert_eq!(
5263        unsafe { &(*(::std::ptr::null::<sigcontext>())).r11 as *const _ as usize },
5264        24usize,
5265        concat!(
5266            "Offset of field: ",
5267            stringify!(sigcontext),
5268            "::",
5269            stringify!(r11)
5270        )
5271    );
5272    assert_eq!(
5273        unsafe { &(*(::std::ptr::null::<sigcontext>())).r12 as *const _ as usize },
5274        32usize,
5275        concat!(
5276            "Offset of field: ",
5277            stringify!(sigcontext),
5278            "::",
5279            stringify!(r12)
5280        )
5281    );
5282    assert_eq!(
5283        unsafe { &(*(::std::ptr::null::<sigcontext>())).r13 as *const _ as usize },
5284        40usize,
5285        concat!(
5286            "Offset of field: ",
5287            stringify!(sigcontext),
5288            "::",
5289            stringify!(r13)
5290        )
5291    );
5292    assert_eq!(
5293        unsafe { &(*(::std::ptr::null::<sigcontext>())).r14 as *const _ as usize },
5294        48usize,
5295        concat!(
5296            "Offset of field: ",
5297            stringify!(sigcontext),
5298            "::",
5299            stringify!(r14)
5300        )
5301    );
5302    assert_eq!(
5303        unsafe { &(*(::std::ptr::null::<sigcontext>())).r15 as *const _ as usize },
5304        56usize,
5305        concat!(
5306            "Offset of field: ",
5307            stringify!(sigcontext),
5308            "::",
5309            stringify!(r15)
5310        )
5311    );
5312    assert_eq!(
5313        unsafe { &(*(::std::ptr::null::<sigcontext>())).rdi as *const _ as usize },
5314        64usize,
5315        concat!(
5316            "Offset of field: ",
5317            stringify!(sigcontext),
5318            "::",
5319            stringify!(rdi)
5320        )
5321    );
5322    assert_eq!(
5323        unsafe { &(*(::std::ptr::null::<sigcontext>())).rsi as *const _ as usize },
5324        72usize,
5325        concat!(
5326            "Offset of field: ",
5327            stringify!(sigcontext),
5328            "::",
5329            stringify!(rsi)
5330        )
5331    );
5332    assert_eq!(
5333        unsafe { &(*(::std::ptr::null::<sigcontext>())).rbp as *const _ as usize },
5334        80usize,
5335        concat!(
5336            "Offset of field: ",
5337            stringify!(sigcontext),
5338            "::",
5339            stringify!(rbp)
5340        )
5341    );
5342    assert_eq!(
5343        unsafe { &(*(::std::ptr::null::<sigcontext>())).rbx as *const _ as usize },
5344        88usize,
5345        concat!(
5346            "Offset of field: ",
5347            stringify!(sigcontext),
5348            "::",
5349            stringify!(rbx)
5350        )
5351    );
5352    assert_eq!(
5353        unsafe { &(*(::std::ptr::null::<sigcontext>())).rdx as *const _ as usize },
5354        96usize,
5355        concat!(
5356            "Offset of field: ",
5357            stringify!(sigcontext),
5358            "::",
5359            stringify!(rdx)
5360        )
5361    );
5362    assert_eq!(
5363        unsafe { &(*(::std::ptr::null::<sigcontext>())).rax as *const _ as usize },
5364        104usize,
5365        concat!(
5366            "Offset of field: ",
5367            stringify!(sigcontext),
5368            "::",
5369            stringify!(rax)
5370        )
5371    );
5372    assert_eq!(
5373        unsafe { &(*(::std::ptr::null::<sigcontext>())).rcx as *const _ as usize },
5374        112usize,
5375        concat!(
5376            "Offset of field: ",
5377            stringify!(sigcontext),
5378            "::",
5379            stringify!(rcx)
5380        )
5381    );
5382    assert_eq!(
5383        unsafe { &(*(::std::ptr::null::<sigcontext>())).rsp as *const _ as usize },
5384        120usize,
5385        concat!(
5386            "Offset of field: ",
5387            stringify!(sigcontext),
5388            "::",
5389            stringify!(rsp)
5390        )
5391    );
5392    assert_eq!(
5393        unsafe { &(*(::std::ptr::null::<sigcontext>())).rip as *const _ as usize },
5394        128usize,
5395        concat!(
5396            "Offset of field: ",
5397            stringify!(sigcontext),
5398            "::",
5399            stringify!(rip)
5400        )
5401    );
5402    assert_eq!(
5403        unsafe { &(*(::std::ptr::null::<sigcontext>())).eflags as *const _ as usize },
5404        136usize,
5405        concat!(
5406            "Offset of field: ",
5407            stringify!(sigcontext),
5408            "::",
5409            stringify!(eflags)
5410        )
5411    );
5412    assert_eq!(
5413        unsafe { &(*(::std::ptr::null::<sigcontext>())).cs as *const _ as usize },
5414        144usize,
5415        concat!(
5416            "Offset of field: ",
5417            stringify!(sigcontext),
5418            "::",
5419            stringify!(cs)
5420        )
5421    );
5422    assert_eq!(
5423        unsafe { &(*(::std::ptr::null::<sigcontext>())).gs as *const _ as usize },
5424        146usize,
5425        concat!(
5426            "Offset of field: ",
5427            stringify!(sigcontext),
5428            "::",
5429            stringify!(gs)
5430        )
5431    );
5432    assert_eq!(
5433        unsafe { &(*(::std::ptr::null::<sigcontext>())).fs as *const _ as usize },
5434        148usize,
5435        concat!(
5436            "Offset of field: ",
5437            stringify!(sigcontext),
5438            "::",
5439            stringify!(fs)
5440        )
5441    );
5442    assert_eq!(
5443        unsafe { &(*(::std::ptr::null::<sigcontext>())).__pad0 as *const _ as usize },
5444        150usize,
5445        concat!(
5446            "Offset of field: ",
5447            stringify!(sigcontext),
5448            "::",
5449            stringify!(__pad0)
5450        )
5451    );
5452    assert_eq!(
5453        unsafe { &(*(::std::ptr::null::<sigcontext>())).err as *const _ as usize },
5454        152usize,
5455        concat!(
5456            "Offset of field: ",
5457            stringify!(sigcontext),
5458            "::",
5459            stringify!(err)
5460        )
5461    );
5462    assert_eq!(
5463        unsafe { &(*(::std::ptr::null::<sigcontext>())).trapno as *const _ as usize },
5464        160usize,
5465        concat!(
5466            "Offset of field: ",
5467            stringify!(sigcontext),
5468            "::",
5469            stringify!(trapno)
5470        )
5471    );
5472    assert_eq!(
5473        unsafe { &(*(::std::ptr::null::<sigcontext>())).oldmask as *const _ as usize },
5474        168usize,
5475        concat!(
5476            "Offset of field: ",
5477            stringify!(sigcontext),
5478            "::",
5479            stringify!(oldmask)
5480        )
5481    );
5482    assert_eq!(
5483        unsafe { &(*(::std::ptr::null::<sigcontext>())).cr2 as *const _ as usize },
5484        176usize,
5485        concat!(
5486            "Offset of field: ",
5487            stringify!(sigcontext),
5488            "::",
5489            stringify!(cr2)
5490        )
5491    );
5492    assert_eq!(
5493        unsafe { &(*(::std::ptr::null::<sigcontext>())).__reserved1 as *const _ as usize },
5494        192usize,
5495        concat!(
5496            "Offset of field: ",
5497            stringify!(sigcontext),
5498            "::",
5499            stringify!(__reserved1)
5500        )
5501    );
5502}
5503#[repr(C)]
5504#[derive(Debug, Copy, Clone)]
5505pub struct _xsave_hdr {
5506    pub xstate_bv: __uint64_t,
5507    pub __glibc_reserved1: [__uint64_t; 2usize],
5508    pub __glibc_reserved2: [__uint64_t; 5usize],
5509}
5510#[test]
5511fn bindgen_test_layout__xsave_hdr() {
5512    assert_eq!(
5513        ::std::mem::size_of::<_xsave_hdr>(),
5514        64usize,
5515        concat!("Size of: ", stringify!(_xsave_hdr))
5516    );
5517    assert_eq!(
5518        ::std::mem::align_of::<_xsave_hdr>(),
5519        8usize,
5520        concat!("Alignment of ", stringify!(_xsave_hdr))
5521    );
5522    assert_eq!(
5523        unsafe { &(*(::std::ptr::null::<_xsave_hdr>())).xstate_bv as *const _ as usize },
5524        0usize,
5525        concat!(
5526            "Offset of field: ",
5527            stringify!(_xsave_hdr),
5528            "::",
5529            stringify!(xstate_bv)
5530        )
5531    );
5532    assert_eq!(
5533        unsafe { &(*(::std::ptr::null::<_xsave_hdr>())).__glibc_reserved1 as *const _ as usize },
5534        8usize,
5535        concat!(
5536            "Offset of field: ",
5537            stringify!(_xsave_hdr),
5538            "::",
5539            stringify!(__glibc_reserved1)
5540        )
5541    );
5542    assert_eq!(
5543        unsafe { &(*(::std::ptr::null::<_xsave_hdr>())).__glibc_reserved2 as *const _ as usize },
5544        24usize,
5545        concat!(
5546            "Offset of field: ",
5547            stringify!(_xsave_hdr),
5548            "::",
5549            stringify!(__glibc_reserved2)
5550        )
5551    );
5552}
5553#[repr(C)]
5554#[derive(Copy, Clone)]
5555pub struct _ymmh_state {
5556    pub ymmh_space: [__uint32_t; 64usize],
5557}
5558#[test]
5559fn bindgen_test_layout__ymmh_state() {
5560    assert_eq!(
5561        ::std::mem::size_of::<_ymmh_state>(),
5562        256usize,
5563        concat!("Size of: ", stringify!(_ymmh_state))
5564    );
5565    assert_eq!(
5566        ::std::mem::align_of::<_ymmh_state>(),
5567        4usize,
5568        concat!("Alignment of ", stringify!(_ymmh_state))
5569    );
5570    assert_eq!(
5571        unsafe { &(*(::std::ptr::null::<_ymmh_state>())).ymmh_space as *const _ as usize },
5572        0usize,
5573        concat!(
5574            "Offset of field: ",
5575            stringify!(_ymmh_state),
5576            "::",
5577            stringify!(ymmh_space)
5578        )
5579    );
5580}
5581#[repr(C)]
5582#[derive(Copy, Clone)]
5583pub struct _xstate {
5584    pub fpstate: _fpstate,
5585    pub xstate_hdr: _xsave_hdr,
5586    pub ymmh: _ymmh_state,
5587}
5588#[test]
5589fn bindgen_test_layout__xstate() {
5590    assert_eq!(
5591        ::std::mem::size_of::<_xstate>(),
5592        832usize,
5593        concat!("Size of: ", stringify!(_xstate))
5594    );
5595    assert_eq!(
5596        ::std::mem::align_of::<_xstate>(),
5597        8usize,
5598        concat!("Alignment of ", stringify!(_xstate))
5599    );
5600    assert_eq!(
5601        unsafe { &(*(::std::ptr::null::<_xstate>())).fpstate as *const _ as usize },
5602        0usize,
5603        concat!(
5604            "Offset of field: ",
5605            stringify!(_xstate),
5606            "::",
5607            stringify!(fpstate)
5608        )
5609    );
5610    assert_eq!(
5611        unsafe { &(*(::std::ptr::null::<_xstate>())).xstate_hdr as *const _ as usize },
5612        512usize,
5613        concat!(
5614            "Offset of field: ",
5615            stringify!(_xstate),
5616            "::",
5617            stringify!(xstate_hdr)
5618        )
5619    );
5620    assert_eq!(
5621        unsafe { &(*(::std::ptr::null::<_xstate>())).ymmh as *const _ as usize },
5622        576usize,
5623        concat!(
5624            "Offset of field: ",
5625            stringify!(_xstate),
5626            "::",
5627            stringify!(ymmh)
5628        )
5629    );
5630}
5631extern "C" {
5632    pub fn sigreturn(__scp: *mut sigcontext) -> ::std::os::raw::c_int;
5633}
5634#[repr(C)]
5635#[derive(Debug, Copy, Clone)]
5636pub struct stack_t {
5637    pub ss_sp: *mut ::std::os::raw::c_void,
5638    pub ss_flags: ::std::os::raw::c_int,
5639    pub ss_size: usize,
5640}
5641#[test]
5642fn bindgen_test_layout_stack_t() {
5643    assert_eq!(
5644        ::std::mem::size_of::<stack_t>(),
5645        24usize,
5646        concat!("Size of: ", stringify!(stack_t))
5647    );
5648    assert_eq!(
5649        ::std::mem::align_of::<stack_t>(),
5650        8usize,
5651        concat!("Alignment of ", stringify!(stack_t))
5652    );
5653    assert_eq!(
5654        unsafe { &(*(::std::ptr::null::<stack_t>())).ss_sp as *const _ as usize },
5655        0usize,
5656        concat!(
5657            "Offset of field: ",
5658            stringify!(stack_t),
5659            "::",
5660            stringify!(ss_sp)
5661        )
5662    );
5663    assert_eq!(
5664        unsafe { &(*(::std::ptr::null::<stack_t>())).ss_flags as *const _ as usize },
5665        8usize,
5666        concat!(
5667            "Offset of field: ",
5668            stringify!(stack_t),
5669            "::",
5670            stringify!(ss_flags)
5671        )
5672    );
5673    assert_eq!(
5674        unsafe { &(*(::std::ptr::null::<stack_t>())).ss_size as *const _ as usize },
5675        16usize,
5676        concat!(
5677            "Offset of field: ",
5678            stringify!(stack_t),
5679            "::",
5680            stringify!(ss_size)
5681        )
5682    );
5683}
5684pub type greg_t = ::std::os::raw::c_longlong;
5685pub type gregset_t = [greg_t; 23usize];
5686#[repr(C)]
5687#[derive(Debug, Copy, Clone)]
5688pub struct _libc_fpxreg {
5689    pub significand: [::std::os::raw::c_ushort; 4usize],
5690    pub exponent: ::std::os::raw::c_ushort,
5691    pub __glibc_reserved1: [::std::os::raw::c_ushort; 3usize],
5692}
5693#[test]
5694fn bindgen_test_layout__libc_fpxreg() {
5695    assert_eq!(
5696        ::std::mem::size_of::<_libc_fpxreg>(),
5697        16usize,
5698        concat!("Size of: ", stringify!(_libc_fpxreg))
5699    );
5700    assert_eq!(
5701        ::std::mem::align_of::<_libc_fpxreg>(),
5702        2usize,
5703        concat!("Alignment of ", stringify!(_libc_fpxreg))
5704    );
5705    assert_eq!(
5706        unsafe { &(*(::std::ptr::null::<_libc_fpxreg>())).significand as *const _ as usize },
5707        0usize,
5708        concat!(
5709            "Offset of field: ",
5710            stringify!(_libc_fpxreg),
5711            "::",
5712            stringify!(significand)
5713        )
5714    );
5715    assert_eq!(
5716        unsafe { &(*(::std::ptr::null::<_libc_fpxreg>())).exponent as *const _ as usize },
5717        8usize,
5718        concat!(
5719            "Offset of field: ",
5720            stringify!(_libc_fpxreg),
5721            "::",
5722            stringify!(exponent)
5723        )
5724    );
5725    assert_eq!(
5726        unsafe { &(*(::std::ptr::null::<_libc_fpxreg>())).__glibc_reserved1 as *const _ as usize },
5727        10usize,
5728        concat!(
5729            "Offset of field: ",
5730            stringify!(_libc_fpxreg),
5731            "::",
5732            stringify!(__glibc_reserved1)
5733        )
5734    );
5735}
5736#[repr(C)]
5737#[derive(Debug, Copy, Clone)]
5738pub struct _libc_xmmreg {
5739    pub element: [__uint32_t; 4usize],
5740}
5741#[test]
5742fn bindgen_test_layout__libc_xmmreg() {
5743    assert_eq!(
5744        ::std::mem::size_of::<_libc_xmmreg>(),
5745        16usize,
5746        concat!("Size of: ", stringify!(_libc_xmmreg))
5747    );
5748    assert_eq!(
5749        ::std::mem::align_of::<_libc_xmmreg>(),
5750        4usize,
5751        concat!("Alignment of ", stringify!(_libc_xmmreg))
5752    );
5753    assert_eq!(
5754        unsafe { &(*(::std::ptr::null::<_libc_xmmreg>())).element as *const _ as usize },
5755        0usize,
5756        concat!(
5757            "Offset of field: ",
5758            stringify!(_libc_xmmreg),
5759            "::",
5760            stringify!(element)
5761        )
5762    );
5763}
5764#[repr(C)]
5765#[derive(Debug, Copy, Clone)]
5766pub struct _libc_fpstate {
5767    pub cwd: __uint16_t,
5768    pub swd: __uint16_t,
5769    pub ftw: __uint16_t,
5770    pub fop: __uint16_t,
5771    pub rip: __uint64_t,
5772    pub rdp: __uint64_t,
5773    pub mxcsr: __uint32_t,
5774    pub mxcr_mask: __uint32_t,
5775    pub _st: [_libc_fpxreg; 8usize],
5776    pub _xmm: [_libc_xmmreg; 16usize],
5777    pub __glibc_reserved1: [__uint32_t; 24usize],
5778}
5779#[test]
5780fn bindgen_test_layout__libc_fpstate() {
5781    assert_eq!(
5782        ::std::mem::size_of::<_libc_fpstate>(),
5783        512usize,
5784        concat!("Size of: ", stringify!(_libc_fpstate))
5785    );
5786    assert_eq!(
5787        ::std::mem::align_of::<_libc_fpstate>(),
5788        8usize,
5789        concat!("Alignment of ", stringify!(_libc_fpstate))
5790    );
5791    assert_eq!(
5792        unsafe { &(*(::std::ptr::null::<_libc_fpstate>())).cwd as *const _ as usize },
5793        0usize,
5794        concat!(
5795            "Offset of field: ",
5796            stringify!(_libc_fpstate),
5797            "::",
5798            stringify!(cwd)
5799        )
5800    );
5801    assert_eq!(
5802        unsafe { &(*(::std::ptr::null::<_libc_fpstate>())).swd as *const _ as usize },
5803        2usize,
5804        concat!(
5805            "Offset of field: ",
5806            stringify!(_libc_fpstate),
5807            "::",
5808            stringify!(swd)
5809        )
5810    );
5811    assert_eq!(
5812        unsafe { &(*(::std::ptr::null::<_libc_fpstate>())).ftw as *const _ as usize },
5813        4usize,
5814        concat!(
5815            "Offset of field: ",
5816            stringify!(_libc_fpstate),
5817            "::",
5818            stringify!(ftw)
5819        )
5820    );
5821    assert_eq!(
5822        unsafe { &(*(::std::ptr::null::<_libc_fpstate>())).fop as *const _ as usize },
5823        6usize,
5824        concat!(
5825            "Offset of field: ",
5826            stringify!(_libc_fpstate),
5827            "::",
5828            stringify!(fop)
5829        )
5830    );
5831    assert_eq!(
5832        unsafe { &(*(::std::ptr::null::<_libc_fpstate>())).rip as *const _ as usize },
5833        8usize,
5834        concat!(
5835            "Offset of field: ",
5836            stringify!(_libc_fpstate),
5837            "::",
5838            stringify!(rip)
5839        )
5840    );
5841    assert_eq!(
5842        unsafe { &(*(::std::ptr::null::<_libc_fpstate>())).rdp as *const _ as usize },
5843        16usize,
5844        concat!(
5845            "Offset of field: ",
5846            stringify!(_libc_fpstate),
5847            "::",
5848            stringify!(rdp)
5849        )
5850    );
5851    assert_eq!(
5852        unsafe { &(*(::std::ptr::null::<_libc_fpstate>())).mxcsr as *const _ as usize },
5853        24usize,
5854        concat!(
5855            "Offset of field: ",
5856            stringify!(_libc_fpstate),
5857            "::",
5858            stringify!(mxcsr)
5859        )
5860    );
5861    assert_eq!(
5862        unsafe { &(*(::std::ptr::null::<_libc_fpstate>())).mxcr_mask as *const _ as usize },
5863        28usize,
5864        concat!(
5865            "Offset of field: ",
5866            stringify!(_libc_fpstate),
5867            "::",
5868            stringify!(mxcr_mask)
5869        )
5870    );
5871    assert_eq!(
5872        unsafe { &(*(::std::ptr::null::<_libc_fpstate>()))._st as *const _ as usize },
5873        32usize,
5874        concat!(
5875            "Offset of field: ",
5876            stringify!(_libc_fpstate),
5877            "::",
5878            stringify!(_st)
5879        )
5880    );
5881    assert_eq!(
5882        unsafe { &(*(::std::ptr::null::<_libc_fpstate>()))._xmm as *const _ as usize },
5883        160usize,
5884        concat!(
5885            "Offset of field: ",
5886            stringify!(_libc_fpstate),
5887            "::",
5888            stringify!(_xmm)
5889        )
5890    );
5891    assert_eq!(
5892        unsafe { &(*(::std::ptr::null::<_libc_fpstate>())).__glibc_reserved1 as *const _ as usize },
5893        416usize,
5894        concat!(
5895            "Offset of field: ",
5896            stringify!(_libc_fpstate),
5897            "::",
5898            stringify!(__glibc_reserved1)
5899        )
5900    );
5901}
5902pub type fpregset_t = *mut _libc_fpstate;
5903#[repr(C)]
5904#[derive(Debug, Copy, Clone)]
5905pub struct mcontext_t {
5906    pub gregs: gregset_t,
5907    pub fpregs: fpregset_t,
5908    pub __reserved1: [::std::os::raw::c_ulonglong; 8usize],
5909}
5910#[test]
5911fn bindgen_test_layout_mcontext_t() {
5912    assert_eq!(
5913        ::std::mem::size_of::<mcontext_t>(),
5914        256usize,
5915        concat!("Size of: ", stringify!(mcontext_t))
5916    );
5917    assert_eq!(
5918        ::std::mem::align_of::<mcontext_t>(),
5919        8usize,
5920        concat!("Alignment of ", stringify!(mcontext_t))
5921    );
5922    assert_eq!(
5923        unsafe { &(*(::std::ptr::null::<mcontext_t>())).gregs as *const _ as usize },
5924        0usize,
5925        concat!(
5926            "Offset of field: ",
5927            stringify!(mcontext_t),
5928            "::",
5929            stringify!(gregs)
5930        )
5931    );
5932    assert_eq!(
5933        unsafe { &(*(::std::ptr::null::<mcontext_t>())).fpregs as *const _ as usize },
5934        184usize,
5935        concat!(
5936            "Offset of field: ",
5937            stringify!(mcontext_t),
5938            "::",
5939            stringify!(fpregs)
5940        )
5941    );
5942    assert_eq!(
5943        unsafe { &(*(::std::ptr::null::<mcontext_t>())).__reserved1 as *const _ as usize },
5944        192usize,
5945        concat!(
5946            "Offset of field: ",
5947            stringify!(mcontext_t),
5948            "::",
5949            stringify!(__reserved1)
5950        )
5951    );
5952}
5953#[repr(C)]
5954#[derive(Debug, Copy, Clone)]
5955pub struct ucontext_t {
5956    pub uc_flags: ::std::os::raw::c_ulong,
5957    pub uc_link: *mut ucontext_t,
5958    pub uc_stack: stack_t,
5959    pub uc_mcontext: mcontext_t,
5960    pub uc_sigmask: sigset_t,
5961    pub __fpregs_mem: _libc_fpstate,
5962    pub __ssp: [::std::os::raw::c_ulonglong; 4usize],
5963}
5964#[test]
5965fn bindgen_test_layout_ucontext_t() {
5966    assert_eq!(
5967        ::std::mem::size_of::<ucontext_t>(),
5968        968usize,
5969        concat!("Size of: ", stringify!(ucontext_t))
5970    );
5971    assert_eq!(
5972        ::std::mem::align_of::<ucontext_t>(),
5973        8usize,
5974        concat!("Alignment of ", stringify!(ucontext_t))
5975    );
5976    assert_eq!(
5977        unsafe { &(*(::std::ptr::null::<ucontext_t>())).uc_flags as *const _ as usize },
5978        0usize,
5979        concat!(
5980            "Offset of field: ",
5981            stringify!(ucontext_t),
5982            "::",
5983            stringify!(uc_flags)
5984        )
5985    );
5986    assert_eq!(
5987        unsafe { &(*(::std::ptr::null::<ucontext_t>())).uc_link as *const _ as usize },
5988        8usize,
5989        concat!(
5990            "Offset of field: ",
5991            stringify!(ucontext_t),
5992            "::",
5993            stringify!(uc_link)
5994        )
5995    );
5996    assert_eq!(
5997        unsafe { &(*(::std::ptr::null::<ucontext_t>())).uc_stack as *const _ as usize },
5998        16usize,
5999        concat!(
6000            "Offset of field: ",
6001            stringify!(ucontext_t),
6002            "::",
6003            stringify!(uc_stack)
6004        )
6005    );
6006    assert_eq!(
6007        unsafe { &(*(::std::ptr::null::<ucontext_t>())).uc_mcontext as *const _ as usize },
6008        40usize,
6009        concat!(
6010            "Offset of field: ",
6011            stringify!(ucontext_t),
6012            "::",
6013            stringify!(uc_mcontext)
6014        )
6015    );
6016    assert_eq!(
6017        unsafe { &(*(::std::ptr::null::<ucontext_t>())).uc_sigmask as *const _ as usize },
6018        296usize,
6019        concat!(
6020            "Offset of field: ",
6021            stringify!(ucontext_t),
6022            "::",
6023            stringify!(uc_sigmask)
6024        )
6025    );
6026    assert_eq!(
6027        unsafe { &(*(::std::ptr::null::<ucontext_t>())).__fpregs_mem as *const _ as usize },
6028        424usize,
6029        concat!(
6030            "Offset of field: ",
6031            stringify!(ucontext_t),
6032            "::",
6033            stringify!(__fpregs_mem)
6034        )
6035    );
6036    assert_eq!(
6037        unsafe { &(*(::std::ptr::null::<ucontext_t>())).__ssp as *const _ as usize },
6038        936usize,
6039        concat!(
6040            "Offset of field: ",
6041            stringify!(ucontext_t),
6042            "::",
6043            stringify!(__ssp)
6044        )
6045    );
6046}
6047extern "C" {
6048    pub fn siginterrupt(
6049        __sig: ::std::os::raw::c_int,
6050        __interrupt: ::std::os::raw::c_int,
6051    ) -> ::std::os::raw::c_int;
6052}
6053pub const SS_ONSTACK: _bindgen_ty_10 = 1;
6054pub const SS_DISABLE: _bindgen_ty_10 = 2;
6055pub type _bindgen_ty_10 = u32;
6056extern "C" {
6057    pub fn sigaltstack(__ss: *const stack_t, __oss: *mut stack_t) -> ::std::os::raw::c_int;
6058}
6059#[repr(C)]
6060#[derive(Debug, Copy, Clone)]
6061pub struct sigstack {
6062    pub ss_sp: *mut ::std::os::raw::c_void,
6063    pub ss_onstack: ::std::os::raw::c_int,
6064}
6065#[test]
6066fn bindgen_test_layout_sigstack() {
6067    assert_eq!(
6068        ::std::mem::size_of::<sigstack>(),
6069        16usize,
6070        concat!("Size of: ", stringify!(sigstack))
6071    );
6072    assert_eq!(
6073        ::std::mem::align_of::<sigstack>(),
6074        8usize,
6075        concat!("Alignment of ", stringify!(sigstack))
6076    );
6077    assert_eq!(
6078        unsafe { &(*(::std::ptr::null::<sigstack>())).ss_sp as *const _ as usize },
6079        0usize,
6080        concat!(
6081            "Offset of field: ",
6082            stringify!(sigstack),
6083            "::",
6084            stringify!(ss_sp)
6085        )
6086    );
6087    assert_eq!(
6088        unsafe { &(*(::std::ptr::null::<sigstack>())).ss_onstack as *const _ as usize },
6089        8usize,
6090        concat!(
6091            "Offset of field: ",
6092            stringify!(sigstack),
6093            "::",
6094            stringify!(ss_onstack)
6095        )
6096    );
6097}
6098extern "C" {
6099    pub fn sigstack(__ss: *mut sigstack, __oss: *mut sigstack) -> ::std::os::raw::c_int;
6100}
6101extern "C" {
6102    pub fn pthread_sigmask(
6103        __how: ::std::os::raw::c_int,
6104        __newmask: *const __sigset_t,
6105        __oldmask: *mut __sigset_t,
6106    ) -> ::std::os::raw::c_int;
6107}
6108extern "C" {
6109    pub fn pthread_kill(
6110        __threadid: pthread_t,
6111        __signo: ::std::os::raw::c_int,
6112    ) -> ::std::os::raw::c_int;
6113}
6114extern "C" {
6115    pub fn __libc_current_sigrtmin() -> ::std::os::raw::c_int;
6116}
6117extern "C" {
6118    pub fn __libc_current_sigrtmax() -> ::std::os::raw::c_int;
6119}
6120pub type mpfr_void = ::std::os::raw::c_void;
6121pub type mpfr_int = ::std::os::raw::c_int;
6122pub type mpfr_uint = ::std::os::raw::c_uint;
6123pub type mpfr_long = ::std::os::raw::c_long;
6124pub type mpfr_ulong = ::std::os::raw::c_ulong;
6125pub type mpfr_size_t = usize;
6126pub type mpfr_flags_t = ::std::os::raw::c_uint;
6127pub const mpfr_rnd_t_MPFR_RNDN: mpfr_rnd_t = 0;
6128pub const mpfr_rnd_t_MPFR_RNDZ: mpfr_rnd_t = 1;
6129pub const mpfr_rnd_t_MPFR_RNDU: mpfr_rnd_t = 2;
6130pub const mpfr_rnd_t_MPFR_RNDD: mpfr_rnd_t = 3;
6131pub const mpfr_rnd_t_MPFR_RNDA: mpfr_rnd_t = 4;
6132pub const mpfr_rnd_t_MPFR_RNDF: mpfr_rnd_t = 5;
6133pub const mpfr_rnd_t_MPFR_RNDNA: mpfr_rnd_t = -1;
6134pub type mpfr_rnd_t = i32;
6135pub type mpfr_prec_t = ::std::os::raw::c_long;
6136pub type mpfr_uprec_t = ::std::os::raw::c_ulong;
6137pub type mpfr_sign_t = ::std::os::raw::c_int;
6138pub type mpfr_exp_t = ::std::os::raw::c_long;
6139pub type mpfr_uexp_t = ::std::os::raw::c_ulong;
6140#[repr(C)]
6141#[derive(Debug, Copy, Clone)]
6142pub struct __mpfr_struct {
6143    pub _mpfr_prec: mpfr_prec_t,
6144    pub _mpfr_sign: mpfr_sign_t,
6145    pub _mpfr_exp: mpfr_exp_t,
6146    pub _mpfr_d: *mut mp_limb_t,
6147}
6148#[test]
6149fn bindgen_test_layout___mpfr_struct() {
6150    assert_eq!(
6151        ::std::mem::size_of::<__mpfr_struct>(),
6152        32usize,
6153        concat!("Size of: ", stringify!(__mpfr_struct))
6154    );
6155    assert_eq!(
6156        ::std::mem::align_of::<__mpfr_struct>(),
6157        8usize,
6158        concat!("Alignment of ", stringify!(__mpfr_struct))
6159    );
6160    assert_eq!(
6161        unsafe { &(*(::std::ptr::null::<__mpfr_struct>()))._mpfr_prec as *const _ as usize },
6162        0usize,
6163        concat!(
6164            "Offset of field: ",
6165            stringify!(__mpfr_struct),
6166            "::",
6167            stringify!(_mpfr_prec)
6168        )
6169    );
6170    assert_eq!(
6171        unsafe { &(*(::std::ptr::null::<__mpfr_struct>()))._mpfr_sign as *const _ as usize },
6172        8usize,
6173        concat!(
6174            "Offset of field: ",
6175            stringify!(__mpfr_struct),
6176            "::",
6177            stringify!(_mpfr_sign)
6178        )
6179    );
6180    assert_eq!(
6181        unsafe { &(*(::std::ptr::null::<__mpfr_struct>()))._mpfr_exp as *const _ as usize },
6182        16usize,
6183        concat!(
6184            "Offset of field: ",
6185            stringify!(__mpfr_struct),
6186            "::",
6187            stringify!(_mpfr_exp)
6188        )
6189    );
6190    assert_eq!(
6191        unsafe { &(*(::std::ptr::null::<__mpfr_struct>()))._mpfr_d as *const _ as usize },
6192        24usize,
6193        concat!(
6194            "Offset of field: ",
6195            stringify!(__mpfr_struct),
6196            "::",
6197            stringify!(_mpfr_d)
6198        )
6199    );
6200}
6201pub type mpfr_t = [__mpfr_struct; 1usize];
6202pub type mpfr_ptr = *mut __mpfr_struct;
6203pub type mpfr_srcptr = *const __mpfr_struct;
6204pub const mpfr_kind_t_MPFR_NAN_KIND: mpfr_kind_t = 0;
6205pub const mpfr_kind_t_MPFR_INF_KIND: mpfr_kind_t = 1;
6206pub const mpfr_kind_t_MPFR_ZERO_KIND: mpfr_kind_t = 2;
6207pub const mpfr_kind_t_MPFR_REGULAR_KIND: mpfr_kind_t = 3;
6208pub type mpfr_kind_t = u32;
6209pub const mpfr_free_cache_t_MPFR_FREE_LOCAL_CACHE: mpfr_free_cache_t = 1;
6210pub const mpfr_free_cache_t_MPFR_FREE_GLOBAL_CACHE: mpfr_free_cache_t = 2;
6211pub type mpfr_free_cache_t = u32;
6212extern "C" {
6213    pub fn mpfr_get_version() -> *const ::std::os::raw::c_char;
6214}
6215extern "C" {
6216    pub fn mpfr_get_patches() -> *const ::std::os::raw::c_char;
6217}
6218extern "C" {
6219    pub fn mpfr_buildopt_tls_p() -> ::std::os::raw::c_int;
6220}
6221extern "C" {
6222    pub fn mpfr_buildopt_float128_p() -> ::std::os::raw::c_int;
6223}
6224extern "C" {
6225    pub fn mpfr_buildopt_decimal_p() -> ::std::os::raw::c_int;
6226}
6227extern "C" {
6228    pub fn mpfr_buildopt_gmpinternals_p() -> ::std::os::raw::c_int;
6229}
6230extern "C" {
6231    pub fn mpfr_buildopt_sharedcache_p() -> ::std::os::raw::c_int;
6232}
6233extern "C" {
6234    pub fn mpfr_buildopt_tune_case() -> *const ::std::os::raw::c_char;
6235}
6236extern "C" {
6237    pub fn mpfr_get_emin() -> mpfr_exp_t;
6238}
6239extern "C" {
6240    pub fn mpfr_set_emin(arg1: mpfr_exp_t) -> ::std::os::raw::c_int;
6241}
6242extern "C" {
6243    pub fn mpfr_get_emin_min() -> mpfr_exp_t;
6244}
6245extern "C" {
6246    pub fn mpfr_get_emin_max() -> mpfr_exp_t;
6247}
6248extern "C" {
6249    pub fn mpfr_get_emax() -> mpfr_exp_t;
6250}
6251extern "C" {
6252    pub fn mpfr_set_emax(arg1: mpfr_exp_t) -> ::std::os::raw::c_int;
6253}
6254extern "C" {
6255    pub fn mpfr_get_emax_min() -> mpfr_exp_t;
6256}
6257extern "C" {
6258    pub fn mpfr_get_emax_max() -> mpfr_exp_t;
6259}
6260extern "C" {
6261    pub fn mpfr_set_default_rounding_mode(arg1: mpfr_rnd_t);
6262}
6263extern "C" {
6264    pub fn mpfr_get_default_rounding_mode() -> mpfr_rnd_t;
6265}
6266extern "C" {
6267    pub fn mpfr_print_rnd_mode(arg1: mpfr_rnd_t) -> *const ::std::os::raw::c_char;
6268}
6269extern "C" {
6270    pub fn mpfr_clear_flags();
6271}
6272extern "C" {
6273    pub fn mpfr_clear_underflow();
6274}
6275extern "C" {
6276    pub fn mpfr_clear_overflow();
6277}
6278extern "C" {
6279    pub fn mpfr_clear_divby0();
6280}
6281extern "C" {
6282    pub fn mpfr_clear_nanflag();
6283}
6284extern "C" {
6285    pub fn mpfr_clear_inexflag();
6286}
6287extern "C" {
6288    pub fn mpfr_clear_erangeflag();
6289}
6290extern "C" {
6291    pub fn mpfr_set_underflow();
6292}
6293extern "C" {
6294    pub fn mpfr_set_overflow();
6295}
6296extern "C" {
6297    pub fn mpfr_set_divby0();
6298}
6299extern "C" {
6300    pub fn mpfr_set_nanflag();
6301}
6302extern "C" {
6303    pub fn mpfr_set_inexflag();
6304}
6305extern "C" {
6306    pub fn mpfr_set_erangeflag();
6307}
6308extern "C" {
6309    pub fn mpfr_underflow_p() -> ::std::os::raw::c_int;
6310}
6311extern "C" {
6312    pub fn mpfr_overflow_p() -> ::std::os::raw::c_int;
6313}
6314extern "C" {
6315    pub fn mpfr_divby0_p() -> ::std::os::raw::c_int;
6316}
6317extern "C" {
6318    pub fn mpfr_nanflag_p() -> ::std::os::raw::c_int;
6319}
6320extern "C" {
6321    pub fn mpfr_inexflag_p() -> ::std::os::raw::c_int;
6322}
6323extern "C" {
6324    pub fn mpfr_erangeflag_p() -> ::std::os::raw::c_int;
6325}
6326extern "C" {
6327    pub fn mpfr_flags_clear(arg1: mpfr_flags_t);
6328}
6329extern "C" {
6330    pub fn mpfr_flags_set(arg1: mpfr_flags_t);
6331}
6332extern "C" {
6333    pub fn mpfr_flags_test(arg1: mpfr_flags_t) -> mpfr_flags_t;
6334}
6335extern "C" {
6336    pub fn mpfr_flags_save() -> mpfr_flags_t;
6337}
6338extern "C" {
6339    pub fn mpfr_flags_restore(arg1: mpfr_flags_t, arg2: mpfr_flags_t);
6340}
6341extern "C" {
6342    pub fn mpfr_check_range(
6343        arg1: mpfr_ptr,
6344        arg2: ::std::os::raw::c_int,
6345        arg3: mpfr_rnd_t,
6346    ) -> ::std::os::raw::c_int;
6347}
6348extern "C" {
6349    pub fn mpfr_init2(arg1: mpfr_ptr, arg2: mpfr_prec_t);
6350}
6351extern "C" {
6352    pub fn mpfr_init(arg1: mpfr_ptr);
6353}
6354extern "C" {
6355    pub fn mpfr_clear(arg1: mpfr_ptr);
6356}
6357extern "C" {
6358    pub fn mpfr_inits2(arg1: mpfr_prec_t, arg2: mpfr_ptr, ...);
6359}
6360extern "C" {
6361    pub fn mpfr_inits(arg1: mpfr_ptr, ...);
6362}
6363extern "C" {
6364    pub fn mpfr_clears(arg1: mpfr_ptr, ...);
6365}
6366extern "C" {
6367    pub fn mpfr_prec_round(
6368        arg1: mpfr_ptr,
6369        arg2: mpfr_prec_t,
6370        arg3: mpfr_rnd_t,
6371    ) -> ::std::os::raw::c_int;
6372}
6373extern "C" {
6374    pub fn mpfr_can_round(
6375        arg1: mpfr_srcptr,
6376        arg2: mpfr_exp_t,
6377        arg3: mpfr_rnd_t,
6378        arg4: mpfr_rnd_t,
6379        arg5: mpfr_prec_t,
6380    ) -> ::std::os::raw::c_int;
6381}
6382extern "C" {
6383    pub fn mpfr_min_prec(arg1: mpfr_srcptr) -> mpfr_prec_t;
6384}
6385extern "C" {
6386    pub fn mpfr_get_exp(arg1: mpfr_srcptr) -> mpfr_exp_t;
6387}
6388extern "C" {
6389    pub fn mpfr_set_exp(arg1: mpfr_ptr, arg2: mpfr_exp_t) -> ::std::os::raw::c_int;
6390}
6391extern "C" {
6392    pub fn mpfr_get_prec(arg1: mpfr_srcptr) -> mpfr_prec_t;
6393}
6394extern "C" {
6395    pub fn mpfr_set_prec(arg1: mpfr_ptr, arg2: mpfr_prec_t);
6396}
6397extern "C" {
6398    pub fn mpfr_set_prec_raw(arg1: mpfr_ptr, arg2: mpfr_prec_t);
6399}
6400extern "C" {
6401    pub fn mpfr_set_default_prec(arg1: mpfr_prec_t);
6402}
6403extern "C" {
6404    pub fn mpfr_get_default_prec() -> mpfr_prec_t;
6405}
6406extern "C" {
6407    pub fn mpfr_set_d(arg1: mpfr_ptr, arg2: f64, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
6408}
6409extern "C" {
6410    pub fn mpfr_set_flt(arg1: mpfr_ptr, arg2: f32, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
6411}
6412extern "C" {
6413    pub fn mpfr_set_ld(arg1: mpfr_ptr, arg2: u128, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
6414}
6415extern "C" {
6416    pub fn mpfr_set_z(arg1: mpfr_ptr, arg2: mpz_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
6417}
6418extern "C" {
6419    pub fn mpfr_set_z_2exp(
6420        arg1: mpfr_ptr,
6421        arg2: mpz_srcptr,
6422        arg3: mpfr_exp_t,
6423        arg4: mpfr_rnd_t,
6424    ) -> ::std::os::raw::c_int;
6425}
6426extern "C" {
6427    pub fn mpfr_set_nan(arg1: mpfr_ptr);
6428}
6429extern "C" {
6430    pub fn mpfr_set_inf(arg1: mpfr_ptr, arg2: ::std::os::raw::c_int);
6431}
6432extern "C" {
6433    pub fn mpfr_set_zero(arg1: mpfr_ptr, arg2: ::std::os::raw::c_int);
6434}
6435extern "C" {
6436    pub fn mpfr_set_f(arg1: mpfr_ptr, arg2: mpf_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
6437}
6438extern "C" {
6439    pub fn mpfr_cmp_f(arg1: mpfr_srcptr, arg2: mpf_srcptr) -> ::std::os::raw::c_int;
6440}
6441extern "C" {
6442    pub fn mpfr_get_f(arg1: mpf_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
6443}
6444extern "C" {
6445    pub fn mpfr_set_si(
6446        arg1: mpfr_ptr,
6447        arg2: ::std::os::raw::c_long,
6448        arg3: mpfr_rnd_t,
6449    ) -> ::std::os::raw::c_int;
6450}
6451extern "C" {
6452    pub fn mpfr_set_ui(
6453        arg1: mpfr_ptr,
6454        arg2: ::std::os::raw::c_ulong,
6455        arg3: mpfr_rnd_t,
6456    ) -> ::std::os::raw::c_int;
6457}
6458extern "C" {
6459    pub fn mpfr_set_si_2exp(
6460        arg1: mpfr_ptr,
6461        arg2: ::std::os::raw::c_long,
6462        arg3: mpfr_exp_t,
6463        arg4: mpfr_rnd_t,
6464    ) -> ::std::os::raw::c_int;
6465}
6466extern "C" {
6467    pub fn mpfr_set_ui_2exp(
6468        arg1: mpfr_ptr,
6469        arg2: ::std::os::raw::c_ulong,
6470        arg3: mpfr_exp_t,
6471        arg4: mpfr_rnd_t,
6472    ) -> ::std::os::raw::c_int;
6473}
6474extern "C" {
6475    pub fn mpfr_set_q(arg1: mpfr_ptr, arg2: mpq_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
6476}
6477extern "C" {
6478    pub fn mpfr_mul_q(
6479        arg1: mpfr_ptr,
6480        arg2: mpfr_srcptr,
6481        arg3: mpq_srcptr,
6482        arg4: mpfr_rnd_t,
6483    ) -> ::std::os::raw::c_int;
6484}
6485extern "C" {
6486    pub fn mpfr_div_q(
6487        arg1: mpfr_ptr,
6488        arg2: mpfr_srcptr,
6489        arg3: mpq_srcptr,
6490        arg4: mpfr_rnd_t,
6491    ) -> ::std::os::raw::c_int;
6492}
6493extern "C" {
6494    pub fn mpfr_add_q(
6495        arg1: mpfr_ptr,
6496        arg2: mpfr_srcptr,
6497        arg3: mpq_srcptr,
6498        arg4: mpfr_rnd_t,
6499    ) -> ::std::os::raw::c_int;
6500}
6501extern "C" {
6502    pub fn mpfr_sub_q(
6503        arg1: mpfr_ptr,
6504        arg2: mpfr_srcptr,
6505        arg3: mpq_srcptr,
6506        arg4: mpfr_rnd_t,
6507    ) -> ::std::os::raw::c_int;
6508}
6509extern "C" {
6510    pub fn mpfr_cmp_q(arg1: mpfr_srcptr, arg2: mpq_srcptr) -> ::std::os::raw::c_int;
6511}
6512extern "C" {
6513    pub fn mpfr_get_q(q: mpq_ptr, f: mpfr_srcptr);
6514}
6515extern "C" {
6516    pub fn mpfr_set_str(
6517        arg1: mpfr_ptr,
6518        arg2: *const ::std::os::raw::c_char,
6519        arg3: ::std::os::raw::c_int,
6520        arg4: mpfr_rnd_t,
6521    ) -> ::std::os::raw::c_int;
6522}
6523extern "C" {
6524    pub fn mpfr_init_set_str(
6525        arg1: mpfr_ptr,
6526        arg2: *const ::std::os::raw::c_char,
6527        arg3: ::std::os::raw::c_int,
6528        arg4: mpfr_rnd_t,
6529    ) -> ::std::os::raw::c_int;
6530}
6531extern "C" {
6532    pub fn mpfr_set4(
6533        arg1: mpfr_ptr,
6534        arg2: mpfr_srcptr,
6535        arg3: mpfr_rnd_t,
6536        arg4: ::std::os::raw::c_int,
6537    ) -> ::std::os::raw::c_int;
6538}
6539extern "C" {
6540    pub fn mpfr_abs(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
6541}
6542extern "C" {
6543    pub fn mpfr_set(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
6544}
6545extern "C" {
6546    pub fn mpfr_neg(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
6547}
6548extern "C" {
6549    pub fn mpfr_signbit(arg1: mpfr_srcptr) -> ::std::os::raw::c_int;
6550}
6551extern "C" {
6552    pub fn mpfr_setsign(
6553        arg1: mpfr_ptr,
6554        arg2: mpfr_srcptr,
6555        arg3: ::std::os::raw::c_int,
6556        arg4: mpfr_rnd_t,
6557    ) -> ::std::os::raw::c_int;
6558}
6559extern "C" {
6560    pub fn mpfr_copysign(
6561        arg1: mpfr_ptr,
6562        arg2: mpfr_srcptr,
6563        arg3: mpfr_srcptr,
6564        arg4: mpfr_rnd_t,
6565    ) -> ::std::os::raw::c_int;
6566}
6567extern "C" {
6568    pub fn mpfr_get_z_2exp(arg1: mpz_ptr, arg2: mpfr_srcptr) -> mpfr_exp_t;
6569}
6570extern "C" {
6571    pub fn mpfr_get_flt(arg1: mpfr_srcptr, arg2: mpfr_rnd_t) -> f32;
6572}
6573extern "C" {
6574    pub fn mpfr_get_d(arg1: mpfr_srcptr, arg2: mpfr_rnd_t) -> f64;
6575}
6576extern "C" {
6577    pub fn mpfr_get_ld(arg1: mpfr_srcptr, arg2: mpfr_rnd_t) -> u128;
6578}
6579extern "C" {
6580    pub fn mpfr_get_d1(arg1: mpfr_srcptr) -> f64;
6581}
6582extern "C" {
6583    pub fn mpfr_get_d_2exp(
6584        arg1: *mut ::std::os::raw::c_long,
6585        arg2: mpfr_srcptr,
6586        arg3: mpfr_rnd_t,
6587    ) -> f64;
6588}
6589extern "C" {
6590    pub fn mpfr_get_ld_2exp(
6591        arg1: *mut ::std::os::raw::c_long,
6592        arg2: mpfr_srcptr,
6593        arg3: mpfr_rnd_t,
6594    ) -> u128;
6595}
6596extern "C" {
6597    pub fn mpfr_frexp(
6598        arg1: *mut mpfr_exp_t,
6599        arg2: mpfr_ptr,
6600        arg3: mpfr_srcptr,
6601        arg4: mpfr_rnd_t,
6602    ) -> ::std::os::raw::c_int;
6603}
6604extern "C" {
6605    pub fn mpfr_get_si(arg1: mpfr_srcptr, arg2: mpfr_rnd_t) -> ::std::os::raw::c_long;
6606}
6607extern "C" {
6608    pub fn mpfr_get_ui(arg1: mpfr_srcptr, arg2: mpfr_rnd_t) -> ::std::os::raw::c_ulong;
6609}
6610extern "C" {
6611    pub fn mpfr_get_str(
6612        arg1: *mut ::std::os::raw::c_char,
6613        arg2: *mut mpfr_exp_t,
6614        arg3: ::std::os::raw::c_int,
6615        arg4: usize,
6616        arg5: mpfr_srcptr,
6617        arg6: mpfr_rnd_t,
6618    ) -> *mut ::std::os::raw::c_char;
6619}
6620extern "C" {
6621    pub fn mpfr_get_z(z: mpz_ptr, f: mpfr_srcptr, arg1: mpfr_rnd_t) -> ::std::os::raw::c_int;
6622}
6623extern "C" {
6624    pub fn mpfr_free_str(arg1: *mut ::std::os::raw::c_char);
6625}
6626extern "C" {
6627    pub fn mpfr_urandom(
6628        arg1: mpfr_ptr,
6629        arg2: *mut __gmp_randstate_struct,
6630        arg3: mpfr_rnd_t,
6631    ) -> ::std::os::raw::c_int;
6632}
6633extern "C" {
6634    pub fn mpfr_grandom(
6635        arg1: mpfr_ptr,
6636        arg2: mpfr_ptr,
6637        arg3: *mut __gmp_randstate_struct,
6638        arg4: mpfr_rnd_t,
6639    ) -> ::std::os::raw::c_int;
6640}
6641extern "C" {
6642    pub fn mpfr_nrandom(
6643        arg1: mpfr_ptr,
6644        arg2: *mut __gmp_randstate_struct,
6645        arg3: mpfr_rnd_t,
6646    ) -> ::std::os::raw::c_int;
6647}
6648extern "C" {
6649    pub fn mpfr_erandom(
6650        arg1: mpfr_ptr,
6651        arg2: *mut __gmp_randstate_struct,
6652        arg3: mpfr_rnd_t,
6653    ) -> ::std::os::raw::c_int;
6654}
6655extern "C" {
6656    pub fn mpfr_urandomb(
6657        arg1: mpfr_ptr,
6658        arg2: *mut __gmp_randstate_struct,
6659    ) -> ::std::os::raw::c_int;
6660}
6661extern "C" {
6662    pub fn mpfr_nextabove(arg1: mpfr_ptr);
6663}
6664extern "C" {
6665    pub fn mpfr_nextbelow(arg1: mpfr_ptr);
6666}
6667extern "C" {
6668    pub fn mpfr_nexttoward(arg1: mpfr_ptr, arg2: mpfr_srcptr);
6669}
6670extern "C" {
6671    pub fn mpfr_printf(arg1: *const ::std::os::raw::c_char, ...) -> ::std::os::raw::c_int;
6672}
6673extern "C" {
6674    pub fn mpfr_asprintf(
6675        arg1: *mut *mut ::std::os::raw::c_char,
6676        arg2: *const ::std::os::raw::c_char,
6677        ...
6678    ) -> ::std::os::raw::c_int;
6679}
6680extern "C" {
6681    pub fn mpfr_sprintf(
6682        arg1: *mut ::std::os::raw::c_char,
6683        arg2: *const ::std::os::raw::c_char,
6684        ...
6685    ) -> ::std::os::raw::c_int;
6686}
6687extern "C" {
6688    pub fn mpfr_snprintf(
6689        arg1: *mut ::std::os::raw::c_char,
6690        arg2: usize,
6691        arg3: *const ::std::os::raw::c_char,
6692        ...
6693    ) -> ::std::os::raw::c_int;
6694}
6695extern "C" {
6696    pub fn mpfr_pow(
6697        arg1: mpfr_ptr,
6698        arg2: mpfr_srcptr,
6699        arg3: mpfr_srcptr,
6700        arg4: mpfr_rnd_t,
6701    ) -> ::std::os::raw::c_int;
6702}
6703extern "C" {
6704    pub fn mpfr_pow_si(
6705        arg1: mpfr_ptr,
6706        arg2: mpfr_srcptr,
6707        arg3: ::std::os::raw::c_long,
6708        arg4: mpfr_rnd_t,
6709    ) -> ::std::os::raw::c_int;
6710}
6711extern "C" {
6712    pub fn mpfr_pow_ui(
6713        arg1: mpfr_ptr,
6714        arg2: mpfr_srcptr,
6715        arg3: ::std::os::raw::c_ulong,
6716        arg4: mpfr_rnd_t,
6717    ) -> ::std::os::raw::c_int;
6718}
6719extern "C" {
6720    pub fn mpfr_ui_pow_ui(
6721        arg1: mpfr_ptr,
6722        arg2: ::std::os::raw::c_ulong,
6723        arg3: ::std::os::raw::c_ulong,
6724        arg4: mpfr_rnd_t,
6725    ) -> ::std::os::raw::c_int;
6726}
6727extern "C" {
6728    pub fn mpfr_ui_pow(
6729        arg1: mpfr_ptr,
6730        arg2: ::std::os::raw::c_ulong,
6731        arg3: mpfr_srcptr,
6732        arg4: mpfr_rnd_t,
6733    ) -> ::std::os::raw::c_int;
6734}
6735extern "C" {
6736    pub fn mpfr_pow_z(
6737        arg1: mpfr_ptr,
6738        arg2: mpfr_srcptr,
6739        arg3: mpz_srcptr,
6740        arg4: mpfr_rnd_t,
6741    ) -> ::std::os::raw::c_int;
6742}
6743extern "C" {
6744    pub fn mpfr_sqrt(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
6745}
6746extern "C" {
6747    pub fn mpfr_sqrt_ui(
6748        arg1: mpfr_ptr,
6749        arg2: ::std::os::raw::c_ulong,
6750        arg3: mpfr_rnd_t,
6751    ) -> ::std::os::raw::c_int;
6752}
6753extern "C" {
6754    pub fn mpfr_rec_sqrt(
6755        arg1: mpfr_ptr,
6756        arg2: mpfr_srcptr,
6757        arg3: mpfr_rnd_t,
6758    ) -> ::std::os::raw::c_int;
6759}
6760extern "C" {
6761    pub fn mpfr_add(
6762        arg1: mpfr_ptr,
6763        arg2: mpfr_srcptr,
6764        arg3: mpfr_srcptr,
6765        arg4: mpfr_rnd_t,
6766    ) -> ::std::os::raw::c_int;
6767}
6768extern "C" {
6769    pub fn mpfr_sub(
6770        arg1: mpfr_ptr,
6771        arg2: mpfr_srcptr,
6772        arg3: mpfr_srcptr,
6773        arg4: mpfr_rnd_t,
6774    ) -> ::std::os::raw::c_int;
6775}
6776extern "C" {
6777    pub fn mpfr_mul(
6778        arg1: mpfr_ptr,
6779        arg2: mpfr_srcptr,
6780        arg3: mpfr_srcptr,
6781        arg4: mpfr_rnd_t,
6782    ) -> ::std::os::raw::c_int;
6783}
6784extern "C" {
6785    pub fn mpfr_div(
6786        arg1: mpfr_ptr,
6787        arg2: mpfr_srcptr,
6788        arg3: mpfr_srcptr,
6789        arg4: mpfr_rnd_t,
6790    ) -> ::std::os::raw::c_int;
6791}
6792extern "C" {
6793    pub fn mpfr_add_ui(
6794        arg1: mpfr_ptr,
6795        arg2: mpfr_srcptr,
6796        arg3: ::std::os::raw::c_ulong,
6797        arg4: mpfr_rnd_t,
6798    ) -> ::std::os::raw::c_int;
6799}
6800extern "C" {
6801    pub fn mpfr_sub_ui(
6802        arg1: mpfr_ptr,
6803        arg2: mpfr_srcptr,
6804        arg3: ::std::os::raw::c_ulong,
6805        arg4: mpfr_rnd_t,
6806    ) -> ::std::os::raw::c_int;
6807}
6808extern "C" {
6809    pub fn mpfr_ui_sub(
6810        arg1: mpfr_ptr,
6811        arg2: ::std::os::raw::c_ulong,
6812        arg3: mpfr_srcptr,
6813        arg4: mpfr_rnd_t,
6814    ) -> ::std::os::raw::c_int;
6815}
6816extern "C" {
6817    pub fn mpfr_mul_ui(
6818        arg1: mpfr_ptr,
6819        arg2: mpfr_srcptr,
6820        arg3: ::std::os::raw::c_ulong,
6821        arg4: mpfr_rnd_t,
6822    ) -> ::std::os::raw::c_int;
6823}
6824extern "C" {
6825    pub fn mpfr_div_ui(
6826        arg1: mpfr_ptr,
6827        arg2: mpfr_srcptr,
6828        arg3: ::std::os::raw::c_ulong,
6829        arg4: mpfr_rnd_t,
6830    ) -> ::std::os::raw::c_int;
6831}
6832extern "C" {
6833    pub fn mpfr_ui_div(
6834        arg1: mpfr_ptr,
6835        arg2: ::std::os::raw::c_ulong,
6836        arg3: mpfr_srcptr,
6837        arg4: mpfr_rnd_t,
6838    ) -> ::std::os::raw::c_int;
6839}
6840extern "C" {
6841    pub fn mpfr_add_si(
6842        arg1: mpfr_ptr,
6843        arg2: mpfr_srcptr,
6844        arg3: ::std::os::raw::c_long,
6845        arg4: mpfr_rnd_t,
6846    ) -> ::std::os::raw::c_int;
6847}
6848extern "C" {
6849    pub fn mpfr_sub_si(
6850        arg1: mpfr_ptr,
6851        arg2: mpfr_srcptr,
6852        arg3: ::std::os::raw::c_long,
6853        arg4: mpfr_rnd_t,
6854    ) -> ::std::os::raw::c_int;
6855}
6856extern "C" {
6857    pub fn mpfr_si_sub(
6858        arg1: mpfr_ptr,
6859        arg2: ::std::os::raw::c_long,
6860        arg3: mpfr_srcptr,
6861        arg4: mpfr_rnd_t,
6862    ) -> ::std::os::raw::c_int;
6863}
6864extern "C" {
6865    pub fn mpfr_mul_si(
6866        arg1: mpfr_ptr,
6867        arg2: mpfr_srcptr,
6868        arg3: ::std::os::raw::c_long,
6869        arg4: mpfr_rnd_t,
6870    ) -> ::std::os::raw::c_int;
6871}
6872extern "C" {
6873    pub fn mpfr_div_si(
6874        arg1: mpfr_ptr,
6875        arg2: mpfr_srcptr,
6876        arg3: ::std::os::raw::c_long,
6877        arg4: mpfr_rnd_t,
6878    ) -> ::std::os::raw::c_int;
6879}
6880extern "C" {
6881    pub fn mpfr_si_div(
6882        arg1: mpfr_ptr,
6883        arg2: ::std::os::raw::c_long,
6884        arg3: mpfr_srcptr,
6885        arg4: mpfr_rnd_t,
6886    ) -> ::std::os::raw::c_int;
6887}
6888extern "C" {
6889    pub fn mpfr_add_d(
6890        arg1: mpfr_ptr,
6891        arg2: mpfr_srcptr,
6892        arg3: f64,
6893        arg4: mpfr_rnd_t,
6894    ) -> ::std::os::raw::c_int;
6895}
6896extern "C" {
6897    pub fn mpfr_sub_d(
6898        arg1: mpfr_ptr,
6899        arg2: mpfr_srcptr,
6900        arg3: f64,
6901        arg4: mpfr_rnd_t,
6902    ) -> ::std::os::raw::c_int;
6903}
6904extern "C" {
6905    pub fn mpfr_d_sub(
6906        arg1: mpfr_ptr,
6907        arg2: f64,
6908        arg3: mpfr_srcptr,
6909        arg4: mpfr_rnd_t,
6910    ) -> ::std::os::raw::c_int;
6911}
6912extern "C" {
6913    pub fn mpfr_mul_d(
6914        arg1: mpfr_ptr,
6915        arg2: mpfr_srcptr,
6916        arg3: f64,
6917        arg4: mpfr_rnd_t,
6918    ) -> ::std::os::raw::c_int;
6919}
6920extern "C" {
6921    pub fn mpfr_div_d(
6922        arg1: mpfr_ptr,
6923        arg2: mpfr_srcptr,
6924        arg3: f64,
6925        arg4: mpfr_rnd_t,
6926    ) -> ::std::os::raw::c_int;
6927}
6928extern "C" {
6929    pub fn mpfr_d_div(
6930        arg1: mpfr_ptr,
6931        arg2: f64,
6932        arg3: mpfr_srcptr,
6933        arg4: mpfr_rnd_t,
6934    ) -> ::std::os::raw::c_int;
6935}
6936extern "C" {
6937    pub fn mpfr_sqr(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
6938}
6939extern "C" {
6940    pub fn mpfr_const_pi(arg1: mpfr_ptr, arg2: mpfr_rnd_t) -> ::std::os::raw::c_int;
6941}
6942extern "C" {
6943    pub fn mpfr_const_log2(arg1: mpfr_ptr, arg2: mpfr_rnd_t) -> ::std::os::raw::c_int;
6944}
6945extern "C" {
6946    pub fn mpfr_const_euler(arg1: mpfr_ptr, arg2: mpfr_rnd_t) -> ::std::os::raw::c_int;
6947}
6948extern "C" {
6949    pub fn mpfr_const_catalan(arg1: mpfr_ptr, arg2: mpfr_rnd_t) -> ::std::os::raw::c_int;
6950}
6951extern "C" {
6952    pub fn mpfr_agm(
6953        arg1: mpfr_ptr,
6954        arg2: mpfr_srcptr,
6955        arg3: mpfr_srcptr,
6956        arg4: mpfr_rnd_t,
6957    ) -> ::std::os::raw::c_int;
6958}
6959extern "C" {
6960    pub fn mpfr_log(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
6961}
6962extern "C" {
6963    pub fn mpfr_log2(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
6964}
6965extern "C" {
6966    pub fn mpfr_log10(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
6967        -> ::std::os::raw::c_int;
6968}
6969extern "C" {
6970    pub fn mpfr_log1p(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
6971        -> ::std::os::raw::c_int;
6972}
6973extern "C" {
6974    pub fn mpfr_log_ui(
6975        arg1: mpfr_ptr,
6976        arg2: ::std::os::raw::c_ulong,
6977        arg3: mpfr_rnd_t,
6978    ) -> ::std::os::raw::c_int;
6979}
6980extern "C" {
6981    pub fn mpfr_exp(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
6982}
6983extern "C" {
6984    pub fn mpfr_exp2(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
6985}
6986extern "C" {
6987    pub fn mpfr_exp10(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
6988        -> ::std::os::raw::c_int;
6989}
6990extern "C" {
6991    pub fn mpfr_expm1(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
6992        -> ::std::os::raw::c_int;
6993}
6994extern "C" {
6995    pub fn mpfr_eint(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
6996}
6997extern "C" {
6998    pub fn mpfr_li2(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
6999}
7000extern "C" {
7001    pub fn mpfr_cmp(arg1: mpfr_srcptr, arg2: mpfr_srcptr) -> ::std::os::raw::c_int;
7002}
7003extern "C" {
7004    pub fn mpfr_cmp3(
7005        arg1: mpfr_srcptr,
7006        arg2: mpfr_srcptr,
7007        arg3: ::std::os::raw::c_int,
7008    ) -> ::std::os::raw::c_int;
7009}
7010extern "C" {
7011    pub fn mpfr_cmp_d(arg1: mpfr_srcptr, arg2: f64) -> ::std::os::raw::c_int;
7012}
7013extern "C" {
7014    pub fn mpfr_cmp_ld(arg1: mpfr_srcptr, arg2: u128) -> ::std::os::raw::c_int;
7015}
7016extern "C" {
7017    pub fn mpfr_cmpabs(arg1: mpfr_srcptr, arg2: mpfr_srcptr) -> ::std::os::raw::c_int;
7018}
7019extern "C" {
7020    pub fn mpfr_cmp_ui(arg1: mpfr_srcptr, arg2: ::std::os::raw::c_ulong) -> ::std::os::raw::c_int;
7021}
7022extern "C" {
7023    pub fn mpfr_cmp_si(arg1: mpfr_srcptr, arg2: ::std::os::raw::c_long) -> ::std::os::raw::c_int;
7024}
7025extern "C" {
7026    pub fn mpfr_cmp_ui_2exp(
7027        arg1: mpfr_srcptr,
7028        arg2: ::std::os::raw::c_ulong,
7029        arg3: mpfr_exp_t,
7030    ) -> ::std::os::raw::c_int;
7031}
7032extern "C" {
7033    pub fn mpfr_cmp_si_2exp(
7034        arg1: mpfr_srcptr,
7035        arg2: ::std::os::raw::c_long,
7036        arg3: mpfr_exp_t,
7037    ) -> ::std::os::raw::c_int;
7038}
7039extern "C" {
7040    pub fn mpfr_reldiff(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_srcptr, arg4: mpfr_rnd_t);
7041}
7042extern "C" {
7043    pub fn mpfr_eq(
7044        arg1: mpfr_srcptr,
7045        arg2: mpfr_srcptr,
7046        arg3: ::std::os::raw::c_ulong,
7047    ) -> ::std::os::raw::c_int;
7048}
7049extern "C" {
7050    pub fn mpfr_sgn(arg1: mpfr_srcptr) -> ::std::os::raw::c_int;
7051}
7052extern "C" {
7053    pub fn mpfr_mul_2exp(
7054        arg1: mpfr_ptr,
7055        arg2: mpfr_srcptr,
7056        arg3: ::std::os::raw::c_ulong,
7057        arg4: mpfr_rnd_t,
7058    ) -> ::std::os::raw::c_int;
7059}
7060extern "C" {
7061    pub fn mpfr_div_2exp(
7062        arg1: mpfr_ptr,
7063        arg2: mpfr_srcptr,
7064        arg3: ::std::os::raw::c_ulong,
7065        arg4: mpfr_rnd_t,
7066    ) -> ::std::os::raw::c_int;
7067}
7068extern "C" {
7069    pub fn mpfr_mul_2ui(
7070        arg1: mpfr_ptr,
7071        arg2: mpfr_srcptr,
7072        arg3: ::std::os::raw::c_ulong,
7073        arg4: mpfr_rnd_t,
7074    ) -> ::std::os::raw::c_int;
7075}
7076extern "C" {
7077    pub fn mpfr_div_2ui(
7078        arg1: mpfr_ptr,
7079        arg2: mpfr_srcptr,
7080        arg3: ::std::os::raw::c_ulong,
7081        arg4: mpfr_rnd_t,
7082    ) -> ::std::os::raw::c_int;
7083}
7084extern "C" {
7085    pub fn mpfr_mul_2si(
7086        arg1: mpfr_ptr,
7087        arg2: mpfr_srcptr,
7088        arg3: ::std::os::raw::c_long,
7089        arg4: mpfr_rnd_t,
7090    ) -> ::std::os::raw::c_int;
7091}
7092extern "C" {
7093    pub fn mpfr_div_2si(
7094        arg1: mpfr_ptr,
7095        arg2: mpfr_srcptr,
7096        arg3: ::std::os::raw::c_long,
7097        arg4: mpfr_rnd_t,
7098    ) -> ::std::os::raw::c_int;
7099}
7100extern "C" {
7101    pub fn mpfr_rint(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
7102}
7103extern "C" {
7104    pub fn mpfr_roundeven(arg1: mpfr_ptr, arg2: mpfr_srcptr) -> ::std::os::raw::c_int;
7105}
7106extern "C" {
7107    pub fn mpfr_round(arg1: mpfr_ptr, arg2: mpfr_srcptr) -> ::std::os::raw::c_int;
7108}
7109extern "C" {
7110    pub fn mpfr_trunc(arg1: mpfr_ptr, arg2: mpfr_srcptr) -> ::std::os::raw::c_int;
7111}
7112extern "C" {
7113    pub fn mpfr_ceil(arg1: mpfr_ptr, arg2: mpfr_srcptr) -> ::std::os::raw::c_int;
7114}
7115extern "C" {
7116    pub fn mpfr_floor(arg1: mpfr_ptr, arg2: mpfr_srcptr) -> ::std::os::raw::c_int;
7117}
7118extern "C" {
7119    pub fn mpfr_rint_roundeven(
7120        arg1: mpfr_ptr,
7121        arg2: mpfr_srcptr,
7122        arg3: mpfr_rnd_t,
7123    ) -> ::std::os::raw::c_int;
7124}
7125extern "C" {
7126    pub fn mpfr_rint_round(
7127        arg1: mpfr_ptr,
7128        arg2: mpfr_srcptr,
7129        arg3: mpfr_rnd_t,
7130    ) -> ::std::os::raw::c_int;
7131}
7132extern "C" {
7133    pub fn mpfr_rint_trunc(
7134        arg1: mpfr_ptr,
7135        arg2: mpfr_srcptr,
7136        arg3: mpfr_rnd_t,
7137    ) -> ::std::os::raw::c_int;
7138}
7139extern "C" {
7140    pub fn mpfr_rint_ceil(
7141        arg1: mpfr_ptr,
7142        arg2: mpfr_srcptr,
7143        arg3: mpfr_rnd_t,
7144    ) -> ::std::os::raw::c_int;
7145}
7146extern "C" {
7147    pub fn mpfr_rint_floor(
7148        arg1: mpfr_ptr,
7149        arg2: mpfr_srcptr,
7150        arg3: mpfr_rnd_t,
7151    ) -> ::std::os::raw::c_int;
7152}
7153extern "C" {
7154    pub fn mpfr_frac(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
7155}
7156extern "C" {
7157    pub fn mpfr_modf(
7158        arg1: mpfr_ptr,
7159        arg2: mpfr_ptr,
7160        arg3: mpfr_srcptr,
7161        arg4: mpfr_rnd_t,
7162    ) -> ::std::os::raw::c_int;
7163}
7164extern "C" {
7165    pub fn mpfr_remquo(
7166        arg1: mpfr_ptr,
7167        arg2: *mut ::std::os::raw::c_long,
7168        arg3: mpfr_srcptr,
7169        arg4: mpfr_srcptr,
7170        arg5: mpfr_rnd_t,
7171    ) -> ::std::os::raw::c_int;
7172}
7173extern "C" {
7174    pub fn mpfr_remainder(
7175        arg1: mpfr_ptr,
7176        arg2: mpfr_srcptr,
7177        arg3: mpfr_srcptr,
7178        arg4: mpfr_rnd_t,
7179    ) -> ::std::os::raw::c_int;
7180}
7181extern "C" {
7182    pub fn mpfr_fmod(
7183        arg1: mpfr_ptr,
7184        arg2: mpfr_srcptr,
7185        arg3: mpfr_srcptr,
7186        arg4: mpfr_rnd_t,
7187    ) -> ::std::os::raw::c_int;
7188}
7189extern "C" {
7190    pub fn mpfr_fmodquo(
7191        arg1: mpfr_ptr,
7192        arg2: *mut ::std::os::raw::c_long,
7193        arg3: mpfr_srcptr,
7194        arg4: mpfr_srcptr,
7195        arg5: mpfr_rnd_t,
7196    ) -> ::std::os::raw::c_int;
7197}
7198extern "C" {
7199    pub fn mpfr_fits_ulong_p(arg1: mpfr_srcptr, arg2: mpfr_rnd_t) -> ::std::os::raw::c_int;
7200}
7201extern "C" {
7202    pub fn mpfr_fits_slong_p(arg1: mpfr_srcptr, arg2: mpfr_rnd_t) -> ::std::os::raw::c_int;
7203}
7204extern "C" {
7205    pub fn mpfr_fits_uint_p(arg1: mpfr_srcptr, arg2: mpfr_rnd_t) -> ::std::os::raw::c_int;
7206}
7207extern "C" {
7208    pub fn mpfr_fits_sint_p(arg1: mpfr_srcptr, arg2: mpfr_rnd_t) -> ::std::os::raw::c_int;
7209}
7210extern "C" {
7211    pub fn mpfr_fits_ushort_p(arg1: mpfr_srcptr, arg2: mpfr_rnd_t) -> ::std::os::raw::c_int;
7212}
7213extern "C" {
7214    pub fn mpfr_fits_sshort_p(arg1: mpfr_srcptr, arg2: mpfr_rnd_t) -> ::std::os::raw::c_int;
7215}
7216extern "C" {
7217    pub fn mpfr_fits_uintmax_p(arg1: mpfr_srcptr, arg2: mpfr_rnd_t) -> ::std::os::raw::c_int;
7218}
7219extern "C" {
7220    pub fn mpfr_fits_intmax_p(arg1: mpfr_srcptr, arg2: mpfr_rnd_t) -> ::std::os::raw::c_int;
7221}
7222extern "C" {
7223    pub fn mpfr_extract(arg1: mpz_ptr, arg2: mpfr_srcptr, arg3: ::std::os::raw::c_uint);
7224}
7225extern "C" {
7226    pub fn mpfr_swap(arg1: mpfr_ptr, arg2: mpfr_ptr);
7227}
7228extern "C" {
7229    pub fn mpfr_dump(arg1: mpfr_srcptr);
7230}
7231extern "C" {
7232    pub fn mpfr_nan_p(arg1: mpfr_srcptr) -> ::std::os::raw::c_int;
7233}
7234extern "C" {
7235    pub fn mpfr_inf_p(arg1: mpfr_srcptr) -> ::std::os::raw::c_int;
7236}
7237extern "C" {
7238    pub fn mpfr_number_p(arg1: mpfr_srcptr) -> ::std::os::raw::c_int;
7239}
7240extern "C" {
7241    pub fn mpfr_integer_p(arg1: mpfr_srcptr) -> ::std::os::raw::c_int;
7242}
7243extern "C" {
7244    pub fn mpfr_zero_p(arg1: mpfr_srcptr) -> ::std::os::raw::c_int;
7245}
7246extern "C" {
7247    pub fn mpfr_regular_p(arg1: mpfr_srcptr) -> ::std::os::raw::c_int;
7248}
7249extern "C" {
7250    pub fn mpfr_greater_p(arg1: mpfr_srcptr, arg2: mpfr_srcptr) -> ::std::os::raw::c_int;
7251}
7252extern "C" {
7253    pub fn mpfr_greaterequal_p(arg1: mpfr_srcptr, arg2: mpfr_srcptr) -> ::std::os::raw::c_int;
7254}
7255extern "C" {
7256    pub fn mpfr_less_p(arg1: mpfr_srcptr, arg2: mpfr_srcptr) -> ::std::os::raw::c_int;
7257}
7258extern "C" {
7259    pub fn mpfr_lessequal_p(arg1: mpfr_srcptr, arg2: mpfr_srcptr) -> ::std::os::raw::c_int;
7260}
7261extern "C" {
7262    pub fn mpfr_lessgreater_p(arg1: mpfr_srcptr, arg2: mpfr_srcptr) -> ::std::os::raw::c_int;
7263}
7264extern "C" {
7265    pub fn mpfr_equal_p(arg1: mpfr_srcptr, arg2: mpfr_srcptr) -> ::std::os::raw::c_int;
7266}
7267extern "C" {
7268    pub fn mpfr_unordered_p(arg1: mpfr_srcptr, arg2: mpfr_srcptr) -> ::std::os::raw::c_int;
7269}
7270extern "C" {
7271    pub fn mpfr_atanh(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
7272        -> ::std::os::raw::c_int;
7273}
7274extern "C" {
7275    pub fn mpfr_acosh(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
7276        -> ::std::os::raw::c_int;
7277}
7278extern "C" {
7279    pub fn mpfr_asinh(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
7280        -> ::std::os::raw::c_int;
7281}
7282extern "C" {
7283    pub fn mpfr_cosh(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
7284}
7285extern "C" {
7286    pub fn mpfr_sinh(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
7287}
7288extern "C" {
7289    pub fn mpfr_tanh(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
7290}
7291extern "C" {
7292    pub fn mpfr_sinh_cosh(
7293        arg1: mpfr_ptr,
7294        arg2: mpfr_ptr,
7295        arg3: mpfr_srcptr,
7296        arg4: mpfr_rnd_t,
7297    ) -> ::std::os::raw::c_int;
7298}
7299extern "C" {
7300    pub fn mpfr_sech(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
7301}
7302extern "C" {
7303    pub fn mpfr_csch(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
7304}
7305extern "C" {
7306    pub fn mpfr_coth(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
7307}
7308extern "C" {
7309    pub fn mpfr_acos(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
7310}
7311extern "C" {
7312    pub fn mpfr_asin(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
7313}
7314extern "C" {
7315    pub fn mpfr_atan(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
7316}
7317extern "C" {
7318    pub fn mpfr_sin(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
7319}
7320extern "C" {
7321    pub fn mpfr_sin_cos(
7322        arg1: mpfr_ptr,
7323        arg2: mpfr_ptr,
7324        arg3: mpfr_srcptr,
7325        arg4: mpfr_rnd_t,
7326    ) -> ::std::os::raw::c_int;
7327}
7328extern "C" {
7329    pub fn mpfr_cos(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
7330}
7331extern "C" {
7332    pub fn mpfr_tan(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
7333}
7334extern "C" {
7335    pub fn mpfr_atan2(
7336        arg1: mpfr_ptr,
7337        arg2: mpfr_srcptr,
7338        arg3: mpfr_srcptr,
7339        arg4: mpfr_rnd_t,
7340    ) -> ::std::os::raw::c_int;
7341}
7342extern "C" {
7343    pub fn mpfr_sec(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
7344}
7345extern "C" {
7346    pub fn mpfr_csc(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
7347}
7348extern "C" {
7349    pub fn mpfr_cot(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
7350}
7351extern "C" {
7352    pub fn mpfr_hypot(
7353        arg1: mpfr_ptr,
7354        arg2: mpfr_srcptr,
7355        arg3: mpfr_srcptr,
7356        arg4: mpfr_rnd_t,
7357    ) -> ::std::os::raw::c_int;
7358}
7359extern "C" {
7360    pub fn mpfr_erf(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
7361}
7362extern "C" {
7363    pub fn mpfr_erfc(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
7364}
7365extern "C" {
7366    pub fn mpfr_cbrt(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
7367}
7368extern "C" {
7369    pub fn mpfr_root(
7370        arg1: mpfr_ptr,
7371        arg2: mpfr_srcptr,
7372        arg3: ::std::os::raw::c_ulong,
7373        arg4: mpfr_rnd_t,
7374    ) -> ::std::os::raw::c_int;
7375}
7376extern "C" {
7377    pub fn mpfr_rootn_ui(
7378        arg1: mpfr_ptr,
7379        arg2: mpfr_srcptr,
7380        arg3: ::std::os::raw::c_ulong,
7381        arg4: mpfr_rnd_t,
7382    ) -> ::std::os::raw::c_int;
7383}
7384extern "C" {
7385    pub fn mpfr_gamma(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t)
7386        -> ::std::os::raw::c_int;
7387}
7388extern "C" {
7389    pub fn mpfr_gamma_inc(
7390        arg1: mpfr_ptr,
7391        arg2: mpfr_srcptr,
7392        arg3: mpfr_srcptr,
7393        arg4: mpfr_rnd_t,
7394    ) -> ::std::os::raw::c_int;
7395}
7396extern "C" {
7397    pub fn mpfr_beta(
7398        arg1: mpfr_ptr,
7399        arg2: mpfr_srcptr,
7400        arg3: mpfr_srcptr,
7401        arg4: mpfr_rnd_t,
7402    ) -> ::std::os::raw::c_int;
7403}
7404extern "C" {
7405    pub fn mpfr_lngamma(
7406        arg1: mpfr_ptr,
7407        arg2: mpfr_srcptr,
7408        arg3: mpfr_rnd_t,
7409    ) -> ::std::os::raw::c_int;
7410}
7411extern "C" {
7412    pub fn mpfr_lgamma(
7413        arg1: mpfr_ptr,
7414        arg2: *mut ::std::os::raw::c_int,
7415        arg3: mpfr_srcptr,
7416        arg4: mpfr_rnd_t,
7417    ) -> ::std::os::raw::c_int;
7418}
7419extern "C" {
7420    pub fn mpfr_digamma(
7421        arg1: mpfr_ptr,
7422        arg2: mpfr_srcptr,
7423        arg3: mpfr_rnd_t,
7424    ) -> ::std::os::raw::c_int;
7425}
7426extern "C" {
7427    pub fn mpfr_zeta(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
7428}
7429extern "C" {
7430    pub fn mpfr_zeta_ui(
7431        arg1: mpfr_ptr,
7432        arg2: ::std::os::raw::c_ulong,
7433        arg3: mpfr_rnd_t,
7434    ) -> ::std::os::raw::c_int;
7435}
7436extern "C" {
7437    pub fn mpfr_fac_ui(
7438        arg1: mpfr_ptr,
7439        arg2: ::std::os::raw::c_ulong,
7440        arg3: mpfr_rnd_t,
7441    ) -> ::std::os::raw::c_int;
7442}
7443extern "C" {
7444    pub fn mpfr_j0(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
7445}
7446extern "C" {
7447    pub fn mpfr_j1(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
7448}
7449extern "C" {
7450    pub fn mpfr_jn(
7451        arg1: mpfr_ptr,
7452        arg2: ::std::os::raw::c_long,
7453        arg3: mpfr_srcptr,
7454        arg4: mpfr_rnd_t,
7455    ) -> ::std::os::raw::c_int;
7456}
7457extern "C" {
7458    pub fn mpfr_y0(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
7459}
7460extern "C" {
7461    pub fn mpfr_y1(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
7462}
7463extern "C" {
7464    pub fn mpfr_yn(
7465        arg1: mpfr_ptr,
7466        arg2: ::std::os::raw::c_long,
7467        arg3: mpfr_srcptr,
7468        arg4: mpfr_rnd_t,
7469    ) -> ::std::os::raw::c_int;
7470}
7471extern "C" {
7472    pub fn mpfr_ai(arg1: mpfr_ptr, arg2: mpfr_srcptr, arg3: mpfr_rnd_t) -> ::std::os::raw::c_int;
7473}
7474extern "C" {
7475    pub fn mpfr_min(
7476        arg1: mpfr_ptr,
7477        arg2: mpfr_srcptr,
7478        arg3: mpfr_srcptr,
7479        arg4: mpfr_rnd_t,
7480    ) -> ::std::os::raw::c_int;
7481}
7482extern "C" {
7483    pub fn mpfr_max(
7484        arg1: mpfr_ptr,
7485        arg2: mpfr_srcptr,
7486        arg3: mpfr_srcptr,
7487        arg4: mpfr_rnd_t,
7488    ) -> ::std::os::raw::c_int;
7489}
7490extern "C" {
7491    pub fn mpfr_dim(
7492        arg1: mpfr_ptr,
7493        arg2: mpfr_srcptr,
7494        arg3: mpfr_srcptr,
7495        arg4: mpfr_rnd_t,
7496    ) -> ::std::os::raw::c_int;
7497}
7498extern "C" {
7499    pub fn mpfr_mul_z(
7500        arg1: mpfr_ptr,
7501        arg2: mpfr_srcptr,
7502        arg3: mpz_srcptr,
7503        arg4: mpfr_rnd_t,
7504    ) -> ::std::os::raw::c_int;
7505}
7506extern "C" {
7507    pub fn mpfr_div_z(
7508        arg1: mpfr_ptr,
7509        arg2: mpfr_srcptr,
7510        arg3: mpz_srcptr,
7511        arg4: mpfr_rnd_t,
7512    ) -> ::std::os::raw::c_int;
7513}
7514extern "C" {
7515    pub fn mpfr_add_z(
7516        arg1: mpfr_ptr,
7517        arg2: mpfr_srcptr,
7518        arg3: mpz_srcptr,
7519        arg4: mpfr_rnd_t,
7520    ) -> ::std::os::raw::c_int;
7521}
7522extern "C" {
7523    pub fn mpfr_sub_z(
7524        arg1: mpfr_ptr,
7525        arg2: mpfr_srcptr,
7526        arg3: mpz_srcptr,
7527        arg4: mpfr_rnd_t,
7528    ) -> ::std::os::raw::c_int;
7529}
7530extern "C" {
7531    pub fn mpfr_z_sub(
7532        arg1: mpfr_ptr,
7533        arg2: mpz_srcptr,
7534        arg3: mpfr_srcptr,
7535        arg4: mpfr_rnd_t,
7536    ) -> ::std::os::raw::c_int;
7537}
7538extern "C" {
7539    pub fn mpfr_cmp_z(arg1: mpfr_srcptr, arg2: mpz_srcptr) -> ::std::os::raw::c_int;
7540}
7541extern "C" {
7542    pub fn mpfr_fma(
7543        arg1: mpfr_ptr,
7544        arg2: mpfr_srcptr,
7545        arg3: mpfr_srcptr,
7546        arg4: mpfr_srcptr,
7547        arg5: mpfr_rnd_t,
7548    ) -> ::std::os::raw::c_int;
7549}
7550extern "C" {
7551    pub fn mpfr_fms(
7552        arg1: mpfr_ptr,
7553        arg2: mpfr_srcptr,
7554        arg3: mpfr_srcptr,
7555        arg4: mpfr_srcptr,
7556        arg5: mpfr_rnd_t,
7557    ) -> ::std::os::raw::c_int;
7558}
7559extern "C" {
7560    pub fn mpfr_fmma(
7561        arg1: mpfr_ptr,
7562        arg2: mpfr_srcptr,
7563        arg3: mpfr_srcptr,
7564        arg4: mpfr_srcptr,
7565        arg5: mpfr_srcptr,
7566        arg6: mpfr_rnd_t,
7567    ) -> ::std::os::raw::c_int;
7568}
7569extern "C" {
7570    pub fn mpfr_fmms(
7571        arg1: mpfr_ptr,
7572        arg2: mpfr_srcptr,
7573        arg3: mpfr_srcptr,
7574        arg4: mpfr_srcptr,
7575        arg5: mpfr_srcptr,
7576        arg6: mpfr_rnd_t,
7577    ) -> ::std::os::raw::c_int;
7578}
7579extern "C" {
7580    pub fn mpfr_sum(
7581        arg1: mpfr_ptr,
7582        arg2: *const mpfr_ptr,
7583        arg3: ::std::os::raw::c_ulong,
7584        arg4: mpfr_rnd_t,
7585    ) -> ::std::os::raw::c_int;
7586}
7587extern "C" {
7588    pub fn mpfr_free_cache();
7589}
7590extern "C" {
7591    pub fn mpfr_free_cache2(arg1: mpfr_free_cache_t);
7592}
7593extern "C" {
7594    pub fn mpfr_free_pool();
7595}
7596extern "C" {
7597    pub fn mpfr_mp_memory_cleanup() -> ::std::os::raw::c_int;
7598}
7599extern "C" {
7600    pub fn mpfr_subnormalize(
7601        arg1: mpfr_ptr,
7602        arg2: ::std::os::raw::c_int,
7603        arg3: mpfr_rnd_t,
7604    ) -> ::std::os::raw::c_int;
7605}
7606extern "C" {
7607    pub fn mpfr_strtofr(
7608        arg1: mpfr_ptr,
7609        arg2: *const ::std::os::raw::c_char,
7610        arg3: *mut *mut ::std::os::raw::c_char,
7611        arg4: ::std::os::raw::c_int,
7612        arg5: mpfr_rnd_t,
7613    ) -> ::std::os::raw::c_int;
7614}
7615extern "C" {
7616    pub fn mpfr_round_nearest_away_begin(arg1: *mut __mpfr_struct);
7617}
7618extern "C" {
7619    pub fn mpfr_round_nearest_away_end(
7620        arg1: *mut __mpfr_struct,
7621        arg2: ::std::os::raw::c_int,
7622    ) -> ::std::os::raw::c_int;
7623}
7624extern "C" {
7625    pub fn mpfr_custom_get_size(arg1: mpfr_prec_t) -> usize;
7626}
7627extern "C" {
7628    pub fn mpfr_custom_init(arg1: *mut ::std::os::raw::c_void, arg2: mpfr_prec_t);
7629}
7630extern "C" {
7631    pub fn mpfr_custom_get_significand(arg1: mpfr_srcptr) -> *mut ::std::os::raw::c_void;
7632}
7633extern "C" {
7634    pub fn mpfr_custom_get_exp(arg1: mpfr_srcptr) -> mpfr_exp_t;
7635}
7636extern "C" {
7637    pub fn mpfr_custom_move(arg1: mpfr_ptr, arg2: *mut ::std::os::raw::c_void);
7638}
7639extern "C" {
7640    pub fn mpfr_custom_init_set(
7641        arg1: mpfr_ptr,
7642        arg2: ::std::os::raw::c_int,
7643        arg3: mpfr_exp_t,
7644        arg4: mpfr_prec_t,
7645        arg5: *mut ::std::os::raw::c_void,
7646    );
7647}
7648extern "C" {
7649    pub fn mpfr_custom_get_kind(arg1: mpfr_srcptr) -> ::std::os::raw::c_int;
7650}
7651pub type va_list = __builtin_va_list;
7652pub type __gnuc_va_list = __builtin_va_list;
7653#[repr(C)]
7654#[derive(Copy, Clone)]
7655pub struct __mbstate_t {
7656    pub __count: ::std::os::raw::c_int,
7657    pub __value: __mbstate_t__bindgen_ty_1,
7658}
7659#[repr(C)]
7660#[derive(Copy, Clone)]
7661pub union __mbstate_t__bindgen_ty_1 {
7662    pub __wch: ::std::os::raw::c_uint,
7663    pub __wchb: [::std::os::raw::c_char; 4usize],
7664    _bindgen_union_align: u32,
7665}
7666#[test]
7667fn bindgen_test_layout___mbstate_t__bindgen_ty_1() {
7668    assert_eq!(
7669        ::std::mem::size_of::<__mbstate_t__bindgen_ty_1>(),
7670        4usize,
7671        concat!("Size of: ", stringify!(__mbstate_t__bindgen_ty_1))
7672    );
7673    assert_eq!(
7674        ::std::mem::align_of::<__mbstate_t__bindgen_ty_1>(),
7675        4usize,
7676        concat!("Alignment of ", stringify!(__mbstate_t__bindgen_ty_1))
7677    );
7678    assert_eq!(
7679        unsafe { &(*(::std::ptr::null::<__mbstate_t__bindgen_ty_1>())).__wch as *const _ as usize },
7680        0usize,
7681        concat!(
7682            "Offset of field: ",
7683            stringify!(__mbstate_t__bindgen_ty_1),
7684            "::",
7685            stringify!(__wch)
7686        )
7687    );
7688    assert_eq!(
7689        unsafe {
7690            &(*(::std::ptr::null::<__mbstate_t__bindgen_ty_1>())).__wchb as *const _ as usize
7691        },
7692        0usize,
7693        concat!(
7694            "Offset of field: ",
7695            stringify!(__mbstate_t__bindgen_ty_1),
7696            "::",
7697            stringify!(__wchb)
7698        )
7699    );
7700}
7701#[test]
7702fn bindgen_test_layout___mbstate_t() {
7703    assert_eq!(
7704        ::std::mem::size_of::<__mbstate_t>(),
7705        8usize,
7706        concat!("Size of: ", stringify!(__mbstate_t))
7707    );
7708    assert_eq!(
7709        ::std::mem::align_of::<__mbstate_t>(),
7710        4usize,
7711        concat!("Alignment of ", stringify!(__mbstate_t))
7712    );
7713    assert_eq!(
7714        unsafe { &(*(::std::ptr::null::<__mbstate_t>())).__count as *const _ as usize },
7715        0usize,
7716        concat!(
7717            "Offset of field: ",
7718            stringify!(__mbstate_t),
7719            "::",
7720            stringify!(__count)
7721        )
7722    );
7723    assert_eq!(
7724        unsafe { &(*(::std::ptr::null::<__mbstate_t>())).__value as *const _ as usize },
7725        4usize,
7726        concat!(
7727            "Offset of field: ",
7728            stringify!(__mbstate_t),
7729            "::",
7730            stringify!(__value)
7731        )
7732    );
7733}
7734#[repr(C)]
7735#[derive(Copy, Clone)]
7736pub struct _G_fpos_t {
7737    pub __pos: __off_t,
7738    pub __state: __mbstate_t,
7739}
7740#[test]
7741fn bindgen_test_layout__G_fpos_t() {
7742    assert_eq!(
7743        ::std::mem::size_of::<_G_fpos_t>(),
7744        16usize,
7745        concat!("Size of: ", stringify!(_G_fpos_t))
7746    );
7747    assert_eq!(
7748        ::std::mem::align_of::<_G_fpos_t>(),
7749        8usize,
7750        concat!("Alignment of ", stringify!(_G_fpos_t))
7751    );
7752    assert_eq!(
7753        unsafe { &(*(::std::ptr::null::<_G_fpos_t>())).__pos as *const _ as usize },
7754        0usize,
7755        concat!(
7756            "Offset of field: ",
7757            stringify!(_G_fpos_t),
7758            "::",
7759            stringify!(__pos)
7760        )
7761    );
7762    assert_eq!(
7763        unsafe { &(*(::std::ptr::null::<_G_fpos_t>())).__state as *const _ as usize },
7764        8usize,
7765        concat!(
7766            "Offset of field: ",
7767            stringify!(_G_fpos_t),
7768            "::",
7769            stringify!(__state)
7770        )
7771    );
7772}
7773pub type __fpos_t = _G_fpos_t;
7774#[repr(C)]
7775#[derive(Copy, Clone)]
7776pub struct _G_fpos64_t {
7777    pub __pos: __off64_t,
7778    pub __state: __mbstate_t,
7779}
7780#[test]
7781fn bindgen_test_layout__G_fpos64_t() {
7782    assert_eq!(
7783        ::std::mem::size_of::<_G_fpos64_t>(),
7784        16usize,
7785        concat!("Size of: ", stringify!(_G_fpos64_t))
7786    );
7787    assert_eq!(
7788        ::std::mem::align_of::<_G_fpos64_t>(),
7789        8usize,
7790        concat!("Alignment of ", stringify!(_G_fpos64_t))
7791    );
7792    assert_eq!(
7793        unsafe { &(*(::std::ptr::null::<_G_fpos64_t>())).__pos as *const _ as usize },
7794        0usize,
7795        concat!(
7796            "Offset of field: ",
7797            stringify!(_G_fpos64_t),
7798            "::",
7799            stringify!(__pos)
7800        )
7801    );
7802    assert_eq!(
7803        unsafe { &(*(::std::ptr::null::<_G_fpos64_t>())).__state as *const _ as usize },
7804        8usize,
7805        concat!(
7806            "Offset of field: ",
7807            stringify!(_G_fpos64_t),
7808            "::",
7809            stringify!(__state)
7810        )
7811    );
7812}
7813pub type __fpos64_t = _G_fpos64_t;
7814pub type __FILE = _IO_FILE;
7815pub type FILE = _IO_FILE;
7816#[repr(C)]
7817#[derive(Debug, Copy, Clone)]
7818pub struct _IO_marker {
7819    _unused: [u8; 0],
7820}
7821#[repr(C)]
7822#[derive(Debug, Copy, Clone)]
7823pub struct _IO_codecvt {
7824    _unused: [u8; 0],
7825}
7826#[repr(C)]
7827#[derive(Debug, Copy, Clone)]
7828pub struct _IO_wide_data {
7829    _unused: [u8; 0],
7830}
7831pub type _IO_lock_t = ::std::os::raw::c_void;
7832#[repr(C)]
7833#[derive(Debug, Copy, Clone)]
7834pub struct _IO_FILE {
7835    pub _flags: ::std::os::raw::c_int,
7836    pub _IO_read_ptr: *mut ::std::os::raw::c_char,
7837    pub _IO_read_end: *mut ::std::os::raw::c_char,
7838    pub _IO_read_base: *mut ::std::os::raw::c_char,
7839    pub _IO_write_base: *mut ::std::os::raw::c_char,
7840    pub _IO_write_ptr: *mut ::std::os::raw::c_char,
7841    pub _IO_write_end: *mut ::std::os::raw::c_char,
7842    pub _IO_buf_base: *mut ::std::os::raw::c_char,
7843    pub _IO_buf_end: *mut ::std::os::raw::c_char,
7844    pub _IO_save_base: *mut ::std::os::raw::c_char,
7845    pub _IO_backup_base: *mut ::std::os::raw::c_char,
7846    pub _IO_save_end: *mut ::std::os::raw::c_char,
7847    pub _markers: *mut _IO_marker,
7848    pub _chain: *mut _IO_FILE,
7849    pub _fileno: ::std::os::raw::c_int,
7850    pub _flags2: ::std::os::raw::c_int,
7851    pub _old_offset: __off_t,
7852    pub _cur_column: ::std::os::raw::c_ushort,
7853    pub _vtable_offset: ::std::os::raw::c_schar,
7854    pub _shortbuf: [::std::os::raw::c_char; 1usize],
7855    pub _lock: *mut _IO_lock_t,
7856    pub _offset: __off64_t,
7857    pub _codecvt: *mut _IO_codecvt,
7858    pub _wide_data: *mut _IO_wide_data,
7859    pub _freeres_list: *mut _IO_FILE,
7860    pub _freeres_buf: *mut ::std::os::raw::c_void,
7861    pub __pad5: usize,
7862    pub _mode: ::std::os::raw::c_int,
7863    pub _unused2: [::std::os::raw::c_char; 20usize],
7864}
7865#[test]
7866fn bindgen_test_layout__IO_FILE() {
7867    assert_eq!(
7868        ::std::mem::size_of::<_IO_FILE>(),
7869        216usize,
7870        concat!("Size of: ", stringify!(_IO_FILE))
7871    );
7872    assert_eq!(
7873        ::std::mem::align_of::<_IO_FILE>(),
7874        8usize,
7875        concat!("Alignment of ", stringify!(_IO_FILE))
7876    );
7877    assert_eq!(
7878        unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._flags as *const _ as usize },
7879        0usize,
7880        concat!(
7881            "Offset of field: ",
7882            stringify!(_IO_FILE),
7883            "::",
7884            stringify!(_flags)
7885        )
7886    );
7887    assert_eq!(
7888        unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_read_ptr as *const _ as usize },
7889        8usize,
7890        concat!(
7891            "Offset of field: ",
7892            stringify!(_IO_FILE),
7893            "::",
7894            stringify!(_IO_read_ptr)
7895        )
7896    );
7897    assert_eq!(
7898        unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_read_end as *const _ as usize },
7899        16usize,
7900        concat!(
7901            "Offset of field: ",
7902            stringify!(_IO_FILE),
7903            "::",
7904            stringify!(_IO_read_end)
7905        )
7906    );
7907    assert_eq!(
7908        unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_read_base as *const _ as usize },
7909        24usize,
7910        concat!(
7911            "Offset of field: ",
7912            stringify!(_IO_FILE),
7913            "::",
7914            stringify!(_IO_read_base)
7915        )
7916    );
7917    assert_eq!(
7918        unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_write_base as *const _ as usize },
7919        32usize,
7920        concat!(
7921            "Offset of field: ",
7922            stringify!(_IO_FILE),
7923            "::",
7924            stringify!(_IO_write_base)
7925        )
7926    );
7927    assert_eq!(
7928        unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_write_ptr as *const _ as usize },
7929        40usize,
7930        concat!(
7931            "Offset of field: ",
7932            stringify!(_IO_FILE),
7933            "::",
7934            stringify!(_IO_write_ptr)
7935        )
7936    );
7937    assert_eq!(
7938        unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_write_end as *const _ as usize },
7939        48usize,
7940        concat!(
7941            "Offset of field: ",
7942            stringify!(_IO_FILE),
7943            "::",
7944            stringify!(_IO_write_end)
7945        )
7946    );
7947    assert_eq!(
7948        unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_buf_base as *const _ as usize },
7949        56usize,
7950        concat!(
7951            "Offset of field: ",
7952            stringify!(_IO_FILE),
7953            "::",
7954            stringify!(_IO_buf_base)
7955        )
7956    );
7957    assert_eq!(
7958        unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_buf_end as *const _ as usize },
7959        64usize,
7960        concat!(
7961            "Offset of field: ",
7962            stringify!(_IO_FILE),
7963            "::",
7964            stringify!(_IO_buf_end)
7965        )
7966    );
7967    assert_eq!(
7968        unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_save_base as *const _ as usize },
7969        72usize,
7970        concat!(
7971            "Offset of field: ",
7972            stringify!(_IO_FILE),
7973            "::",
7974            stringify!(_IO_save_base)
7975        )
7976    );
7977    assert_eq!(
7978        unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_backup_base as *const _ as usize },
7979        80usize,
7980        concat!(
7981            "Offset of field: ",
7982            stringify!(_IO_FILE),
7983            "::",
7984            stringify!(_IO_backup_base)
7985        )
7986    );
7987    assert_eq!(
7988        unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._IO_save_end as *const _ as usize },
7989        88usize,
7990        concat!(
7991            "Offset of field: ",
7992            stringify!(_IO_FILE),
7993            "::",
7994            stringify!(_IO_save_end)
7995        )
7996    );
7997    assert_eq!(
7998        unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._markers as *const _ as usize },
7999        96usize,
8000        concat!(
8001            "Offset of field: ",
8002            stringify!(_IO_FILE),
8003            "::",
8004            stringify!(_markers)
8005        )
8006    );
8007    assert_eq!(
8008        unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._chain as *const _ as usize },
8009        104usize,
8010        concat!(
8011            "Offset of field: ",
8012            stringify!(_IO_FILE),
8013            "::",
8014            stringify!(_chain)
8015        )
8016    );
8017    assert_eq!(
8018        unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._fileno as *const _ as usize },
8019        112usize,
8020        concat!(
8021            "Offset of field: ",
8022            stringify!(_IO_FILE),
8023            "::",
8024            stringify!(_fileno)
8025        )
8026    );
8027    assert_eq!(
8028        unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._flags2 as *const _ as usize },
8029        116usize,
8030        concat!(
8031            "Offset of field: ",
8032            stringify!(_IO_FILE),
8033            "::",
8034            stringify!(_flags2)
8035        )
8036    );
8037    assert_eq!(
8038        unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._old_offset as *const _ as usize },
8039        120usize,
8040        concat!(
8041            "Offset of field: ",
8042            stringify!(_IO_FILE),
8043            "::",
8044            stringify!(_old_offset)
8045        )
8046    );
8047    assert_eq!(
8048        unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._cur_column as *const _ as usize },
8049        128usize,
8050        concat!(
8051            "Offset of field: ",
8052            stringify!(_IO_FILE),
8053            "::",
8054            stringify!(_cur_column)
8055        )
8056    );
8057    assert_eq!(
8058        unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._vtable_offset as *const _ as usize },
8059        130usize,
8060        concat!(
8061            "Offset of field: ",
8062            stringify!(_IO_FILE),
8063            "::",
8064            stringify!(_vtable_offset)
8065        )
8066    );
8067    assert_eq!(
8068        unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._shortbuf as *const _ as usize },
8069        131usize,
8070        concat!(
8071            "Offset of field: ",
8072            stringify!(_IO_FILE),
8073            "::",
8074            stringify!(_shortbuf)
8075        )
8076    );
8077    assert_eq!(
8078        unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._lock as *const _ as usize },
8079        136usize,
8080        concat!(
8081            "Offset of field: ",
8082            stringify!(_IO_FILE),
8083            "::",
8084            stringify!(_lock)
8085        )
8086    );
8087    assert_eq!(
8088        unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._offset as *const _ as usize },
8089        144usize,
8090        concat!(
8091            "Offset of field: ",
8092            stringify!(_IO_FILE),
8093            "::",
8094            stringify!(_offset)
8095        )
8096    );
8097    assert_eq!(
8098        unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._codecvt as *const _ as usize },
8099        152usize,
8100        concat!(
8101            "Offset of field: ",
8102            stringify!(_IO_FILE),
8103            "::",
8104            stringify!(_codecvt)
8105        )
8106    );
8107    assert_eq!(
8108        unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._wide_data as *const _ as usize },
8109        160usize,
8110        concat!(
8111            "Offset of field: ",
8112            stringify!(_IO_FILE),
8113            "::",
8114            stringify!(_wide_data)
8115        )
8116    );
8117    assert_eq!(
8118        unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._freeres_list as *const _ as usize },
8119        168usize,
8120        concat!(
8121            "Offset of field: ",
8122            stringify!(_IO_FILE),
8123            "::",
8124            stringify!(_freeres_list)
8125        )
8126    );
8127    assert_eq!(
8128        unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._freeres_buf as *const _ as usize },
8129        176usize,
8130        concat!(
8131            "Offset of field: ",
8132            stringify!(_IO_FILE),
8133            "::",
8134            stringify!(_freeres_buf)
8135        )
8136    );
8137    assert_eq!(
8138        unsafe { &(*(::std::ptr::null::<_IO_FILE>())).__pad5 as *const _ as usize },
8139        184usize,
8140        concat!(
8141            "Offset of field: ",
8142            stringify!(_IO_FILE),
8143            "::",
8144            stringify!(__pad5)
8145        )
8146    );
8147    assert_eq!(
8148        unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._mode as *const _ as usize },
8149        192usize,
8150        concat!(
8151            "Offset of field: ",
8152            stringify!(_IO_FILE),
8153            "::",
8154            stringify!(_mode)
8155        )
8156    );
8157    assert_eq!(
8158        unsafe { &(*(::std::ptr::null::<_IO_FILE>()))._unused2 as *const _ as usize },
8159        196usize,
8160        concat!(
8161            "Offset of field: ",
8162            stringify!(_IO_FILE),
8163            "::",
8164            stringify!(_unused2)
8165        )
8166    );
8167}
8168pub type fpos_t = __fpos_t;
8169extern "C" {
8170    pub static mut stdin: *mut FILE;
8171}
8172extern "C" {
8173    pub static mut stdout: *mut FILE;
8174}
8175extern "C" {
8176    pub static mut stderr: *mut FILE;
8177}
8178extern "C" {
8179    pub fn remove(__filename: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
8180}
8181extern "C" {
8182    pub fn rename(
8183        __old: *const ::std::os::raw::c_char,
8184        __new: *const ::std::os::raw::c_char,
8185    ) -> ::std::os::raw::c_int;
8186}
8187extern "C" {
8188    pub fn renameat(
8189        __oldfd: ::std::os::raw::c_int,
8190        __old: *const ::std::os::raw::c_char,
8191        __newfd: ::std::os::raw::c_int,
8192        __new: *const ::std::os::raw::c_char,
8193    ) -> ::std::os::raw::c_int;
8194}
8195extern "C" {
8196    pub fn tmpfile() -> *mut FILE;
8197}
8198extern "C" {
8199    pub fn tmpnam(__s: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;
8200}
8201extern "C" {
8202    pub fn tmpnam_r(__s: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;
8203}
8204extern "C" {
8205    pub fn tempnam(
8206        __dir: *const ::std::os::raw::c_char,
8207        __pfx: *const ::std::os::raw::c_char,
8208    ) -> *mut ::std::os::raw::c_char;
8209}
8210extern "C" {
8211    pub fn fclose(__stream: *mut FILE) -> ::std::os::raw::c_int;
8212}
8213extern "C" {
8214    pub fn fflush(__stream: *mut FILE) -> ::std::os::raw::c_int;
8215}
8216extern "C" {
8217    pub fn fflush_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int;
8218}
8219extern "C" {
8220    pub fn fopen(
8221        __filename: *const ::std::os::raw::c_char,
8222        __modes: *const ::std::os::raw::c_char,
8223    ) -> *mut FILE;
8224}
8225extern "C" {
8226    pub fn freopen(
8227        __filename: *const ::std::os::raw::c_char,
8228        __modes: *const ::std::os::raw::c_char,
8229        __stream: *mut FILE,
8230    ) -> *mut FILE;
8231}
8232extern "C" {
8233    pub fn fdopen(__fd: ::std::os::raw::c_int, __modes: *const ::std::os::raw::c_char)
8234        -> *mut FILE;
8235}
8236extern "C" {
8237    pub fn fmemopen(
8238        __s: *mut ::std::os::raw::c_void,
8239        __len: usize,
8240        __modes: *const ::std::os::raw::c_char,
8241    ) -> *mut FILE;
8242}
8243extern "C" {
8244    pub fn open_memstream(
8245        __bufloc: *mut *mut ::std::os::raw::c_char,
8246        __sizeloc: *mut usize,
8247    ) -> *mut FILE;
8248}
8249extern "C" {
8250    pub fn setbuf(__stream: *mut FILE, __buf: *mut ::std::os::raw::c_char);
8251}
8252extern "C" {
8253    pub fn setvbuf(
8254        __stream: *mut FILE,
8255        __buf: *mut ::std::os::raw::c_char,
8256        __modes: ::std::os::raw::c_int,
8257        __n: usize,
8258    ) -> ::std::os::raw::c_int;
8259}
8260extern "C" {
8261    pub fn setbuffer(__stream: *mut FILE, __buf: *mut ::std::os::raw::c_char, __size: usize);
8262}
8263extern "C" {
8264    pub fn setlinebuf(__stream: *mut FILE);
8265}
8266extern "C" {
8267    pub fn fprintf(
8268        __stream: *mut FILE,
8269        __format: *const ::std::os::raw::c_char,
8270        ...
8271    ) -> ::std::os::raw::c_int;
8272}
8273extern "C" {
8274    pub fn printf(__format: *const ::std::os::raw::c_char, ...) -> ::std::os::raw::c_int;
8275}
8276extern "C" {
8277    pub fn sprintf(
8278        __s: *mut ::std::os::raw::c_char,
8279        __format: *const ::std::os::raw::c_char,
8280        ...
8281    ) -> ::std::os::raw::c_int;
8282}
8283extern "C" {
8284    pub fn vfprintf(
8285        __s: *mut FILE,
8286        __format: *const ::std::os::raw::c_char,
8287        __arg: *mut __va_list_tag,
8288    ) -> ::std::os::raw::c_int;
8289}
8290extern "C" {
8291    pub fn vprintf(
8292        __format: *const ::std::os::raw::c_char,
8293        __arg: *mut __va_list_tag,
8294    ) -> ::std::os::raw::c_int;
8295}
8296extern "C" {
8297    pub fn vsprintf(
8298        __s: *mut ::std::os::raw::c_char,
8299        __format: *const ::std::os::raw::c_char,
8300        __arg: *mut __va_list_tag,
8301    ) -> ::std::os::raw::c_int;
8302}
8303extern "C" {
8304    pub fn snprintf(
8305        __s: *mut ::std::os::raw::c_char,
8306        __maxlen: ::std::os::raw::c_ulong,
8307        __format: *const ::std::os::raw::c_char,
8308        ...
8309    ) -> ::std::os::raw::c_int;
8310}
8311extern "C" {
8312    pub fn vsnprintf(
8313        __s: *mut ::std::os::raw::c_char,
8314        __maxlen: ::std::os::raw::c_ulong,
8315        __format: *const ::std::os::raw::c_char,
8316        __arg: *mut __va_list_tag,
8317    ) -> ::std::os::raw::c_int;
8318}
8319extern "C" {
8320    pub fn vdprintf(
8321        __fd: ::std::os::raw::c_int,
8322        __fmt: *const ::std::os::raw::c_char,
8323        __arg: *mut __va_list_tag,
8324    ) -> ::std::os::raw::c_int;
8325}
8326extern "C" {
8327    pub fn dprintf(
8328        __fd: ::std::os::raw::c_int,
8329        __fmt: *const ::std::os::raw::c_char,
8330        ...
8331    ) -> ::std::os::raw::c_int;
8332}
8333extern "C" {
8334    pub fn fscanf(
8335        __stream: *mut FILE,
8336        __format: *const ::std::os::raw::c_char,
8337        ...
8338    ) -> ::std::os::raw::c_int;
8339}
8340extern "C" {
8341    pub fn scanf(__format: *const ::std::os::raw::c_char, ...) -> ::std::os::raw::c_int;
8342}
8343extern "C" {
8344    pub fn sscanf(
8345        __s: *const ::std::os::raw::c_char,
8346        __format: *const ::std::os::raw::c_char,
8347        ...
8348    ) -> ::std::os::raw::c_int;
8349}
8350extern "C" {
8351    #[link_name = "\u{1}__isoc99_fscanf"]
8352    pub fn fscanf1(
8353        __stream: *mut FILE,
8354        __format: *const ::std::os::raw::c_char,
8355        ...
8356    ) -> ::std::os::raw::c_int;
8357}
8358extern "C" {
8359    #[link_name = "\u{1}__isoc99_scanf"]
8360    pub fn scanf1(__format: *const ::std::os::raw::c_char, ...) -> ::std::os::raw::c_int;
8361}
8362extern "C" {
8363    #[link_name = "\u{1}__isoc99_sscanf"]
8364    pub fn sscanf1(
8365        __s: *const ::std::os::raw::c_char,
8366        __format: *const ::std::os::raw::c_char,
8367        ...
8368    ) -> ::std::os::raw::c_int;
8369}
8370extern "C" {
8371    pub fn vfscanf(
8372        __s: *mut FILE,
8373        __format: *const ::std::os::raw::c_char,
8374        __arg: *mut __va_list_tag,
8375    ) -> ::std::os::raw::c_int;
8376}
8377extern "C" {
8378    pub fn vscanf(
8379        __format: *const ::std::os::raw::c_char,
8380        __arg: *mut __va_list_tag,
8381    ) -> ::std::os::raw::c_int;
8382}
8383extern "C" {
8384    pub fn vsscanf(
8385        __s: *const ::std::os::raw::c_char,
8386        __format: *const ::std::os::raw::c_char,
8387        __arg: *mut __va_list_tag,
8388    ) -> ::std::os::raw::c_int;
8389}
8390extern "C" {
8391    #[link_name = "\u{1}__isoc99_vfscanf"]
8392    pub fn vfscanf1(
8393        __s: *mut FILE,
8394        __format: *const ::std::os::raw::c_char,
8395        __arg: *mut __va_list_tag,
8396    ) -> ::std::os::raw::c_int;
8397}
8398extern "C" {
8399    #[link_name = "\u{1}__isoc99_vscanf"]
8400    pub fn vscanf1(
8401        __format: *const ::std::os::raw::c_char,
8402        __arg: *mut __va_list_tag,
8403    ) -> ::std::os::raw::c_int;
8404}
8405extern "C" {
8406    #[link_name = "\u{1}__isoc99_vsscanf"]
8407    pub fn vsscanf1(
8408        __s: *const ::std::os::raw::c_char,
8409        __format: *const ::std::os::raw::c_char,
8410        __arg: *mut __va_list_tag,
8411    ) -> ::std::os::raw::c_int;
8412}
8413extern "C" {
8414    pub fn fgetc(__stream: *mut FILE) -> ::std::os::raw::c_int;
8415}
8416extern "C" {
8417    pub fn getc(__stream: *mut FILE) -> ::std::os::raw::c_int;
8418}
8419extern "C" {
8420    pub fn getchar() -> ::std::os::raw::c_int;
8421}
8422extern "C" {
8423    pub fn getc_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int;
8424}
8425extern "C" {
8426    pub fn getchar_unlocked() -> ::std::os::raw::c_int;
8427}
8428extern "C" {
8429    pub fn fgetc_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int;
8430}
8431extern "C" {
8432    pub fn fputc(__c: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int;
8433}
8434extern "C" {
8435    pub fn putc(__c: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int;
8436}
8437extern "C" {
8438    pub fn putchar(__c: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
8439}
8440extern "C" {
8441    pub fn fputc_unlocked(__c: ::std::os::raw::c_int, __stream: *mut FILE)
8442        -> ::std::os::raw::c_int;
8443}
8444extern "C" {
8445    pub fn putc_unlocked(__c: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int;
8446}
8447extern "C" {
8448    pub fn putchar_unlocked(__c: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
8449}
8450extern "C" {
8451    pub fn getw(__stream: *mut FILE) -> ::std::os::raw::c_int;
8452}
8453extern "C" {
8454    pub fn putw(__w: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int;
8455}
8456extern "C" {
8457    pub fn fgets(
8458        __s: *mut ::std::os::raw::c_char,
8459        __n: ::std::os::raw::c_int,
8460        __stream: *mut FILE,
8461    ) -> *mut ::std::os::raw::c_char;
8462}
8463extern "C" {
8464    pub fn __getdelim(
8465        __lineptr: *mut *mut ::std::os::raw::c_char,
8466        __n: *mut usize,
8467        __delimiter: ::std::os::raw::c_int,
8468        __stream: *mut FILE,
8469    ) -> __ssize_t;
8470}
8471extern "C" {
8472    pub fn getdelim(
8473        __lineptr: *mut *mut ::std::os::raw::c_char,
8474        __n: *mut usize,
8475        __delimiter: ::std::os::raw::c_int,
8476        __stream: *mut FILE,
8477    ) -> __ssize_t;
8478}
8479extern "C" {
8480    pub fn getline(
8481        __lineptr: *mut *mut ::std::os::raw::c_char,
8482        __n: *mut usize,
8483        __stream: *mut FILE,
8484    ) -> __ssize_t;
8485}
8486extern "C" {
8487    pub fn fputs(__s: *const ::std::os::raw::c_char, __stream: *mut FILE) -> ::std::os::raw::c_int;
8488}
8489extern "C" {
8490    pub fn puts(__s: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
8491}
8492extern "C" {
8493    pub fn ungetc(__c: ::std::os::raw::c_int, __stream: *mut FILE) -> ::std::os::raw::c_int;
8494}
8495extern "C" {
8496    pub fn fread(
8497        __ptr: *mut ::std::os::raw::c_void,
8498        __size: ::std::os::raw::c_ulong,
8499        __n: ::std::os::raw::c_ulong,
8500        __stream: *mut FILE,
8501    ) -> ::std::os::raw::c_ulong;
8502}
8503extern "C" {
8504    pub fn fwrite(
8505        __ptr: *const ::std::os::raw::c_void,
8506        __size: ::std::os::raw::c_ulong,
8507        __n: ::std::os::raw::c_ulong,
8508        __s: *mut FILE,
8509    ) -> ::std::os::raw::c_ulong;
8510}
8511extern "C" {
8512    pub fn fread_unlocked(
8513        __ptr: *mut ::std::os::raw::c_void,
8514        __size: usize,
8515        __n: usize,
8516        __stream: *mut FILE,
8517    ) -> usize;
8518}
8519extern "C" {
8520    pub fn fwrite_unlocked(
8521        __ptr: *const ::std::os::raw::c_void,
8522        __size: usize,
8523        __n: usize,
8524        __stream: *mut FILE,
8525    ) -> usize;
8526}
8527extern "C" {
8528    pub fn fseek(
8529        __stream: *mut FILE,
8530        __off: ::std::os::raw::c_long,
8531        __whence: ::std::os::raw::c_int,
8532    ) -> ::std::os::raw::c_int;
8533}
8534extern "C" {
8535    pub fn ftell(__stream: *mut FILE) -> ::std::os::raw::c_long;
8536}
8537extern "C" {
8538    pub fn rewind(__stream: *mut FILE);
8539}
8540extern "C" {
8541    pub fn fseeko(
8542        __stream: *mut FILE,
8543        __off: __off_t,
8544        __whence: ::std::os::raw::c_int,
8545    ) -> ::std::os::raw::c_int;
8546}
8547extern "C" {
8548    pub fn ftello(__stream: *mut FILE) -> __off_t;
8549}
8550extern "C" {
8551    pub fn fgetpos(__stream: *mut FILE, __pos: *mut fpos_t) -> ::std::os::raw::c_int;
8552}
8553extern "C" {
8554    pub fn fsetpos(__stream: *mut FILE, __pos: *const fpos_t) -> ::std::os::raw::c_int;
8555}
8556extern "C" {
8557    pub fn clearerr(__stream: *mut FILE);
8558}
8559extern "C" {
8560    pub fn feof(__stream: *mut FILE) -> ::std::os::raw::c_int;
8561}
8562extern "C" {
8563    pub fn ferror(__stream: *mut FILE) -> ::std::os::raw::c_int;
8564}
8565extern "C" {
8566    pub fn clearerr_unlocked(__stream: *mut FILE);
8567}
8568extern "C" {
8569    pub fn feof_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int;
8570}
8571extern "C" {
8572    pub fn ferror_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int;
8573}
8574extern "C" {
8575    pub fn perror(__s: *const ::std::os::raw::c_char);
8576}
8577extern "C" {
8578    pub static mut sys_nerr: ::std::os::raw::c_int;
8579}
8580extern "C" {
8581    pub static mut sys_errlist: [*const ::std::os::raw::c_char; 0usize];
8582}
8583extern "C" {
8584    pub fn fileno(__stream: *mut FILE) -> ::std::os::raw::c_int;
8585}
8586extern "C" {
8587    pub fn fileno_unlocked(__stream: *mut FILE) -> ::std::os::raw::c_int;
8588}
8589extern "C" {
8590    pub fn popen(
8591        __command: *const ::std::os::raw::c_char,
8592        __modes: *const ::std::os::raw::c_char,
8593    ) -> *mut FILE;
8594}
8595extern "C" {
8596    pub fn pclose(__stream: *mut FILE) -> ::std::os::raw::c_int;
8597}
8598extern "C" {
8599    pub fn ctermid(__s: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;
8600}
8601extern "C" {
8602    pub fn flockfile(__stream: *mut FILE);
8603}
8604extern "C" {
8605    pub fn ftrylockfile(__stream: *mut FILE) -> ::std::os::raw::c_int;
8606}
8607extern "C" {
8608    pub fn funlockfile(__stream: *mut FILE);
8609}
8610extern "C" {
8611    pub fn __uflow(arg1: *mut FILE) -> ::std::os::raw::c_int;
8612}
8613extern "C" {
8614    pub fn __overflow(arg1: *mut FILE, arg2: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
8615}
8616pub const idtype_t_P_ALL: idtype_t = 0;
8617pub const idtype_t_P_PID: idtype_t = 1;
8618pub const idtype_t_P_PGID: idtype_t = 2;
8619pub type idtype_t = u32;
8620pub type _Float32 = f32;
8621pub type _Float64 = f64;
8622pub type _Float32x = f64;
8623pub type _Float64x = u128;
8624#[repr(C)]
8625#[derive(Debug, Copy, Clone)]
8626pub struct div_t {
8627    pub quot: ::std::os::raw::c_int,
8628    pub rem: ::std::os::raw::c_int,
8629}
8630#[test]
8631fn bindgen_test_layout_div_t() {
8632    assert_eq!(
8633        ::std::mem::size_of::<div_t>(),
8634        8usize,
8635        concat!("Size of: ", stringify!(div_t))
8636    );
8637    assert_eq!(
8638        ::std::mem::align_of::<div_t>(),
8639        4usize,
8640        concat!("Alignment of ", stringify!(div_t))
8641    );
8642    assert_eq!(
8643        unsafe { &(*(::std::ptr::null::<div_t>())).quot as *const _ as usize },
8644        0usize,
8645        concat!(
8646            "Offset of field: ",
8647            stringify!(div_t),
8648            "::",
8649            stringify!(quot)
8650        )
8651    );
8652    assert_eq!(
8653        unsafe { &(*(::std::ptr::null::<div_t>())).rem as *const _ as usize },
8654        4usize,
8655        concat!(
8656            "Offset of field: ",
8657            stringify!(div_t),
8658            "::",
8659            stringify!(rem)
8660        )
8661    );
8662}
8663#[repr(C)]
8664#[derive(Debug, Copy, Clone)]
8665pub struct ldiv_t {
8666    pub quot: ::std::os::raw::c_long,
8667    pub rem: ::std::os::raw::c_long,
8668}
8669#[test]
8670fn bindgen_test_layout_ldiv_t() {
8671    assert_eq!(
8672        ::std::mem::size_of::<ldiv_t>(),
8673        16usize,
8674        concat!("Size of: ", stringify!(ldiv_t))
8675    );
8676    assert_eq!(
8677        ::std::mem::align_of::<ldiv_t>(),
8678        8usize,
8679        concat!("Alignment of ", stringify!(ldiv_t))
8680    );
8681    assert_eq!(
8682        unsafe { &(*(::std::ptr::null::<ldiv_t>())).quot as *const _ as usize },
8683        0usize,
8684        concat!(
8685            "Offset of field: ",
8686            stringify!(ldiv_t),
8687            "::",
8688            stringify!(quot)
8689        )
8690    );
8691    assert_eq!(
8692        unsafe { &(*(::std::ptr::null::<ldiv_t>())).rem as *const _ as usize },
8693        8usize,
8694        concat!(
8695            "Offset of field: ",
8696            stringify!(ldiv_t),
8697            "::",
8698            stringify!(rem)
8699        )
8700    );
8701}
8702#[repr(C)]
8703#[derive(Debug, Copy, Clone)]
8704pub struct lldiv_t {
8705    pub quot: ::std::os::raw::c_longlong,
8706    pub rem: ::std::os::raw::c_longlong,
8707}
8708#[test]
8709fn bindgen_test_layout_lldiv_t() {
8710    assert_eq!(
8711        ::std::mem::size_of::<lldiv_t>(),
8712        16usize,
8713        concat!("Size of: ", stringify!(lldiv_t))
8714    );
8715    assert_eq!(
8716        ::std::mem::align_of::<lldiv_t>(),
8717        8usize,
8718        concat!("Alignment of ", stringify!(lldiv_t))
8719    );
8720    assert_eq!(
8721        unsafe { &(*(::std::ptr::null::<lldiv_t>())).quot as *const _ as usize },
8722        0usize,
8723        concat!(
8724            "Offset of field: ",
8725            stringify!(lldiv_t),
8726            "::",
8727            stringify!(quot)
8728        )
8729    );
8730    assert_eq!(
8731        unsafe { &(*(::std::ptr::null::<lldiv_t>())).rem as *const _ as usize },
8732        8usize,
8733        concat!(
8734            "Offset of field: ",
8735            stringify!(lldiv_t),
8736            "::",
8737            stringify!(rem)
8738        )
8739    );
8740}
8741extern "C" {
8742    pub fn __ctype_get_mb_cur_max() -> usize;
8743}
8744extern "C" {
8745    pub fn atof(__nptr: *const ::std::os::raw::c_char) -> f64;
8746}
8747extern "C" {
8748    pub fn atoi(__nptr: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
8749}
8750extern "C" {
8751    pub fn atol(__nptr: *const ::std::os::raw::c_char) -> ::std::os::raw::c_long;
8752}
8753extern "C" {
8754    pub fn atoll(__nptr: *const ::std::os::raw::c_char) -> ::std::os::raw::c_longlong;
8755}
8756extern "C" {
8757    pub fn strtod(
8758        __nptr: *const ::std::os::raw::c_char,
8759        __endptr: *mut *mut ::std::os::raw::c_char,
8760    ) -> f64;
8761}
8762extern "C" {
8763    pub fn strtof(
8764        __nptr: *const ::std::os::raw::c_char,
8765        __endptr: *mut *mut ::std::os::raw::c_char,
8766    ) -> f32;
8767}
8768extern "C" {
8769    pub fn strtold(
8770        __nptr: *const ::std::os::raw::c_char,
8771        __endptr: *mut *mut ::std::os::raw::c_char,
8772    ) -> u128;
8773}
8774extern "C" {
8775    pub fn strtol(
8776        __nptr: *const ::std::os::raw::c_char,
8777        __endptr: *mut *mut ::std::os::raw::c_char,
8778        __base: ::std::os::raw::c_int,
8779    ) -> ::std::os::raw::c_long;
8780}
8781extern "C" {
8782    pub fn strtoul(
8783        __nptr: *const ::std::os::raw::c_char,
8784        __endptr: *mut *mut ::std::os::raw::c_char,
8785        __base: ::std::os::raw::c_int,
8786    ) -> ::std::os::raw::c_ulong;
8787}
8788extern "C" {
8789    pub fn strtoq(
8790        __nptr: *const ::std::os::raw::c_char,
8791        __endptr: *mut *mut ::std::os::raw::c_char,
8792        __base: ::std::os::raw::c_int,
8793    ) -> ::std::os::raw::c_longlong;
8794}
8795extern "C" {
8796    pub fn strtouq(
8797        __nptr: *const ::std::os::raw::c_char,
8798        __endptr: *mut *mut ::std::os::raw::c_char,
8799        __base: ::std::os::raw::c_int,
8800    ) -> ::std::os::raw::c_ulonglong;
8801}
8802extern "C" {
8803    pub fn strtoll(
8804        __nptr: *const ::std::os::raw::c_char,
8805        __endptr: *mut *mut ::std::os::raw::c_char,
8806        __base: ::std::os::raw::c_int,
8807    ) -> ::std::os::raw::c_longlong;
8808}
8809extern "C" {
8810    pub fn strtoull(
8811        __nptr: *const ::std::os::raw::c_char,
8812        __endptr: *mut *mut ::std::os::raw::c_char,
8813        __base: ::std::os::raw::c_int,
8814    ) -> ::std::os::raw::c_ulonglong;
8815}
8816extern "C" {
8817    pub fn l64a(__n: ::std::os::raw::c_long) -> *mut ::std::os::raw::c_char;
8818}
8819extern "C" {
8820    pub fn a64l(__s: *const ::std::os::raw::c_char) -> ::std::os::raw::c_long;
8821}
8822extern "C" {
8823    pub fn random() -> ::std::os::raw::c_long;
8824}
8825extern "C" {
8826    pub fn srandom(__seed: ::std::os::raw::c_uint);
8827}
8828extern "C" {
8829    pub fn initstate(
8830        __seed: ::std::os::raw::c_uint,
8831        __statebuf: *mut ::std::os::raw::c_char,
8832        __statelen: usize,
8833    ) -> *mut ::std::os::raw::c_char;
8834}
8835extern "C" {
8836    pub fn setstate(__statebuf: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;
8837}
8838#[repr(C)]
8839#[derive(Debug, Copy, Clone)]
8840pub struct random_data {
8841    pub fptr: *mut i32,
8842    pub rptr: *mut i32,
8843    pub state: *mut i32,
8844    pub rand_type: ::std::os::raw::c_int,
8845    pub rand_deg: ::std::os::raw::c_int,
8846    pub rand_sep: ::std::os::raw::c_int,
8847    pub end_ptr: *mut i32,
8848}
8849#[test]
8850fn bindgen_test_layout_random_data() {
8851    assert_eq!(
8852        ::std::mem::size_of::<random_data>(),
8853        48usize,
8854        concat!("Size of: ", stringify!(random_data))
8855    );
8856    assert_eq!(
8857        ::std::mem::align_of::<random_data>(),
8858        8usize,
8859        concat!("Alignment of ", stringify!(random_data))
8860    );
8861    assert_eq!(
8862        unsafe { &(*(::std::ptr::null::<random_data>())).fptr as *const _ as usize },
8863        0usize,
8864        concat!(
8865            "Offset of field: ",
8866            stringify!(random_data),
8867            "::",
8868            stringify!(fptr)
8869        )
8870    );
8871    assert_eq!(
8872        unsafe { &(*(::std::ptr::null::<random_data>())).rptr as *const _ as usize },
8873        8usize,
8874        concat!(
8875            "Offset of field: ",
8876            stringify!(random_data),
8877            "::",
8878            stringify!(rptr)
8879        )
8880    );
8881    assert_eq!(
8882        unsafe { &(*(::std::ptr::null::<random_data>())).state as *const _ as usize },
8883        16usize,
8884        concat!(
8885            "Offset of field: ",
8886            stringify!(random_data),
8887            "::",
8888            stringify!(state)
8889        )
8890    );
8891    assert_eq!(
8892        unsafe { &(*(::std::ptr::null::<random_data>())).rand_type as *const _ as usize },
8893        24usize,
8894        concat!(
8895            "Offset of field: ",
8896            stringify!(random_data),
8897            "::",
8898            stringify!(rand_type)
8899        )
8900    );
8901    assert_eq!(
8902        unsafe { &(*(::std::ptr::null::<random_data>())).rand_deg as *const _ as usize },
8903        28usize,
8904        concat!(
8905            "Offset of field: ",
8906            stringify!(random_data),
8907            "::",
8908            stringify!(rand_deg)
8909        )
8910    );
8911    assert_eq!(
8912        unsafe { &(*(::std::ptr::null::<random_data>())).rand_sep as *const _ as usize },
8913        32usize,
8914        concat!(
8915            "Offset of field: ",
8916            stringify!(random_data),
8917            "::",
8918            stringify!(rand_sep)
8919        )
8920    );
8921    assert_eq!(
8922        unsafe { &(*(::std::ptr::null::<random_data>())).end_ptr as *const _ as usize },
8923        40usize,
8924        concat!(
8925            "Offset of field: ",
8926            stringify!(random_data),
8927            "::",
8928            stringify!(end_ptr)
8929        )
8930    );
8931}
8932extern "C" {
8933    pub fn random_r(__buf: *mut random_data, __result: *mut i32) -> ::std::os::raw::c_int;
8934}
8935extern "C" {
8936    pub fn srandom_r(
8937        __seed: ::std::os::raw::c_uint,
8938        __buf: *mut random_data,
8939    ) -> ::std::os::raw::c_int;
8940}
8941extern "C" {
8942    pub fn initstate_r(
8943        __seed: ::std::os::raw::c_uint,
8944        __statebuf: *mut ::std::os::raw::c_char,
8945        __statelen: usize,
8946        __buf: *mut random_data,
8947    ) -> ::std::os::raw::c_int;
8948}
8949extern "C" {
8950    pub fn setstate_r(
8951        __statebuf: *mut ::std::os::raw::c_char,
8952        __buf: *mut random_data,
8953    ) -> ::std::os::raw::c_int;
8954}
8955extern "C" {
8956    pub fn rand() -> ::std::os::raw::c_int;
8957}
8958extern "C" {
8959    pub fn srand(__seed: ::std::os::raw::c_uint);
8960}
8961extern "C" {
8962    pub fn rand_r(__seed: *mut ::std::os::raw::c_uint) -> ::std::os::raw::c_int;
8963}
8964extern "C" {
8965    pub fn drand48() -> f64;
8966}
8967extern "C" {
8968    pub fn erand48(__xsubi: *mut ::std::os::raw::c_ushort) -> f64;
8969}
8970extern "C" {
8971    pub fn lrand48() -> ::std::os::raw::c_long;
8972}
8973extern "C" {
8974    pub fn nrand48(__xsubi: *mut ::std::os::raw::c_ushort) -> ::std::os::raw::c_long;
8975}
8976extern "C" {
8977    pub fn mrand48() -> ::std::os::raw::c_long;
8978}
8979extern "C" {
8980    pub fn jrand48(__xsubi: *mut ::std::os::raw::c_ushort) -> ::std::os::raw::c_long;
8981}
8982extern "C" {
8983    pub fn srand48(__seedval: ::std::os::raw::c_long);
8984}
8985extern "C" {
8986    pub fn seed48(__seed16v: *mut ::std::os::raw::c_ushort) -> *mut ::std::os::raw::c_ushort;
8987}
8988extern "C" {
8989    pub fn lcong48(__param: *mut ::std::os::raw::c_ushort);
8990}
8991#[repr(C)]
8992#[derive(Debug, Copy, Clone)]
8993pub struct drand48_data {
8994    pub __x: [::std::os::raw::c_ushort; 3usize],
8995    pub __old_x: [::std::os::raw::c_ushort; 3usize],
8996    pub __c: ::std::os::raw::c_ushort,
8997    pub __init: ::std::os::raw::c_ushort,
8998    pub __a: ::std::os::raw::c_ulonglong,
8999}
9000#[test]
9001fn bindgen_test_layout_drand48_data() {
9002    assert_eq!(
9003        ::std::mem::size_of::<drand48_data>(),
9004        24usize,
9005        concat!("Size of: ", stringify!(drand48_data))
9006    );
9007    assert_eq!(
9008        ::std::mem::align_of::<drand48_data>(),
9009        8usize,
9010        concat!("Alignment of ", stringify!(drand48_data))
9011    );
9012    assert_eq!(
9013        unsafe { &(*(::std::ptr::null::<drand48_data>())).__x as *const _ as usize },
9014        0usize,
9015        concat!(
9016            "Offset of field: ",
9017            stringify!(drand48_data),
9018            "::",
9019            stringify!(__x)
9020        )
9021    );
9022    assert_eq!(
9023        unsafe { &(*(::std::ptr::null::<drand48_data>())).__old_x as *const _ as usize },
9024        6usize,
9025        concat!(
9026            "Offset of field: ",
9027            stringify!(drand48_data),
9028            "::",
9029            stringify!(__old_x)
9030        )
9031    );
9032    assert_eq!(
9033        unsafe { &(*(::std::ptr::null::<drand48_data>())).__c as *const _ as usize },
9034        12usize,
9035        concat!(
9036            "Offset of field: ",
9037            stringify!(drand48_data),
9038            "::",
9039            stringify!(__c)
9040        )
9041    );
9042    assert_eq!(
9043        unsafe { &(*(::std::ptr::null::<drand48_data>())).__init as *const _ as usize },
9044        14usize,
9045        concat!(
9046            "Offset of field: ",
9047            stringify!(drand48_data),
9048            "::",
9049            stringify!(__init)
9050        )
9051    );
9052    assert_eq!(
9053        unsafe { &(*(::std::ptr::null::<drand48_data>())).__a as *const _ as usize },
9054        16usize,
9055        concat!(
9056            "Offset of field: ",
9057            stringify!(drand48_data),
9058            "::",
9059            stringify!(__a)
9060        )
9061    );
9062}
9063extern "C" {
9064    pub fn drand48_r(__buffer: *mut drand48_data, __result: *mut f64) -> ::std::os::raw::c_int;
9065}
9066extern "C" {
9067    pub fn erand48_r(
9068        __xsubi: *mut ::std::os::raw::c_ushort,
9069        __buffer: *mut drand48_data,
9070        __result: *mut f64,
9071    ) -> ::std::os::raw::c_int;
9072}
9073extern "C" {
9074    pub fn lrand48_r(
9075        __buffer: *mut drand48_data,
9076        __result: *mut ::std::os::raw::c_long,
9077    ) -> ::std::os::raw::c_int;
9078}
9079extern "C" {
9080    pub fn nrand48_r(
9081        __xsubi: *mut ::std::os::raw::c_ushort,
9082        __buffer: *mut drand48_data,
9083        __result: *mut ::std::os::raw::c_long,
9084    ) -> ::std::os::raw::c_int;
9085}
9086extern "C" {
9087    pub fn mrand48_r(
9088        __buffer: *mut drand48_data,
9089        __result: *mut ::std::os::raw::c_long,
9090    ) -> ::std::os::raw::c_int;
9091}
9092extern "C" {
9093    pub fn jrand48_r(
9094        __xsubi: *mut ::std::os::raw::c_ushort,
9095        __buffer: *mut drand48_data,
9096        __result: *mut ::std::os::raw::c_long,
9097    ) -> ::std::os::raw::c_int;
9098}
9099extern "C" {
9100    pub fn srand48_r(
9101        __seedval: ::std::os::raw::c_long,
9102        __buffer: *mut drand48_data,
9103    ) -> ::std::os::raw::c_int;
9104}
9105extern "C" {
9106    pub fn seed48_r(
9107        __seed16v: *mut ::std::os::raw::c_ushort,
9108        __buffer: *mut drand48_data,
9109    ) -> ::std::os::raw::c_int;
9110}
9111extern "C" {
9112    pub fn lcong48_r(
9113        __param: *mut ::std::os::raw::c_ushort,
9114        __buffer: *mut drand48_data,
9115    ) -> ::std::os::raw::c_int;
9116}
9117extern "C" {
9118    pub fn malloc(__size: ::std::os::raw::c_ulong) -> *mut ::std::os::raw::c_void;
9119}
9120extern "C" {
9121    pub fn calloc(
9122        __nmemb: ::std::os::raw::c_ulong,
9123        __size: ::std::os::raw::c_ulong,
9124    ) -> *mut ::std::os::raw::c_void;
9125}
9126extern "C" {
9127    pub fn realloc(
9128        __ptr: *mut ::std::os::raw::c_void,
9129        __size: ::std::os::raw::c_ulong,
9130    ) -> *mut ::std::os::raw::c_void;
9131}
9132extern "C" {
9133    pub fn reallocarray(
9134        __ptr: *mut ::std::os::raw::c_void,
9135        __nmemb: usize,
9136        __size: usize,
9137    ) -> *mut ::std::os::raw::c_void;
9138}
9139extern "C" {
9140    pub fn free(__ptr: *mut ::std::os::raw::c_void);
9141}
9142extern "C" {
9143    pub fn alloca(__size: ::std::os::raw::c_ulong) -> *mut ::std::os::raw::c_void;
9144}
9145extern "C" {
9146    pub fn valloc(__size: usize) -> *mut ::std::os::raw::c_void;
9147}
9148extern "C" {
9149    pub fn posix_memalign(
9150        __memptr: *mut *mut ::std::os::raw::c_void,
9151        __alignment: usize,
9152        __size: usize,
9153    ) -> ::std::os::raw::c_int;
9154}
9155extern "C" {
9156    pub fn aligned_alloc(__alignment: usize, __size: usize) -> *mut ::std::os::raw::c_void;
9157}
9158extern "C" {
9159    pub fn abort();
9160}
9161extern "C" {
9162    pub fn atexit(__func: ::std::option::Option<unsafe extern "C" fn()>) -> ::std::os::raw::c_int;
9163}
9164extern "C" {
9165    pub fn at_quick_exit(
9166        __func: ::std::option::Option<unsafe extern "C" fn()>,
9167    ) -> ::std::os::raw::c_int;
9168}
9169extern "C" {
9170    pub fn on_exit(
9171        __func: ::std::option::Option<
9172            unsafe extern "C" fn(
9173                __status: ::std::os::raw::c_int,
9174                __arg: *mut ::std::os::raw::c_void,
9175            ),
9176        >,
9177        __arg: *mut ::std::os::raw::c_void,
9178    ) -> ::std::os::raw::c_int;
9179}
9180extern "C" {
9181    pub fn exit(__status: ::std::os::raw::c_int);
9182}
9183extern "C" {
9184    pub fn quick_exit(__status: ::std::os::raw::c_int);
9185}
9186extern "C" {
9187    pub fn _Exit(__status: ::std::os::raw::c_int);
9188}
9189extern "C" {
9190    pub fn getenv(__name: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;
9191}
9192extern "C" {
9193    pub fn putenv(__string: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int;
9194}
9195extern "C" {
9196    pub fn setenv(
9197        __name: *const ::std::os::raw::c_char,
9198        __value: *const ::std::os::raw::c_char,
9199        __replace: ::std::os::raw::c_int,
9200    ) -> ::std::os::raw::c_int;
9201}
9202extern "C" {
9203    pub fn unsetenv(__name: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
9204}
9205extern "C" {
9206    pub fn clearenv() -> ::std::os::raw::c_int;
9207}
9208extern "C" {
9209    pub fn mktemp(__template: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;
9210}
9211extern "C" {
9212    pub fn mkstemp(__template: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int;
9213}
9214extern "C" {
9215    pub fn mkstemps(
9216        __template: *mut ::std::os::raw::c_char,
9217        __suffixlen: ::std::os::raw::c_int,
9218    ) -> ::std::os::raw::c_int;
9219}
9220extern "C" {
9221    pub fn mkdtemp(__template: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;
9222}
9223extern "C" {
9224    pub fn system(__command: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
9225}
9226extern "C" {
9227    pub fn realpath(
9228        __name: *const ::std::os::raw::c_char,
9229        __resolved: *mut ::std::os::raw::c_char,
9230    ) -> *mut ::std::os::raw::c_char;
9231}
9232pub type __compar_fn_t = ::std::option::Option<
9233    unsafe extern "C" fn(
9234        arg1: *const ::std::os::raw::c_void,
9235        arg2: *const ::std::os::raw::c_void,
9236    ) -> ::std::os::raw::c_int,
9237>;
9238extern "C" {
9239    pub fn bsearch(
9240        __key: *const ::std::os::raw::c_void,
9241        __base: *const ::std::os::raw::c_void,
9242        __nmemb: usize,
9243        __size: usize,
9244        __compar: __compar_fn_t,
9245    ) -> *mut ::std::os::raw::c_void;
9246}
9247extern "C" {
9248    pub fn qsort(
9249        __base: *mut ::std::os::raw::c_void,
9250        __nmemb: usize,
9251        __size: usize,
9252        __compar: __compar_fn_t,
9253    );
9254}
9255extern "C" {
9256    pub fn abs(__x: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
9257}
9258extern "C" {
9259    pub fn labs(__x: ::std::os::raw::c_long) -> ::std::os::raw::c_long;
9260}
9261extern "C" {
9262    pub fn llabs(__x: ::std::os::raw::c_longlong) -> ::std::os::raw::c_longlong;
9263}
9264extern "C" {
9265    pub fn div(__numer: ::std::os::raw::c_int, __denom: ::std::os::raw::c_int) -> div_t;
9266}
9267extern "C" {
9268    pub fn ldiv(__numer: ::std::os::raw::c_long, __denom: ::std::os::raw::c_long) -> ldiv_t;
9269}
9270extern "C" {
9271    pub fn lldiv(
9272        __numer: ::std::os::raw::c_longlong,
9273        __denom: ::std::os::raw::c_longlong,
9274    ) -> lldiv_t;
9275}
9276extern "C" {
9277    pub fn ecvt(
9278        __value: f64,
9279        __ndigit: ::std::os::raw::c_int,
9280        __decpt: *mut ::std::os::raw::c_int,
9281        __sign: *mut ::std::os::raw::c_int,
9282    ) -> *mut ::std::os::raw::c_char;
9283}
9284extern "C" {
9285    pub fn fcvt(
9286        __value: f64,
9287        __ndigit: ::std::os::raw::c_int,
9288        __decpt: *mut ::std::os::raw::c_int,
9289        __sign: *mut ::std::os::raw::c_int,
9290    ) -> *mut ::std::os::raw::c_char;
9291}
9292extern "C" {
9293    pub fn gcvt(
9294        __value: f64,
9295        __ndigit: ::std::os::raw::c_int,
9296        __buf: *mut ::std::os::raw::c_char,
9297    ) -> *mut ::std::os::raw::c_char;
9298}
9299extern "C" {
9300    pub fn qecvt(
9301        __value: u128,
9302        __ndigit: ::std::os::raw::c_int,
9303        __decpt: *mut ::std::os::raw::c_int,
9304        __sign: *mut ::std::os::raw::c_int,
9305    ) -> *mut ::std::os::raw::c_char;
9306}
9307extern "C" {
9308    pub fn qfcvt(
9309        __value: u128,
9310        __ndigit: ::std::os::raw::c_int,
9311        __decpt: *mut ::std::os::raw::c_int,
9312        __sign: *mut ::std::os::raw::c_int,
9313    ) -> *mut ::std::os::raw::c_char;
9314}
9315extern "C" {
9316    pub fn qgcvt(
9317        __value: u128,
9318        __ndigit: ::std::os::raw::c_int,
9319        __buf: *mut ::std::os::raw::c_char,
9320    ) -> *mut ::std::os::raw::c_char;
9321}
9322extern "C" {
9323    pub fn ecvt_r(
9324        __value: f64,
9325        __ndigit: ::std::os::raw::c_int,
9326        __decpt: *mut ::std::os::raw::c_int,
9327        __sign: *mut ::std::os::raw::c_int,
9328        __buf: *mut ::std::os::raw::c_char,
9329        __len: usize,
9330    ) -> ::std::os::raw::c_int;
9331}
9332extern "C" {
9333    pub fn fcvt_r(
9334        __value: f64,
9335        __ndigit: ::std::os::raw::c_int,
9336        __decpt: *mut ::std::os::raw::c_int,
9337        __sign: *mut ::std::os::raw::c_int,
9338        __buf: *mut ::std::os::raw::c_char,
9339        __len: usize,
9340    ) -> ::std::os::raw::c_int;
9341}
9342extern "C" {
9343    pub fn qecvt_r(
9344        __value: u128,
9345        __ndigit: ::std::os::raw::c_int,
9346        __decpt: *mut ::std::os::raw::c_int,
9347        __sign: *mut ::std::os::raw::c_int,
9348        __buf: *mut ::std::os::raw::c_char,
9349        __len: usize,
9350    ) -> ::std::os::raw::c_int;
9351}
9352extern "C" {
9353    pub fn qfcvt_r(
9354        __value: u128,
9355        __ndigit: ::std::os::raw::c_int,
9356        __decpt: *mut ::std::os::raw::c_int,
9357        __sign: *mut ::std::os::raw::c_int,
9358        __buf: *mut ::std::os::raw::c_char,
9359        __len: usize,
9360    ) -> ::std::os::raw::c_int;
9361}
9362extern "C" {
9363    pub fn mblen(__s: *const ::std::os::raw::c_char, __n: usize) -> ::std::os::raw::c_int;
9364}
9365extern "C" {
9366    pub fn mbtowc(
9367        __pwc: *mut wchar_t,
9368        __s: *const ::std::os::raw::c_char,
9369        __n: usize,
9370    ) -> ::std::os::raw::c_int;
9371}
9372extern "C" {
9373    pub fn wctomb(__s: *mut ::std::os::raw::c_char, __wchar: wchar_t) -> ::std::os::raw::c_int;
9374}
9375extern "C" {
9376    pub fn mbstowcs(__pwcs: *mut wchar_t, __s: *const ::std::os::raw::c_char, __n: usize) -> usize;
9377}
9378extern "C" {
9379    pub fn wcstombs(__s: *mut ::std::os::raw::c_char, __pwcs: *const wchar_t, __n: usize) -> usize;
9380}
9381extern "C" {
9382    pub fn rpmatch(__response: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
9383}
9384extern "C" {
9385    pub fn getsubopt(
9386        __optionp: *mut *mut ::std::os::raw::c_char,
9387        __tokens: *const *mut ::std::os::raw::c_char,
9388        __valuep: *mut *mut ::std::os::raw::c_char,
9389    ) -> ::std::os::raw::c_int;
9390}
9391extern "C" {
9392    pub fn getloadavg(__loadavg: *mut f64, __nelem: ::std::os::raw::c_int)
9393        -> ::std::os::raw::c_int;
9394}
9395extern "C" {
9396    pub static mut rec_word_tab: [::std::os::raw::c_int; 256usize];
9397}
9398extern "C" {
9399    pub static mut flint_version: [::std::os::raw::c_char; 0usize];
9400}
9401extern "C" {
9402    pub fn flint_malloc(size: usize) -> *mut ::std::os::raw::c_void;
9403}
9404extern "C" {
9405    pub fn flint_realloc(
9406        ptr: *mut ::std::os::raw::c_void,
9407        size: usize,
9408    ) -> *mut ::std::os::raw::c_void;
9409}
9410extern "C" {
9411    pub fn flint_calloc(num: usize, size: usize) -> *mut ::std::os::raw::c_void;
9412}
9413extern "C" {
9414    pub fn flint_free(ptr: *mut ::std::os::raw::c_void);
9415}
9416pub type flint_cleanup_function_t = ::std::option::Option<unsafe extern "C" fn()>;
9417extern "C" {
9418    pub fn flint_register_cleanup_function(cleanup_function: flint_cleanup_function_t);
9419}
9420extern "C" {
9421    pub fn flint_cleanup();
9422}
9423extern "C" {
9424    pub fn flint_cleanup_master();
9425}
9426extern "C" {
9427    pub fn __flint_set_memory_functions(
9428        alloc_func: ::std::option::Option<
9429            unsafe extern "C" fn(arg1: usize) -> *mut ::std::os::raw::c_void,
9430        >,
9431        calloc_func: ::std::option::Option<
9432            unsafe extern "C" fn(arg1: usize, arg2: usize) -> *mut ::std::os::raw::c_void,
9433        >,
9434        realloc_func: ::std::option::Option<
9435            unsafe extern "C" fn(
9436                arg1: *mut ::std::os::raw::c_void,
9437                arg2: usize,
9438            ) -> *mut ::std::os::raw::c_void,
9439        >,
9440        free_func: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
9441    );
9442}
9443extern "C" {
9444    pub fn flint_abort();
9445}
9446extern "C" {
9447    pub fn flint_set_abort(func: ::std::option::Option<unsafe extern "C" fn()>);
9448}
9449extern "C" {
9450    pub fn flint_get_num_threads() -> ::std::os::raw::c_int;
9451}
9452extern "C" {
9453    pub fn flint_set_num_threads(num_threads: ::std::os::raw::c_int);
9454}
9455extern "C" {
9456    pub fn _flint_set_num_workers(num_workers: ::std::os::raw::c_int);
9457}
9458extern "C" {
9459    pub fn flint_set_num_workers(num_workers: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
9460}
9461extern "C" {
9462    pub fn flint_reset_num_workers(max_workers: ::std::os::raw::c_int);
9463}
9464extern "C" {
9465    pub fn flint_set_thread_affinity(
9466        cpus: *mut ::std::os::raw::c_int,
9467        length: mp_limb_signed_t,
9468    ) -> ::std::os::raw::c_int;
9469}
9470extern "C" {
9471    pub fn flint_restore_thread_affinity() -> ::std::os::raw::c_int;
9472}
9473extern "C" {
9474    pub fn flint_test_multiplier() -> ::std::os::raw::c_int;
9475}
9476#[repr(C)]
9477#[derive(Copy, Clone)]
9478pub struct flint_rand_s {
9479    pub gmp_state: gmp_randstate_t,
9480    pub gmp_init: ::std::os::raw::c_int,
9481    pub __randval: mp_limb_t,
9482    pub __randval2: mp_limb_t,
9483}
9484#[test]
9485fn bindgen_test_layout_flint_rand_s() {
9486    assert_eq!(
9487        ::std::mem::size_of::<flint_rand_s>(),
9488        56usize,
9489        concat!("Size of: ", stringify!(flint_rand_s))
9490    );
9491    assert_eq!(
9492        ::std::mem::align_of::<flint_rand_s>(),
9493        8usize,
9494        concat!("Alignment of ", stringify!(flint_rand_s))
9495    );
9496    assert_eq!(
9497        unsafe { &(*(::std::ptr::null::<flint_rand_s>())).gmp_state as *const _ as usize },
9498        0usize,
9499        concat!(
9500            "Offset of field: ",
9501            stringify!(flint_rand_s),
9502            "::",
9503            stringify!(gmp_state)
9504        )
9505    );
9506    assert_eq!(
9507        unsafe { &(*(::std::ptr::null::<flint_rand_s>())).gmp_init as *const _ as usize },
9508        32usize,
9509        concat!(
9510            "Offset of field: ",
9511            stringify!(flint_rand_s),
9512            "::",
9513            stringify!(gmp_init)
9514        )
9515    );
9516    assert_eq!(
9517        unsafe { &(*(::std::ptr::null::<flint_rand_s>())).__randval as *const _ as usize },
9518        40usize,
9519        concat!(
9520            "Offset of field: ",
9521            stringify!(flint_rand_s),
9522            "::",
9523            stringify!(__randval)
9524        )
9525    );
9526    assert_eq!(
9527        unsafe { &(*(::std::ptr::null::<flint_rand_s>())).__randval2 as *const _ as usize },
9528        48usize,
9529        concat!(
9530            "Offset of field: ",
9531            stringify!(flint_rand_s),
9532            "::",
9533            stringify!(__randval2)
9534        )
9535    );
9536}
9537pub type flint_rand_t = [flint_rand_s; 1usize];
9538pub type flint_mpfr = __mpfr_struct;
9539extern "C" {
9540    pub fn parse_fmt(
9541        floating: *mut ::std::os::raw::c_int,
9542        fmt: *const ::std::os::raw::c_char,
9543    ) -> ::std::os::raw::c_int;
9544}
9545extern "C" {
9546    pub fn flint_printf(str: *const ::std::os::raw::c_char, ...) -> ::std::os::raw::c_int;
9547}
9548extern "C" {
9549    pub fn flint_vprintf(
9550        str: *const ::std::os::raw::c_char,
9551        ap: *mut __va_list_tag,
9552    ) -> ::std::os::raw::c_int;
9553}
9554extern "C" {
9555    pub fn flint_fprintf(
9556        f: *mut FILE,
9557        str: *const ::std::os::raw::c_char,
9558        ...
9559    ) -> ::std::os::raw::c_int;
9560}
9561extern "C" {
9562    pub fn flint_sprintf(
9563        s: *mut ::std::os::raw::c_char,
9564        str: *const ::std::os::raw::c_char,
9565        ...
9566    ) -> ::std::os::raw::c_int;
9567}
9568extern "C" {
9569    pub fn flint_scanf(str: *const ::std::os::raw::c_char, ...) -> ::std::os::raw::c_int;
9570}
9571extern "C" {
9572    pub fn flint_fscanf(
9573        f: *mut FILE,
9574        str: *const ::std::os::raw::c_char,
9575        ...
9576    ) -> ::std::os::raw::c_int;
9577}
9578extern "C" {
9579    pub fn flint_sscanf(
9580        s: *const ::std::os::raw::c_char,
9581        str: *const ::std::os::raw::c_char,
9582        ...
9583    ) -> ::std::os::raw::c_int;
9584}
9585pub const flint_err_t_FLINT_ERROR: flint_err_t = 0;
9586pub const flint_err_t_FLINT_IMPINV: flint_err_t = 1;
9587pub const flint_err_t_FLINT_DOMERR: flint_err_t = 2;
9588pub const flint_err_t_FLINT_DIVZERO: flint_err_t = 3;
9589pub const flint_err_t_FLINT_EXPOF: flint_err_t = 4;
9590pub const flint_err_t_FLINT_INEXACT: flint_err_t = 5;
9591pub type flint_err_t = u32;
9592extern "C" {
9593    pub fn flint_throw(exc: flint_err_t, msg: *const ::std::os::raw::c_char, ...);
9594}
9595#[repr(C)]
9596#[derive(Debug, Copy, Clone)]
9597pub struct pair_s {
9598    pub x: mp_limb_t,
9599    pub y: mp_limb_t,
9600}
9601#[test]
9602fn bindgen_test_layout_pair_s() {
9603    assert_eq!(
9604        ::std::mem::size_of::<pair_s>(),
9605        16usize,
9606        concat!("Size of: ", stringify!(pair_s))
9607    );
9608    assert_eq!(
9609        ::std::mem::align_of::<pair_s>(),
9610        8usize,
9611        concat!("Alignment of ", stringify!(pair_s))
9612    );
9613    assert_eq!(
9614        unsafe { &(*(::std::ptr::null::<pair_s>())).x as *const _ as usize },
9615        0usize,
9616        concat!("Offset of field: ", stringify!(pair_s), "::", stringify!(x))
9617    );
9618    assert_eq!(
9619        unsafe { &(*(::std::ptr::null::<pair_s>())).y as *const _ as usize },
9620        8usize,
9621        concat!("Offset of field: ", stringify!(pair_s), "::", stringify!(y))
9622    );
9623}
9624pub type n_pair_t = pair_s;
9625#[repr(C)]
9626#[derive(Debug, Copy, Clone)]
9627pub struct n_factor_t {
9628    pub num: ::std::os::raw::c_int,
9629    pub exp: [::std::os::raw::c_int; 15usize],
9630    pub p: [mp_limb_t; 15usize],
9631}
9632#[test]
9633fn bindgen_test_layout_n_factor_t() {
9634    assert_eq!(
9635        ::std::mem::size_of::<n_factor_t>(),
9636        184usize,
9637        concat!("Size of: ", stringify!(n_factor_t))
9638    );
9639    assert_eq!(
9640        ::std::mem::align_of::<n_factor_t>(),
9641        8usize,
9642        concat!("Alignment of ", stringify!(n_factor_t))
9643    );
9644    assert_eq!(
9645        unsafe { &(*(::std::ptr::null::<n_factor_t>())).num as *const _ as usize },
9646        0usize,
9647        concat!(
9648            "Offset of field: ",
9649            stringify!(n_factor_t),
9650            "::",
9651            stringify!(num)
9652        )
9653    );
9654    assert_eq!(
9655        unsafe { &(*(::std::ptr::null::<n_factor_t>())).exp as *const _ as usize },
9656        4usize,
9657        concat!(
9658            "Offset of field: ",
9659            stringify!(n_factor_t),
9660            "::",
9661            stringify!(exp)
9662        )
9663    );
9664    assert_eq!(
9665        unsafe { &(*(::std::ptr::null::<n_factor_t>())).p as *const _ as usize },
9666        64usize,
9667        concat!(
9668            "Offset of field: ",
9669            stringify!(n_factor_t),
9670            "::",
9671            stringify!(p)
9672        )
9673    );
9674}
9675#[repr(C)]
9676#[derive(Debug, Copy, Clone)]
9677pub struct n_primes_struct {
9678    pub small_i: mp_limb_signed_t,
9679    pub small_num: mp_limb_signed_t,
9680    pub small_primes: *mut ::std::os::raw::c_uint,
9681    pub sieve_a: mp_limb_t,
9682    pub sieve_b: mp_limb_t,
9683    pub sieve_i: mp_limb_signed_t,
9684    pub sieve_num: mp_limb_signed_t,
9685    pub sieve: *mut ::std::os::raw::c_char,
9686}
9687#[test]
9688fn bindgen_test_layout_n_primes_struct() {
9689    assert_eq!(
9690        ::std::mem::size_of::<n_primes_struct>(),
9691        64usize,
9692        concat!("Size of: ", stringify!(n_primes_struct))
9693    );
9694    assert_eq!(
9695        ::std::mem::align_of::<n_primes_struct>(),
9696        8usize,
9697        concat!("Alignment of ", stringify!(n_primes_struct))
9698    );
9699    assert_eq!(
9700        unsafe { &(*(::std::ptr::null::<n_primes_struct>())).small_i as *const _ as usize },
9701        0usize,
9702        concat!(
9703            "Offset of field: ",
9704            stringify!(n_primes_struct),
9705            "::",
9706            stringify!(small_i)
9707        )
9708    );
9709    assert_eq!(
9710        unsafe { &(*(::std::ptr::null::<n_primes_struct>())).small_num as *const _ as usize },
9711        8usize,
9712        concat!(
9713            "Offset of field: ",
9714            stringify!(n_primes_struct),
9715            "::",
9716            stringify!(small_num)
9717        )
9718    );
9719    assert_eq!(
9720        unsafe { &(*(::std::ptr::null::<n_primes_struct>())).small_primes as *const _ as usize },
9721        16usize,
9722        concat!(
9723            "Offset of field: ",
9724            stringify!(n_primes_struct),
9725            "::",
9726            stringify!(small_primes)
9727        )
9728    );
9729    assert_eq!(
9730        unsafe { &(*(::std::ptr::null::<n_primes_struct>())).sieve_a as *const _ as usize },
9731        24usize,
9732        concat!(
9733            "Offset of field: ",
9734            stringify!(n_primes_struct),
9735            "::",
9736            stringify!(sieve_a)
9737        )
9738    );
9739    assert_eq!(
9740        unsafe { &(*(::std::ptr::null::<n_primes_struct>())).sieve_b as *const _ as usize },
9741        32usize,
9742        concat!(
9743            "Offset of field: ",
9744            stringify!(n_primes_struct),
9745            "::",
9746            stringify!(sieve_b)
9747        )
9748    );
9749    assert_eq!(
9750        unsafe { &(*(::std::ptr::null::<n_primes_struct>())).sieve_i as *const _ as usize },
9751        40usize,
9752        concat!(
9753            "Offset of field: ",
9754            stringify!(n_primes_struct),
9755            "::",
9756            stringify!(sieve_i)
9757        )
9758    );
9759    assert_eq!(
9760        unsafe { &(*(::std::ptr::null::<n_primes_struct>())).sieve_num as *const _ as usize },
9761        48usize,
9762        concat!(
9763            "Offset of field: ",
9764            stringify!(n_primes_struct),
9765            "::",
9766            stringify!(sieve_num)
9767        )
9768    );
9769    assert_eq!(
9770        unsafe { &(*(::std::ptr::null::<n_primes_struct>())).sieve as *const _ as usize },
9771        56usize,
9772        concat!(
9773            "Offset of field: ",
9774            stringify!(n_primes_struct),
9775            "::",
9776            stringify!(sieve)
9777        )
9778    );
9779}
9780pub type n_primes_t = [n_primes_struct; 1usize];
9781extern "C" {
9782    pub fn n_primes_init(iter: *mut n_primes_struct);
9783}
9784extern "C" {
9785    pub fn n_primes_clear(iter: *mut n_primes_struct);
9786}
9787extern "C" {
9788    pub fn n_primes_extend_small(iter: *mut n_primes_struct, bound: mp_limb_t);
9789}
9790extern "C" {
9791    pub fn n_primes_sieve_range(iter: *mut n_primes_struct, a: mp_limb_t, b: mp_limb_t);
9792}
9793extern "C" {
9794    pub fn n_primes_jump_after(iter: *mut n_primes_struct, n: mp_limb_t);
9795}
9796extern "C" {
9797    pub static mut flint_primes_small: [::std::os::raw::c_uint; 0usize];
9798}
9799extern "C" {
9800    pub static mut _flint_primes: [*mut mp_limb_t; 64usize];
9801}
9802extern "C" {
9803    pub static mut _flint_prime_inverses: [*mut f64; 64usize];
9804}
9805extern "C" {
9806    pub static mut _flint_primes_used: ::std::os::raw::c_int;
9807}
9808extern "C" {
9809    pub fn n_compute_primes(num_primes: mp_limb_t);
9810}
9811extern "C" {
9812    pub fn n_cleanup_primes();
9813}
9814extern "C" {
9815    pub fn n_primes_arr_readonly(n: mp_limb_t) -> *const mp_limb_t;
9816}
9817extern "C" {
9818    pub fn n_prime_inverses_arr_readonly(n: mp_limb_t) -> *const f64;
9819}
9820extern "C" {
9821    pub fn n_randlimb(state: *mut flint_rand_s) -> mp_limb_t;
9822}
9823extern "C" {
9824    pub fn n_randint(state: *mut flint_rand_s, limit: mp_limb_t) -> mp_limb_t;
9825}
9826extern "C" {
9827    pub fn n_urandint(state: *mut flint_rand_s, limit: mp_limb_t) -> mp_limb_t;
9828}
9829extern "C" {
9830    pub fn n_randbits(state: *mut flint_rand_s, bits: ::std::os::raw::c_uint) -> mp_limb_t;
9831}
9832extern "C" {
9833    pub fn n_randtest_bits(state: *mut flint_rand_s, bits: ::std::os::raw::c_int) -> mp_limb_t;
9834}
9835extern "C" {
9836    pub fn n_randtest(state: *mut flint_rand_s) -> mp_limb_t;
9837}
9838extern "C" {
9839    pub fn n_randtest_not_zero(state: *mut flint_rand_s) -> mp_limb_t;
9840}
9841extern "C" {
9842    pub fn n_randprime(
9843        state: *mut flint_rand_s,
9844        bits: mp_limb_t,
9845        proved: ::std::os::raw::c_int,
9846    ) -> mp_limb_t;
9847}
9848extern "C" {
9849    pub fn n_randtest_prime(state: *mut flint_rand_s, proved: ::std::os::raw::c_int) -> mp_limb_t;
9850}
9851extern "C" {
9852    pub fn n_pow(n: mp_limb_t, exp: mp_limb_t) -> mp_limb_t;
9853}
9854extern "C" {
9855    pub fn n_flog(n: mp_limb_t, b: mp_limb_t) -> mp_limb_t;
9856}
9857extern "C" {
9858    pub fn n_clog(n: mp_limb_t, b: mp_limb_t) -> mp_limb_t;
9859}
9860extern "C" {
9861    pub fn n_mod_precomp(a: mp_limb_t, n: mp_limb_t, ninv: f64) -> mp_limb_t;
9862}
9863extern "C" {
9864    pub fn n_mod2_precomp(a: mp_limb_t, n: mp_limb_t, ninv: f64) -> mp_limb_t;
9865}
9866extern "C" {
9867    pub fn n_divrem2_precomp(q: *mut mp_limb_t, a: mp_limb_t, n: mp_limb_t, npre: f64)
9868        -> mp_limb_t;
9869}
9870extern "C" {
9871    pub fn n_divrem2_preinv(
9872        q: *mut mp_limb_t,
9873        a: mp_limb_t,
9874        n: mp_limb_t,
9875        ninv: mp_limb_t,
9876    ) -> mp_limb_t;
9877}
9878extern "C" {
9879    pub fn n_div2_preinv(a: mp_limb_t, n: mp_limb_t, ninv: mp_limb_t) -> mp_limb_t;
9880}
9881extern "C" {
9882    pub fn n_mod2_preinv(a: mp_limb_t, n: mp_limb_t, ninv: mp_limb_t) -> mp_limb_t;
9883}
9884extern "C" {
9885    pub fn n_ll_mod_preinv(
9886        a_hi: mp_limb_t,
9887        a_lo: mp_limb_t,
9888        n: mp_limb_t,
9889        ninv: mp_limb_t,
9890    ) -> mp_limb_t;
9891}
9892extern "C" {
9893    pub fn n_lll_mod_preinv(
9894        a_hi: mp_limb_t,
9895        a_mi: mp_limb_t,
9896        a_lo: mp_limb_t,
9897        n: mp_limb_t,
9898        ninv: mp_limb_t,
9899    ) -> mp_limb_t;
9900}
9901extern "C" {
9902    pub fn n_mulmod_precomp(a: mp_limb_t, b: mp_limb_t, n: mp_limb_t, ninv: f64) -> mp_limb_t;
9903}
9904extern "C" {
9905    pub fn n_mulmod_preinv(
9906        a: mp_limb_t,
9907        b: mp_limb_t,
9908        n: mp_limb_t,
9909        ninv: mp_limb_t,
9910        norm: mp_limb_t,
9911    ) -> mp_limb_t;
9912}
9913extern "C" {
9914    pub fn n_powmod_ui_precomp(a: mp_limb_t, exp: mp_limb_t, n: mp_limb_t, npre: f64) -> mp_limb_t;
9915}
9916extern "C" {
9917    pub fn n_powmod_precomp(
9918        a: mp_limb_t,
9919        exp: mp_limb_signed_t,
9920        n: mp_limb_t,
9921        npre: f64,
9922    ) -> mp_limb_t;
9923}
9924extern "C" {
9925    pub fn n_powmod2_preinv(
9926        a: mp_limb_t,
9927        exp: mp_limb_signed_t,
9928        n: mp_limb_t,
9929        ninv: mp_limb_t,
9930    ) -> mp_limb_t;
9931}
9932extern "C" {
9933    pub fn n_powmod2_ui_preinv(
9934        a: mp_limb_t,
9935        exp: mp_limb_t,
9936        n: mp_limb_t,
9937        ninv: mp_limb_t,
9938    ) -> mp_limb_t;
9939}
9940extern "C" {
9941    pub fn n_powmod_ui_preinv(
9942        a: mp_limb_t,
9943        exp: mp_limb_t,
9944        n: mp_limb_t,
9945        ninv: mp_limb_t,
9946        norm: mp_limb_t,
9947    ) -> mp_limb_t;
9948}
9949extern "C" {
9950    pub fn n_sqrtmod(a: mp_limb_t, p: mp_limb_t) -> mp_limb_t;
9951}
9952extern "C" {
9953    pub fn n_sqrtmod_2pow(
9954        sqrt: *mut *mut mp_limb_t,
9955        a: mp_limb_t,
9956        exp: mp_limb_signed_t,
9957    ) -> mp_limb_signed_t;
9958}
9959extern "C" {
9960    pub fn n_sqrtmod_primepow(
9961        sqrt: *mut *mut mp_limb_t,
9962        a: mp_limb_t,
9963        p: mp_limb_t,
9964        exp: mp_limb_signed_t,
9965    ) -> mp_limb_signed_t;
9966}
9967extern "C" {
9968    pub fn n_sqrtmodn(
9969        sqrt: *mut *mut mp_limb_t,
9970        a: mp_limb_t,
9971        fac: *mut n_factor_t,
9972    ) -> mp_limb_signed_t;
9973}
9974extern "C" {
9975    pub fn n_gcd(x: mp_limb_t, y: mp_limb_t) -> mp_limb_t;
9976}
9977extern "C" {
9978    pub fn n_xgcd(a: *mut mp_limb_t, b: *mut mp_limb_t, x: mp_limb_t, y: mp_limb_t) -> mp_limb_t;
9979}
9980extern "C" {
9981    pub fn n_gcdinv(a: *mut mp_limb_t, x: mp_limb_t, y: mp_limb_t) -> mp_limb_t;
9982}
9983extern "C" {
9984    pub fn n_CRT(r1: mp_limb_t, m1: mp_limb_t, r2: mp_limb_t, m2: mp_limb_t) -> mp_limb_t;
9985}
9986extern "C" {
9987    pub fn n_revbin(in_: mp_limb_t, bits: mp_limb_t) -> mp_limb_t;
9988}
9989extern "C" {
9990    pub fn n_jacobi(x: mp_limb_signed_t, y: mp_limb_t) -> ::std::os::raw::c_int;
9991}
9992extern "C" {
9993    pub fn n_jacobi_unsigned(x: mp_limb_t, y: mp_limb_t) -> ::std::os::raw::c_int;
9994}
9995extern "C" {
9996    pub fn n_sqrt(a: mp_limb_t) -> mp_limb_t;
9997}
9998extern "C" {
9999    pub fn n_sqrtrem(r: *mut mp_limb_t, a: mp_limb_t) -> mp_limb_t;
10000}
10001extern "C" {
10002    pub fn n_is_square(x: mp_limb_t) -> ::std::os::raw::c_int;
10003}
10004extern "C" {
10005    pub fn n_cbrt_estimate(a: f64) -> f64;
10006}
10007extern "C" {
10008    pub fn n_cbrt(a: mp_limb_t) -> mp_limb_t;
10009}
10010extern "C" {
10011    pub fn n_cbrt_binary_search(x: mp_limb_t) -> mp_limb_t;
10012}
10013extern "C" {
10014    pub fn n_cbrt_newton_iteration(n: mp_limb_t) -> mp_limb_t;
10015}
10016extern "C" {
10017    pub fn n_cbrt_chebyshev_approx(n: mp_limb_t) -> mp_limb_t;
10018}
10019extern "C" {
10020    pub fn n_cbrtrem(remainder: *mut mp_limb_t, n: mp_limb_t) -> mp_limb_t;
10021}
10022extern "C" {
10023    pub fn n_is_perfect_power235(n: mp_limb_t) -> ::std::os::raw::c_int;
10024}
10025extern "C" {
10026    pub fn n_is_perfect_power(root: *mut mp_limb_t, n: mp_limb_t) -> ::std::os::raw::c_int;
10027}
10028extern "C" {
10029    pub fn n_is_oddprime_small(n: mp_limb_t) -> ::std::os::raw::c_int;
10030}
10031extern "C" {
10032    pub fn n_is_oddprime_binary(n: mp_limb_t) -> ::std::os::raw::c_int;
10033}
10034extern "C" {
10035    pub fn n_is_probabprime_fermat(n: mp_limb_t, i: mp_limb_t) -> ::std::os::raw::c_int;
10036}
10037extern "C" {
10038    pub fn n_is_probabprime_fibonacci(n: mp_limb_t) -> ::std::os::raw::c_int;
10039}
10040extern "C" {
10041    pub fn n_is_probabprime_lucas(n: mp_limb_t) -> ::std::os::raw::c_int;
10042}
10043extern "C" {
10044    pub fn n_is_probabprime_BPSW(n: mp_limb_t) -> ::std::os::raw::c_int;
10045}
10046extern "C" {
10047    pub fn n_is_strong_probabprime_precomp(
10048        n: mp_limb_t,
10049        npre: f64,
10050        a: mp_limb_t,
10051        d: mp_limb_t,
10052    ) -> ::std::os::raw::c_int;
10053}
10054extern "C" {
10055    pub fn n_is_strong_probabprime2_preinv(
10056        n: mp_limb_t,
10057        ninv: mp_limb_t,
10058        a: mp_limb_t,
10059        d: mp_limb_t,
10060    ) -> ::std::os::raw::c_int;
10061}
10062extern "C" {
10063    pub fn n_is_probabprime(n: mp_limb_t) -> ::std::os::raw::c_int;
10064}
10065extern "C" {
10066    pub fn n_is_prime_pseudosquare(n: mp_limb_t) -> ::std::os::raw::c_int;
10067}
10068extern "C" {
10069    pub fn n_is_prime_pocklington(n: mp_limb_t, iterations: mp_limb_t) -> ::std::os::raw::c_int;
10070}
10071extern "C" {
10072    pub fn n_is_prime(n: mp_limb_t) -> ::std::os::raw::c_int;
10073}
10074extern "C" {
10075    pub fn n_nth_prime(n: mp_limb_t) -> mp_limb_t;
10076}
10077extern "C" {
10078    pub fn n_nth_prime_bounds(lo: *mut mp_limb_t, hi: *mut mp_limb_t, n: mp_limb_t);
10079}
10080extern "C" {
10081    pub fn n_prime_pi(n: mp_limb_t) -> mp_limb_t;
10082}
10083extern "C" {
10084    pub fn n_prime_pi_bounds(lo: *mut mp_limb_t, hi: *mut mp_limb_t, n: mp_limb_t);
10085}
10086extern "C" {
10087    pub fn n_remove(n: *mut mp_limb_t, p: mp_limb_t) -> ::std::os::raw::c_int;
10088}
10089extern "C" {
10090    pub fn n_remove2_precomp(n: *mut mp_limb_t, p: mp_limb_t, ppre: f64) -> ::std::os::raw::c_int;
10091}
10092extern "C" {
10093    pub fn n_factor_insert(factors: *mut n_factor_t, p: mp_limb_t, exp: mp_limb_t);
10094}
10095extern "C" {
10096    pub fn n_factor_trial_range(
10097        factors: *mut n_factor_t,
10098        n: mp_limb_t,
10099        start: mp_limb_t,
10100        num_primes: mp_limb_t,
10101    ) -> mp_limb_t;
10102}
10103extern "C" {
10104    pub fn n_factor_trial_partial(
10105        factors: *mut n_factor_t,
10106        n: mp_limb_t,
10107        prod: *mut mp_limb_t,
10108        num_primes: mp_limb_t,
10109        limit: mp_limb_t,
10110    ) -> mp_limb_t;
10111}
10112extern "C" {
10113    pub fn n_factor_trial(
10114        factors: *mut n_factor_t,
10115        n: mp_limb_t,
10116        num_primes: mp_limb_t,
10117    ) -> mp_limb_t;
10118}
10119extern "C" {
10120    pub fn n_factor_partial(
10121        factors: *mut n_factor_t,
10122        n: mp_limb_t,
10123        limit: mp_limb_t,
10124        proved: ::std::os::raw::c_int,
10125    ) -> mp_limb_t;
10126}
10127extern "C" {
10128    pub fn n_factor_power235(exp: *mut mp_limb_t, n: mp_limb_t) -> mp_limb_t;
10129}
10130extern "C" {
10131    pub fn n_factor_one_line(n: mp_limb_t, iters: mp_limb_t) -> mp_limb_t;
10132}
10133extern "C" {
10134    pub fn n_factor_lehman(n: mp_limb_t) -> mp_limb_t;
10135}
10136extern "C" {
10137    pub fn n_factor_SQUFOF(n: mp_limb_t, iters: mp_limb_t) -> mp_limb_t;
10138}
10139extern "C" {
10140    pub fn n_factor(factors: *mut n_factor_t, n: mp_limb_t, proved: ::std::os::raw::c_int);
10141}
10142extern "C" {
10143    pub fn n_factor_pp1(n: mp_limb_t, B1: mp_limb_t, c: mp_limb_t) -> mp_limb_t;
10144}
10145extern "C" {
10146    pub fn n_factor_pp1_wrapper(n: mp_limb_t) -> mp_limb_t;
10147}
10148extern "C" {
10149    pub fn n_factor_pp1_table_insert(
10150        bits: mp_limb_signed_t,
10151        B1: mp_limb_signed_t,
10152        count: mp_limb_signed_t,
10153    );
10154}
10155extern "C" {
10156    pub fn n_factor_pollard_brent_single(
10157        factor: *mut mp_limb_t,
10158        n: mp_limb_t,
10159        ninv: mp_limb_t,
10160        ai: mp_limb_t,
10161        xi: mp_limb_t,
10162        normbits: mp_limb_t,
10163        max_iters: mp_limb_t,
10164    ) -> ::std::os::raw::c_int;
10165}
10166extern "C" {
10167    pub fn n_factor_pollard_brent(
10168        factor: *mut mp_limb_t,
10169        state: *mut flint_rand_s,
10170        n_in: mp_limb_t,
10171        max_tries: mp_limb_t,
10172        max_iters: mp_limb_t,
10173    ) -> ::std::os::raw::c_int;
10174}
10175extern "C" {
10176    pub fn n_is_squarefree(n: mp_limb_t) -> ::std::os::raw::c_int;
10177}
10178extern "C" {
10179    pub fn n_moebius_mu(n: mp_limb_t) -> ::std::os::raw::c_int;
10180}
10181extern "C" {
10182    pub fn n_moebius_mu_vec(mu: *mut ::std::os::raw::c_int, len: mp_limb_t);
10183}
10184extern "C" {
10185    pub fn n_euler_phi(n: mp_limb_t) -> mp_limb_t;
10186}
10187extern "C" {
10188    pub fn n_sizeinbase(n: mp_limb_t, base: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
10189}
10190extern "C" {
10191    pub fn n_nextprime(n: mp_limb_t, proved: ::std::os::raw::c_int) -> mp_limb_t;
10192}
10193extern "C" {
10194    pub fn n_factorial_mod2_preinv(n: mp_limb_t, p: mp_limb_t, pinv: mp_limb_t) -> mp_limb_t;
10195}
10196extern "C" {
10197    pub fn n_factorial_fast_mod2_preinv(n: mp_limb_t, p: mp_limb_t, pinv: mp_limb_t) -> mp_limb_t;
10198}
10199extern "C" {
10200    pub fn n_primitive_root_prime_prefactor(p: mp_limb_t, factors: *mut n_factor_t) -> mp_limb_t;
10201}
10202extern "C" {
10203    pub fn n_primitive_root_prime(p: mp_limb_t) -> mp_limb_t;
10204}
10205extern "C" {
10206    pub fn n_discrete_log_bsgs(b: mp_limb_t, a: mp_limb_t, n: mp_limb_t) -> mp_limb_t;
10207}
10208extern "C" {
10209    pub fn n_root_estimate(a: f64, n: ::std::os::raw::c_int) -> mp_limb_t;
10210}
10211extern "C" {
10212    pub fn n_rootrem(remainder: *mut mp_limb_t, n: mp_limb_t, root: mp_limb_t) -> mp_limb_t;
10213}
10214extern "C" {
10215    pub fn n_root(n: mp_limb_t, root: mp_limb_t) -> mp_limb_t;
10216}
10217#[doc = " ECM functions"]
10218#[repr(C)]
10219#[derive(Debug, Copy, Clone)]
10220pub struct n_ecm_s {
10221    pub x: mp_limb_t,
10222    pub z: mp_limb_t,
10223    pub a24: mp_limb_t,
10224    pub ninv: mp_limb_t,
10225    pub normbits: mp_limb_t,
10226    pub one: mp_limb_t,
10227    pub GCD_table: *mut ::std::os::raw::c_uchar,
10228    pub prime_table: *mut *mut ::std::os::raw::c_uchar,
10229}
10230#[test]
10231fn bindgen_test_layout_n_ecm_s() {
10232    assert_eq!(
10233        ::std::mem::size_of::<n_ecm_s>(),
10234        64usize,
10235        concat!("Size of: ", stringify!(n_ecm_s))
10236    );
10237    assert_eq!(
10238        ::std::mem::align_of::<n_ecm_s>(),
10239        8usize,
10240        concat!("Alignment of ", stringify!(n_ecm_s))
10241    );
10242    assert_eq!(
10243        unsafe { &(*(::std::ptr::null::<n_ecm_s>())).x as *const _ as usize },
10244        0usize,
10245        concat!(
10246            "Offset of field: ",
10247            stringify!(n_ecm_s),
10248            "::",
10249            stringify!(x)
10250        )
10251    );
10252    assert_eq!(
10253        unsafe { &(*(::std::ptr::null::<n_ecm_s>())).z as *const _ as usize },
10254        8usize,
10255        concat!(
10256            "Offset of field: ",
10257            stringify!(n_ecm_s),
10258            "::",
10259            stringify!(z)
10260        )
10261    );
10262    assert_eq!(
10263        unsafe { &(*(::std::ptr::null::<n_ecm_s>())).a24 as *const _ as usize },
10264        16usize,
10265        concat!(
10266            "Offset of field: ",
10267            stringify!(n_ecm_s),
10268            "::",
10269            stringify!(a24)
10270        )
10271    );
10272    assert_eq!(
10273        unsafe { &(*(::std::ptr::null::<n_ecm_s>())).ninv as *const _ as usize },
10274        24usize,
10275        concat!(
10276            "Offset of field: ",
10277            stringify!(n_ecm_s),
10278            "::",
10279            stringify!(ninv)
10280        )
10281    );
10282    assert_eq!(
10283        unsafe { &(*(::std::ptr::null::<n_ecm_s>())).normbits as *const _ as usize },
10284        32usize,
10285        concat!(
10286            "Offset of field: ",
10287            stringify!(n_ecm_s),
10288            "::",
10289            stringify!(normbits)
10290        )
10291    );
10292    assert_eq!(
10293        unsafe { &(*(::std::ptr::null::<n_ecm_s>())).one as *const _ as usize },
10294        40usize,
10295        concat!(
10296            "Offset of field: ",
10297            stringify!(n_ecm_s),
10298            "::",
10299            stringify!(one)
10300        )
10301    );
10302    assert_eq!(
10303        unsafe { &(*(::std::ptr::null::<n_ecm_s>())).GCD_table as *const _ as usize },
10304        48usize,
10305        concat!(
10306            "Offset of field: ",
10307            stringify!(n_ecm_s),
10308            "::",
10309            stringify!(GCD_table)
10310        )
10311    );
10312    assert_eq!(
10313        unsafe { &(*(::std::ptr::null::<n_ecm_s>())).prime_table as *const _ as usize },
10314        56usize,
10315        concat!(
10316            "Offset of field: ",
10317            stringify!(n_ecm_s),
10318            "::",
10319            stringify!(prime_table)
10320        )
10321    );
10322}
10323pub type n_ecm_t = [n_ecm_s; 1usize];
10324extern "C" {
10325    pub fn n_factor_ecm_double(
10326        x: *mut mp_limb_t,
10327        z: *mut mp_limb_t,
10328        x0: mp_limb_t,
10329        z0: mp_limb_t,
10330        n: mp_limb_t,
10331        n_ecm_inf: *mut n_ecm_s,
10332    );
10333}
10334extern "C" {
10335    pub fn n_factor_ecm_add(
10336        x: *mut mp_limb_t,
10337        z: *mut mp_limb_t,
10338        x1: mp_limb_t,
10339        z1: mp_limb_t,
10340        x2: mp_limb_t,
10341        z2: mp_limb_t,
10342        x0: mp_limb_t,
10343        z0: mp_limb_t,
10344        n: mp_limb_t,
10345        n_ecm_inf: *mut n_ecm_s,
10346    );
10347}
10348extern "C" {
10349    pub fn n_factor_ecm_mul_montgomery_ladder(
10350        x: *mut mp_limb_t,
10351        z: *mut mp_limb_t,
10352        x0: mp_limb_t,
10353        z0: mp_limb_t,
10354        k: mp_limb_t,
10355        n: mp_limb_t,
10356        n_ecm_inf: *mut n_ecm_s,
10357    );
10358}
10359extern "C" {
10360    pub fn n_factor_ecm_select_curve(
10361        f: *mut mp_limb_t,
10362        sig: mp_limb_t,
10363        n: mp_limb_t,
10364        n_ecm_inf: *mut n_ecm_s,
10365    ) -> ::std::os::raw::c_int;
10366}
10367extern "C" {
10368    pub fn n_factor_ecm_stage_I(
10369        f: *mut mp_limb_t,
10370        prime_array: *const mp_limb_t,
10371        num: mp_limb_t,
10372        B1: mp_limb_t,
10373        n: mp_limb_t,
10374        n_ecm_inf: *mut n_ecm_s,
10375    ) -> ::std::os::raw::c_int;
10376}
10377extern "C" {
10378    pub fn n_factor_ecm_stage_II(
10379        f: *mut mp_limb_t,
10380        B1: mp_limb_t,
10381        B2: mp_limb_t,
10382        P: mp_limb_t,
10383        n: mp_limb_t,
10384        n_ecm_inf: *mut n_ecm_s,
10385    ) -> ::std::os::raw::c_int;
10386}
10387extern "C" {
10388    pub fn n_factor_ecm(
10389        f: *mut mp_limb_t,
10390        curves: mp_limb_t,
10391        B1: mp_limb_t,
10392        B2: mp_limb_t,
10393        state: *mut flint_rand_s,
10394        n: mp_limb_t,
10395    ) -> ::std::os::raw::c_int;
10396}
10397extern "C" {
10398    pub fn n_mulmod_precomp_shoup(w: mp_limb_t, p: mp_limb_t) -> mp_limb_t;
10399}
10400#[repr(C)]
10401#[derive(Debug, Copy, Clone)]
10402pub struct nmod_t {
10403    pub n: mp_limb_t,
10404    pub ninv: mp_limb_t,
10405    pub norm: mp_limb_t,
10406}
10407#[test]
10408fn bindgen_test_layout_nmod_t() {
10409    assert_eq!(
10410        ::std::mem::size_of::<nmod_t>(),
10411        24usize,
10412        concat!("Size of: ", stringify!(nmod_t))
10413    );
10414    assert_eq!(
10415        ::std::mem::align_of::<nmod_t>(),
10416        8usize,
10417        concat!("Alignment of ", stringify!(nmod_t))
10418    );
10419    assert_eq!(
10420        unsafe { &(*(::std::ptr::null::<nmod_t>())).n as *const _ as usize },
10421        0usize,
10422        concat!("Offset of field: ", stringify!(nmod_t), "::", stringify!(n))
10423    );
10424    assert_eq!(
10425        unsafe { &(*(::std::ptr::null::<nmod_t>())).ninv as *const _ as usize },
10426        8usize,
10427        concat!(
10428            "Offset of field: ",
10429            stringify!(nmod_t),
10430            "::",
10431            stringify!(ninv)
10432        )
10433    );
10434    assert_eq!(
10435        unsafe { &(*(::std::ptr::null::<nmod_t>())).norm as *const _ as usize },
10436        16usize,
10437        concat!(
10438            "Offset of field: ",
10439            stringify!(nmod_t),
10440            "::",
10441            stringify!(norm)
10442        )
10443    );
10444}
10445extern "C" {
10446    pub fn _nmod_vec_randtest(
10447        vec: mp_ptr,
10448        state: *mut flint_rand_s,
10449        len: mp_limb_signed_t,
10450        mod_: nmod_t,
10451    );
10452}
10453extern "C" {
10454    pub fn _nmod_vec_max_bits(vec: mp_srcptr, len: mp_limb_signed_t) -> mp_limb_t;
10455}
10456extern "C" {
10457    pub fn _nmod_vec_reduce(res: mp_ptr, vec: mp_srcptr, len: mp_limb_signed_t, mod_: nmod_t);
10458}
10459extern "C" {
10460    pub fn _nmod_vec_add(
10461        res: mp_ptr,
10462        vec1: mp_srcptr,
10463        vec2: mp_srcptr,
10464        len: mp_limb_signed_t,
10465        mod_: nmod_t,
10466    );
10467}
10468extern "C" {
10469    pub fn _nmod_vec_sub(
10470        res: mp_ptr,
10471        vec1: mp_srcptr,
10472        vec2: mp_srcptr,
10473        len: mp_limb_signed_t,
10474        mod_: nmod_t,
10475    );
10476}
10477extern "C" {
10478    pub fn _nmod_vec_neg(res: mp_ptr, vec: mp_srcptr, len: mp_limb_signed_t, mod_: nmod_t);
10479}
10480extern "C" {
10481    pub fn _nmod_vec_scalar_mul_nmod(
10482        res: mp_ptr,
10483        vec: mp_srcptr,
10484        len: mp_limb_signed_t,
10485        c: mp_limb_t,
10486        mod_: nmod_t,
10487    );
10488}
10489extern "C" {
10490    pub fn _nmod_vec_scalar_mul_nmod_shoup(
10491        res: mp_ptr,
10492        vec: mp_srcptr,
10493        len: mp_limb_signed_t,
10494        c: mp_limb_t,
10495        mod_: nmod_t,
10496    );
10497}
10498extern "C" {
10499    pub fn _nmod_vec_scalar_addmul_nmod(
10500        res: mp_ptr,
10501        vec: mp_srcptr,
10502        len: mp_limb_signed_t,
10503        c: mp_limb_t,
10504        mod_: nmod_t,
10505    );
10506}
10507extern "C" {
10508    pub fn _nmod_vec_dot_bound_limbs(len: mp_limb_signed_t, mod_: nmod_t) -> ::std::os::raw::c_int;
10509}
10510extern "C" {
10511    pub fn _nmod_vec_dot(
10512        vec1: mp_srcptr,
10513        vec2: mp_srcptr,
10514        len: mp_limb_signed_t,
10515        mod_: nmod_t,
10516        nlimbs: ::std::os::raw::c_int,
10517    ) -> mp_limb_t;
10518}
10519extern "C" {
10520    pub fn _nmod_vec_dot_ptr(
10521        vec1: mp_srcptr,
10522        vec2: *const mp_ptr,
10523        offset: mp_limb_signed_t,
10524        len: mp_limb_signed_t,
10525        mod_: nmod_t,
10526        nlimbs: ::std::os::raw::c_int,
10527    ) -> mp_limb_t;
10528}
10529#[repr(C)]
10530#[derive(Debug, Copy, Clone)]
10531pub struct nmod_discrete_log_pohlig_hellman_table_entry_struct {
10532    pub gammapow: mp_limb_t,
10533    pub cm: mp_limb_t,
10534}
10535#[test]
10536fn bindgen_test_layout_nmod_discrete_log_pohlig_hellman_table_entry_struct() {
10537    assert_eq!(
10538        ::std::mem::size_of::<nmod_discrete_log_pohlig_hellman_table_entry_struct>(),
10539        16usize,
10540        concat!(
10541            "Size of: ",
10542            stringify!(nmod_discrete_log_pohlig_hellman_table_entry_struct)
10543        )
10544    );
10545    assert_eq!(
10546        ::std::mem::align_of::<nmod_discrete_log_pohlig_hellman_table_entry_struct>(),
10547        8usize,
10548        concat!(
10549            "Alignment of ",
10550            stringify!(nmod_discrete_log_pohlig_hellman_table_entry_struct)
10551        )
10552    );
10553    assert_eq!(
10554        unsafe {
10555            &(*(::std::ptr::null::<nmod_discrete_log_pohlig_hellman_table_entry_struct>())).gammapow
10556                as *const _ as usize
10557        },
10558        0usize,
10559        concat!(
10560            "Offset of field: ",
10561            stringify!(nmod_discrete_log_pohlig_hellman_table_entry_struct),
10562            "::",
10563            stringify!(gammapow)
10564        )
10565    );
10566    assert_eq!(
10567        unsafe {
10568            &(*(::std::ptr::null::<nmod_discrete_log_pohlig_hellman_table_entry_struct>())).cm
10569                as *const _ as usize
10570        },
10571        8usize,
10572        concat!(
10573            "Offset of field: ",
10574            stringify!(nmod_discrete_log_pohlig_hellman_table_entry_struct),
10575            "::",
10576            stringify!(cm)
10577        )
10578    );
10579}
10580#[repr(C)]
10581#[derive(Debug, Copy, Clone)]
10582pub struct nmod_discrete_log_pohlig_hellman_entry_struct {
10583    pub exp: mp_limb_signed_t,
10584    pub prime: mp_limb_t,
10585    pub gamma: mp_limb_t,
10586    pub gammainv: mp_limb_t,
10587    pub startingbeta: mp_limb_t,
10588    pub co: mp_limb_t,
10589    pub startinge: mp_limb_t,
10590    pub idem: mp_limb_t,
10591    pub cbound: mp_limb_t,
10592    pub dbound: mp_limb_t,
10593    pub table: *mut nmod_discrete_log_pohlig_hellman_table_entry_struct,
10594}
10595#[test]
10596fn bindgen_test_layout_nmod_discrete_log_pohlig_hellman_entry_struct() {
10597    assert_eq!(
10598        ::std::mem::size_of::<nmod_discrete_log_pohlig_hellman_entry_struct>(),
10599        88usize,
10600        concat!(
10601            "Size of: ",
10602            stringify!(nmod_discrete_log_pohlig_hellman_entry_struct)
10603        )
10604    );
10605    assert_eq!(
10606        ::std::mem::align_of::<nmod_discrete_log_pohlig_hellman_entry_struct>(),
10607        8usize,
10608        concat!(
10609            "Alignment of ",
10610            stringify!(nmod_discrete_log_pohlig_hellman_entry_struct)
10611        )
10612    );
10613    assert_eq!(
10614        unsafe {
10615            &(*(::std::ptr::null::<nmod_discrete_log_pohlig_hellman_entry_struct>())).exp
10616                as *const _ as usize
10617        },
10618        0usize,
10619        concat!(
10620            "Offset of field: ",
10621            stringify!(nmod_discrete_log_pohlig_hellman_entry_struct),
10622            "::",
10623            stringify!(exp)
10624        )
10625    );
10626    assert_eq!(
10627        unsafe {
10628            &(*(::std::ptr::null::<nmod_discrete_log_pohlig_hellman_entry_struct>())).prime
10629                as *const _ as usize
10630        },
10631        8usize,
10632        concat!(
10633            "Offset of field: ",
10634            stringify!(nmod_discrete_log_pohlig_hellman_entry_struct),
10635            "::",
10636            stringify!(prime)
10637        )
10638    );
10639    assert_eq!(
10640        unsafe {
10641            &(*(::std::ptr::null::<nmod_discrete_log_pohlig_hellman_entry_struct>())).gamma
10642                as *const _ as usize
10643        },
10644        16usize,
10645        concat!(
10646            "Offset of field: ",
10647            stringify!(nmod_discrete_log_pohlig_hellman_entry_struct),
10648            "::",
10649            stringify!(gamma)
10650        )
10651    );
10652    assert_eq!(
10653        unsafe {
10654            &(*(::std::ptr::null::<nmod_discrete_log_pohlig_hellman_entry_struct>())).gammainv
10655                as *const _ as usize
10656        },
10657        24usize,
10658        concat!(
10659            "Offset of field: ",
10660            stringify!(nmod_discrete_log_pohlig_hellman_entry_struct),
10661            "::",
10662            stringify!(gammainv)
10663        )
10664    );
10665    assert_eq!(
10666        unsafe {
10667            &(*(::std::ptr::null::<nmod_discrete_log_pohlig_hellman_entry_struct>())).startingbeta
10668                as *const _ as usize
10669        },
10670        32usize,
10671        concat!(
10672            "Offset of field: ",
10673            stringify!(nmod_discrete_log_pohlig_hellman_entry_struct),
10674            "::",
10675            stringify!(startingbeta)
10676        )
10677    );
10678    assert_eq!(
10679        unsafe {
10680            &(*(::std::ptr::null::<nmod_discrete_log_pohlig_hellman_entry_struct>())).co as *const _
10681                as usize
10682        },
10683        40usize,
10684        concat!(
10685            "Offset of field: ",
10686            stringify!(nmod_discrete_log_pohlig_hellman_entry_struct),
10687            "::",
10688            stringify!(co)
10689        )
10690    );
10691    assert_eq!(
10692        unsafe {
10693            &(*(::std::ptr::null::<nmod_discrete_log_pohlig_hellman_entry_struct>())).startinge
10694                as *const _ as usize
10695        },
10696        48usize,
10697        concat!(
10698            "Offset of field: ",
10699            stringify!(nmod_discrete_log_pohlig_hellman_entry_struct),
10700            "::",
10701            stringify!(startinge)
10702        )
10703    );
10704    assert_eq!(
10705        unsafe {
10706            &(*(::std::ptr::null::<nmod_discrete_log_pohlig_hellman_entry_struct>())).idem
10707                as *const _ as usize
10708        },
10709        56usize,
10710        concat!(
10711            "Offset of field: ",
10712            stringify!(nmod_discrete_log_pohlig_hellman_entry_struct),
10713            "::",
10714            stringify!(idem)
10715        )
10716    );
10717    assert_eq!(
10718        unsafe {
10719            &(*(::std::ptr::null::<nmod_discrete_log_pohlig_hellman_entry_struct>())).cbound
10720                as *const _ as usize
10721        },
10722        64usize,
10723        concat!(
10724            "Offset of field: ",
10725            stringify!(nmod_discrete_log_pohlig_hellman_entry_struct),
10726            "::",
10727            stringify!(cbound)
10728        )
10729    );
10730    assert_eq!(
10731        unsafe {
10732            &(*(::std::ptr::null::<nmod_discrete_log_pohlig_hellman_entry_struct>())).dbound
10733                as *const _ as usize
10734        },
10735        72usize,
10736        concat!(
10737            "Offset of field: ",
10738            stringify!(nmod_discrete_log_pohlig_hellman_entry_struct),
10739            "::",
10740            stringify!(dbound)
10741        )
10742    );
10743    assert_eq!(
10744        unsafe {
10745            &(*(::std::ptr::null::<nmod_discrete_log_pohlig_hellman_entry_struct>())).table
10746                as *const _ as usize
10747        },
10748        80usize,
10749        concat!(
10750            "Offset of field: ",
10751            stringify!(nmod_discrete_log_pohlig_hellman_entry_struct),
10752            "::",
10753            stringify!(table)
10754        )
10755    );
10756}
10757#[repr(C)]
10758#[derive(Debug, Copy, Clone)]
10759pub struct nmod_discrete_log_pohlig_hellman_struct {
10760    pub mod_: nmod_t,
10761    pub alpha: mp_limb_t,
10762    pub alphainv: mp_limb_t,
10763    pub num_factors: mp_limb_signed_t,
10764    pub entries: *mut nmod_discrete_log_pohlig_hellman_entry_struct,
10765}
10766#[test]
10767fn bindgen_test_layout_nmod_discrete_log_pohlig_hellman_struct() {
10768    assert_eq!(
10769        ::std::mem::size_of::<nmod_discrete_log_pohlig_hellman_struct>(),
10770        56usize,
10771        concat!(
10772            "Size of: ",
10773            stringify!(nmod_discrete_log_pohlig_hellman_struct)
10774        )
10775    );
10776    assert_eq!(
10777        ::std::mem::align_of::<nmod_discrete_log_pohlig_hellman_struct>(),
10778        8usize,
10779        concat!(
10780            "Alignment of ",
10781            stringify!(nmod_discrete_log_pohlig_hellman_struct)
10782        )
10783    );
10784    assert_eq!(
10785        unsafe {
10786            &(*(::std::ptr::null::<nmod_discrete_log_pohlig_hellman_struct>())).mod_ as *const _
10787                as usize
10788        },
10789        0usize,
10790        concat!(
10791            "Offset of field: ",
10792            stringify!(nmod_discrete_log_pohlig_hellman_struct),
10793            "::",
10794            stringify!(mod_)
10795        )
10796    );
10797    assert_eq!(
10798        unsafe {
10799            &(*(::std::ptr::null::<nmod_discrete_log_pohlig_hellman_struct>())).alpha as *const _
10800                as usize
10801        },
10802        24usize,
10803        concat!(
10804            "Offset of field: ",
10805            stringify!(nmod_discrete_log_pohlig_hellman_struct),
10806            "::",
10807            stringify!(alpha)
10808        )
10809    );
10810    assert_eq!(
10811        unsafe {
10812            &(*(::std::ptr::null::<nmod_discrete_log_pohlig_hellman_struct>())).alphainv as *const _
10813                as usize
10814        },
10815        32usize,
10816        concat!(
10817            "Offset of field: ",
10818            stringify!(nmod_discrete_log_pohlig_hellman_struct),
10819            "::",
10820            stringify!(alphainv)
10821        )
10822    );
10823    assert_eq!(
10824        unsafe {
10825            &(*(::std::ptr::null::<nmod_discrete_log_pohlig_hellman_struct>())).num_factors
10826                as *const _ as usize
10827        },
10828        40usize,
10829        concat!(
10830            "Offset of field: ",
10831            stringify!(nmod_discrete_log_pohlig_hellman_struct),
10832            "::",
10833            stringify!(num_factors)
10834        )
10835    );
10836    assert_eq!(
10837        unsafe {
10838            &(*(::std::ptr::null::<nmod_discrete_log_pohlig_hellman_struct>())).entries as *const _
10839                as usize
10840        },
10841        48usize,
10842        concat!(
10843            "Offset of field: ",
10844            stringify!(nmod_discrete_log_pohlig_hellman_struct),
10845            "::",
10846            stringify!(entries)
10847        )
10848    );
10849}
10850pub type nmod_discrete_log_pohlig_hellman_t = [nmod_discrete_log_pohlig_hellman_struct; 1usize];
10851extern "C" {
10852    pub fn nmod_discrete_log_pohlig_hellman_init(L: *mut nmod_discrete_log_pohlig_hellman_struct);
10853}
10854extern "C" {
10855    pub fn nmod_discrete_log_pohlig_hellman_clear(L: *mut nmod_discrete_log_pohlig_hellman_struct);
10856}
10857extern "C" {
10858    pub fn nmod_discrete_log_pohlig_hellman_precompute_prime(
10859        L: *mut nmod_discrete_log_pohlig_hellman_struct,
10860        p: mp_limb_t,
10861    ) -> f64;
10862}
10863extern "C" {
10864    pub fn nmod_discrete_log_pohlig_hellman_run(
10865        L: *mut nmod_discrete_log_pohlig_hellman_struct,
10866        y: mp_limb_t,
10867    ) -> mp_limb_t;
10868}
10869#[repr(C)]
10870#[derive(Debug, Copy, Clone)]
10871pub struct sched_param {
10872    pub sched_priority: ::std::os::raw::c_int,
10873}
10874#[test]
10875fn bindgen_test_layout_sched_param() {
10876    assert_eq!(
10877        ::std::mem::size_of::<sched_param>(),
10878        4usize,
10879        concat!("Size of: ", stringify!(sched_param))
10880    );
10881    assert_eq!(
10882        ::std::mem::align_of::<sched_param>(),
10883        4usize,
10884        concat!("Alignment of ", stringify!(sched_param))
10885    );
10886    assert_eq!(
10887        unsafe { &(*(::std::ptr::null::<sched_param>())).sched_priority as *const _ as usize },
10888        0usize,
10889        concat!(
10890            "Offset of field: ",
10891            stringify!(sched_param),
10892            "::",
10893            stringify!(sched_priority)
10894        )
10895    );
10896}
10897pub type __cpu_mask = ::std::os::raw::c_ulong;
10898#[repr(C)]
10899#[derive(Debug, Copy, Clone)]
10900pub struct cpu_set_t {
10901    pub __bits: [__cpu_mask; 16usize],
10902}
10903#[test]
10904fn bindgen_test_layout_cpu_set_t() {
10905    assert_eq!(
10906        ::std::mem::size_of::<cpu_set_t>(),
10907        128usize,
10908        concat!("Size of: ", stringify!(cpu_set_t))
10909    );
10910    assert_eq!(
10911        ::std::mem::align_of::<cpu_set_t>(),
10912        8usize,
10913        concat!("Alignment of ", stringify!(cpu_set_t))
10914    );
10915    assert_eq!(
10916        unsafe { &(*(::std::ptr::null::<cpu_set_t>())).__bits as *const _ as usize },
10917        0usize,
10918        concat!(
10919            "Offset of field: ",
10920            stringify!(cpu_set_t),
10921            "::",
10922            stringify!(__bits)
10923        )
10924    );
10925}
10926extern "C" {
10927    pub fn __sched_cpucount(__setsize: usize, __setp: *const cpu_set_t) -> ::std::os::raw::c_int;
10928}
10929extern "C" {
10930    pub fn __sched_cpualloc(__count: usize) -> *mut cpu_set_t;
10931}
10932extern "C" {
10933    pub fn __sched_cpufree(__set: *mut cpu_set_t);
10934}
10935extern "C" {
10936    pub fn sched_setparam(__pid: __pid_t, __param: *const sched_param) -> ::std::os::raw::c_int;
10937}
10938extern "C" {
10939    pub fn sched_getparam(__pid: __pid_t, __param: *mut sched_param) -> ::std::os::raw::c_int;
10940}
10941extern "C" {
10942    pub fn sched_setscheduler(
10943        __pid: __pid_t,
10944        __policy: ::std::os::raw::c_int,
10945        __param: *const sched_param,
10946    ) -> ::std::os::raw::c_int;
10947}
10948extern "C" {
10949    pub fn sched_getscheduler(__pid: __pid_t) -> ::std::os::raw::c_int;
10950}
10951extern "C" {
10952    pub fn sched_yield() -> ::std::os::raw::c_int;
10953}
10954extern "C" {
10955    pub fn sched_get_priority_max(__algorithm: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
10956}
10957extern "C" {
10958    pub fn sched_get_priority_min(__algorithm: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
10959}
10960extern "C" {
10961    pub fn sched_rr_get_interval(__pid: __pid_t, __t: *mut timespec) -> ::std::os::raw::c_int;
10962}
10963#[repr(C)]
10964#[derive(Debug, Copy, Clone)]
10965pub struct tm {
10966    pub tm_sec: ::std::os::raw::c_int,
10967    pub tm_min: ::std::os::raw::c_int,
10968    pub tm_hour: ::std::os::raw::c_int,
10969    pub tm_mday: ::std::os::raw::c_int,
10970    pub tm_mon: ::std::os::raw::c_int,
10971    pub tm_year: ::std::os::raw::c_int,
10972    pub tm_wday: ::std::os::raw::c_int,
10973    pub tm_yday: ::std::os::raw::c_int,
10974    pub tm_isdst: ::std::os::raw::c_int,
10975    pub tm_gmtoff: ::std::os::raw::c_long,
10976    pub tm_zone: *const ::std::os::raw::c_char,
10977}
10978#[test]
10979fn bindgen_test_layout_tm() {
10980    assert_eq!(
10981        ::std::mem::size_of::<tm>(),
10982        56usize,
10983        concat!("Size of: ", stringify!(tm))
10984    );
10985    assert_eq!(
10986        ::std::mem::align_of::<tm>(),
10987        8usize,
10988        concat!("Alignment of ", stringify!(tm))
10989    );
10990    assert_eq!(
10991        unsafe { &(*(::std::ptr::null::<tm>())).tm_sec as *const _ as usize },
10992        0usize,
10993        concat!(
10994            "Offset of field: ",
10995            stringify!(tm),
10996            "::",
10997            stringify!(tm_sec)
10998        )
10999    );
11000    assert_eq!(
11001        unsafe { &(*(::std::ptr::null::<tm>())).tm_min as *const _ as usize },
11002        4usize,
11003        concat!(
11004            "Offset of field: ",
11005            stringify!(tm),
11006            "::",
11007            stringify!(tm_min)
11008        )
11009    );
11010    assert_eq!(
11011        unsafe { &(*(::std::ptr::null::<tm>())).tm_hour as *const _ as usize },
11012        8usize,
11013        concat!(
11014            "Offset of field: ",
11015            stringify!(tm),
11016            "::",
11017            stringify!(tm_hour)
11018        )
11019    );
11020    assert_eq!(
11021        unsafe { &(*(::std::ptr::null::<tm>())).tm_mday as *const _ as usize },
11022        12usize,
11023        concat!(
11024            "Offset of field: ",
11025            stringify!(tm),
11026            "::",
11027            stringify!(tm_mday)
11028        )
11029    );
11030    assert_eq!(
11031        unsafe { &(*(::std::ptr::null::<tm>())).tm_mon as *const _ as usize },
11032        16usize,
11033        concat!(
11034            "Offset of field: ",
11035            stringify!(tm),
11036            "::",
11037            stringify!(tm_mon)
11038        )
11039    );
11040    assert_eq!(
11041        unsafe { &(*(::std::ptr::null::<tm>())).tm_year as *const _ as usize },
11042        20usize,
11043        concat!(
11044            "Offset of field: ",
11045            stringify!(tm),
11046            "::",
11047            stringify!(tm_year)
11048        )
11049    );
11050    assert_eq!(
11051        unsafe { &(*(::std::ptr::null::<tm>())).tm_wday as *const _ as usize },
11052        24usize,
11053        concat!(
11054            "Offset of field: ",
11055            stringify!(tm),
11056            "::",
11057            stringify!(tm_wday)
11058        )
11059    );
11060    assert_eq!(
11061        unsafe { &(*(::std::ptr::null::<tm>())).tm_yday as *const _ as usize },
11062        28usize,
11063        concat!(
11064            "Offset of field: ",
11065            stringify!(tm),
11066            "::",
11067            stringify!(tm_yday)
11068        )
11069    );
11070    assert_eq!(
11071        unsafe { &(*(::std::ptr::null::<tm>())).tm_isdst as *const _ as usize },
11072        32usize,
11073        concat!(
11074            "Offset of field: ",
11075            stringify!(tm),
11076            "::",
11077            stringify!(tm_isdst)
11078        )
11079    );
11080    assert_eq!(
11081        unsafe { &(*(::std::ptr::null::<tm>())).tm_gmtoff as *const _ as usize },
11082        40usize,
11083        concat!(
11084            "Offset of field: ",
11085            stringify!(tm),
11086            "::",
11087            stringify!(tm_gmtoff)
11088        )
11089    );
11090    assert_eq!(
11091        unsafe { &(*(::std::ptr::null::<tm>())).tm_zone as *const _ as usize },
11092        48usize,
11093        concat!(
11094            "Offset of field: ",
11095            stringify!(tm),
11096            "::",
11097            stringify!(tm_zone)
11098        )
11099    );
11100}
11101#[repr(C)]
11102#[derive(Debug, Copy, Clone)]
11103pub struct itimerspec {
11104    pub it_interval: timespec,
11105    pub it_value: timespec,
11106}
11107#[test]
11108fn bindgen_test_layout_itimerspec() {
11109    assert_eq!(
11110        ::std::mem::size_of::<itimerspec>(),
11111        32usize,
11112        concat!("Size of: ", stringify!(itimerspec))
11113    );
11114    assert_eq!(
11115        ::std::mem::align_of::<itimerspec>(),
11116        8usize,
11117        concat!("Alignment of ", stringify!(itimerspec))
11118    );
11119    assert_eq!(
11120        unsafe { &(*(::std::ptr::null::<itimerspec>())).it_interval as *const _ as usize },
11121        0usize,
11122        concat!(
11123            "Offset of field: ",
11124            stringify!(itimerspec),
11125            "::",
11126            stringify!(it_interval)
11127        )
11128    );
11129    assert_eq!(
11130        unsafe { &(*(::std::ptr::null::<itimerspec>())).it_value as *const _ as usize },
11131        16usize,
11132        concat!(
11133            "Offset of field: ",
11134            stringify!(itimerspec),
11135            "::",
11136            stringify!(it_value)
11137        )
11138    );
11139}
11140#[repr(C)]
11141#[derive(Debug, Copy, Clone)]
11142pub struct __locale_struct {
11143    pub __locales: [*mut __locale_data; 13usize],
11144    pub __ctype_b: *const ::std::os::raw::c_ushort,
11145    pub __ctype_tolower: *const ::std::os::raw::c_int,
11146    pub __ctype_toupper: *const ::std::os::raw::c_int,
11147    pub __names: [*const ::std::os::raw::c_char; 13usize],
11148}
11149#[test]
11150fn bindgen_test_layout___locale_struct() {
11151    assert_eq!(
11152        ::std::mem::size_of::<__locale_struct>(),
11153        232usize,
11154        concat!("Size of: ", stringify!(__locale_struct))
11155    );
11156    assert_eq!(
11157        ::std::mem::align_of::<__locale_struct>(),
11158        8usize,
11159        concat!("Alignment of ", stringify!(__locale_struct))
11160    );
11161    assert_eq!(
11162        unsafe { &(*(::std::ptr::null::<__locale_struct>())).__locales as *const _ as usize },
11163        0usize,
11164        concat!(
11165            "Offset of field: ",
11166            stringify!(__locale_struct),
11167            "::",
11168            stringify!(__locales)
11169        )
11170    );
11171    assert_eq!(
11172        unsafe { &(*(::std::ptr::null::<__locale_struct>())).__ctype_b as *const _ as usize },
11173        104usize,
11174        concat!(
11175            "Offset of field: ",
11176            stringify!(__locale_struct),
11177            "::",
11178            stringify!(__ctype_b)
11179        )
11180    );
11181    assert_eq!(
11182        unsafe { &(*(::std::ptr::null::<__locale_struct>())).__ctype_tolower as *const _ as usize },
11183        112usize,
11184        concat!(
11185            "Offset of field: ",
11186            stringify!(__locale_struct),
11187            "::",
11188            stringify!(__ctype_tolower)
11189        )
11190    );
11191    assert_eq!(
11192        unsafe { &(*(::std::ptr::null::<__locale_struct>())).__ctype_toupper as *const _ as usize },
11193        120usize,
11194        concat!(
11195            "Offset of field: ",
11196            stringify!(__locale_struct),
11197            "::",
11198            stringify!(__ctype_toupper)
11199        )
11200    );
11201    assert_eq!(
11202        unsafe { &(*(::std::ptr::null::<__locale_struct>())).__names as *const _ as usize },
11203        128usize,
11204        concat!(
11205            "Offset of field: ",
11206            stringify!(__locale_struct),
11207            "::",
11208            stringify!(__names)
11209        )
11210    );
11211}
11212pub type __locale_t = *mut __locale_struct;
11213pub type locale_t = __locale_t;
11214extern "C" {
11215    pub fn clock() -> clock_t;
11216}
11217extern "C" {
11218    pub fn time(__timer: *mut time_t) -> time_t;
11219}
11220extern "C" {
11221    pub fn difftime(__time1: time_t, __time0: time_t) -> f64;
11222}
11223extern "C" {
11224    pub fn mktime(__tp: *mut tm) -> time_t;
11225}
11226extern "C" {
11227    pub fn strftime(
11228        __s: *mut ::std::os::raw::c_char,
11229        __maxsize: usize,
11230        __format: *const ::std::os::raw::c_char,
11231        __tp: *const tm,
11232    ) -> usize;
11233}
11234extern "C" {
11235    pub fn strftime_l(
11236        __s: *mut ::std::os::raw::c_char,
11237        __maxsize: usize,
11238        __format: *const ::std::os::raw::c_char,
11239        __tp: *const tm,
11240        __loc: locale_t,
11241    ) -> usize;
11242}
11243extern "C" {
11244    pub fn gmtime(__timer: *const time_t) -> *mut tm;
11245}
11246extern "C" {
11247    pub fn localtime(__timer: *const time_t) -> *mut tm;
11248}
11249extern "C" {
11250    pub fn gmtime_r(__timer: *const time_t, __tp: *mut tm) -> *mut tm;
11251}
11252extern "C" {
11253    pub fn localtime_r(__timer: *const time_t, __tp: *mut tm) -> *mut tm;
11254}
11255extern "C" {
11256    pub fn asctime(__tp: *const tm) -> *mut ::std::os::raw::c_char;
11257}
11258extern "C" {
11259    pub fn ctime(__timer: *const time_t) -> *mut ::std::os::raw::c_char;
11260}
11261extern "C" {
11262    pub fn asctime_r(
11263        __tp: *const tm,
11264        __buf: *mut ::std::os::raw::c_char,
11265    ) -> *mut ::std::os::raw::c_char;
11266}
11267extern "C" {
11268    pub fn ctime_r(
11269        __timer: *const time_t,
11270        __buf: *mut ::std::os::raw::c_char,
11271    ) -> *mut ::std::os::raw::c_char;
11272}
11273extern "C" {
11274    pub static mut __tzname: [*mut ::std::os::raw::c_char; 2usize];
11275}
11276extern "C" {
11277    pub static mut __daylight: ::std::os::raw::c_int;
11278}
11279extern "C" {
11280    pub static mut __timezone: ::std::os::raw::c_long;
11281}
11282extern "C" {
11283    pub static mut tzname: [*mut ::std::os::raw::c_char; 2usize];
11284}
11285extern "C" {
11286    pub fn tzset();
11287}
11288extern "C" {
11289    pub static mut daylight: ::std::os::raw::c_int;
11290}
11291extern "C" {
11292    pub static mut timezone: ::std::os::raw::c_long;
11293}
11294extern "C" {
11295    pub fn stime(__when: *const time_t) -> ::std::os::raw::c_int;
11296}
11297extern "C" {
11298    pub fn timegm(__tp: *mut tm) -> time_t;
11299}
11300extern "C" {
11301    pub fn timelocal(__tp: *mut tm) -> time_t;
11302}
11303extern "C" {
11304    pub fn dysize(__year: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
11305}
11306extern "C" {
11307    pub fn nanosleep(
11308        __requested_time: *const timespec,
11309        __remaining: *mut timespec,
11310    ) -> ::std::os::raw::c_int;
11311}
11312extern "C" {
11313    pub fn clock_getres(__clock_id: clockid_t, __res: *mut timespec) -> ::std::os::raw::c_int;
11314}
11315extern "C" {
11316    pub fn clock_gettime(__clock_id: clockid_t, __tp: *mut timespec) -> ::std::os::raw::c_int;
11317}
11318extern "C" {
11319    pub fn clock_settime(__clock_id: clockid_t, __tp: *const timespec) -> ::std::os::raw::c_int;
11320}
11321extern "C" {
11322    pub fn clock_nanosleep(
11323        __clock_id: clockid_t,
11324        __flags: ::std::os::raw::c_int,
11325        __req: *const timespec,
11326        __rem: *mut timespec,
11327    ) -> ::std::os::raw::c_int;
11328}
11329extern "C" {
11330    pub fn clock_getcpuclockid(__pid: pid_t, __clock_id: *mut clockid_t) -> ::std::os::raw::c_int;
11331}
11332extern "C" {
11333    pub fn timer_create(
11334        __clock_id: clockid_t,
11335        __evp: *mut sigevent,
11336        __timerid: *mut timer_t,
11337    ) -> ::std::os::raw::c_int;
11338}
11339extern "C" {
11340    pub fn timer_delete(__timerid: timer_t) -> ::std::os::raw::c_int;
11341}
11342extern "C" {
11343    pub fn timer_settime(
11344        __timerid: timer_t,
11345        __flags: ::std::os::raw::c_int,
11346        __value: *const itimerspec,
11347        __ovalue: *mut itimerspec,
11348    ) -> ::std::os::raw::c_int;
11349}
11350extern "C" {
11351    pub fn timer_gettime(__timerid: timer_t, __value: *mut itimerspec) -> ::std::os::raw::c_int;
11352}
11353extern "C" {
11354    pub fn timer_getoverrun(__timerid: timer_t) -> ::std::os::raw::c_int;
11355}
11356extern "C" {
11357    pub fn timespec_get(
11358        __ts: *mut timespec,
11359        __base: ::std::os::raw::c_int,
11360    ) -> ::std::os::raw::c_int;
11361}
11362pub type __jmp_buf = [::std::os::raw::c_long; 8usize];
11363pub const PTHREAD_CREATE_JOINABLE: _bindgen_ty_11 = 0;
11364pub const PTHREAD_CREATE_DETACHED: _bindgen_ty_11 = 1;
11365pub type _bindgen_ty_11 = u32;
11366pub const PTHREAD_MUTEX_TIMED_NP: _bindgen_ty_12 = 0;
11367pub const PTHREAD_MUTEX_RECURSIVE_NP: _bindgen_ty_12 = 1;
11368pub const PTHREAD_MUTEX_ERRORCHECK_NP: _bindgen_ty_12 = 2;
11369pub const PTHREAD_MUTEX_ADAPTIVE_NP: _bindgen_ty_12 = 3;
11370pub const PTHREAD_MUTEX_NORMAL: _bindgen_ty_12 = 0;
11371pub const PTHREAD_MUTEX_RECURSIVE: _bindgen_ty_12 = 1;
11372pub const PTHREAD_MUTEX_ERRORCHECK: _bindgen_ty_12 = 2;
11373pub const PTHREAD_MUTEX_DEFAULT: _bindgen_ty_12 = 0;
11374pub type _bindgen_ty_12 = u32;
11375pub const PTHREAD_MUTEX_STALLED: _bindgen_ty_13 = 0;
11376pub const PTHREAD_MUTEX_STALLED_NP: _bindgen_ty_13 = 0;
11377pub const PTHREAD_MUTEX_ROBUST: _bindgen_ty_13 = 1;
11378pub const PTHREAD_MUTEX_ROBUST_NP: _bindgen_ty_13 = 1;
11379pub type _bindgen_ty_13 = u32;
11380pub const PTHREAD_PRIO_NONE: _bindgen_ty_14 = 0;
11381pub const PTHREAD_PRIO_INHERIT: _bindgen_ty_14 = 1;
11382pub const PTHREAD_PRIO_PROTECT: _bindgen_ty_14 = 2;
11383pub type _bindgen_ty_14 = u32;
11384pub const PTHREAD_RWLOCK_PREFER_READER_NP: _bindgen_ty_15 = 0;
11385pub const PTHREAD_RWLOCK_PREFER_WRITER_NP: _bindgen_ty_15 = 1;
11386pub const PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP: _bindgen_ty_15 = 2;
11387pub const PTHREAD_RWLOCK_DEFAULT_NP: _bindgen_ty_15 = 0;
11388pub type _bindgen_ty_15 = u32;
11389pub const PTHREAD_INHERIT_SCHED: _bindgen_ty_16 = 0;
11390pub const PTHREAD_EXPLICIT_SCHED: _bindgen_ty_16 = 1;
11391pub type _bindgen_ty_16 = u32;
11392pub const PTHREAD_SCOPE_SYSTEM: _bindgen_ty_17 = 0;
11393pub const PTHREAD_SCOPE_PROCESS: _bindgen_ty_17 = 1;
11394pub type _bindgen_ty_17 = u32;
11395pub const PTHREAD_PROCESS_PRIVATE: _bindgen_ty_18 = 0;
11396pub const PTHREAD_PROCESS_SHARED: _bindgen_ty_18 = 1;
11397pub type _bindgen_ty_18 = u32;
11398#[repr(C)]
11399#[derive(Debug, Copy, Clone)]
11400pub struct _pthread_cleanup_buffer {
11401    pub __routine: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
11402    pub __arg: *mut ::std::os::raw::c_void,
11403    pub __canceltype: ::std::os::raw::c_int,
11404    pub __prev: *mut _pthread_cleanup_buffer,
11405}
11406#[test]
11407fn bindgen_test_layout__pthread_cleanup_buffer() {
11408    assert_eq!(
11409        ::std::mem::size_of::<_pthread_cleanup_buffer>(),
11410        32usize,
11411        concat!("Size of: ", stringify!(_pthread_cleanup_buffer))
11412    );
11413    assert_eq!(
11414        ::std::mem::align_of::<_pthread_cleanup_buffer>(),
11415        8usize,
11416        concat!("Alignment of ", stringify!(_pthread_cleanup_buffer))
11417    );
11418    assert_eq!(
11419        unsafe {
11420            &(*(::std::ptr::null::<_pthread_cleanup_buffer>())).__routine as *const _ as usize
11421        },
11422        0usize,
11423        concat!(
11424            "Offset of field: ",
11425            stringify!(_pthread_cleanup_buffer),
11426            "::",
11427            stringify!(__routine)
11428        )
11429    );
11430    assert_eq!(
11431        unsafe { &(*(::std::ptr::null::<_pthread_cleanup_buffer>())).__arg as *const _ as usize },
11432        8usize,
11433        concat!(
11434            "Offset of field: ",
11435            stringify!(_pthread_cleanup_buffer),
11436            "::",
11437            stringify!(__arg)
11438        )
11439    );
11440    assert_eq!(
11441        unsafe {
11442            &(*(::std::ptr::null::<_pthread_cleanup_buffer>())).__canceltype as *const _ as usize
11443        },
11444        16usize,
11445        concat!(
11446            "Offset of field: ",
11447            stringify!(_pthread_cleanup_buffer),
11448            "::",
11449            stringify!(__canceltype)
11450        )
11451    );
11452    assert_eq!(
11453        unsafe { &(*(::std::ptr::null::<_pthread_cleanup_buffer>())).__prev as *const _ as usize },
11454        24usize,
11455        concat!(
11456            "Offset of field: ",
11457            stringify!(_pthread_cleanup_buffer),
11458            "::",
11459            stringify!(__prev)
11460        )
11461    );
11462}
11463pub const PTHREAD_CANCEL_ENABLE: _bindgen_ty_19 = 0;
11464pub const PTHREAD_CANCEL_DISABLE: _bindgen_ty_19 = 1;
11465pub type _bindgen_ty_19 = u32;
11466pub const PTHREAD_CANCEL_DEFERRED: _bindgen_ty_20 = 0;
11467pub const PTHREAD_CANCEL_ASYNCHRONOUS: _bindgen_ty_20 = 1;
11468pub type _bindgen_ty_20 = u32;
11469extern "C" {
11470    pub fn pthread_create(
11471        __newthread: *mut pthread_t,
11472        __attr: *const pthread_attr_t,
11473        __start_routine: ::std::option::Option<
11474            unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void) -> *mut ::std::os::raw::c_void,
11475        >,
11476        __arg: *mut ::std::os::raw::c_void,
11477    ) -> ::std::os::raw::c_int;
11478}
11479extern "C" {
11480    pub fn pthread_exit(__retval: *mut ::std::os::raw::c_void);
11481}
11482extern "C" {
11483    pub fn pthread_join(
11484        __th: pthread_t,
11485        __thread_return: *mut *mut ::std::os::raw::c_void,
11486    ) -> ::std::os::raw::c_int;
11487}
11488extern "C" {
11489    pub fn pthread_detach(__th: pthread_t) -> ::std::os::raw::c_int;
11490}
11491extern "C" {
11492    pub fn pthread_self() -> pthread_t;
11493}
11494extern "C" {
11495    pub fn pthread_equal(__thread1: pthread_t, __thread2: pthread_t) -> ::std::os::raw::c_int;
11496}
11497extern "C" {
11498    pub fn pthread_attr_init(__attr: *mut pthread_attr_t) -> ::std::os::raw::c_int;
11499}
11500extern "C" {
11501    pub fn pthread_attr_destroy(__attr: *mut pthread_attr_t) -> ::std::os::raw::c_int;
11502}
11503extern "C" {
11504    pub fn pthread_attr_getdetachstate(
11505        __attr: *const pthread_attr_t,
11506        __detachstate: *mut ::std::os::raw::c_int,
11507    ) -> ::std::os::raw::c_int;
11508}
11509extern "C" {
11510    pub fn pthread_attr_setdetachstate(
11511        __attr: *mut pthread_attr_t,
11512        __detachstate: ::std::os::raw::c_int,
11513    ) -> ::std::os::raw::c_int;
11514}
11515extern "C" {
11516    pub fn pthread_attr_getguardsize(
11517        __attr: *const pthread_attr_t,
11518        __guardsize: *mut usize,
11519    ) -> ::std::os::raw::c_int;
11520}
11521extern "C" {
11522    pub fn pthread_attr_setguardsize(
11523        __attr: *mut pthread_attr_t,
11524        __guardsize: usize,
11525    ) -> ::std::os::raw::c_int;
11526}
11527extern "C" {
11528    pub fn pthread_attr_getschedparam(
11529        __attr: *const pthread_attr_t,
11530        __param: *mut sched_param,
11531    ) -> ::std::os::raw::c_int;
11532}
11533extern "C" {
11534    pub fn pthread_attr_setschedparam(
11535        __attr: *mut pthread_attr_t,
11536        __param: *const sched_param,
11537    ) -> ::std::os::raw::c_int;
11538}
11539extern "C" {
11540    pub fn pthread_attr_getschedpolicy(
11541        __attr: *const pthread_attr_t,
11542        __policy: *mut ::std::os::raw::c_int,
11543    ) -> ::std::os::raw::c_int;
11544}
11545extern "C" {
11546    pub fn pthread_attr_setschedpolicy(
11547        __attr: *mut pthread_attr_t,
11548        __policy: ::std::os::raw::c_int,
11549    ) -> ::std::os::raw::c_int;
11550}
11551extern "C" {
11552    pub fn pthread_attr_getinheritsched(
11553        __attr: *const pthread_attr_t,
11554        __inherit: *mut ::std::os::raw::c_int,
11555    ) -> ::std::os::raw::c_int;
11556}
11557extern "C" {
11558    pub fn pthread_attr_setinheritsched(
11559        __attr: *mut pthread_attr_t,
11560        __inherit: ::std::os::raw::c_int,
11561    ) -> ::std::os::raw::c_int;
11562}
11563extern "C" {
11564    pub fn pthread_attr_getscope(
11565        __attr: *const pthread_attr_t,
11566        __scope: *mut ::std::os::raw::c_int,
11567    ) -> ::std::os::raw::c_int;
11568}
11569extern "C" {
11570    pub fn pthread_attr_setscope(
11571        __attr: *mut pthread_attr_t,
11572        __scope: ::std::os::raw::c_int,
11573    ) -> ::std::os::raw::c_int;
11574}
11575extern "C" {
11576    pub fn pthread_attr_getstackaddr(
11577        __attr: *const pthread_attr_t,
11578        __stackaddr: *mut *mut ::std::os::raw::c_void,
11579    ) -> ::std::os::raw::c_int;
11580}
11581extern "C" {
11582    pub fn pthread_attr_setstackaddr(
11583        __attr: *mut pthread_attr_t,
11584        __stackaddr: *mut ::std::os::raw::c_void,
11585    ) -> ::std::os::raw::c_int;
11586}
11587extern "C" {
11588    pub fn pthread_attr_getstacksize(
11589        __attr: *const pthread_attr_t,
11590        __stacksize: *mut usize,
11591    ) -> ::std::os::raw::c_int;
11592}
11593extern "C" {
11594    pub fn pthread_attr_setstacksize(
11595        __attr: *mut pthread_attr_t,
11596        __stacksize: usize,
11597    ) -> ::std::os::raw::c_int;
11598}
11599extern "C" {
11600    pub fn pthread_attr_getstack(
11601        __attr: *const pthread_attr_t,
11602        __stackaddr: *mut *mut ::std::os::raw::c_void,
11603        __stacksize: *mut usize,
11604    ) -> ::std::os::raw::c_int;
11605}
11606extern "C" {
11607    pub fn pthread_attr_setstack(
11608        __attr: *mut pthread_attr_t,
11609        __stackaddr: *mut ::std::os::raw::c_void,
11610        __stacksize: usize,
11611    ) -> ::std::os::raw::c_int;
11612}
11613extern "C" {
11614    pub fn pthread_setschedparam(
11615        __target_thread: pthread_t,
11616        __policy: ::std::os::raw::c_int,
11617        __param: *const sched_param,
11618    ) -> ::std::os::raw::c_int;
11619}
11620extern "C" {
11621    pub fn pthread_getschedparam(
11622        __target_thread: pthread_t,
11623        __policy: *mut ::std::os::raw::c_int,
11624        __param: *mut sched_param,
11625    ) -> ::std::os::raw::c_int;
11626}
11627extern "C" {
11628    pub fn pthread_setschedprio(
11629        __target_thread: pthread_t,
11630        __prio: ::std::os::raw::c_int,
11631    ) -> ::std::os::raw::c_int;
11632}
11633extern "C" {
11634    pub fn pthread_once(
11635        __once_control: *mut pthread_once_t,
11636        __init_routine: ::std::option::Option<unsafe extern "C" fn()>,
11637    ) -> ::std::os::raw::c_int;
11638}
11639extern "C" {
11640    pub fn pthread_setcancelstate(
11641        __state: ::std::os::raw::c_int,
11642        __oldstate: *mut ::std::os::raw::c_int,
11643    ) -> ::std::os::raw::c_int;
11644}
11645extern "C" {
11646    pub fn pthread_setcanceltype(
11647        __type: ::std::os::raw::c_int,
11648        __oldtype: *mut ::std::os::raw::c_int,
11649    ) -> ::std::os::raw::c_int;
11650}
11651extern "C" {
11652    pub fn pthread_cancel(__th: pthread_t) -> ::std::os::raw::c_int;
11653}
11654extern "C" {
11655    pub fn pthread_testcancel();
11656}
11657#[repr(C)]
11658#[derive(Debug, Copy, Clone)]
11659pub struct __pthread_unwind_buf_t {
11660    pub __cancel_jmp_buf: [__pthread_unwind_buf_t__bindgen_ty_1; 1usize],
11661    pub __pad: [*mut ::std::os::raw::c_void; 4usize],
11662}
11663#[repr(C)]
11664#[derive(Debug, Copy, Clone)]
11665pub struct __pthread_unwind_buf_t__bindgen_ty_1 {
11666    pub __cancel_jmp_buf: __jmp_buf,
11667    pub __mask_was_saved: ::std::os::raw::c_int,
11668}
11669#[test]
11670fn bindgen_test_layout___pthread_unwind_buf_t__bindgen_ty_1() {
11671    assert_eq!(
11672        ::std::mem::size_of::<__pthread_unwind_buf_t__bindgen_ty_1>(),
11673        72usize,
11674        concat!(
11675            "Size of: ",
11676            stringify!(__pthread_unwind_buf_t__bindgen_ty_1)
11677        )
11678    );
11679    assert_eq!(
11680        ::std::mem::align_of::<__pthread_unwind_buf_t__bindgen_ty_1>(),
11681        8usize,
11682        concat!(
11683            "Alignment of ",
11684            stringify!(__pthread_unwind_buf_t__bindgen_ty_1)
11685        )
11686    );
11687    assert_eq!(
11688        unsafe {
11689            &(*(::std::ptr::null::<__pthread_unwind_buf_t__bindgen_ty_1>())).__cancel_jmp_buf
11690                as *const _ as usize
11691        },
11692        0usize,
11693        concat!(
11694            "Offset of field: ",
11695            stringify!(__pthread_unwind_buf_t__bindgen_ty_1),
11696            "::",
11697            stringify!(__cancel_jmp_buf)
11698        )
11699    );
11700    assert_eq!(
11701        unsafe {
11702            &(*(::std::ptr::null::<__pthread_unwind_buf_t__bindgen_ty_1>())).__mask_was_saved
11703                as *const _ as usize
11704        },
11705        64usize,
11706        concat!(
11707            "Offset of field: ",
11708            stringify!(__pthread_unwind_buf_t__bindgen_ty_1),
11709            "::",
11710            stringify!(__mask_was_saved)
11711        )
11712    );
11713}
11714#[test]
11715fn bindgen_test_layout___pthread_unwind_buf_t() {
11716    assert_eq!(
11717        ::std::mem::size_of::<__pthread_unwind_buf_t>(),
11718        104usize,
11719        concat!("Size of: ", stringify!(__pthread_unwind_buf_t))
11720    );
11721    assert_eq!(
11722        ::std::mem::align_of::<__pthread_unwind_buf_t>(),
11723        8usize,
11724        concat!("Alignment of ", stringify!(__pthread_unwind_buf_t))
11725    );
11726    assert_eq!(
11727        unsafe {
11728            &(*(::std::ptr::null::<__pthread_unwind_buf_t>())).__cancel_jmp_buf as *const _ as usize
11729        },
11730        0usize,
11731        concat!(
11732            "Offset of field: ",
11733            stringify!(__pthread_unwind_buf_t),
11734            "::",
11735            stringify!(__cancel_jmp_buf)
11736        )
11737    );
11738    assert_eq!(
11739        unsafe { &(*(::std::ptr::null::<__pthread_unwind_buf_t>())).__pad as *const _ as usize },
11740        72usize,
11741        concat!(
11742            "Offset of field: ",
11743            stringify!(__pthread_unwind_buf_t),
11744            "::",
11745            stringify!(__pad)
11746        )
11747    );
11748}
11749#[repr(C)]
11750#[derive(Debug, Copy, Clone)]
11751pub struct __pthread_cleanup_frame {
11752    pub __cancel_routine:
11753        ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
11754    pub __cancel_arg: *mut ::std::os::raw::c_void,
11755    pub __do_it: ::std::os::raw::c_int,
11756    pub __cancel_type: ::std::os::raw::c_int,
11757}
11758#[test]
11759fn bindgen_test_layout___pthread_cleanup_frame() {
11760    assert_eq!(
11761        ::std::mem::size_of::<__pthread_cleanup_frame>(),
11762        24usize,
11763        concat!("Size of: ", stringify!(__pthread_cleanup_frame))
11764    );
11765    assert_eq!(
11766        ::std::mem::align_of::<__pthread_cleanup_frame>(),
11767        8usize,
11768        concat!("Alignment of ", stringify!(__pthread_cleanup_frame))
11769    );
11770    assert_eq!(
11771        unsafe {
11772            &(*(::std::ptr::null::<__pthread_cleanup_frame>())).__cancel_routine as *const _
11773                as usize
11774        },
11775        0usize,
11776        concat!(
11777            "Offset of field: ",
11778            stringify!(__pthread_cleanup_frame),
11779            "::",
11780            stringify!(__cancel_routine)
11781        )
11782    );
11783    assert_eq!(
11784        unsafe {
11785            &(*(::std::ptr::null::<__pthread_cleanup_frame>())).__cancel_arg as *const _ as usize
11786        },
11787        8usize,
11788        concat!(
11789            "Offset of field: ",
11790            stringify!(__pthread_cleanup_frame),
11791            "::",
11792            stringify!(__cancel_arg)
11793        )
11794    );
11795    assert_eq!(
11796        unsafe { &(*(::std::ptr::null::<__pthread_cleanup_frame>())).__do_it as *const _ as usize },
11797        16usize,
11798        concat!(
11799            "Offset of field: ",
11800            stringify!(__pthread_cleanup_frame),
11801            "::",
11802            stringify!(__do_it)
11803        )
11804    );
11805    assert_eq!(
11806        unsafe {
11807            &(*(::std::ptr::null::<__pthread_cleanup_frame>())).__cancel_type as *const _ as usize
11808        },
11809        20usize,
11810        concat!(
11811            "Offset of field: ",
11812            stringify!(__pthread_cleanup_frame),
11813            "::",
11814            stringify!(__cancel_type)
11815        )
11816    );
11817}
11818extern "C" {
11819    pub fn __pthread_register_cancel(__buf: *mut __pthread_unwind_buf_t);
11820}
11821extern "C" {
11822    pub fn __pthread_unregister_cancel(__buf: *mut __pthread_unwind_buf_t);
11823}
11824extern "C" {
11825    pub fn __pthread_unwind_next(__buf: *mut __pthread_unwind_buf_t);
11826}
11827#[repr(C)]
11828#[derive(Debug, Copy, Clone)]
11829pub struct __jmp_buf_tag {
11830    _unused: [u8; 0],
11831}
11832extern "C" {
11833    pub fn __sigsetjmp(
11834        __env: *mut __jmp_buf_tag,
11835        __savemask: ::std::os::raw::c_int,
11836    ) -> ::std::os::raw::c_int;
11837}
11838extern "C" {
11839    pub fn pthread_mutex_init(
11840        __mutex: *mut pthread_mutex_t,
11841        __mutexattr: *const pthread_mutexattr_t,
11842    ) -> ::std::os::raw::c_int;
11843}
11844extern "C" {
11845    pub fn pthread_mutex_destroy(__mutex: *mut pthread_mutex_t) -> ::std::os::raw::c_int;
11846}
11847extern "C" {
11848    pub fn pthread_mutex_trylock(__mutex: *mut pthread_mutex_t) -> ::std::os::raw::c_int;
11849}
11850extern "C" {
11851    pub fn pthread_mutex_lock(__mutex: *mut pthread_mutex_t) -> ::std::os::raw::c_int;
11852}
11853extern "C" {
11854    pub fn pthread_mutex_timedlock(
11855        __mutex: *mut pthread_mutex_t,
11856        __abstime: *const timespec,
11857    ) -> ::std::os::raw::c_int;
11858}
11859extern "C" {
11860    pub fn pthread_mutex_unlock(__mutex: *mut pthread_mutex_t) -> ::std::os::raw::c_int;
11861}
11862extern "C" {
11863    pub fn pthread_mutex_getprioceiling(
11864        __mutex: *const pthread_mutex_t,
11865        __prioceiling: *mut ::std::os::raw::c_int,
11866    ) -> ::std::os::raw::c_int;
11867}
11868extern "C" {
11869    pub fn pthread_mutex_setprioceiling(
11870        __mutex: *mut pthread_mutex_t,
11871        __prioceiling: ::std::os::raw::c_int,
11872        __old_ceiling: *mut ::std::os::raw::c_int,
11873    ) -> ::std::os::raw::c_int;
11874}
11875extern "C" {
11876    pub fn pthread_mutex_consistent(__mutex: *mut pthread_mutex_t) -> ::std::os::raw::c_int;
11877}
11878extern "C" {
11879    pub fn pthread_mutexattr_init(__attr: *mut pthread_mutexattr_t) -> ::std::os::raw::c_int;
11880}
11881extern "C" {
11882    pub fn pthread_mutexattr_destroy(__attr: *mut pthread_mutexattr_t) -> ::std::os::raw::c_int;
11883}
11884extern "C" {
11885    pub fn pthread_mutexattr_getpshared(
11886        __attr: *const pthread_mutexattr_t,
11887        __pshared: *mut ::std::os::raw::c_int,
11888    ) -> ::std::os::raw::c_int;
11889}
11890extern "C" {
11891    pub fn pthread_mutexattr_setpshared(
11892        __attr: *mut pthread_mutexattr_t,
11893        __pshared: ::std::os::raw::c_int,
11894    ) -> ::std::os::raw::c_int;
11895}
11896extern "C" {
11897    pub fn pthread_mutexattr_gettype(
11898        __attr: *const pthread_mutexattr_t,
11899        __kind: *mut ::std::os::raw::c_int,
11900    ) -> ::std::os::raw::c_int;
11901}
11902extern "C" {
11903    pub fn pthread_mutexattr_settype(
11904        __attr: *mut pthread_mutexattr_t,
11905        __kind: ::std::os::raw::c_int,
11906    ) -> ::std::os::raw::c_int;
11907}
11908extern "C" {
11909    pub fn pthread_mutexattr_getprotocol(
11910        __attr: *const pthread_mutexattr_t,
11911        __protocol: *mut ::std::os::raw::c_int,
11912    ) -> ::std::os::raw::c_int;
11913}
11914extern "C" {
11915    pub fn pthread_mutexattr_setprotocol(
11916        __attr: *mut pthread_mutexattr_t,
11917        __protocol: ::std::os::raw::c_int,
11918    ) -> ::std::os::raw::c_int;
11919}
11920extern "C" {
11921    pub fn pthread_mutexattr_getprioceiling(
11922        __attr: *const pthread_mutexattr_t,
11923        __prioceiling: *mut ::std::os::raw::c_int,
11924    ) -> ::std::os::raw::c_int;
11925}
11926extern "C" {
11927    pub fn pthread_mutexattr_setprioceiling(
11928        __attr: *mut pthread_mutexattr_t,
11929        __prioceiling: ::std::os::raw::c_int,
11930    ) -> ::std::os::raw::c_int;
11931}
11932extern "C" {
11933    pub fn pthread_mutexattr_getrobust(
11934        __attr: *const pthread_mutexattr_t,
11935        __robustness: *mut ::std::os::raw::c_int,
11936    ) -> ::std::os::raw::c_int;
11937}
11938extern "C" {
11939    pub fn pthread_mutexattr_setrobust(
11940        __attr: *mut pthread_mutexattr_t,
11941        __robustness: ::std::os::raw::c_int,
11942    ) -> ::std::os::raw::c_int;
11943}
11944extern "C" {
11945    pub fn pthread_rwlock_init(
11946        __rwlock: *mut pthread_rwlock_t,
11947        __attr: *const pthread_rwlockattr_t,
11948    ) -> ::std::os::raw::c_int;
11949}
11950extern "C" {
11951    pub fn pthread_rwlock_destroy(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int;
11952}
11953extern "C" {
11954    pub fn pthread_rwlock_rdlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int;
11955}
11956extern "C" {
11957    pub fn pthread_rwlock_tryrdlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int;
11958}
11959extern "C" {
11960    pub fn pthread_rwlock_timedrdlock(
11961        __rwlock: *mut pthread_rwlock_t,
11962        __abstime: *const timespec,
11963    ) -> ::std::os::raw::c_int;
11964}
11965extern "C" {
11966    pub fn pthread_rwlock_wrlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int;
11967}
11968extern "C" {
11969    pub fn pthread_rwlock_trywrlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int;
11970}
11971extern "C" {
11972    pub fn pthread_rwlock_timedwrlock(
11973        __rwlock: *mut pthread_rwlock_t,
11974        __abstime: *const timespec,
11975    ) -> ::std::os::raw::c_int;
11976}
11977extern "C" {
11978    pub fn pthread_rwlock_unlock(__rwlock: *mut pthread_rwlock_t) -> ::std::os::raw::c_int;
11979}
11980extern "C" {
11981    pub fn pthread_rwlockattr_init(__attr: *mut pthread_rwlockattr_t) -> ::std::os::raw::c_int;
11982}
11983extern "C" {
11984    pub fn pthread_rwlockattr_destroy(__attr: *mut pthread_rwlockattr_t) -> ::std::os::raw::c_int;
11985}
11986extern "C" {
11987    pub fn pthread_rwlockattr_getpshared(
11988        __attr: *const pthread_rwlockattr_t,
11989        __pshared: *mut ::std::os::raw::c_int,
11990    ) -> ::std::os::raw::c_int;
11991}
11992extern "C" {
11993    pub fn pthread_rwlockattr_setpshared(
11994        __attr: *mut pthread_rwlockattr_t,
11995        __pshared: ::std::os::raw::c_int,
11996    ) -> ::std::os::raw::c_int;
11997}
11998extern "C" {
11999    pub fn pthread_rwlockattr_getkind_np(
12000        __attr: *const pthread_rwlockattr_t,
12001        __pref: *mut ::std::os::raw::c_int,
12002    ) -> ::std::os::raw::c_int;
12003}
12004extern "C" {
12005    pub fn pthread_rwlockattr_setkind_np(
12006        __attr: *mut pthread_rwlockattr_t,
12007        __pref: ::std::os::raw::c_int,
12008    ) -> ::std::os::raw::c_int;
12009}
12010extern "C" {
12011    pub fn pthread_cond_init(
12012        __cond: *mut pthread_cond_t,
12013        __cond_attr: *const pthread_condattr_t,
12014    ) -> ::std::os::raw::c_int;
12015}
12016extern "C" {
12017    pub fn pthread_cond_destroy(__cond: *mut pthread_cond_t) -> ::std::os::raw::c_int;
12018}
12019extern "C" {
12020    pub fn pthread_cond_signal(__cond: *mut pthread_cond_t) -> ::std::os::raw::c_int;
12021}
12022extern "C" {
12023    pub fn pthread_cond_broadcast(__cond: *mut pthread_cond_t) -> ::std::os::raw::c_int;
12024}
12025extern "C" {
12026    pub fn pthread_cond_wait(
12027        __cond: *mut pthread_cond_t,
12028        __mutex: *mut pthread_mutex_t,
12029    ) -> ::std::os::raw::c_int;
12030}
12031extern "C" {
12032    pub fn pthread_cond_timedwait(
12033        __cond: *mut pthread_cond_t,
12034        __mutex: *mut pthread_mutex_t,
12035        __abstime: *const timespec,
12036    ) -> ::std::os::raw::c_int;
12037}
12038extern "C" {
12039    pub fn pthread_condattr_init(__attr: *mut pthread_condattr_t) -> ::std::os::raw::c_int;
12040}
12041extern "C" {
12042    pub fn pthread_condattr_destroy(__attr: *mut pthread_condattr_t) -> ::std::os::raw::c_int;
12043}
12044extern "C" {
12045    pub fn pthread_condattr_getpshared(
12046        __attr: *const pthread_condattr_t,
12047        __pshared: *mut ::std::os::raw::c_int,
12048    ) -> ::std::os::raw::c_int;
12049}
12050extern "C" {
12051    pub fn pthread_condattr_setpshared(
12052        __attr: *mut pthread_condattr_t,
12053        __pshared: ::std::os::raw::c_int,
12054    ) -> ::std::os::raw::c_int;
12055}
12056extern "C" {
12057    pub fn pthread_condattr_getclock(
12058        __attr: *const pthread_condattr_t,
12059        __clock_id: *mut __clockid_t,
12060    ) -> ::std::os::raw::c_int;
12061}
12062extern "C" {
12063    pub fn pthread_condattr_setclock(
12064        __attr: *mut pthread_condattr_t,
12065        __clock_id: __clockid_t,
12066    ) -> ::std::os::raw::c_int;
12067}
12068extern "C" {
12069    pub fn pthread_spin_init(
12070        __lock: *mut pthread_spinlock_t,
12071        __pshared: ::std::os::raw::c_int,
12072    ) -> ::std::os::raw::c_int;
12073}
12074extern "C" {
12075    pub fn pthread_spin_destroy(__lock: *mut pthread_spinlock_t) -> ::std::os::raw::c_int;
12076}
12077extern "C" {
12078    pub fn pthread_spin_lock(__lock: *mut pthread_spinlock_t) -> ::std::os::raw::c_int;
12079}
12080extern "C" {
12081    pub fn pthread_spin_trylock(__lock: *mut pthread_spinlock_t) -> ::std::os::raw::c_int;
12082}
12083extern "C" {
12084    pub fn pthread_spin_unlock(__lock: *mut pthread_spinlock_t) -> ::std::os::raw::c_int;
12085}
12086extern "C" {
12087    pub fn pthread_barrier_init(
12088        __barrier: *mut pthread_barrier_t,
12089        __attr: *const pthread_barrierattr_t,
12090        __count: ::std::os::raw::c_uint,
12091    ) -> ::std::os::raw::c_int;
12092}
12093extern "C" {
12094    pub fn pthread_barrier_destroy(__barrier: *mut pthread_barrier_t) -> ::std::os::raw::c_int;
12095}
12096extern "C" {
12097    pub fn pthread_barrier_wait(__barrier: *mut pthread_barrier_t) -> ::std::os::raw::c_int;
12098}
12099extern "C" {
12100    pub fn pthread_barrierattr_init(__attr: *mut pthread_barrierattr_t) -> ::std::os::raw::c_int;
12101}
12102extern "C" {
12103    pub fn pthread_barrierattr_destroy(__attr: *mut pthread_barrierattr_t)
12104        -> ::std::os::raw::c_int;
12105}
12106extern "C" {
12107    pub fn pthread_barrierattr_getpshared(
12108        __attr: *const pthread_barrierattr_t,
12109        __pshared: *mut ::std::os::raw::c_int,
12110    ) -> ::std::os::raw::c_int;
12111}
12112extern "C" {
12113    pub fn pthread_barrierattr_setpshared(
12114        __attr: *mut pthread_barrierattr_t,
12115        __pshared: ::std::os::raw::c_int,
12116    ) -> ::std::os::raw::c_int;
12117}
12118extern "C" {
12119    pub fn pthread_key_create(
12120        __key: *mut pthread_key_t,
12121        __destr_function: ::std::option::Option<
12122            unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void),
12123        >,
12124    ) -> ::std::os::raw::c_int;
12125}
12126extern "C" {
12127    pub fn pthread_key_delete(__key: pthread_key_t) -> ::std::os::raw::c_int;
12128}
12129extern "C" {
12130    pub fn pthread_getspecific(__key: pthread_key_t) -> *mut ::std::os::raw::c_void;
12131}
12132extern "C" {
12133    pub fn pthread_setspecific(
12134        __key: pthread_key_t,
12135        __pointer: *const ::std::os::raw::c_void,
12136    ) -> ::std::os::raw::c_int;
12137}
12138extern "C" {
12139    pub fn pthread_getcpuclockid(
12140        __thread_id: pthread_t,
12141        __clock_id: *mut __clockid_t,
12142    ) -> ::std::os::raw::c_int;
12143}
12144extern "C" {
12145    pub fn pthread_atfork(
12146        __prepare: ::std::option::Option<unsafe extern "C" fn()>,
12147        __parent: ::std::option::Option<unsafe extern "C" fn()>,
12148        __child: ::std::option::Option<unsafe extern "C" fn()>,
12149    ) -> ::std::os::raw::c_int;
12150}
12151pub type fmpz = mp_limb_signed_t;
12152pub type fmpz_t = [fmpz; 1usize];
12153pub type fmpz_randstate_t = gmp_randstate_t;
12154extern "C" {
12155    pub static mut fmpz_arr: *mut __mpz_struct;
12156}
12157extern "C" {
12158    pub static mut fmpz_randstate: gmp_randstate_t;
12159}
12160#[repr(C)]
12161#[derive(Debug, Copy, Clone)]
12162pub struct fmpz_preinvn_struct {
12163    pub dinv: mp_ptr,
12164    pub n: mp_limb_signed_t,
12165    pub norm: mp_limb_t,
12166}
12167#[test]
12168fn bindgen_test_layout_fmpz_preinvn_struct() {
12169    assert_eq!(
12170        ::std::mem::size_of::<fmpz_preinvn_struct>(),
12171        24usize,
12172        concat!("Size of: ", stringify!(fmpz_preinvn_struct))
12173    );
12174    assert_eq!(
12175        ::std::mem::align_of::<fmpz_preinvn_struct>(),
12176        8usize,
12177        concat!("Alignment of ", stringify!(fmpz_preinvn_struct))
12178    );
12179    assert_eq!(
12180        unsafe { &(*(::std::ptr::null::<fmpz_preinvn_struct>())).dinv as *const _ as usize },
12181        0usize,
12182        concat!(
12183            "Offset of field: ",
12184            stringify!(fmpz_preinvn_struct),
12185            "::",
12186            stringify!(dinv)
12187        )
12188    );
12189    assert_eq!(
12190        unsafe { &(*(::std::ptr::null::<fmpz_preinvn_struct>())).n as *const _ as usize },
12191        8usize,
12192        concat!(
12193            "Offset of field: ",
12194            stringify!(fmpz_preinvn_struct),
12195            "::",
12196            stringify!(n)
12197        )
12198    );
12199    assert_eq!(
12200        unsafe { &(*(::std::ptr::null::<fmpz_preinvn_struct>())).norm as *const _ as usize },
12201        16usize,
12202        concat!(
12203            "Offset of field: ",
12204            stringify!(fmpz_preinvn_struct),
12205            "::",
12206            stringify!(norm)
12207        )
12208    );
12209}
12210pub type fmpz_preinvn_t = [fmpz_preinvn_struct; 1usize];
12211#[repr(C)]
12212#[derive(Debug, Copy, Clone)]
12213pub struct fmpz_block_header_s {
12214    pub count: ::std::os::raw::c_int,
12215    pub thread: pthread_t,
12216    pub address: *mut ::std::os::raw::c_void,
12217}
12218#[test]
12219fn bindgen_test_layout_fmpz_block_header_s() {
12220    assert_eq!(
12221        ::std::mem::size_of::<fmpz_block_header_s>(),
12222        24usize,
12223        concat!("Size of: ", stringify!(fmpz_block_header_s))
12224    );
12225    assert_eq!(
12226        ::std::mem::align_of::<fmpz_block_header_s>(),
12227        8usize,
12228        concat!("Alignment of ", stringify!(fmpz_block_header_s))
12229    );
12230    assert_eq!(
12231        unsafe { &(*(::std::ptr::null::<fmpz_block_header_s>())).count as *const _ as usize },
12232        0usize,
12233        concat!(
12234            "Offset of field: ",
12235            stringify!(fmpz_block_header_s),
12236            "::",
12237            stringify!(count)
12238        )
12239    );
12240    assert_eq!(
12241        unsafe { &(*(::std::ptr::null::<fmpz_block_header_s>())).thread as *const _ as usize },
12242        8usize,
12243        concat!(
12244            "Offset of field: ",
12245            stringify!(fmpz_block_header_s),
12246            "::",
12247            stringify!(thread)
12248        )
12249    );
12250    assert_eq!(
12251        unsafe { &(*(::std::ptr::null::<fmpz_block_header_s>())).address as *const _ as usize },
12252        16usize,
12253        concat!(
12254            "Offset of field: ",
12255            stringify!(fmpz_block_header_s),
12256            "::",
12257            stringify!(address)
12258        )
12259    );
12260}
12261extern "C" {
12262    pub fn _fmpz_new_mpz() -> *mut __mpz_struct;
12263}
12264extern "C" {
12265    pub fn _fmpz_clear_mpz(f: fmpz);
12266}
12267extern "C" {
12268    pub fn _fmpz_cleanup_mpz_content();
12269}
12270extern "C" {
12271    pub fn _fmpz_cleanup();
12272}
12273extern "C" {
12274    pub fn _fmpz_promote(f: *mut fmpz) -> *mut __mpz_struct;
12275}
12276extern "C" {
12277    pub fn _fmpz_promote_val(f: *mut fmpz) -> *mut __mpz_struct;
12278}
12279extern "C" {
12280    pub fn _fmpz_demote_val(f: *mut fmpz);
12281}
12282extern "C" {
12283    pub fn _fmpz_init_readonly_mpz(f: *mut fmpz, z: *mut __mpz_struct);
12284}
12285extern "C" {
12286    pub fn _fmpz_clear_readonly_mpz(arg1: *mut __mpz_struct);
12287}
12288extern "C" {
12289    pub fn fmpz_init2(f: *mut fmpz, limbs: mp_limb_t);
12290}
12291extern "C" {
12292    pub fn fmpz_randbits(f: *mut fmpz, state: *mut flint_rand_s, bits: mp_limb_t);
12293}
12294extern "C" {
12295    pub fn fmpz_randm(f: *mut fmpz, state: *mut flint_rand_s, m: *mut fmpz);
12296}
12297extern "C" {
12298    pub fn fmpz_randtest(f: *mut fmpz, state: *mut flint_rand_s, bits: mp_limb_t);
12299}
12300extern "C" {
12301    pub fn fmpz_randtest_unsigned(f: *mut fmpz, state: *mut flint_rand_s, bits: mp_limb_t);
12302}
12303extern "C" {
12304    pub fn fmpz_randtest_not_zero(f: *mut fmpz, state: *mut flint_rand_s, bits: mp_limb_t);
12305}
12306extern "C" {
12307    pub fn fmpz_randtest_mod(f: *mut fmpz, state: *mut flint_rand_s, m: *mut fmpz);
12308}
12309extern "C" {
12310    pub fn fmpz_randtest_mod_signed(f: *mut fmpz, state: *mut flint_rand_s, m: *mut fmpz);
12311}
12312extern "C" {
12313    pub fn fmpz_randprime(
12314        f: *mut fmpz,
12315        state: *mut flint_rand_s,
12316        bits: mp_limb_t,
12317        proved: ::std::os::raw::c_int,
12318    );
12319}
12320extern "C" {
12321    pub fn fmpz_get_si(f: *mut fmpz) -> mp_limb_signed_t;
12322}
12323extern "C" {
12324    pub fn fmpz_get_ui(f: *mut fmpz) -> mp_limb_t;
12325}
12326extern "C" {
12327    pub fn fmpz_set_signed_uiui(r: *mut fmpz, hi: mp_limb_t, lo: mp_limb_t);
12328}
12329extern "C" {
12330    pub fn fmpz_set_signed_uiuiui(r: *mut fmpz, hi: mp_limb_t, mid: mp_limb_t, lo: mp_limb_t);
12331}
12332extern "C" {
12333    pub fn fmpz_set_ui_array(out: *mut fmpz, in_: *const mp_limb_t, in_len: mp_limb_signed_t);
12334}
12335extern "C" {
12336    pub fn fmpz_get_ui_array(out: *mut mp_limb_t, out_len: mp_limb_signed_t, in_: *mut fmpz);
12337}
12338extern "C" {
12339    pub fn fmpz_get_mpz(x: *mut __mpz_struct, f: *mut fmpz);
12340}
12341extern "C" {
12342    pub fn fmpz_set_mpz(f: *mut fmpz, x: *mut __mpz_struct);
12343}
12344extern "C" {
12345    pub fn fmpz_get_d(f: *mut fmpz) -> f64;
12346}
12347extern "C" {
12348    pub fn fmpz_set_d(f: *mut fmpz, c: f64);
12349}
12350extern "C" {
12351    pub fn fmpz_get_mpf(x: *mut __mpf_struct, f: *mut fmpz);
12352}
12353extern "C" {
12354    pub fn fmpz_set_mpf(f: *mut fmpz, x: *mut __mpf_struct);
12355}
12356extern "C" {
12357    pub fn fmpz_get_mpfr(x: *mut __mpfr_struct, f: *mut fmpz, rnd: mpfr_rnd_t);
12358}
12359extern "C" {
12360    pub fn fmpz_get_mpn(n: *mut mp_ptr, n_in: *mut fmpz) -> ::std::os::raw::c_int;
12361}
12362extern "C" {
12363    pub fn fmpz_set_str(
12364        f: *mut fmpz,
12365        str: *const ::std::os::raw::c_char,
12366        b: ::std::os::raw::c_int,
12367    ) -> ::std::os::raw::c_int;
12368}
12369extern "C" {
12370    pub fn flint_mpz_init_set_readonly(z: *mut __mpz_struct, f: *mut fmpz);
12371}
12372extern "C" {
12373    pub fn flint_mpz_clear_readonly(z: *mut __mpz_struct);
12374}
12375extern "C" {
12376    pub fn fmpz_init_set_readonly(f: *mut fmpz, z: *mut __mpz_struct);
12377}
12378extern "C" {
12379    pub fn fmpz_clear_readonly(f: *mut fmpz);
12380}
12381extern "C" {
12382    pub fn fmpz_abs_fits_ui(f: *mut fmpz) -> ::std::os::raw::c_int;
12383}
12384extern "C" {
12385    pub fn fmpz_fits_si(f: *mut fmpz) -> ::std::os::raw::c_int;
12386}
12387extern "C" {
12388    pub fn fmpz_set(f: *mut fmpz, g: *mut fmpz);
12389}
12390extern "C" {
12391    pub fn fmpz_equal(f: *mut fmpz, g: *mut fmpz) -> ::std::os::raw::c_int;
12392}
12393extern "C" {
12394    pub fn fmpz_equal_si(f: *mut fmpz, g: mp_limb_signed_t) -> ::std::os::raw::c_int;
12395}
12396extern "C" {
12397    pub fn fmpz_equal_ui(f: *mut fmpz, g: mp_limb_t) -> ::std::os::raw::c_int;
12398}
12399extern "C" {
12400    pub fn fmpz_read(f: *mut fmpz) -> ::std::os::raw::c_int;
12401}
12402extern "C" {
12403    pub fn fmpz_fread(file: *mut FILE, f: *mut fmpz) -> ::std::os::raw::c_int;
12404}
12405extern "C" {
12406    pub fn fmpz_inp_raw(x: *mut fmpz, fin: *mut FILE) -> usize;
12407}
12408extern "C" {
12409    pub fn fmpz_print(x: *mut fmpz) -> ::std::os::raw::c_int;
12410}
12411extern "C" {
12412    pub fn fmpz_fprint(file: *mut FILE, x: *mut fmpz) -> ::std::os::raw::c_int;
12413}
12414extern "C" {
12415    pub fn fmpz_out_raw(fout: *mut FILE, x: *mut fmpz) -> usize;
12416}
12417extern "C" {
12418    pub fn fmpz_sizeinbase(f: *mut fmpz, b: ::std::os::raw::c_int) -> usize;
12419}
12420extern "C" {
12421    pub fn fmpz_get_str(
12422        str: *mut ::std::os::raw::c_char,
12423        b: ::std::os::raw::c_int,
12424        f: *mut fmpz,
12425    ) -> *mut ::std::os::raw::c_char;
12426}
12427extern "C" {
12428    pub fn fmpz_cmp(f: *mut fmpz, g: *mut fmpz) -> ::std::os::raw::c_int;
12429}
12430extern "C" {
12431    pub fn fmpz_cmp_ui(f: *mut fmpz, g: mp_limb_t) -> ::std::os::raw::c_int;
12432}
12433extern "C" {
12434    pub fn fmpz_cmp_si(f: *mut fmpz, g: mp_limb_signed_t) -> ::std::os::raw::c_int;
12435}
12436extern "C" {
12437    pub fn fmpz_cmpabs(f: *mut fmpz, g: *mut fmpz) -> ::std::os::raw::c_int;
12438}
12439extern "C" {
12440    pub fn fmpz_size(f: *mut fmpz) -> mp_size_t;
12441}
12442extern "C" {
12443    pub fn fmpz_sgn(f: *mut fmpz) -> ::std::os::raw::c_int;
12444}
12445extern "C" {
12446    pub fn fmpz_bits(f: *mut fmpz) -> mp_limb_t;
12447}
12448extern "C" {
12449    pub fn fmpz_val2(x: *mut fmpz) -> mp_limb_t;
12450}
12451extern "C" {
12452    pub fn fmpz_abs(f1: *mut fmpz, f2: *mut fmpz);
12453}
12454extern "C" {
12455    pub fn fmpz_add(f: *mut fmpz, g: *mut fmpz, h: *mut fmpz);
12456}
12457extern "C" {
12458    pub fn fmpz_sub(f: *mut fmpz, g: *mut fmpz, h: *mut fmpz);
12459}
12460extern "C" {
12461    pub fn fmpz_mul_ui(f: *mut fmpz, g: *mut fmpz, x: mp_limb_t);
12462}
12463extern "C" {
12464    pub fn fmpz_mul_si(f: *mut fmpz, g: *mut fmpz, x: mp_limb_signed_t);
12465}
12466extern "C" {
12467    pub fn fmpz_mul(f: *mut fmpz, g: *mut fmpz, h: *mut fmpz);
12468}
12469extern "C" {
12470    pub fn fmpz_mul_2exp(f: *mut fmpz, g: *mut fmpz, exp: mp_limb_t);
12471}
12472extern "C" {
12473    pub fn fmpz_add_ui(f: *mut fmpz, g: *mut fmpz, x: mp_limb_t);
12474}
12475extern "C" {
12476    pub fn fmpz_sub_ui(f: *mut fmpz, g: *mut fmpz, x: mp_limb_t);
12477}
12478extern "C" {
12479    pub fn fmpz_addmul_ui(f: *mut fmpz, g: *mut fmpz, x: mp_limb_t);
12480}
12481extern "C" {
12482    pub fn fmpz_submul_ui(f: *mut fmpz, g: *mut fmpz, x: mp_limb_t);
12483}
12484extern "C" {
12485    pub fn fmpz_addmul(f: *mut fmpz, g: *mut fmpz, h: *mut fmpz);
12486}
12487extern "C" {
12488    pub fn fmpz_submul(f: *mut fmpz, g: *mut fmpz, h: *mut fmpz);
12489}
12490extern "C" {
12491    pub fn fmpz_fmma(f: *mut fmpz, a: *mut fmpz, b: *mut fmpz, c: *mut fmpz, d: *mut fmpz);
12492}
12493extern "C" {
12494    pub fn fmpz_fmms(f: *mut fmpz, a: *mut fmpz, b: *mut fmpz, c: *mut fmpz, d: *mut fmpz);
12495}
12496extern "C" {
12497    pub fn fmpz_pow_ui(f: *mut fmpz, g: *mut fmpz, exp: mp_limb_t);
12498}
12499extern "C" {
12500    pub fn fmpz_pow_fmpz(a: *mut fmpz, b: *mut fmpz, e: *mut fmpz) -> ::std::os::raw::c_int;
12501}
12502extern "C" {
12503    pub fn fmpz_powm_ui(f: *mut fmpz, g: *mut fmpz, exp: mp_limb_t, m: *mut fmpz);
12504}
12505extern "C" {
12506    pub fn fmpz_powm(f: *mut fmpz, g: *mut fmpz, e: *mut fmpz, m: *mut fmpz);
12507}
12508extern "C" {
12509    pub fn fmpz_setbit(f: *mut fmpz, i: mp_limb_t);
12510}
12511extern "C" {
12512    pub fn fmpz_tstbit(f: *mut fmpz, i: mp_limb_t) -> ::std::os::raw::c_int;
12513}
12514extern "C" {
12515    pub fn fmpz_clrbit(f: *mut fmpz, i: mp_limb_t);
12516}
12517extern "C" {
12518    pub fn fmpz_complement(r: *mut fmpz, f: *mut fmpz);
12519}
12520extern "C" {
12521    pub fn fmpz_combit(f: *mut fmpz, i: mp_limb_t);
12522}
12523extern "C" {
12524    pub fn fmpz_and(r: *mut fmpz, a: *mut fmpz, b: *mut fmpz);
12525}
12526extern "C" {
12527    pub fn fmpz_or(r: *mut fmpz, a: *mut fmpz, b: *mut fmpz);
12528}
12529extern "C" {
12530    pub fn fmpz_xor(r: *mut fmpz, a: *mut fmpz, b: *mut fmpz);
12531}
12532extern "C" {
12533    pub fn fmpz_popcnt(c: *mut fmpz) -> mp_limb_t;
12534}
12535extern "C" {
12536    pub fn fmpz_dlog(x: *mut fmpz) -> f64;
12537}
12538extern "C" {
12539    pub fn fmpz_flog(x: *mut fmpz, b: *mut fmpz) -> mp_limb_signed_t;
12540}
12541extern "C" {
12542    pub fn fmpz_flog_ui(x: *mut fmpz, b: mp_limb_t) -> mp_limb_signed_t;
12543}
12544extern "C" {
12545    pub fn fmpz_clog(x: *mut fmpz, b: *mut fmpz) -> mp_limb_signed_t;
12546}
12547extern "C" {
12548    pub fn fmpz_clog_ui(x: *mut fmpz, b: mp_limb_t) -> mp_limb_signed_t;
12549}
12550extern "C" {
12551    pub fn fmpz_sqrtmod(b: *mut fmpz, a: *mut fmpz, p: *mut fmpz) -> ::std::os::raw::c_int;
12552}
12553extern "C" {
12554    pub fn fmpz_sqrt(f: *mut fmpz, g: *mut fmpz);
12555}
12556extern "C" {
12557    pub fn fmpz_is_square(f: *mut fmpz) -> ::std::os::raw::c_int;
12558}
12559extern "C" {
12560    pub fn fmpz_root(r: *mut fmpz, f: *mut fmpz, n: mp_limb_signed_t);
12561}
12562extern "C" {
12563    pub fn fmpz_is_perfect_power(root: *mut fmpz, f: *mut fmpz) -> ::std::os::raw::c_int;
12564}
12565extern "C" {
12566    pub fn fmpz_sqrtrem(f: *mut fmpz, r: *mut fmpz, g: *mut fmpz);
12567}
12568extern "C" {
12569    pub fn fmpz_fdiv_ui(g: *mut fmpz, h: mp_limb_t) -> mp_limb_t;
12570}
12571extern "C" {
12572    pub fn fmpz_mod_ui(f: *mut fmpz, g: *mut fmpz, h: mp_limb_t) -> mp_limb_t;
12573}
12574extern "C" {
12575    pub fn fmpz_mod(f: *mut fmpz, g: *mut fmpz, h: *mut fmpz);
12576}
12577extern "C" {
12578    pub fn fmpz_smod(f: *mut fmpz, g: *mut fmpz, h: *mut fmpz);
12579}
12580extern "C" {
12581    pub fn fmpz_gcd(f: *mut fmpz, g: *mut fmpz, h: *mut fmpz);
12582}
12583extern "C" {
12584    pub fn fmpz_lcm(f: *mut fmpz, g: *mut fmpz, h: *mut fmpz);
12585}
12586extern "C" {
12587    pub fn fmpz_gcdinv(d: *mut fmpz, a: *mut fmpz, f: *mut fmpz, g: *mut fmpz);
12588}
12589extern "C" {
12590    pub fn fmpz_xgcd(d: *mut fmpz, a: *mut fmpz, b: *mut fmpz, f: *mut fmpz, g: *mut fmpz);
12591}
12592extern "C" {
12593    pub fn fmpz_xgcd_partial(
12594        co2: *mut fmpz,
12595        co1: *mut fmpz,
12596        r2: *mut fmpz,
12597        r1: *mut fmpz,
12598        L: *mut fmpz,
12599    );
12600}
12601extern "C" {
12602    pub fn fmpz_invmod(f: *mut fmpz, g: *mut fmpz, h: *mut fmpz) -> ::std::os::raw::c_int;
12603}
12604extern "C" {
12605    pub fn fmpz_jacobi(a: *mut fmpz, p: *mut fmpz) -> ::std::os::raw::c_int;
12606}
12607extern "C" {
12608    pub fn fmpz_divides_mod_list(
12609        xstart: *mut fmpz,
12610        xstride: *mut fmpz,
12611        xlength: *mut fmpz,
12612        a: *mut fmpz,
12613        b: *mut fmpz,
12614        n: *mut fmpz,
12615    );
12616}
12617extern "C" {
12618    pub fn _fmpz_remove(x: *mut fmpz, f: *mut fmpz, finv: f64) -> mp_limb_signed_t;
12619}
12620extern "C" {
12621    pub fn fmpz_remove(rop: *mut fmpz, op: *mut fmpz, f: *mut fmpz) -> mp_limb_signed_t;
12622}
12623extern "C" {
12624    pub fn fmpz_divexact(f: *mut fmpz, g: *mut fmpz, h: *mut fmpz);
12625}
12626extern "C" {
12627    pub fn fmpz_divexact_si(f: *mut fmpz, g: *mut fmpz, h: mp_limb_signed_t);
12628}
12629extern "C" {
12630    pub fn fmpz_divexact_ui(f: *mut fmpz, g: *mut fmpz, h: mp_limb_t);
12631}
12632extern "C" {
12633    pub fn fmpz_divisible(f: *mut fmpz, g: *mut fmpz) -> ::std::os::raw::c_int;
12634}
12635extern "C" {
12636    pub fn fmpz_divisible_si(f: *mut fmpz, g: mp_limb_signed_t) -> ::std::os::raw::c_int;
12637}
12638extern "C" {
12639    pub fn fmpz_cdiv_qr(f: *mut fmpz, s: *mut fmpz, g: *mut fmpz, h: *mut fmpz);
12640}
12641extern "C" {
12642    pub fn fmpz_cdiv_q(f: *mut fmpz, g: *mut fmpz, h: *mut fmpz);
12643}
12644extern "C" {
12645    pub fn fmpz_cdiv_q_si(f: *mut fmpz, g: *mut fmpz, h: mp_limb_signed_t);
12646}
12647extern "C" {
12648    pub fn fmpz_cdiv_q_ui(f: *mut fmpz, g: *mut fmpz, h: mp_limb_t);
12649}
12650extern "C" {
12651    pub fn fmpz_cdiv_q_2exp(f: *mut fmpz, g: *mut fmpz, exp: mp_limb_t);
12652}
12653extern "C" {
12654    pub fn fmpz_cdiv_r_2exp(f: *mut fmpz, g: *mut fmpz, exp: mp_limb_t);
12655}
12656extern "C" {
12657    pub fn fmpz_cdiv_ui(g: *mut fmpz, h: mp_limb_t) -> mp_limb_t;
12658}
12659extern "C" {
12660    pub fn fmpz_fdiv_qr(f: *mut fmpz, s: *mut fmpz, g: *mut fmpz, h: *mut fmpz);
12661}
12662extern "C" {
12663    pub fn fmpz_fdiv_qr_preinvn(
12664        f: *mut fmpz,
12665        s: *mut fmpz,
12666        g: *mut fmpz,
12667        h: *mut fmpz,
12668        inv: *mut fmpz_preinvn_struct,
12669    );
12670}
12671extern "C" {
12672    pub fn fmpz_fdiv_q(f: *mut fmpz, g: *mut fmpz, h: *mut fmpz);
12673}
12674extern "C" {
12675    pub fn fmpz_fdiv_r(f: *mut fmpz, g: *mut fmpz, h: *mut fmpz);
12676}
12677extern "C" {
12678    pub fn fmpz_fdiv_q_ui(f: *mut fmpz, g: *mut fmpz, h: mp_limb_t);
12679}
12680extern "C" {
12681    pub fn fmpz_fdiv_q_si(f: *mut fmpz, g: *mut fmpz, h: mp_limb_signed_t);
12682}
12683extern "C" {
12684    pub fn fmpz_fdiv_q_2exp(f: *mut fmpz, g: *mut fmpz, exp: mp_limb_t);
12685}
12686extern "C" {
12687    pub fn fmpz_fdiv_r_2exp(f: *mut fmpz, g: *mut fmpz, exp: mp_limb_t);
12688}
12689extern "C" {
12690    pub fn fmpz_tdiv_q(f: *mut fmpz, g: *mut fmpz, h: *mut fmpz);
12691}
12692extern "C" {
12693    pub fn fmpz_tdiv_qr(f: *mut fmpz, s: *mut fmpz, g: *mut fmpz, h: *mut fmpz);
12694}
12695extern "C" {
12696    pub fn fmpz_tdiv_q_ui(f: *mut fmpz, g: *mut fmpz, h: mp_limb_t);
12697}
12698extern "C" {
12699    pub fn fmpz_tdiv_q_si(f: *mut fmpz, g: *mut fmpz, h: mp_limb_signed_t);
12700}
12701extern "C" {
12702    pub fn fmpz_tdiv_r_2exp(f: *mut fmpz, g: *mut fmpz, exp: mp_limb_t);
12703}
12704extern "C" {
12705    pub fn fmpz_tdiv_ui(g: *mut fmpz, h: mp_limb_t) -> mp_limb_t;
12706}
12707extern "C" {
12708    pub fn fmpz_tdiv_q_2exp(f: *mut fmpz, g: *mut fmpz, exp: mp_limb_t);
12709}
12710extern "C" {
12711    pub fn fmpz_preinvn_init(inv: *mut fmpz_preinvn_struct, f: *mut fmpz);
12712}
12713extern "C" {
12714    pub fn fmpz_preinvn_clear(inv: *mut fmpz_preinvn_struct);
12715}
12716extern "C" {
12717    pub fn fmpz_get_d_2exp(exp: *mut mp_limb_signed_t, f: *mut fmpz) -> f64;
12718}
12719extern "C" {
12720    pub fn fmpz_set_d_2exp(f: *mut fmpz, m: f64, exp: mp_limb_signed_t);
12721}
12722extern "C" {
12723    pub fn fmpz_mul_tdiv_q_2exp(f: *mut fmpz, g: *mut fmpz, h: *mut fmpz, exp: mp_limb_t);
12724}
12725extern "C" {
12726    pub fn fmpz_mul_si_tdiv_q_2exp(f: *mut fmpz, g: *mut fmpz, x: mp_limb_signed_t, exp: mp_limb_t);
12727}
12728extern "C" {
12729    pub fn fmpz_fac_ui(f: *mut fmpz, n: mp_limb_t);
12730}
12731extern "C" {
12732    pub fn fmpz_fib_ui(f: *mut fmpz, n: mp_limb_t);
12733}
12734extern "C" {
12735    pub fn fmpz_bin_uiui(res: *mut fmpz, n: mp_limb_t, k: mp_limb_t);
12736}
12737extern "C" {
12738    pub fn _fmpz_rfac_ui(r: *mut fmpz, x: *mut fmpz, a: mp_limb_t, b: mp_limb_t);
12739}
12740extern "C" {
12741    pub fn fmpz_rfac_ui(r: *mut fmpz, x: *mut fmpz, n: mp_limb_t);
12742}
12743extern "C" {
12744    pub fn fmpz_rfac_uiui(r: *mut fmpz, x: mp_limb_t, n: mp_limb_t);
12745}
12746extern "C" {
12747    pub fn fmpz_bit_pack(
12748        arr: mp_ptr,
12749        shift: mp_limb_t,
12750        bits: mp_limb_t,
12751        coeff: *mut fmpz,
12752        negate: ::std::os::raw::c_int,
12753        borrow: ::std::os::raw::c_int,
12754    ) -> ::std::os::raw::c_int;
12755}
12756extern "C" {
12757    pub fn fmpz_bit_unpack(
12758        coeff: *mut fmpz,
12759        arr: mp_srcptr,
12760        shift: mp_limb_t,
12761        bits: mp_limb_t,
12762        negate: ::std::os::raw::c_int,
12763        borrow: ::std::os::raw::c_int,
12764    ) -> ::std::os::raw::c_int;
12765}
12766extern "C" {
12767    pub fn fmpz_bit_unpack_unsigned(
12768        coeff: *mut fmpz,
12769        arr: mp_srcptr,
12770        shift: mp_limb_t,
12771        bits: mp_limb_t,
12772    );
12773}
12774extern "C" {
12775    pub fn _fmpz_CRT_ui_precomp(
12776        out: *mut fmpz,
12777        r1: *mut fmpz,
12778        m1: *mut fmpz,
12779        r2: mp_limb_t,
12780        m2: mp_limb_t,
12781        m2inv: mp_limb_t,
12782        m1m2: *mut fmpz,
12783        c: mp_limb_t,
12784        sign: ::std::os::raw::c_int,
12785    );
12786}
12787extern "C" {
12788    pub fn fmpz_CRT_ui(
12789        out: *mut fmpz,
12790        r1: *mut fmpz,
12791        m1: *mut fmpz,
12792        r2: mp_limb_t,
12793        m2: mp_limb_t,
12794        sign: ::std::os::raw::c_int,
12795    );
12796}
12797#[repr(C)]
12798#[derive(Debug, Copy, Clone)]
12799pub struct fmpz_comb_struct {
12800    pub primes: *const mp_limb_t,
12801    pub num_primes: mp_limb_signed_t,
12802    pub n: mp_limb_signed_t,
12803    pub comb: *mut *mut fmpz,
12804    pub res: *mut *mut fmpz,
12805    pub mod_: *mut nmod_t,
12806}
12807#[test]
12808fn bindgen_test_layout_fmpz_comb_struct() {
12809    assert_eq!(
12810        ::std::mem::size_of::<fmpz_comb_struct>(),
12811        48usize,
12812        concat!("Size of: ", stringify!(fmpz_comb_struct))
12813    );
12814    assert_eq!(
12815        ::std::mem::align_of::<fmpz_comb_struct>(),
12816        8usize,
12817        concat!("Alignment of ", stringify!(fmpz_comb_struct))
12818    );
12819    assert_eq!(
12820        unsafe { &(*(::std::ptr::null::<fmpz_comb_struct>())).primes as *const _ as usize },
12821        0usize,
12822        concat!(
12823            "Offset of field: ",
12824            stringify!(fmpz_comb_struct),
12825            "::",
12826            stringify!(primes)
12827        )
12828    );
12829    assert_eq!(
12830        unsafe { &(*(::std::ptr::null::<fmpz_comb_struct>())).num_primes as *const _ as usize },
12831        8usize,
12832        concat!(
12833            "Offset of field: ",
12834            stringify!(fmpz_comb_struct),
12835            "::",
12836            stringify!(num_primes)
12837        )
12838    );
12839    assert_eq!(
12840        unsafe { &(*(::std::ptr::null::<fmpz_comb_struct>())).n as *const _ as usize },
12841        16usize,
12842        concat!(
12843            "Offset of field: ",
12844            stringify!(fmpz_comb_struct),
12845            "::",
12846            stringify!(n)
12847        )
12848    );
12849    assert_eq!(
12850        unsafe { &(*(::std::ptr::null::<fmpz_comb_struct>())).comb as *const _ as usize },
12851        24usize,
12852        concat!(
12853            "Offset of field: ",
12854            stringify!(fmpz_comb_struct),
12855            "::",
12856            stringify!(comb)
12857        )
12858    );
12859    assert_eq!(
12860        unsafe { &(*(::std::ptr::null::<fmpz_comb_struct>())).res as *const _ as usize },
12861        32usize,
12862        concat!(
12863            "Offset of field: ",
12864            stringify!(fmpz_comb_struct),
12865            "::",
12866            stringify!(res)
12867        )
12868    );
12869    assert_eq!(
12870        unsafe { &(*(::std::ptr::null::<fmpz_comb_struct>())).mod_ as *const _ as usize },
12871        40usize,
12872        concat!(
12873            "Offset of field: ",
12874            stringify!(fmpz_comb_struct),
12875            "::",
12876            stringify!(mod_)
12877        )
12878    );
12879}
12880#[repr(C)]
12881#[derive(Debug, Copy, Clone)]
12882pub struct fmpz_comb_temp_struct {
12883    pub n: mp_limb_signed_t,
12884    pub comb_temp: *mut *mut fmpz,
12885    pub temp: fmpz_t,
12886    pub temp2: fmpz_t,
12887}
12888#[test]
12889fn bindgen_test_layout_fmpz_comb_temp_struct() {
12890    assert_eq!(
12891        ::std::mem::size_of::<fmpz_comb_temp_struct>(),
12892        32usize,
12893        concat!("Size of: ", stringify!(fmpz_comb_temp_struct))
12894    );
12895    assert_eq!(
12896        ::std::mem::align_of::<fmpz_comb_temp_struct>(),
12897        8usize,
12898        concat!("Alignment of ", stringify!(fmpz_comb_temp_struct))
12899    );
12900    assert_eq!(
12901        unsafe { &(*(::std::ptr::null::<fmpz_comb_temp_struct>())).n as *const _ as usize },
12902        0usize,
12903        concat!(
12904            "Offset of field: ",
12905            stringify!(fmpz_comb_temp_struct),
12906            "::",
12907            stringify!(n)
12908        )
12909    );
12910    assert_eq!(
12911        unsafe { &(*(::std::ptr::null::<fmpz_comb_temp_struct>())).comb_temp as *const _ as usize },
12912        8usize,
12913        concat!(
12914            "Offset of field: ",
12915            stringify!(fmpz_comb_temp_struct),
12916            "::",
12917            stringify!(comb_temp)
12918        )
12919    );
12920    assert_eq!(
12921        unsafe { &(*(::std::ptr::null::<fmpz_comb_temp_struct>())).temp as *const _ as usize },
12922        16usize,
12923        concat!(
12924            "Offset of field: ",
12925            stringify!(fmpz_comb_temp_struct),
12926            "::",
12927            stringify!(temp)
12928        )
12929    );
12930    assert_eq!(
12931        unsafe { &(*(::std::ptr::null::<fmpz_comb_temp_struct>())).temp2 as *const _ as usize },
12932        24usize,
12933        concat!(
12934            "Offset of field: ",
12935            stringify!(fmpz_comb_temp_struct),
12936            "::",
12937            stringify!(temp2)
12938        )
12939    );
12940}
12941pub type fmpz_comb_t = [fmpz_comb_struct; 1usize];
12942pub type fmpz_comb_temp_t = [fmpz_comb_temp_struct; 1usize];
12943extern "C" {
12944    pub fn fmpz_comb_temp_init(temp: *mut fmpz_comb_temp_struct, comb: *mut fmpz_comb_struct);
12945}
12946extern "C" {
12947    pub fn fmpz_comb_temp_clear(temp: *mut fmpz_comb_temp_struct);
12948}
12949extern "C" {
12950    pub fn fmpz_comb_init(
12951        comb: *mut fmpz_comb_struct,
12952        primes: mp_srcptr,
12953        num_primes: mp_limb_signed_t,
12954    );
12955}
12956extern "C" {
12957    pub fn fmpz_comb_clear(comb: *mut fmpz_comb_struct);
12958}
12959extern "C" {
12960    pub fn fmpz_multi_mod_ui(
12961        out: *mut mp_limb_t,
12962        in_: *mut fmpz,
12963        comb: *mut fmpz_comb_struct,
12964        temp: *mut fmpz_comb_temp_struct,
12965    );
12966}
12967extern "C" {
12968    pub fn fmpz_multi_CRT_ui(
12969        output: *mut fmpz,
12970        residues: mp_srcptr,
12971        comb: *mut fmpz_comb_struct,
12972        temp: *mut fmpz_comb_temp_struct,
12973        sign: ::std::os::raw::c_int,
12974    );
12975}
12976extern "C" {
12977    pub fn fmpz_CRT(
12978        out: *mut fmpz,
12979        r1: *mut fmpz,
12980        m1: *mut fmpz,
12981        r2: *mut fmpz,
12982        m2: *mut fmpz,
12983        sign: ::std::os::raw::c_int,
12984    );
12985}
12986#[repr(C)]
12987#[derive(Debug, Copy, Clone)]
12988pub struct _fmpz_multi_crt_prog_instr {
12989    pub a_idx: mp_limb_signed_t,
12990    pub b_idx: mp_limb_signed_t,
12991    pub c_idx: mp_limb_signed_t,
12992    pub idem: fmpz_t,
12993    pub modulus: fmpz_t,
12994}
12995#[test]
12996fn bindgen_test_layout__fmpz_multi_crt_prog_instr() {
12997    assert_eq!(
12998        ::std::mem::size_of::<_fmpz_multi_crt_prog_instr>(),
12999        40usize,
13000        concat!("Size of: ", stringify!(_fmpz_multi_crt_prog_instr))
13001    );
13002    assert_eq!(
13003        ::std::mem::align_of::<_fmpz_multi_crt_prog_instr>(),
13004        8usize,
13005        concat!("Alignment of ", stringify!(_fmpz_multi_crt_prog_instr))
13006    );
13007    assert_eq!(
13008        unsafe {
13009            &(*(::std::ptr::null::<_fmpz_multi_crt_prog_instr>())).a_idx as *const _ as usize
13010        },
13011        0usize,
13012        concat!(
13013            "Offset of field: ",
13014            stringify!(_fmpz_multi_crt_prog_instr),
13015            "::",
13016            stringify!(a_idx)
13017        )
13018    );
13019    assert_eq!(
13020        unsafe {
13021            &(*(::std::ptr::null::<_fmpz_multi_crt_prog_instr>())).b_idx as *const _ as usize
13022        },
13023        8usize,
13024        concat!(
13025            "Offset of field: ",
13026            stringify!(_fmpz_multi_crt_prog_instr),
13027            "::",
13028            stringify!(b_idx)
13029        )
13030    );
13031    assert_eq!(
13032        unsafe {
13033            &(*(::std::ptr::null::<_fmpz_multi_crt_prog_instr>())).c_idx as *const _ as usize
13034        },
13035        16usize,
13036        concat!(
13037            "Offset of field: ",
13038            stringify!(_fmpz_multi_crt_prog_instr),
13039            "::",
13040            stringify!(c_idx)
13041        )
13042    );
13043    assert_eq!(
13044        unsafe { &(*(::std::ptr::null::<_fmpz_multi_crt_prog_instr>())).idem as *const _ as usize },
13045        24usize,
13046        concat!(
13047            "Offset of field: ",
13048            stringify!(_fmpz_multi_crt_prog_instr),
13049            "::",
13050            stringify!(idem)
13051        )
13052    );
13053    assert_eq!(
13054        unsafe {
13055            &(*(::std::ptr::null::<_fmpz_multi_crt_prog_instr>())).modulus as *const _ as usize
13056        },
13057        32usize,
13058        concat!(
13059            "Offset of field: ",
13060            stringify!(_fmpz_multi_crt_prog_instr),
13061            "::",
13062            stringify!(modulus)
13063        )
13064    );
13065}
13066#[repr(C)]
13067#[derive(Debug, Copy, Clone)]
13068pub struct fmpz_multi_crt_struct {
13069    pub prog: *mut _fmpz_multi_crt_prog_instr,
13070    pub length: mp_limb_signed_t,
13071    pub alloc: mp_limb_signed_t,
13072    pub localsize: mp_limb_signed_t,
13073    pub temp1loc: mp_limb_signed_t,
13074    pub temp2loc: mp_limb_signed_t,
13075    pub good: ::std::os::raw::c_int,
13076}
13077#[test]
13078fn bindgen_test_layout_fmpz_multi_crt_struct() {
13079    assert_eq!(
13080        ::std::mem::size_of::<fmpz_multi_crt_struct>(),
13081        56usize,
13082        concat!("Size of: ", stringify!(fmpz_multi_crt_struct))
13083    );
13084    assert_eq!(
13085        ::std::mem::align_of::<fmpz_multi_crt_struct>(),
13086        8usize,
13087        concat!("Alignment of ", stringify!(fmpz_multi_crt_struct))
13088    );
13089    assert_eq!(
13090        unsafe { &(*(::std::ptr::null::<fmpz_multi_crt_struct>())).prog as *const _ as usize },
13091        0usize,
13092        concat!(
13093            "Offset of field: ",
13094            stringify!(fmpz_multi_crt_struct),
13095            "::",
13096            stringify!(prog)
13097        )
13098    );
13099    assert_eq!(
13100        unsafe { &(*(::std::ptr::null::<fmpz_multi_crt_struct>())).length as *const _ as usize },
13101        8usize,
13102        concat!(
13103            "Offset of field: ",
13104            stringify!(fmpz_multi_crt_struct),
13105            "::",
13106            stringify!(length)
13107        )
13108    );
13109    assert_eq!(
13110        unsafe { &(*(::std::ptr::null::<fmpz_multi_crt_struct>())).alloc as *const _ as usize },
13111        16usize,
13112        concat!(
13113            "Offset of field: ",
13114            stringify!(fmpz_multi_crt_struct),
13115            "::",
13116            stringify!(alloc)
13117        )
13118    );
13119    assert_eq!(
13120        unsafe { &(*(::std::ptr::null::<fmpz_multi_crt_struct>())).localsize as *const _ as usize },
13121        24usize,
13122        concat!(
13123            "Offset of field: ",
13124            stringify!(fmpz_multi_crt_struct),
13125            "::",
13126            stringify!(localsize)
13127        )
13128    );
13129    assert_eq!(
13130        unsafe { &(*(::std::ptr::null::<fmpz_multi_crt_struct>())).temp1loc as *const _ as usize },
13131        32usize,
13132        concat!(
13133            "Offset of field: ",
13134            stringify!(fmpz_multi_crt_struct),
13135            "::",
13136            stringify!(temp1loc)
13137        )
13138    );
13139    assert_eq!(
13140        unsafe { &(*(::std::ptr::null::<fmpz_multi_crt_struct>())).temp2loc as *const _ as usize },
13141        40usize,
13142        concat!(
13143            "Offset of field: ",
13144            stringify!(fmpz_multi_crt_struct),
13145            "::",
13146            stringify!(temp2loc)
13147        )
13148    );
13149    assert_eq!(
13150        unsafe { &(*(::std::ptr::null::<fmpz_multi_crt_struct>())).good as *const _ as usize },
13151        48usize,
13152        concat!(
13153            "Offset of field: ",
13154            stringify!(fmpz_multi_crt_struct),
13155            "::",
13156            stringify!(good)
13157        )
13158    );
13159}
13160pub type fmpz_multi_crt_t = [fmpz_multi_crt_struct; 1usize];
13161extern "C" {
13162    pub fn fmpz_multi_crt_init(CRT: *mut fmpz_multi_crt_struct);
13163}
13164extern "C" {
13165    pub fn fmpz_multi_crt_precompute(
13166        CRT: *mut fmpz_multi_crt_struct,
13167        moduli: *const fmpz,
13168        len: mp_limb_signed_t,
13169    ) -> ::std::os::raw::c_int;
13170}
13171extern "C" {
13172    pub fn fmpz_multi_crt_precompute_p(
13173        CRT: *mut fmpz_multi_crt_struct,
13174        moduli: *const *const fmpz,
13175        len: mp_limb_signed_t,
13176    ) -> ::std::os::raw::c_int;
13177}
13178extern "C" {
13179    pub fn fmpz_multi_crt_precomp(
13180        output: *mut fmpz,
13181        P: *mut fmpz_multi_crt_struct,
13182        inputs: *const fmpz,
13183    );
13184}
13185extern "C" {
13186    pub fn fmpz_multi_crt_precomp_p(
13187        output: *mut fmpz,
13188        P: *mut fmpz_multi_crt_struct,
13189        inputs: *const *const fmpz,
13190    );
13191}
13192extern "C" {
13193    pub fn fmpz_multi_crt(
13194        output: *mut fmpz,
13195        moduli: *const fmpz,
13196        values: *const fmpz,
13197        len: mp_limb_signed_t,
13198    ) -> ::std::os::raw::c_int;
13199}
13200extern "C" {
13201    pub fn fmpz_multi_crt_clear(P: *mut fmpz_multi_crt_struct);
13202}
13203extern "C" {
13204    pub fn _fmpz_multi_crt_run(
13205        outputs: *mut fmpz,
13206        CRT: *mut fmpz_multi_crt_struct,
13207        inputs: *const fmpz,
13208    );
13209}
13210extern "C" {
13211    pub fn _fmpz_multi_crt_run_p(
13212        outputs: *mut fmpz,
13213        CRT: *mut fmpz_multi_crt_struct,
13214        inputs: *const *const fmpz,
13215    );
13216}
13217extern "C" {
13218    pub fn fmpz_abs_ubound_ui_2exp(
13219        exp: *mut mp_limb_signed_t,
13220        x: *mut fmpz,
13221        bits: ::std::os::raw::c_int,
13222    ) -> mp_limb_t;
13223}
13224extern "C" {
13225    pub fn fmpz_abs_lbound_ui_2exp(
13226        exp: *mut mp_limb_signed_t,
13227        x: *mut fmpz,
13228        bits: ::std::os::raw::c_int,
13229    ) -> mp_limb_t;
13230}
13231extern "C" {
13232    pub fn fmpz_lucas_chain(
13233        Vm: *mut fmpz,
13234        Vm1: *mut fmpz,
13235        A: *mut fmpz,
13236        m: *mut fmpz,
13237        n: *mut fmpz,
13238    );
13239}
13240extern "C" {
13241    pub fn fmpz_lucas_chain_full(
13242        Vm: *mut fmpz,
13243        Vm1: *mut fmpz,
13244        A: *mut fmpz,
13245        B: *mut fmpz,
13246        m: *mut fmpz,
13247        n: *mut fmpz,
13248    );
13249}
13250extern "C" {
13251    pub fn fmpz_lucas_chain_double(
13252        U2m: *mut fmpz,
13253        U2m1: *mut fmpz,
13254        Um: *mut fmpz,
13255        Um1: *mut fmpz,
13256        A: *mut fmpz,
13257        B: *mut fmpz,
13258        n: *mut fmpz,
13259    );
13260}
13261extern "C" {
13262    pub fn fmpz_lucas_chain_add(
13263        Umn: *mut fmpz,
13264        Umn1: *mut fmpz,
13265        Um: *mut fmpz,
13266        Um1: *mut fmpz,
13267        Un: *mut fmpz,
13268        Un1: *mut fmpz,
13269        A: *mut fmpz,
13270        B: *mut fmpz,
13271        n: *mut fmpz,
13272    );
13273}
13274extern "C" {
13275    pub fn fmpz_lucas_chain_mul(
13276        Ukm: *mut fmpz,
13277        Ukm1: *mut fmpz,
13278        Um: *mut fmpz,
13279        Um1: *mut fmpz,
13280        A: *mut fmpz,
13281        B: *mut fmpz,
13282        k: *mut fmpz,
13283        n: *mut fmpz,
13284    );
13285}
13286extern "C" {
13287    pub fn fmpz_lucas_chain_VtoU(
13288        Um: *mut fmpz,
13289        Um1: *mut fmpz,
13290        Vm: *mut fmpz,
13291        Vm1: *mut fmpz,
13292        A: *mut fmpz,
13293        B: *mut fmpz,
13294        Dinv: *mut fmpz,
13295        n: *mut fmpz,
13296    );
13297}
13298extern "C" {
13299    pub fn fmpz_is_probabprime_lucas(n: *mut fmpz) -> ::std::os::raw::c_int;
13300}
13301extern "C" {
13302    pub fn fmpz_is_probabprime_BPSW(n: *mut fmpz) -> ::std::os::raw::c_int;
13303}
13304extern "C" {
13305    pub fn fmpz_is_strong_probabprime(n: *mut fmpz, a: *mut fmpz) -> ::std::os::raw::c_int;
13306}
13307extern "C" {
13308    pub fn fmpz_is_probabprime(p: *mut fmpz) -> ::std::os::raw::c_int;
13309}
13310extern "C" {
13311    pub fn fmpz_is_prime_pseudosquare(n: *mut fmpz) -> ::std::os::raw::c_int;
13312}
13313extern "C" {
13314    pub fn _fmpz_nm1_trial_factors(
13315        n: *mut fmpz,
13316        pm1: mp_ptr,
13317        num_pm1: *mut mp_limb_signed_t,
13318        limit: mp_limb_t,
13319    );
13320}
13321extern "C" {
13322    pub fn fmpz_is_prime_pocklington(
13323        F: *mut fmpz,
13324        R: *mut fmpz,
13325        n: *mut fmpz,
13326        pm1: mp_ptr,
13327        num_pm1: mp_limb_signed_t,
13328    ) -> ::std::os::raw::c_int;
13329}
13330extern "C" {
13331    pub fn _fmpz_np1_trial_factors(
13332        n: *mut fmpz,
13333        pp1: mp_ptr,
13334        num_pp1: *mut mp_limb_signed_t,
13335        limit: mp_limb_t,
13336    );
13337}
13338extern "C" {
13339    pub fn fmpz_is_prime_morrison(
13340        F: *mut fmpz,
13341        R: *mut fmpz,
13342        n: *mut fmpz,
13343        pm1: mp_ptr,
13344        num_pm1: mp_limb_signed_t,
13345    ) -> ::std::os::raw::c_int;
13346}
13347extern "C" {
13348    pub fn fmpz_is_prime(p: *mut fmpz) -> ::std::os::raw::c_int;
13349}
13350extern "C" {
13351    pub fn fmpz_divisor_in_residue_class_lenstra(
13352        fac: *mut fmpz,
13353        n: *mut fmpz,
13354        r: *mut fmpz,
13355        s: *mut fmpz,
13356    ) -> ::std::os::raw::c_int;
13357}
13358extern "C" {
13359    pub fn fmpz_nextprime(res: *mut fmpz, n: *mut fmpz, proved: ::std::os::raw::c_int);
13360}
13361extern "C" {
13362    pub fn fmpz_primorial(res: *mut fmpz, n: mp_limb_t);
13363}
13364extern "C" {
13365    pub fn fmpz_euler_phi(res: *mut fmpz, n: *mut fmpz);
13366}
13367extern "C" {
13368    pub fn fmpz_moebius_mu(n: *mut fmpz) -> ::std::os::raw::c_int;
13369}
13370extern "C" {
13371    pub fn fmpz_divisor_sigma(res: *mut fmpz, n: *mut fmpz, k: mp_limb_t);
13372}
13373extern "C" {
13374    pub fn n_powmod2_fmpz_preinv(
13375        a: mp_limb_t,
13376        exp: *mut fmpz,
13377        n: mp_limb_t,
13378        ninv: mp_limb_t,
13379    ) -> mp_limb_t;
13380}
13381extern "C" {
13382    pub fn __new_fmpz() -> *mut fmpz;
13383}
13384extern "C" {
13385    pub fn __free_fmpz(f: *mut fmpz);
13386}
13387extern "C" {
13388    pub fn __fmpz_set_si(f: *mut fmpz, val: mp_limb_signed_t);
13389}
13390extern "C" {
13391    pub fn __fmpz_set_ui(f: *mut fmpz, val: mp_limb_t);
13392}
13393extern "C" {
13394    pub fn __fmpz_init(f: *mut fmpz);
13395}
13396extern "C" {
13397    pub fn __fmpz_init_set_ui(f: *mut fmpz, g: mp_limb_t);
13398}
13399extern "C" {
13400    pub fn __fmpz_clear(f: *mut fmpz);
13401}
13402extern "C" {
13403    pub fn __fmpz_lt(f: *mut fmpz, g: *mut fmpz) -> ::std::os::raw::c_int;
13404}
13405extern "C" {
13406    pub fn __fmpz_gt(f: *mut fmpz, g: *mut fmpz) -> ::std::os::raw::c_int;
13407}
13408extern "C" {
13409    pub fn __fmpz_lte(f: *mut fmpz, g: *mut fmpz) -> ::std::os::raw::c_int;
13410}
13411extern "C" {
13412    pub fn __fmpz_gte(f: *mut fmpz, g: *mut fmpz) -> ::std::os::raw::c_int;
13413}
13414extern "C" {
13415    pub fn __fmpz_eq(f: *mut fmpz, g: *mut fmpz) -> ::std::os::raw::c_int;
13416}
13417extern "C" {
13418    pub fn __fmpz_neq(f: *mut fmpz, g: *mut fmpz) -> ::std::os::raw::c_int;
13419}
13420extern "C" {
13421    pub fn __fmpz_init_set(f: *mut fmpz, g: *mut fmpz);
13422}
13423extern "C" {
13424    pub fn __fmpz_neg(f1: *mut fmpz, f2: *mut fmpz);
13425}
13426#[repr(C)]
13427#[derive(Debug, Copy, Clone)]
13428pub struct fmpz_factor_struct {
13429    pub sign: ::std::os::raw::c_int,
13430    pub p: *mut fmpz,
13431    pub exp: *mut mp_limb_t,
13432    pub alloc: mp_limb_signed_t,
13433    pub num: mp_limb_signed_t,
13434}
13435#[test]
13436fn bindgen_test_layout_fmpz_factor_struct() {
13437    assert_eq!(
13438        ::std::mem::size_of::<fmpz_factor_struct>(),
13439        40usize,
13440        concat!("Size of: ", stringify!(fmpz_factor_struct))
13441    );
13442    assert_eq!(
13443        ::std::mem::align_of::<fmpz_factor_struct>(),
13444        8usize,
13445        concat!("Alignment of ", stringify!(fmpz_factor_struct))
13446    );
13447    assert_eq!(
13448        unsafe { &(*(::std::ptr::null::<fmpz_factor_struct>())).sign as *const _ as usize },
13449        0usize,
13450        concat!(
13451            "Offset of field: ",
13452            stringify!(fmpz_factor_struct),
13453            "::",
13454            stringify!(sign)
13455        )
13456    );
13457    assert_eq!(
13458        unsafe { &(*(::std::ptr::null::<fmpz_factor_struct>())).p as *const _ as usize },
13459        8usize,
13460        concat!(
13461            "Offset of field: ",
13462            stringify!(fmpz_factor_struct),
13463            "::",
13464            stringify!(p)
13465        )
13466    );
13467    assert_eq!(
13468        unsafe { &(*(::std::ptr::null::<fmpz_factor_struct>())).exp as *const _ as usize },
13469        16usize,
13470        concat!(
13471            "Offset of field: ",
13472            stringify!(fmpz_factor_struct),
13473            "::",
13474            stringify!(exp)
13475        )
13476    );
13477    assert_eq!(
13478        unsafe { &(*(::std::ptr::null::<fmpz_factor_struct>())).alloc as *const _ as usize },
13479        24usize,
13480        concat!(
13481            "Offset of field: ",
13482            stringify!(fmpz_factor_struct),
13483            "::",
13484            stringify!(alloc)
13485        )
13486    );
13487    assert_eq!(
13488        unsafe { &(*(::std::ptr::null::<fmpz_factor_struct>())).num as *const _ as usize },
13489        32usize,
13490        concat!(
13491            "Offset of field: ",
13492            stringify!(fmpz_factor_struct),
13493            "::",
13494            stringify!(num)
13495        )
13496    );
13497}
13498pub type fmpz_factor_t = [fmpz_factor_struct; 1usize];
13499extern "C" {
13500    pub fn fmpz_factor_init(factor: *mut fmpz_factor_struct);
13501}
13502extern "C" {
13503    pub fn fmpz_factor_clear(factor: *mut fmpz_factor_struct);
13504}
13505extern "C" {
13506    pub fn fmpz_factor_print(factor: *mut fmpz_factor_struct);
13507}
13508extern "C" {
13509    pub fn _fmpz_factor_fit_length(factor: *mut fmpz_factor_struct, len: mp_limb_signed_t);
13510}
13511extern "C" {
13512    pub fn _fmpz_factor_append_ui(factor: *mut fmpz_factor_struct, p: mp_limb_t, exp: mp_limb_t);
13513}
13514extern "C" {
13515    pub fn _fmpz_factor_append(factor: *mut fmpz_factor_struct, p: *mut fmpz, exp: mp_limb_t);
13516}
13517extern "C" {
13518    pub fn _fmpz_factor_set_length(factor: *mut fmpz_factor_struct, newlen: mp_limb_signed_t);
13519}
13520extern "C" {
13521    pub fn _fmpz_factor_concat(
13522        factor1: *mut fmpz_factor_struct,
13523        factor2: *mut fmpz_factor_struct,
13524        exp: mp_limb_t,
13525    );
13526}
13527extern "C" {
13528    pub fn _fmpz_factor_extend_factor_ui(factor: *mut fmpz_factor_struct, n: mp_limb_t);
13529}
13530extern "C" {
13531    pub fn fmpz_factor_trial_range(
13532        factor: *mut fmpz_factor_struct,
13533        n: *mut fmpz,
13534        start: mp_limb_t,
13535        num_primes: mp_limb_t,
13536    ) -> ::std::os::raw::c_int;
13537}
13538extern "C" {
13539    pub fn fmpz_factor_trial(
13540        factor: *mut fmpz_factor_struct,
13541        n: *mut fmpz,
13542        num_primes: mp_limb_signed_t,
13543    ) -> ::std::os::raw::c_int;
13544}
13545extern "C" {
13546    pub fn fmpz_factor(factor: *mut fmpz_factor_struct, n: *mut fmpz);
13547}
13548extern "C" {
13549    pub fn fmpz_factor_no_trial(factor: *mut fmpz_factor_struct, n: *mut fmpz);
13550}
13551extern "C" {
13552    pub fn fmpz_factor_smooth(
13553        factor: *mut fmpz_factor_struct,
13554        n: *mut fmpz,
13555        bits: mp_limb_signed_t,
13556        proved: ::std::os::raw::c_int,
13557    ) -> ::std::os::raw::c_int;
13558}
13559extern "C" {
13560    pub fn fmpz_factor_si(factor: *mut fmpz_factor_struct, n: mp_limb_signed_t);
13561}
13562extern "C" {
13563    pub fn fmpz_factor_pp1(
13564        factor: *mut fmpz,
13565        n: *mut fmpz,
13566        B1: mp_limb_t,
13567        B2_sqrt: mp_limb_t,
13568        c: mp_limb_t,
13569    ) -> ::std::os::raw::c_int;
13570}
13571extern "C" {
13572    pub fn fmpz_factor_refine(res: *mut fmpz_factor_struct, f: *mut fmpz_factor_struct);
13573}
13574extern "C" {
13575    pub fn flint_mpn_sqr_and_add_a(
13576        y: mp_ptr,
13577        a: mp_ptr,
13578        n: mp_ptr,
13579        n_size: mp_limb_t,
13580        ninv: mp_ptr,
13581        normbits: mp_limb_t,
13582    );
13583}
13584extern "C" {
13585    pub fn flint_mpn_factor_pollard_brent_single(
13586        factor: mp_ptr,
13587        n: mp_ptr,
13588        ninv: mp_ptr,
13589        a: mp_ptr,
13590        y: mp_ptr,
13591        n_size: mp_limb_t,
13592        normbits: mp_limb_t,
13593        max_iters: mp_limb_t,
13594    ) -> ::std::os::raw::c_int;
13595}
13596extern "C" {
13597    pub fn fmpz_factor_pollard_brent_single(
13598        p_factor: *mut fmpz,
13599        n_in: *mut fmpz,
13600        yi: *mut fmpz,
13601        ai: *mut fmpz,
13602        max_iters: mp_limb_t,
13603    ) -> ::std::os::raw::c_int;
13604}
13605extern "C" {
13606    pub fn fmpz_factor_pollard_brent(
13607        factor: *mut fmpz,
13608        state: *mut flint_rand_s,
13609        n: *mut fmpz,
13610        max_tries: mp_limb_t,
13611        max_iters: mp_limb_t,
13612    ) -> ::std::os::raw::c_int;
13613}
13614extern "C" {
13615    pub fn fmpz_factor_expand_iterative(n: *mut fmpz, factor: *mut fmpz_factor_struct);
13616}
13617extern "C" {
13618    pub fn fmpz_factor_expand_multiexp(n: *mut fmpz, factor: *mut fmpz_factor_struct);
13619}
13620extern "C" {
13621    pub fn fmpz_factor_expand(n: *mut fmpz, factor: *mut fmpz_factor_struct);
13622}
13623extern "C" {
13624    pub fn fmpz_factor_euler_phi(res: *mut fmpz, fac: *mut fmpz_factor_struct);
13625}
13626extern "C" {
13627    pub fn fmpz_factor_moebius_mu(fac: *mut fmpz_factor_struct) -> ::std::os::raw::c_int;
13628}
13629extern "C" {
13630    pub fn fmpz_factor_divisor_sigma(res: *mut fmpz, fac: *mut fmpz_factor_struct, k: mp_limb_t);
13631}
13632#[repr(C)]
13633#[derive(Debug, Copy, Clone)]
13634pub struct ecm_s {
13635    pub t: mp_ptr,
13636    pub u: mp_ptr,
13637    pub v: mp_ptr,
13638    pub w: mp_ptr,
13639    pub x: mp_ptr,
13640    pub z: mp_ptr,
13641    pub a24: mp_ptr,
13642    pub ninv: mp_ptr,
13643    pub one: mp_ptr,
13644    pub GCD_table: *mut ::std::os::raw::c_uchar,
13645    pub prime_table: *mut *mut ::std::os::raw::c_uchar,
13646    pub n_size: mp_limb_t,
13647    pub normbits: mp_limb_t,
13648}
13649#[test]
13650fn bindgen_test_layout_ecm_s() {
13651    assert_eq!(
13652        ::std::mem::size_of::<ecm_s>(),
13653        104usize,
13654        concat!("Size of: ", stringify!(ecm_s))
13655    );
13656    assert_eq!(
13657        ::std::mem::align_of::<ecm_s>(),
13658        8usize,
13659        concat!("Alignment of ", stringify!(ecm_s))
13660    );
13661    assert_eq!(
13662        unsafe { &(*(::std::ptr::null::<ecm_s>())).t as *const _ as usize },
13663        0usize,
13664        concat!("Offset of field: ", stringify!(ecm_s), "::", stringify!(t))
13665    );
13666    assert_eq!(
13667        unsafe { &(*(::std::ptr::null::<ecm_s>())).u as *const _ as usize },
13668        8usize,
13669        concat!("Offset of field: ", stringify!(ecm_s), "::", stringify!(u))
13670    );
13671    assert_eq!(
13672        unsafe { &(*(::std::ptr::null::<ecm_s>())).v as *const _ as usize },
13673        16usize,
13674        concat!("Offset of field: ", stringify!(ecm_s), "::", stringify!(v))
13675    );
13676    assert_eq!(
13677        unsafe { &(*(::std::ptr::null::<ecm_s>())).w as *const _ as usize },
13678        24usize,
13679        concat!("Offset of field: ", stringify!(ecm_s), "::", stringify!(w))
13680    );
13681    assert_eq!(
13682        unsafe { &(*(::std::ptr::null::<ecm_s>())).x as *const _ as usize },
13683        32usize,
13684        concat!("Offset of field: ", stringify!(ecm_s), "::", stringify!(x))
13685    );
13686    assert_eq!(
13687        unsafe { &(*(::std::ptr::null::<ecm_s>())).z as *const _ as usize },
13688        40usize,
13689        concat!("Offset of field: ", stringify!(ecm_s), "::", stringify!(z))
13690    );
13691    assert_eq!(
13692        unsafe { &(*(::std::ptr::null::<ecm_s>())).a24 as *const _ as usize },
13693        48usize,
13694        concat!(
13695            "Offset of field: ",
13696            stringify!(ecm_s),
13697            "::",
13698            stringify!(a24)
13699        )
13700    );
13701    assert_eq!(
13702        unsafe { &(*(::std::ptr::null::<ecm_s>())).ninv as *const _ as usize },
13703        56usize,
13704        concat!(
13705            "Offset of field: ",
13706            stringify!(ecm_s),
13707            "::",
13708            stringify!(ninv)
13709        )
13710    );
13711    assert_eq!(
13712        unsafe { &(*(::std::ptr::null::<ecm_s>())).one as *const _ as usize },
13713        64usize,
13714        concat!(
13715            "Offset of field: ",
13716            stringify!(ecm_s),
13717            "::",
13718            stringify!(one)
13719        )
13720    );
13721    assert_eq!(
13722        unsafe { &(*(::std::ptr::null::<ecm_s>())).GCD_table as *const _ as usize },
13723        72usize,
13724        concat!(
13725            "Offset of field: ",
13726            stringify!(ecm_s),
13727            "::",
13728            stringify!(GCD_table)
13729        )
13730    );
13731    assert_eq!(
13732        unsafe { &(*(::std::ptr::null::<ecm_s>())).prime_table as *const _ as usize },
13733        80usize,
13734        concat!(
13735            "Offset of field: ",
13736            stringify!(ecm_s),
13737            "::",
13738            stringify!(prime_table)
13739        )
13740    );
13741    assert_eq!(
13742        unsafe { &(*(::std::ptr::null::<ecm_s>())).n_size as *const _ as usize },
13743        88usize,
13744        concat!(
13745            "Offset of field: ",
13746            stringify!(ecm_s),
13747            "::",
13748            stringify!(n_size)
13749        )
13750    );
13751    assert_eq!(
13752        unsafe { &(*(::std::ptr::null::<ecm_s>())).normbits as *const _ as usize },
13753        96usize,
13754        concat!(
13755            "Offset of field: ",
13756            stringify!(ecm_s),
13757            "::",
13758            stringify!(normbits)
13759        )
13760    );
13761}
13762pub type ecm_t = [ecm_s; 1usize];
13763extern "C" {
13764    pub fn fmpz_factor_ecm_init(ecm_inf: *mut ecm_s, sz: mp_limb_t);
13765}
13766extern "C" {
13767    pub fn fmpz_factor_ecm_clear(ecm_inf: *mut ecm_s);
13768}
13769extern "C" {
13770    pub fn fmpz_factor_ecm_addmod(a: mp_ptr, b: mp_ptr, c: mp_ptr, n: mp_ptr, n_size: mp_limb_t);
13771}
13772extern "C" {
13773    pub fn fmpz_factor_ecm_submod(x: mp_ptr, a: mp_ptr, b: mp_ptr, n: mp_ptr, n_size: mp_limb_t);
13774}
13775extern "C" {
13776    pub fn fmpz_factor_ecm_double(
13777        x: mp_ptr,
13778        z: mp_ptr,
13779        x0: mp_ptr,
13780        z0: mp_ptr,
13781        n: mp_ptr,
13782        ecm_inf: *mut ecm_s,
13783    );
13784}
13785extern "C" {
13786    pub fn fmpz_factor_ecm_add(
13787        x: mp_ptr,
13788        z: mp_ptr,
13789        x1: mp_ptr,
13790        z1: mp_ptr,
13791        x2: mp_ptr,
13792        z2: mp_ptr,
13793        x0: mp_ptr,
13794        z0: mp_ptr,
13795        n: mp_ptr,
13796        ecm_inf: *mut ecm_s,
13797    );
13798}
13799extern "C" {
13800    pub fn fmpz_factor_ecm_mul_montgomery_ladder(
13801        x: mp_ptr,
13802        z: mp_ptr,
13803        x0: mp_ptr,
13804        z0: mp_ptr,
13805        k: mp_limb_t,
13806        n: mp_ptr,
13807        ecm_inf: *mut ecm_s,
13808    );
13809}
13810extern "C" {
13811    pub fn fmpz_factor_ecm_select_curve(
13812        f: mp_ptr,
13813        sig: mp_ptr,
13814        n: mp_ptr,
13815        ecm_inf: *mut ecm_s,
13816    ) -> ::std::os::raw::c_int;
13817}
13818extern "C" {
13819    pub fn fmpz_factor_ecm_stage_I(
13820        f: mp_ptr,
13821        prime_array: *const mp_limb_t,
13822        num: mp_limb_t,
13823        B1: mp_limb_t,
13824        n: mp_ptr,
13825        ecm_inf: *mut ecm_s,
13826    ) -> ::std::os::raw::c_int;
13827}
13828extern "C" {
13829    pub fn fmpz_factor_ecm_stage_II(
13830        f: mp_ptr,
13831        B1: mp_limb_t,
13832        B2: mp_limb_t,
13833        P: mp_limb_t,
13834        n: mp_ptr,
13835        ecm_inf: *mut ecm_s,
13836    ) -> ::std::os::raw::c_int;
13837}
13838extern "C" {
13839    pub fn fmpz_factor_ecm(
13840        f: *mut fmpz,
13841        curves: mp_limb_t,
13842        B1: mp_limb_t,
13843        B2: mp_limb_t,
13844        state: *mut flint_rand_s,
13845        n_in: *mut fmpz,
13846    ) -> ::std::os::raw::c_int;
13847}
13848extern "C" {
13849    pub fn fmpz_factor_get_fmpz(z: *mut fmpz, factor: *mut fmpz_factor_struct, i: mp_limb_signed_t);
13850}
13851pub type mpf = __mpf_struct;
13852extern "C" {
13853    pub fn _mpf_vec_init(len: mp_limb_signed_t, prec: mp_limb_t) -> *mut mpf;
13854}
13855extern "C" {
13856    pub fn _mpf_vec_clear(vec: *mut mpf, len: mp_limb_signed_t);
13857}
13858extern "C" {
13859    pub fn _mpf_vec_randtest(
13860        f: *mut mpf,
13861        state: *mut flint_rand_s,
13862        len: mp_limb_signed_t,
13863        bits: mp_limb_t,
13864    );
13865}
13866extern "C" {
13867    pub fn _mpf_vec_zero(vec: *mut mpf, len: mp_limb_signed_t);
13868}
13869extern "C" {
13870    pub fn _mpf_vec_set(vec1: *mut mpf, vec2: *const mpf, len2: mp_limb_signed_t);
13871}
13872extern "C" {
13873    pub fn _mpf_vec_equal(
13874        vec1: *const mpf,
13875        vec2: *const mpf,
13876        len: mp_limb_signed_t,
13877    ) -> ::std::os::raw::c_int;
13878}
13879extern "C" {
13880    pub fn _mpf_vec_approx_equal(
13881        vec1: *const mpf,
13882        vec2: *const mpf,
13883        len: mp_limb_signed_t,
13884        bits: mp_limb_t,
13885    ) -> ::std::os::raw::c_int;
13886}
13887extern "C" {
13888    pub fn _mpf_vec_is_zero(vec: *const mpf, len: mp_limb_signed_t) -> ::std::os::raw::c_int;
13889}
13890extern "C" {
13891    pub fn _mpf_vec_add(res: *mut mpf, vec1: *const mpf, vec2: *const mpf, len2: mp_limb_signed_t);
13892}
13893extern "C" {
13894    pub fn _mpf_vec_sub(res: *mut mpf, vec1: *const mpf, vec2: *const mpf, len2: mp_limb_signed_t);
13895}
13896extern "C" {
13897    pub fn _mpf_vec_scalar_mul_2exp(
13898        res: *mut mpf,
13899        vec: *const mpf,
13900        len: mp_limb_signed_t,
13901        exp: mp_limb_t,
13902    );
13903}
13904extern "C" {
13905    pub fn _mpf_vec_scalar_mul_mpf(
13906        res: *mut mpf,
13907        vec: *const mpf,
13908        len: mp_limb_signed_t,
13909        c: *mut __mpf_struct,
13910    );
13911}
13912extern "C" {
13913    pub fn _mpf_vec_dot(
13914        res: *mut __mpf_struct,
13915        vec1: *const mpf,
13916        vec2: *const mpf,
13917        len2: mp_limb_signed_t,
13918    );
13919}
13920extern "C" {
13921    pub fn _mpf_vec_norm(res: *mut __mpf_struct, vec: *const mpf, len: mp_limb_signed_t);
13922}
13923extern "C" {
13924    pub fn _mpf_vec_dot2(
13925        res: *mut __mpf_struct,
13926        vec1: *const mpf,
13927        vec2: *const mpf,
13928        len2: mp_limb_signed_t,
13929        prec: mp_limb_t,
13930    ) -> ::std::os::raw::c_int;
13931}
13932extern "C" {
13933    pub fn _mpf_vec_norm2(
13934        res: *mut __mpf_struct,
13935        vec: *const mpf,
13936        len: mp_limb_signed_t,
13937        prec: mp_limb_t,
13938    );
13939}
13940extern "C" {
13941    pub fn _fmpz_vec_init(len: mp_limb_signed_t) -> *mut fmpz;
13942}
13943extern "C" {
13944    pub fn _fmpz_vec_clear(vec: *mut fmpz, len: mp_limb_signed_t);
13945}
13946extern "C" {
13947    pub fn _fmpz_vec_randtest(
13948        f: *mut fmpz,
13949        state: *mut flint_rand_s,
13950        len: mp_limb_signed_t,
13951        bits: mp_limb_t,
13952    );
13953}
13954extern "C" {
13955    pub fn _fmpz_vec_randtest_unsigned(
13956        f: *mut fmpz,
13957        state: *mut flint_rand_s,
13958        len: mp_limb_signed_t,
13959        bits: mp_limb_t,
13960    );
13961}
13962extern "C" {
13963    pub fn _fmpz_vec_max_bits(vec: *const fmpz, len: mp_limb_signed_t) -> mp_limb_signed_t;
13964}
13965extern "C" {
13966    pub fn _fmpz_vec_max_bits_ref(vec: *const fmpz, len: mp_limb_signed_t) -> mp_limb_signed_t;
13967}
13968extern "C" {
13969    pub fn _fmpz_vec_sum_max_bits(
13970        sumabs: *mut mp_limb_signed_t,
13971        maxabs: *mut mp_limb_signed_t,
13972        coeffs: *const fmpz,
13973        length: mp_limb_signed_t,
13974    );
13975}
13976extern "C" {
13977    pub fn _fmpz_vec_max_limbs(vec: *const fmpz, len: mp_limb_signed_t) -> mp_size_t;
13978}
13979extern "C" {
13980    pub fn _fmpz_vec_height(height: *mut fmpz, vec: *const fmpz, len: mp_limb_signed_t);
13981}
13982extern "C" {
13983    pub fn _fmpz_vec_height_index(vec: *const fmpz, len: mp_limb_signed_t) -> mp_limb_signed_t;
13984}
13985extern "C" {
13986    pub fn _fmpz_vec_fprint(
13987        file: *mut FILE,
13988        vec: *const fmpz,
13989        len: mp_limb_signed_t,
13990    ) -> ::std::os::raw::c_int;
13991}
13992extern "C" {
13993    pub fn _fmpz_vec_fread(
13994        file: *mut FILE,
13995        vec: *mut *mut fmpz,
13996        len: *mut mp_limb_signed_t,
13997    ) -> ::std::os::raw::c_int;
13998}
13999extern "C" {
14000    pub fn _fmpz_vec_set_nmod_vec(
14001        res: *mut fmpz,
14002        poly: mp_srcptr,
14003        len: mp_limb_signed_t,
14004        mod_: nmod_t,
14005    );
14006}
14007extern "C" {
14008    pub fn _fmpz_vec_get_nmod_vec(
14009        res: mp_ptr,
14010        poly: *const fmpz,
14011        len: mp_limb_signed_t,
14012        mod_: nmod_t,
14013    );
14014}
14015extern "C" {
14016    pub fn _fmpz_vec_get_fft(
14017        coeffs_f: *mut *mut mp_limb_t,
14018        coeffs_m: *const fmpz,
14019        l: mp_limb_signed_t,
14020        length: mp_limb_signed_t,
14021    ) -> mp_limb_signed_t;
14022}
14023extern "C" {
14024    pub fn _fmpz_vec_set_fft(
14025        coeffs_m: *mut fmpz,
14026        length: mp_limb_signed_t,
14027        coeffs_f: *const mp_ptr,
14028        limbs: mp_limb_signed_t,
14029        sign: mp_limb_signed_t,
14030    );
14031}
14032extern "C" {
14033    pub fn _fmpz_vec_get_d_vec_2exp(
14034        appv: *mut f64,
14035        vec: *const fmpz,
14036        len: mp_limb_signed_t,
14037    ) -> mp_limb_signed_t;
14038}
14039extern "C" {
14040    pub fn _fmpz_vec_get_mpf_vec(appv: *mut mpf, vec: *const fmpz, len: mp_limb_signed_t);
14041}
14042extern "C" {
14043    pub fn _fmpz_vec_set(vec1: *mut fmpz, vec2: *const fmpz, len2: mp_limb_signed_t);
14044}
14045extern "C" {
14046    pub fn _fmpz_vec_swap(vec1: *mut fmpz, vec2: *mut fmpz, len2: mp_limb_signed_t);
14047}
14048extern "C" {
14049    pub fn _fmpz_vec_zero(vec: *mut fmpz, len: mp_limb_signed_t);
14050}
14051extern "C" {
14052    pub fn _fmpz_vec_neg(vec1: *mut fmpz, vec2: *const fmpz, len2: mp_limb_signed_t);
14053}
14054extern "C" {
14055    pub fn _fmpz_vec_scalar_abs(vec1: *mut fmpz, vec2: *const fmpz, len2: mp_limb_signed_t);
14056}
14057extern "C" {
14058    pub fn _fmpz_vec_equal(
14059        vec1: *const fmpz,
14060        vec2: *const fmpz,
14061        len: mp_limb_signed_t,
14062    ) -> ::std::os::raw::c_int;
14063}
14064extern "C" {
14065    pub fn _fmpz_vec_is_zero(vec: *const fmpz, len: mp_limb_signed_t) -> ::std::os::raw::c_int;
14066}
14067extern "C" {
14068    pub fn _fmpz_vec_max(
14069        vec1: *mut fmpz,
14070        vec2: *const fmpz,
14071        vec3: *const fmpz,
14072        len: mp_limb_signed_t,
14073    );
14074}
14075extern "C" {
14076    pub fn _fmpz_vec_max_inplace(vec1: *mut fmpz, vec2: *const fmpz, len: mp_limb_signed_t);
14077}
14078extern "C" {
14079    pub fn _fmpz_vec_min(
14080        vec1: *mut fmpz,
14081        vec2: *const fmpz,
14082        vec3: *const fmpz,
14083        len: mp_limb_signed_t,
14084    );
14085}
14086extern "C" {
14087    pub fn _fmpz_vec_min_inplace(vec1: *mut fmpz, vec2: *const fmpz, len: mp_limb_signed_t);
14088}
14089extern "C" {
14090    pub fn _fmpz_vec_sort(vec: *mut fmpz, len: mp_limb_signed_t);
14091}
14092extern "C" {
14093    pub fn _fmpz_vec_add(
14094        res: *mut fmpz,
14095        vec1: *const fmpz,
14096        vec2: *const fmpz,
14097        len2: mp_limb_signed_t,
14098    );
14099}
14100extern "C" {
14101    pub fn _fmpz_vec_sub(
14102        res: *mut fmpz,
14103        vec1: *const fmpz,
14104        vec2: *const fmpz,
14105        len2: mp_limb_signed_t,
14106    );
14107}
14108extern "C" {
14109    pub fn _fmpz_vec_scalar_mul_si(
14110        vec1: *mut fmpz,
14111        vec2: *const fmpz,
14112        len2: mp_limb_signed_t,
14113        c: mp_limb_signed_t,
14114    );
14115}
14116extern "C" {
14117    pub fn _fmpz_vec_scalar_mul_ui(
14118        vec1: *mut fmpz,
14119        vec2: *const fmpz,
14120        len2: mp_limb_signed_t,
14121        c: mp_limb_t,
14122    );
14123}
14124extern "C" {
14125    pub fn _fmpz_vec_scalar_mul_fmpz(
14126        vec1: *mut fmpz,
14127        vec2: *const fmpz,
14128        len2: mp_limb_signed_t,
14129        x: *mut fmpz,
14130    );
14131}
14132extern "C" {
14133    pub fn _fmpz_vec_scalar_mul_2exp(
14134        vec1: *mut fmpz,
14135        vec2: *const fmpz,
14136        len2: mp_limb_signed_t,
14137        exp: mp_limb_t,
14138    );
14139}
14140extern "C" {
14141    pub fn _fmpz_vec_scalar_divexact_fmpz(
14142        vec1: *mut fmpz,
14143        vec2: *const fmpz,
14144        len2: mp_limb_signed_t,
14145        x: *mut fmpz,
14146    );
14147}
14148extern "C" {
14149    pub fn _fmpz_vec_scalar_divexact_si(
14150        vec1: *mut fmpz,
14151        vec2: *const fmpz,
14152        len2: mp_limb_signed_t,
14153        c: mp_limb_signed_t,
14154    );
14155}
14156extern "C" {
14157    pub fn _fmpz_vec_scalar_divexact_ui(
14158        vec1: *mut fmpz,
14159        vec2: *const fmpz,
14160        len2: mp_limb_signed_t,
14161        c: mp_limb_t,
14162    );
14163}
14164extern "C" {
14165    pub fn _fmpz_vec_scalar_fdiv_q_fmpz(
14166        vec1: *mut fmpz,
14167        vec2: *const fmpz,
14168        len2: mp_limb_signed_t,
14169        c: *mut fmpz,
14170    );
14171}
14172extern "C" {
14173    pub fn _fmpz_vec_scalar_fdiv_q_si(
14174        vec1: *mut fmpz,
14175        vec2: *const fmpz,
14176        len2: mp_limb_signed_t,
14177        c: mp_limb_signed_t,
14178    );
14179}
14180extern "C" {
14181    pub fn _fmpz_vec_scalar_fdiv_q_ui(
14182        vec1: *mut fmpz,
14183        vec2: *const fmpz,
14184        len2: mp_limb_signed_t,
14185        c: mp_limb_t,
14186    );
14187}
14188extern "C" {
14189    pub fn _fmpz_vec_scalar_fdiv_q_2exp(
14190        vec1: *mut fmpz,
14191        vec2: *const fmpz,
14192        len2: mp_limb_signed_t,
14193        exp: mp_limb_t,
14194    );
14195}
14196extern "C" {
14197    pub fn _fmpz_vec_scalar_fdiv_r_2exp(
14198        vec1: *mut fmpz,
14199        vec2: *const fmpz,
14200        len2: mp_limb_signed_t,
14201        exp: mp_limb_t,
14202    );
14203}
14204extern "C" {
14205    pub fn _fmpz_vec_scalar_tdiv_q_fmpz(
14206        vec1: *mut fmpz,
14207        vec2: *const fmpz,
14208        len2: mp_limb_signed_t,
14209        c: *mut fmpz,
14210    );
14211}
14212extern "C" {
14213    pub fn _fmpz_vec_scalar_tdiv_q_si(
14214        vec1: *mut fmpz,
14215        vec2: *const fmpz,
14216        len2: mp_limb_signed_t,
14217        c: mp_limb_signed_t,
14218    );
14219}
14220extern "C" {
14221    pub fn _fmpz_vec_scalar_tdiv_q_ui(
14222        vec1: *mut fmpz,
14223        vec2: *const fmpz,
14224        len2: mp_limb_signed_t,
14225        c: mp_limb_t,
14226    );
14227}
14228extern "C" {
14229    pub fn _fmpz_vec_scalar_tdiv_q_2exp(
14230        vec1: *mut fmpz,
14231        vec2: *const fmpz,
14232        len2: mp_limb_signed_t,
14233        exp: mp_limb_t,
14234    );
14235}
14236extern "C" {
14237    pub fn _fmpz_vec_scalar_addmul_si(
14238        vec1: *mut fmpz,
14239        vec2: *const fmpz,
14240        len2: mp_limb_signed_t,
14241        c: mp_limb_signed_t,
14242    );
14243}
14244extern "C" {
14245    pub fn _fmpz_vec_scalar_addmul_fmpz(
14246        poly1: *mut fmpz,
14247        poly2: *const fmpz,
14248        len2: mp_limb_signed_t,
14249        x: *mut fmpz,
14250    );
14251}
14252extern "C" {
14253    pub fn _fmpz_vec_scalar_addmul_si_2exp(
14254        vec1: *mut fmpz,
14255        vec2: *const fmpz,
14256        len2: mp_limb_signed_t,
14257        c: mp_limb_signed_t,
14258        exp: mp_limb_t,
14259    );
14260}
14261extern "C" {
14262    pub fn _fmpz_vec_scalar_submul_si(
14263        vec1: *mut fmpz,
14264        vec2: *const fmpz,
14265        len2: mp_limb_signed_t,
14266        c: mp_limb_signed_t,
14267    );
14268}
14269extern "C" {
14270    pub fn _fmpz_vec_scalar_submul_fmpz(
14271        vec1: *mut fmpz,
14272        vec2: *const fmpz,
14273        len2: mp_limb_signed_t,
14274        x: *mut fmpz,
14275    );
14276}
14277extern "C" {
14278    pub fn _fmpz_vec_scalar_submul_si_2exp(
14279        vec1: *mut fmpz,
14280        vec2: *const fmpz,
14281        len2: mp_limb_signed_t,
14282        c: mp_limb_signed_t,
14283        exp: mp_limb_t,
14284    );
14285}
14286extern "C" {
14287    pub fn _fmpz_vec_sum(res: *mut fmpz, vec: *const fmpz, len: mp_limb_signed_t);
14288}
14289extern "C" {
14290    pub fn _fmpz_vec_prod(res: *mut fmpz, vec: *const fmpz, len: mp_limb_signed_t);
14291}
14292extern "C" {
14293    pub fn _fmpz_vec_scalar_mod_fmpz(
14294        res: *mut fmpz,
14295        vec: *const fmpz,
14296        len: mp_limb_signed_t,
14297        p: *mut fmpz,
14298    );
14299}
14300extern "C" {
14301    pub fn _fmpz_vec_scalar_smod_fmpz(
14302        res: *mut fmpz,
14303        vec: *const fmpz,
14304        len: mp_limb_signed_t,
14305        p: *mut fmpz,
14306    );
14307}
14308extern "C" {
14309    pub fn _fmpz_vec_content(res: *mut fmpz, vec: *const fmpz, len: mp_limb_signed_t);
14310}
14311extern "C" {
14312    pub fn _fmpz_vec_lcm(res: *mut fmpz, vec: *const fmpz, len: mp_limb_signed_t);
14313}
14314extern "C" {
14315    pub fn _fmpz_vec_dot(
14316        res: *mut fmpz,
14317        vec1: *const fmpz,
14318        vec2: *const fmpz,
14319        len2: mp_limb_signed_t,
14320    );
14321}
14322extern "C" {
14323    pub fn _fmpz_vec_dot_ptr(
14324        c: *mut fmpz,
14325        vec1: *const fmpz,
14326        vec2: *mut *mut fmpz,
14327        offset: mp_limb_signed_t,
14328        len: mp_limb_signed_t,
14329    );
14330}
14331#[repr(C)]
14332#[derive(Debug, Copy, Clone)]
14333pub struct fmpq {
14334    pub num: fmpz,
14335    pub den: fmpz,
14336}
14337#[test]
14338fn bindgen_test_layout_fmpq() {
14339    assert_eq!(
14340        ::std::mem::size_of::<fmpq>(),
14341        16usize,
14342        concat!("Size of: ", stringify!(fmpq))
14343    );
14344    assert_eq!(
14345        ::std::mem::align_of::<fmpq>(),
14346        8usize,
14347        concat!("Alignment of ", stringify!(fmpq))
14348    );
14349    assert_eq!(
14350        unsafe { &(*(::std::ptr::null::<fmpq>())).num as *const _ as usize },
14351        0usize,
14352        concat!("Offset of field: ", stringify!(fmpq), "::", stringify!(num))
14353    );
14354    assert_eq!(
14355        unsafe { &(*(::std::ptr::null::<fmpq>())).den as *const _ as usize },
14356        8usize,
14357        concat!("Offset of field: ", stringify!(fmpq), "::", stringify!(den))
14358    );
14359}
14360pub type fmpq_t = [fmpq; 1usize];
14361extern "C" {
14362    pub fn fmpq_init(x: *mut fmpq);
14363}
14364extern "C" {
14365    pub fn fmpq_clear(x: *mut fmpq);
14366}
14367extern "C" {
14368    pub fn fmpq_zero(res: *mut fmpq);
14369}
14370extern "C" {
14371    pub fn fmpq_one(res: *mut fmpq);
14372}
14373extern "C" {
14374    pub fn fmpq_equal(x: *mut fmpq, y: *mut fmpq) -> ::std::os::raw::c_int;
14375}
14376extern "C" {
14377    pub fn fmpq_sgn(x: *mut fmpq) -> ::std::os::raw::c_int;
14378}
14379extern "C" {
14380    pub fn fmpq_is_zero(x: *mut fmpq) -> ::std::os::raw::c_int;
14381}
14382extern "C" {
14383    pub fn fmpq_is_one(x: *mut fmpq) -> ::std::os::raw::c_int;
14384}
14385extern "C" {
14386    pub fn fmpq_is_pm1(x: *mut fmpq) -> ::std::os::raw::c_int;
14387}
14388extern "C" {
14389    pub fn fmpq_set(dest: *mut fmpq, src: *mut fmpq);
14390}
14391extern "C" {
14392    pub fn fmpq_swap(op1: *mut fmpq, op2: *mut fmpq);
14393}
14394extern "C" {
14395    pub fn fmpq_neg(dest: *mut fmpq, src: *mut fmpq);
14396}
14397extern "C" {
14398    pub fn fmpq_abs(dest: *mut fmpq, src: *mut fmpq);
14399}
14400extern "C" {
14401    pub fn _fmpq_cmp(
14402        p: *mut fmpz,
14403        q: *mut fmpz,
14404        r: *mut fmpz,
14405        s: *mut fmpz,
14406    ) -> ::std::os::raw::c_int;
14407}
14408extern "C" {
14409    pub fn fmpq_cmp(x: *mut fmpq, y: *mut fmpq) -> ::std::os::raw::c_int;
14410}
14411extern "C" {
14412    pub fn _fmpq_cmp_fmpz(p: *mut fmpz, q: *mut fmpz, r: *mut fmpz) -> ::std::os::raw::c_int;
14413}
14414extern "C" {
14415    pub fn fmpq_cmp_fmpz(x: *mut fmpq, y: *mut fmpz) -> ::std::os::raw::c_int;
14416}
14417extern "C" {
14418    pub fn _fmpq_cmp_ui(p: *mut fmpz, q: *mut fmpz, c: mp_limb_t) -> ::std::os::raw::c_int;
14419}
14420extern "C" {
14421    pub fn fmpq_cmp_ui(x: *mut fmpq, c: mp_limb_t) -> ::std::os::raw::c_int;
14422}
14423extern "C" {
14424    pub fn _fmpq_cmp_si(p: *mut fmpz, q: *mut fmpz, c: mp_limb_signed_t) -> ::std::os::raw::c_int;
14425}
14426extern "C" {
14427    pub fn fmpq_cmp_si(x: *mut fmpq, c: mp_limb_signed_t) -> ::std::os::raw::c_int;
14428}
14429extern "C" {
14430    pub fn _fmpq_canonicalise(num: *mut fmpz, den: *mut fmpz);
14431}
14432extern "C" {
14433    pub fn fmpq_canonicalise(res: *mut fmpq);
14434}
14435extern "C" {
14436    pub fn _fmpq_is_canonical(num: *mut fmpz, den: *mut fmpz) -> ::std::os::raw::c_int;
14437}
14438extern "C" {
14439    pub fn fmpq_is_canonical(x: *mut fmpq) -> ::std::os::raw::c_int;
14440}
14441extern "C" {
14442    pub fn _fmpq_set_ui(rnum: *mut fmpz, rden: *mut fmpz, p: mp_limb_t, q: mp_limb_t);
14443}
14444extern "C" {
14445    pub fn fmpq_set_ui(res: *mut fmpq, p: mp_limb_t, q: mp_limb_t);
14446}
14447extern "C" {
14448    pub fn _fmpq_set_si(rnum: *mut fmpz, rden: *mut fmpz, p: mp_limb_signed_t, q: mp_limb_t);
14449}
14450extern "C" {
14451    pub fn fmpq_set_si(res: *mut fmpq, p: mp_limb_signed_t, q: mp_limb_t);
14452}
14453extern "C" {
14454    pub fn fmpq_equal_ui(q: *mut fmpq, n: mp_limb_signed_t) -> ::std::os::raw::c_int;
14455}
14456extern "C" {
14457    pub fn fmpq_equal_si(q: *mut fmpq, n: mp_limb_signed_t) -> ::std::os::raw::c_int;
14458}
14459extern "C" {
14460    pub fn fmpq_set_fmpz_frac(res: *mut fmpq, p: *mut fmpz, q: *mut fmpz);
14461}
14462extern "C" {
14463    pub fn fmpq_set_str(
14464        res: *mut fmpq,
14465        str: *const ::std::os::raw::c_char,
14466        base: ::std::os::raw::c_int,
14467    ) -> ::std::os::raw::c_int;
14468}
14469extern "C" {
14470    pub fn fmpq_set_mpq(dest: *mut fmpq, src: *mut __mpq_struct);
14471}
14472extern "C" {
14473    pub fn fmpq_get_mpq(dest: *mut __mpq_struct, src: *mut fmpq);
14474}
14475extern "C" {
14476    pub fn fmpq_get_d(a: *mut fmpq) -> f64;
14477}
14478extern "C" {
14479    pub fn fmpq_get_mpfr(
14480        r: *mut __mpfr_struct,
14481        x: *mut fmpq,
14482        rnd: mpfr_rnd_t,
14483    ) -> ::std::os::raw::c_int;
14484}
14485extern "C" {
14486    pub fn fmpq_get_mpz_frac(a: *mut __mpz_struct, b: *mut __mpz_struct, c: *mut fmpq);
14487}
14488extern "C" {
14489    pub fn flint_mpq_init_set_readonly(z: *mut __mpq_struct, f: *mut fmpq);
14490}
14491extern "C" {
14492    pub fn flint_mpq_clear_readonly(z: *mut __mpq_struct);
14493}
14494extern "C" {
14495    pub fn fmpq_init_set_readonly(f: *mut fmpq, z: *mut __mpq_struct);
14496}
14497extern "C" {
14498    pub fn fmpq_clear_readonly(f: *mut fmpq);
14499}
14500extern "C" {
14501    pub fn fmpq_init_set_mpz_frac_readonly(
14502        z: *mut fmpq,
14503        num: *mut __mpz_struct,
14504        den: *mut __mpz_struct,
14505    );
14506}
14507extern "C" {
14508    pub fn _fmpq_get_str(
14509        str: *mut ::std::os::raw::c_char,
14510        b: ::std::os::raw::c_int,
14511        num: *mut fmpz,
14512        den: *mut fmpz,
14513    ) -> *mut ::std::os::raw::c_char;
14514}
14515extern "C" {
14516    pub fn fmpq_get_str(
14517        str: *mut ::std::os::raw::c_char,
14518        b: ::std::os::raw::c_int,
14519        x: *mut fmpq,
14520    ) -> *mut ::std::os::raw::c_char;
14521}
14522extern "C" {
14523    pub fn _fmpq_fprint(file: *mut FILE, num: *mut fmpz, den: *mut fmpz) -> ::std::os::raw::c_int;
14524}
14525extern "C" {
14526    pub fn fmpq_fprint(file: *mut FILE, x: *mut fmpq) -> ::std::os::raw::c_int;
14527}
14528extern "C" {
14529    pub fn _fmpq_print(num: *mut fmpz, den: *mut fmpz) -> ::std::os::raw::c_int;
14530}
14531extern "C" {
14532    pub fn fmpq_print(x: *mut fmpq) -> ::std::os::raw::c_int;
14533}
14534extern "C" {
14535    pub fn _fmpq_randtest(
14536        num: *mut fmpz,
14537        den: *mut fmpz,
14538        state: *mut flint_rand_s,
14539        bits: mp_limb_t,
14540    );
14541}
14542extern "C" {
14543    pub fn fmpq_randtest(res: *mut fmpq, state: *mut flint_rand_s, bits: mp_limb_t);
14544}
14545extern "C" {
14546    pub fn fmpq_randtest_not_zero(res: *mut fmpq, state: *mut flint_rand_s, bits: mp_limb_t);
14547}
14548extern "C" {
14549    pub fn _fmpq_randbits(
14550        num: *mut fmpz,
14551        den: *mut fmpz,
14552        state: *mut flint_rand_s,
14553        bits: mp_limb_t,
14554    );
14555}
14556extern "C" {
14557    pub fn fmpq_randbits(res: *mut fmpq, state: *mut flint_rand_s, bits: mp_limb_t);
14558}
14559extern "C" {
14560    pub fn _fmpq_add_small(
14561        rnum: *mut fmpz,
14562        rden: *mut fmpz,
14563        p1: mp_limb_signed_t,
14564        q1: mp_limb_t,
14565        p2: mp_limb_signed_t,
14566        q2: mp_limb_t,
14567    );
14568}
14569extern "C" {
14570    pub fn _fmpq_mul_small(
14571        rnum: *mut fmpz,
14572        rden: *mut fmpz,
14573        p1: mp_limb_signed_t,
14574        q1: mp_limb_t,
14575        p2: mp_limb_signed_t,
14576        q2: mp_limb_t,
14577    );
14578}
14579extern "C" {
14580    pub fn _fmpq_add(
14581        rnum: *mut fmpz,
14582        rden: *mut fmpz,
14583        op1num: *mut fmpz,
14584        op1den: *mut fmpz,
14585        op2num: *mut fmpz,
14586        op2den: *mut fmpz,
14587    );
14588}
14589extern "C" {
14590    pub fn fmpq_add(res: *mut fmpq, op1: *mut fmpq, op2: *mut fmpq);
14591}
14592extern "C" {
14593    pub fn _fmpq_add_si(
14594        rnum: *mut fmpz,
14595        rden: *mut fmpz,
14596        p: *mut fmpz,
14597        q: *mut fmpz,
14598        r: mp_limb_signed_t,
14599    );
14600}
14601extern "C" {
14602    pub fn fmpq_add_si(res: *mut fmpq, op1: *mut fmpq, c: mp_limb_signed_t);
14603}
14604extern "C" {
14605    pub fn _fmpq_add_ui(rnum: *mut fmpz, rden: *mut fmpz, p: *mut fmpz, q: *mut fmpz, r: mp_limb_t);
14606}
14607extern "C" {
14608    pub fn fmpq_add_ui(res: *mut fmpq, op1: *mut fmpq, c: mp_limb_t);
14609}
14610extern "C" {
14611    pub fn _fmpq_add_fmpz(
14612        rnum: *mut fmpz,
14613        rden: *mut fmpz,
14614        p: *mut fmpz,
14615        q: *mut fmpz,
14616        r: *mut fmpz,
14617    );
14618}
14619extern "C" {
14620    pub fn fmpq_add_fmpz(res: *mut fmpq, op1: *mut fmpq, c: *mut fmpz);
14621}
14622extern "C" {
14623    pub fn _fmpq_sub(
14624        rnum: *mut fmpz,
14625        rden: *mut fmpz,
14626        op1num: *mut fmpz,
14627        op1den: *mut fmpz,
14628        op2num: *mut fmpz,
14629        op2den: *mut fmpz,
14630    );
14631}
14632extern "C" {
14633    pub fn fmpq_sub(res: *mut fmpq, op1: *mut fmpq, op2: *mut fmpq);
14634}
14635extern "C" {
14636    pub fn _fmpq_sub_si(
14637        rnum: *mut fmpz,
14638        rden: *mut fmpz,
14639        p: *mut fmpz,
14640        q: *mut fmpz,
14641        r: mp_limb_signed_t,
14642    );
14643}
14644extern "C" {
14645    pub fn fmpq_sub_si(res: *mut fmpq, op1: *mut fmpq, c: mp_limb_signed_t);
14646}
14647extern "C" {
14648    pub fn _fmpq_sub_ui(rnum: *mut fmpz, rden: *mut fmpz, p: *mut fmpz, q: *mut fmpz, r: mp_limb_t);
14649}
14650extern "C" {
14651    pub fn fmpq_sub_ui(res: *mut fmpq, op1: *mut fmpq, c: mp_limb_t);
14652}
14653extern "C" {
14654    pub fn _fmpq_sub_fmpz(
14655        rnum: *mut fmpz,
14656        rden: *mut fmpz,
14657        p: *mut fmpz,
14658        q: *mut fmpz,
14659        r: *mut fmpz,
14660    );
14661}
14662extern "C" {
14663    pub fn fmpq_sub_fmpz(res: *mut fmpq, op1: *mut fmpq, c: *mut fmpz);
14664}
14665extern "C" {
14666    pub fn _fmpq_mul_si(
14667        rnum: *mut fmpz,
14668        rden: *mut fmpz,
14669        p: *mut fmpz,
14670        q: *mut fmpz,
14671        r: mp_limb_signed_t,
14672    );
14673}
14674extern "C" {
14675    pub fn fmpq_mul_si(res: *mut fmpq, op1: *mut fmpq, c: mp_limb_signed_t);
14676}
14677extern "C" {
14678    pub fn _fmpq_mul_ui(rnum: *mut fmpz, rden: *mut fmpz, p: *mut fmpz, q: *mut fmpz, r: mp_limb_t);
14679}
14680extern "C" {
14681    pub fn fmpq_mul_ui(res: *mut fmpq, op1: *mut fmpq, c: mp_limb_t);
14682}
14683extern "C" {
14684    pub fn _fmpq_mul(
14685        rnum: *mut fmpz,
14686        rden: *mut fmpz,
14687        op1num: *mut fmpz,
14688        op1den: *mut fmpz,
14689        op2num: *mut fmpz,
14690        op2den: *mut fmpz,
14691    );
14692}
14693extern "C" {
14694    pub fn fmpq_mul(res: *mut fmpq, op1: *mut fmpq, op2: *mut fmpq);
14695}
14696extern "C" {
14697    pub fn fmpq_mul_fmpz(res: *mut fmpq, op: *mut fmpq, x: *mut fmpz);
14698}
14699extern "C" {
14700    pub fn _fmpq_pow_si(
14701        rnum: *mut fmpz,
14702        rden: *mut fmpz,
14703        opnum: *mut fmpz,
14704        opden: *mut fmpz,
14705        e: mp_limb_signed_t,
14706    );
14707}
14708extern "C" {
14709    pub fn fmpq_pow_si(rop: *mut fmpq, op: *mut fmpq, e: mp_limb_signed_t);
14710}
14711extern "C" {
14712    pub fn fmpq_pow_fmpz(a: *mut fmpq, b: *mut fmpq, e: *mut fmpz) -> ::std::os::raw::c_int;
14713}
14714extern "C" {
14715    pub fn _fmpq_addmul(
14716        rnum: *mut fmpz,
14717        rden: *mut fmpz,
14718        op1num: *mut fmpz,
14719        op1den: *mut fmpz,
14720        op2num: *mut fmpz,
14721        op2den: *mut fmpz,
14722    );
14723}
14724extern "C" {
14725    pub fn fmpq_addmul(res: *mut fmpq, op1: *mut fmpq, op2: *mut fmpq);
14726}
14727extern "C" {
14728    pub fn _fmpq_submul(
14729        rnum: *mut fmpz,
14730        rden: *mut fmpz,
14731        op1num: *mut fmpz,
14732        op1den: *mut fmpz,
14733        op2num: *mut fmpz,
14734        op2den: *mut fmpz,
14735    );
14736}
14737extern "C" {
14738    pub fn fmpq_submul(res: *mut fmpq, op1: *mut fmpq, op2: *mut fmpq);
14739}
14740extern "C" {
14741    pub fn fmpq_inv(dest: *mut fmpq, src: *mut fmpq);
14742}
14743extern "C" {
14744    pub fn _fmpq_div(
14745        rnum: *mut fmpz,
14746        rden: *mut fmpz,
14747        op1num: *mut fmpz,
14748        op1den: *mut fmpz,
14749        op2num: *mut fmpz,
14750        op2den: *mut fmpz,
14751    );
14752}
14753extern "C" {
14754    pub fn fmpq_div(res: *mut fmpq, op1: *mut fmpq, op2: *mut fmpq);
14755}
14756extern "C" {
14757    pub fn fmpq_div_fmpz(res: *mut fmpq, op: *mut fmpq, x: *mut fmpz);
14758}
14759extern "C" {
14760    pub fn fmpq_mul_2exp(res: *mut fmpq, x: *mut fmpq, exp: mp_limb_t);
14761}
14762extern "C" {
14763    pub fn fmpq_div_2exp(res: *mut fmpq, x: *mut fmpq, exp: mp_limb_t);
14764}
14765extern "C" {
14766    pub fn _fmpq_mod_fmpz(
14767        res: *mut fmpz,
14768        num: *mut fmpz,
14769        den: *mut fmpz,
14770        mod_: *mut fmpz,
14771    ) -> ::std::os::raw::c_int;
14772}
14773extern "C" {
14774    pub fn fmpq_mod_fmpz(res: *mut fmpz, x: *mut fmpq, mod_: *mut fmpz) -> ::std::os::raw::c_int;
14775}
14776extern "C" {
14777    pub fn _fmpq_gcd(
14778        rnum: *mut fmpz,
14779        rden: *mut fmpz,
14780        p: *mut fmpz,
14781        q: *mut fmpz,
14782        r: *mut fmpz,
14783        s: *mut fmpz,
14784    );
14785}
14786extern "C" {
14787    pub fn fmpq_gcd(res: *mut fmpq, op1: *mut fmpq, op2: *mut fmpq);
14788}
14789extern "C" {
14790    pub fn _fmpq_reconstruct_fmpz(
14791        num: *mut fmpz,
14792        den: *mut fmpz,
14793        a: *mut fmpz,
14794        m: *mut fmpz,
14795    ) -> ::std::os::raw::c_int;
14796}
14797extern "C" {
14798    pub fn fmpq_reconstruct_fmpz(
14799        res: *mut fmpq,
14800        a: *mut fmpz,
14801        m: *mut fmpz,
14802    ) -> ::std::os::raw::c_int;
14803}
14804extern "C" {
14805    pub fn _fmpq_reconstruct_fmpz_2_naive(
14806        n: *mut fmpz,
14807        d: *mut fmpz,
14808        a: *mut fmpz,
14809        m: *mut fmpz,
14810        N: *mut fmpz,
14811        D: *mut fmpz,
14812    ) -> ::std::os::raw::c_int;
14813}
14814extern "C" {
14815    pub fn _fmpq_reconstruct_fmpz_2(
14816        n: *mut fmpz,
14817        d: *mut fmpz,
14818        a: *mut fmpz,
14819        m: *mut fmpz,
14820        N: *mut fmpz,
14821        D: *mut fmpz,
14822    ) -> ::std::os::raw::c_int;
14823}
14824extern "C" {
14825    pub fn fmpq_reconstruct_fmpz_2(
14826        res: *mut fmpq,
14827        a: *mut fmpz,
14828        m: *mut fmpz,
14829        N: *mut fmpz,
14830        D: *mut fmpz,
14831    ) -> ::std::os::raw::c_int;
14832}
14833extern "C" {
14834    pub fn fmpq_height_bits(x: *mut fmpq) -> mp_limb_t;
14835}
14836extern "C" {
14837    pub fn fmpq_height(height: *mut fmpz, x: *mut fmpq);
14838}
14839extern "C" {
14840    pub fn _fmpq_next_calkin_wilf(rnum: *mut fmpz, rden: *mut fmpz, num: *mut fmpz, den: *mut fmpz);
14841}
14842extern "C" {
14843    pub fn fmpq_next_calkin_wilf(res: *mut fmpq, x: *mut fmpq);
14844}
14845extern "C" {
14846    pub fn _fmpq_next_signed_calkin_wilf(
14847        rnum: *mut fmpz,
14848        rden: *mut fmpz,
14849        num: *mut fmpz,
14850        den: *mut fmpz,
14851    );
14852}
14853extern "C" {
14854    pub fn fmpq_next_signed_calkin_wilf(res: *mut fmpq, x: *mut fmpq);
14855}
14856extern "C" {
14857    pub fn _fmpq_next_minimal(rnum: *mut fmpz, rden: *mut fmpz, num: *mut fmpz, den: *mut fmpz);
14858}
14859extern "C" {
14860    pub fn fmpq_next_minimal(res: *mut fmpq, x: *mut fmpq);
14861}
14862extern "C" {
14863    pub fn _fmpq_next_signed_minimal(
14864        rnum: *mut fmpz,
14865        rden: *mut fmpz,
14866        num: *mut fmpz,
14867        den: *mut fmpz,
14868    );
14869}
14870extern "C" {
14871    pub fn fmpq_next_signed_minimal(res: *mut fmpq, x: *mut fmpq);
14872}
14873extern "C" {
14874    pub fn fmpq_farey_neighbors(left: *mut fmpq, right: *mut fmpq, mid: *mut fmpq, Q: *mut fmpz);
14875}
14876extern "C" {
14877    pub fn fmpq_simplest_between(mid: *mut fmpq, l: *mut fmpq, r: *mut fmpq);
14878}
14879extern "C" {
14880    pub fn _fmpq_simplest_between(
14881        mid_num: *mut fmpz,
14882        mid_den: *mut fmpz,
14883        l_num: *mut fmpz,
14884        l_den: *mut fmpz,
14885        r_num: *mut fmpz,
14886        r_den: *mut fmpz,
14887    );
14888}
14889extern "C" {
14890    pub fn fmpq_get_cfrac_naive(
14891        c: *mut fmpz,
14892        rem: *mut fmpq,
14893        x: *mut fmpq,
14894        n: mp_limb_signed_t,
14895    ) -> mp_limb_signed_t;
14896}
14897extern "C" {
14898    pub fn fmpq_get_cfrac(
14899        c: *mut fmpz,
14900        rem: *mut fmpq,
14901        x: *mut fmpq,
14902        n: mp_limb_signed_t,
14903    ) -> mp_limb_signed_t;
14904}
14905extern "C" {
14906    pub fn fmpq_set_cfrac(x: *mut fmpq, c: *const fmpz, n: mp_limb_signed_t);
14907}
14908extern "C" {
14909    pub fn fmpq_cfrac_bound(x: *mut fmpq) -> mp_limb_signed_t;
14910}
14911extern "C" {
14912    pub fn fmpq_dedekind_sum_naive(s: *mut fmpq, h: *mut fmpz, k: *mut fmpz);
14913}
14914extern "C" {
14915    pub fn fmpq_dedekind_sum(s: *mut fmpq, h: *mut fmpz, k: *mut fmpz);
14916}
14917extern "C" {
14918    pub fn _fmpq_harmonic_ui(num: *mut fmpz, den: *mut fmpz, n: mp_limb_t);
14919}
14920extern "C" {
14921    pub fn fmpq_harmonic_ui(x: *mut fmpq, n: mp_limb_t);
14922}
14923extern "C" {
14924    pub fn _fmpq_vec_init(len: mp_limb_signed_t) -> *mut fmpq;
14925}
14926extern "C" {
14927    pub fn _fmpq_vec_clear(vec: *mut fmpq, len: mp_limb_signed_t);
14928}
14929#[doc = " 2x2 integer matrix"]
14930#[repr(C)]
14931#[derive(Debug, Copy, Clone)]
14932pub struct _fmpz_mat22_struct {
14933    pub _11: fmpz_t,
14934    pub _12: fmpz_t,
14935    pub _21: fmpz_t,
14936    pub _22: fmpz_t,
14937    pub det: ::std::os::raw::c_int,
14938}
14939#[test]
14940fn bindgen_test_layout__fmpz_mat22_struct() {
14941    assert_eq!(
14942        ::std::mem::size_of::<_fmpz_mat22_struct>(),
14943        40usize,
14944        concat!("Size of: ", stringify!(_fmpz_mat22_struct))
14945    );
14946    assert_eq!(
14947        ::std::mem::align_of::<_fmpz_mat22_struct>(),
14948        8usize,
14949        concat!("Alignment of ", stringify!(_fmpz_mat22_struct))
14950    );
14951    assert_eq!(
14952        unsafe { &(*(::std::ptr::null::<_fmpz_mat22_struct>()))._11 as *const _ as usize },
14953        0usize,
14954        concat!(
14955            "Offset of field: ",
14956            stringify!(_fmpz_mat22_struct),
14957            "::",
14958            stringify!(_11)
14959        )
14960    );
14961    assert_eq!(
14962        unsafe { &(*(::std::ptr::null::<_fmpz_mat22_struct>()))._12 as *const _ as usize },
14963        8usize,
14964        concat!(
14965            "Offset of field: ",
14966            stringify!(_fmpz_mat22_struct),
14967            "::",
14968            stringify!(_12)
14969        )
14970    );
14971    assert_eq!(
14972        unsafe { &(*(::std::ptr::null::<_fmpz_mat22_struct>()))._21 as *const _ as usize },
14973        16usize,
14974        concat!(
14975            "Offset of field: ",
14976            stringify!(_fmpz_mat22_struct),
14977            "::",
14978            stringify!(_21)
14979        )
14980    );
14981    assert_eq!(
14982        unsafe { &(*(::std::ptr::null::<_fmpz_mat22_struct>()))._22 as *const _ as usize },
14983        24usize,
14984        concat!(
14985            "Offset of field: ",
14986            stringify!(_fmpz_mat22_struct),
14987            "::",
14988            stringify!(_22)
14989        )
14990    );
14991    assert_eq!(
14992        unsafe { &(*(::std::ptr::null::<_fmpz_mat22_struct>())).det as *const _ as usize },
14993        32usize,
14994        concat!(
14995            "Offset of field: ",
14996            stringify!(_fmpz_mat22_struct),
14997            "::",
14998            stringify!(det)
14999        )
15000    );
15001}
15002pub type _fmpz_mat22_t = [_fmpz_mat22_struct; 1usize];
15003#[repr(C)]
15004#[derive(Debug, Copy, Clone)]
15005pub struct _ui_mat22_struct {
15006    pub _11: mp_limb_t,
15007    pub _12: mp_limb_t,
15008    pub _21: mp_limb_t,
15009    pub _22: mp_limb_t,
15010    pub det: ::std::os::raw::c_int,
15011}
15012#[test]
15013fn bindgen_test_layout__ui_mat22_struct() {
15014    assert_eq!(
15015        ::std::mem::size_of::<_ui_mat22_struct>(),
15016        40usize,
15017        concat!("Size of: ", stringify!(_ui_mat22_struct))
15018    );
15019    assert_eq!(
15020        ::std::mem::align_of::<_ui_mat22_struct>(),
15021        8usize,
15022        concat!("Alignment of ", stringify!(_ui_mat22_struct))
15023    );
15024    assert_eq!(
15025        unsafe { &(*(::std::ptr::null::<_ui_mat22_struct>()))._11 as *const _ as usize },
15026        0usize,
15027        concat!(
15028            "Offset of field: ",
15029            stringify!(_ui_mat22_struct),
15030            "::",
15031            stringify!(_11)
15032        )
15033    );
15034    assert_eq!(
15035        unsafe { &(*(::std::ptr::null::<_ui_mat22_struct>()))._12 as *const _ as usize },
15036        8usize,
15037        concat!(
15038            "Offset of field: ",
15039            stringify!(_ui_mat22_struct),
15040            "::",
15041            stringify!(_12)
15042        )
15043    );
15044    assert_eq!(
15045        unsafe { &(*(::std::ptr::null::<_ui_mat22_struct>()))._21 as *const _ as usize },
15046        16usize,
15047        concat!(
15048            "Offset of field: ",
15049            stringify!(_ui_mat22_struct),
15050            "::",
15051            stringify!(_21)
15052        )
15053    );
15054    assert_eq!(
15055        unsafe { &(*(::std::ptr::null::<_ui_mat22_struct>()))._22 as *const _ as usize },
15056        24usize,
15057        concat!(
15058            "Offset of field: ",
15059            stringify!(_ui_mat22_struct),
15060            "::",
15061            stringify!(_22)
15062        )
15063    );
15064    assert_eq!(
15065        unsafe { &(*(::std::ptr::null::<_ui_mat22_struct>())).det as *const _ as usize },
15066        32usize,
15067        concat!(
15068            "Offset of field: ",
15069            stringify!(_ui_mat22_struct),
15070            "::",
15071            stringify!(det)
15072        )
15073    );
15074}
15075pub type _ui_mat22_t = [_ui_mat22_struct; 1usize];
15076extern "C" {
15077    pub fn _fmpz_mat22_init(M: *mut _fmpz_mat22_struct);
15078}
15079extern "C" {
15080    pub fn _fmpz_mat22_clear(M: *mut _fmpz_mat22_struct);
15081}
15082extern "C" {
15083    pub fn _fmpz_mat22_one(M: *mut _fmpz_mat22_struct);
15084}
15085extern "C" {
15086    pub fn _fmpz_mat22_is_one(M: *mut _fmpz_mat22_struct) -> ::std::os::raw::c_int;
15087}
15088extern "C" {
15089    pub fn _fmpz_mat22_bits(N: *mut _fmpz_mat22_struct) -> mp_limb_t;
15090}
15091extern "C" {
15092    pub fn _fmpz_mat22_rmul(M: *mut _fmpz_mat22_struct, N: *mut _fmpz_mat22_struct);
15093}
15094extern "C" {
15095    pub fn _fmpz_mat22_rmul_ui(M: *mut _fmpz_mat22_struct, N: *mut _ui_mat22_struct);
15096}
15097extern "C" {
15098    pub fn _fmpz_mat22_rmul_inv_ui(M: *mut _fmpz_mat22_struct, N: *mut _ui_mat22_struct);
15099}
15100extern "C" {
15101    pub fn _fmpz_mat22_rmul_elem(M: *mut _fmpz_mat22_struct, q: *mut fmpz);
15102}
15103extern "C" {
15104    pub fn _fmpz_mat22_rmul_inv_elem(M: *mut _fmpz_mat22_struct, q: *mut fmpz);
15105}
15106extern "C" {
15107    pub fn _fmpz_mat22_lmul_elem(M: *mut _fmpz_mat22_struct, q: *mut fmpz);
15108}
15109#[doc = " resizable integer vector specific to cfrac functionality"]
15110#[repr(C)]
15111#[derive(Debug, Copy, Clone)]
15112pub struct _fmpq_cfrac_list_struct {
15113    pub array: *mut fmpz,
15114    pub length: mp_limb_signed_t,
15115    pub alloc: mp_limb_signed_t,
15116    pub limit: mp_limb_signed_t,
15117    pub alt_sum: fmpz_t,
15118    pub want_alt_sum: ::std::os::raw::c_int,
15119}
15120#[test]
15121fn bindgen_test_layout__fmpq_cfrac_list_struct() {
15122    assert_eq!(
15123        ::std::mem::size_of::<_fmpq_cfrac_list_struct>(),
15124        48usize,
15125        concat!("Size of: ", stringify!(_fmpq_cfrac_list_struct))
15126    );
15127    assert_eq!(
15128        ::std::mem::align_of::<_fmpq_cfrac_list_struct>(),
15129        8usize,
15130        concat!("Alignment of ", stringify!(_fmpq_cfrac_list_struct))
15131    );
15132    assert_eq!(
15133        unsafe { &(*(::std::ptr::null::<_fmpq_cfrac_list_struct>())).array as *const _ as usize },
15134        0usize,
15135        concat!(
15136            "Offset of field: ",
15137            stringify!(_fmpq_cfrac_list_struct),
15138            "::",
15139            stringify!(array)
15140        )
15141    );
15142    assert_eq!(
15143        unsafe { &(*(::std::ptr::null::<_fmpq_cfrac_list_struct>())).length as *const _ as usize },
15144        8usize,
15145        concat!(
15146            "Offset of field: ",
15147            stringify!(_fmpq_cfrac_list_struct),
15148            "::",
15149            stringify!(length)
15150        )
15151    );
15152    assert_eq!(
15153        unsafe { &(*(::std::ptr::null::<_fmpq_cfrac_list_struct>())).alloc as *const _ as usize },
15154        16usize,
15155        concat!(
15156            "Offset of field: ",
15157            stringify!(_fmpq_cfrac_list_struct),
15158            "::",
15159            stringify!(alloc)
15160        )
15161    );
15162    assert_eq!(
15163        unsafe { &(*(::std::ptr::null::<_fmpq_cfrac_list_struct>())).limit as *const _ as usize },
15164        24usize,
15165        concat!(
15166            "Offset of field: ",
15167            stringify!(_fmpq_cfrac_list_struct),
15168            "::",
15169            stringify!(limit)
15170        )
15171    );
15172    assert_eq!(
15173        unsafe { &(*(::std::ptr::null::<_fmpq_cfrac_list_struct>())).alt_sum as *const _ as usize },
15174        32usize,
15175        concat!(
15176            "Offset of field: ",
15177            stringify!(_fmpq_cfrac_list_struct),
15178            "::",
15179            stringify!(alt_sum)
15180        )
15181    );
15182    assert_eq!(
15183        unsafe {
15184            &(*(::std::ptr::null::<_fmpq_cfrac_list_struct>())).want_alt_sum as *const _ as usize
15185        },
15186        40usize,
15187        concat!(
15188            "Offset of field: ",
15189            stringify!(_fmpq_cfrac_list_struct),
15190            "::",
15191            stringify!(want_alt_sum)
15192        )
15193    );
15194}
15195pub type _fmpq_cfrac_list_t = [_fmpq_cfrac_list_struct; 1usize];
15196extern "C" {
15197    pub fn _fmpq_cfrac_list_init(v: *mut _fmpq_cfrac_list_struct);
15198}
15199extern "C" {
15200    pub fn _fmpq_cfrac_list_clear(v: *mut _fmpq_cfrac_list_struct);
15201}
15202extern "C" {
15203    pub fn _fmpq_cfrac_list_fit_length(v: *mut _fmpq_cfrac_list_struct, len: mp_limb_signed_t);
15204}
15205extern "C" {
15206    pub fn _fmpq_cfrac_list_push_back(v: *mut _fmpq_cfrac_list_struct, a: *mut fmpz);
15207}
15208extern "C" {
15209    pub fn _fmpq_cfrac_list_push_back_zero(v: *mut _fmpq_cfrac_list_struct);
15210}
15211extern "C" {
15212    pub fn _fmpq_cfrac_list_append_ui(
15213        v: *mut _fmpq_cfrac_list_struct,
15214        a: *const mp_limb_t,
15215        n: mp_limb_signed_t,
15216    );
15217}
15218extern "C" {
15219    pub fn _fmpq_cfrac_list_swap(a: *mut _fmpq_cfrac_list_struct, b: *mut _fmpq_cfrac_list_struct);
15220}
15221#[doc = " ball for closed interval [left, right]"]
15222#[repr(C)]
15223#[derive(Debug, Copy, Clone)]
15224pub struct _fmpq_ball_struct {
15225    pub left_num: fmpz_t,
15226    pub left_den: fmpz_t,
15227    pub right_num: fmpz_t,
15228    pub right_den: fmpz_t,
15229    pub exact: ::std::os::raw::c_int,
15230}
15231#[test]
15232fn bindgen_test_layout__fmpq_ball_struct() {
15233    assert_eq!(
15234        ::std::mem::size_of::<_fmpq_ball_struct>(),
15235        40usize,
15236        concat!("Size of: ", stringify!(_fmpq_ball_struct))
15237    );
15238    assert_eq!(
15239        ::std::mem::align_of::<_fmpq_ball_struct>(),
15240        8usize,
15241        concat!("Alignment of ", stringify!(_fmpq_ball_struct))
15242    );
15243    assert_eq!(
15244        unsafe { &(*(::std::ptr::null::<_fmpq_ball_struct>())).left_num as *const _ as usize },
15245        0usize,
15246        concat!(
15247            "Offset of field: ",
15248            stringify!(_fmpq_ball_struct),
15249            "::",
15250            stringify!(left_num)
15251        )
15252    );
15253    assert_eq!(
15254        unsafe { &(*(::std::ptr::null::<_fmpq_ball_struct>())).left_den as *const _ as usize },
15255        8usize,
15256        concat!(
15257            "Offset of field: ",
15258            stringify!(_fmpq_ball_struct),
15259            "::",
15260            stringify!(left_den)
15261        )
15262    );
15263    assert_eq!(
15264        unsafe { &(*(::std::ptr::null::<_fmpq_ball_struct>())).right_num as *const _ as usize },
15265        16usize,
15266        concat!(
15267            "Offset of field: ",
15268            stringify!(_fmpq_ball_struct),
15269            "::",
15270            stringify!(right_num)
15271        )
15272    );
15273    assert_eq!(
15274        unsafe { &(*(::std::ptr::null::<_fmpq_ball_struct>())).right_den as *const _ as usize },
15275        24usize,
15276        concat!(
15277            "Offset of field: ",
15278            stringify!(_fmpq_ball_struct),
15279            "::",
15280            stringify!(right_den)
15281        )
15282    );
15283    assert_eq!(
15284        unsafe { &(*(::std::ptr::null::<_fmpq_ball_struct>())).exact as *const _ as usize },
15285        32usize,
15286        concat!(
15287            "Offset of field: ",
15288            stringify!(_fmpq_ball_struct),
15289            "::",
15290            stringify!(exact)
15291        )
15292    );
15293}
15294pub type _fmpq_ball_t = [_fmpq_ball_struct; 1usize];
15295extern "C" {
15296    pub fn _fmpq_ball_init(x: *mut _fmpq_ball_struct);
15297}
15298extern "C" {
15299    pub fn _fmpq_ball_clear(x: *mut _fmpq_ball_struct);
15300}
15301extern "C" {
15302    pub fn _fmpq_ball_swap(x: *mut _fmpq_ball_struct, y: *mut _fmpq_ball_struct);
15303}
15304extern "C" {
15305    pub fn _fmpq_ball_gt_one(x: *mut _fmpq_ball_struct) -> ::std::os::raw::c_int;
15306}
15307extern "C" {
15308    pub fn _fmpq_hgcd(
15309        s: *mut _fmpq_cfrac_list_struct,
15310        M: *mut _fmpz_mat22_struct,
15311        x_num: *mut fmpz,
15312        x_den: *mut fmpz,
15313    );
15314}
15315extern "C" {
15316    pub fn _fmpq_ball_get_cfrac(
15317        s: *mut _fmpq_cfrac_list_struct,
15318        M: *mut _fmpz_mat22_struct,
15319        needM: ::std::os::raw::c_int,
15320        x: *mut _fmpq_ball_struct,
15321    );
15322}
15323extern "C" {
15324    pub fn fmpq_numerator(n: *mut fmpz, q: *mut fmpq);
15325}
15326extern "C" {
15327    pub fn fmpq_denominator(n: *mut fmpz, q: *mut fmpq);
15328}
15329extern "C" {
15330    pub fn fmpq_numerator_ptr(q: *mut fmpq) -> *mut fmpz;
15331}
15332extern "C" {
15333    pub fn fmpq_denominator_ptr(q: *mut fmpq) -> *mut fmpz;
15334}
15335extern "C" {
15336    pub fn fmpq_equal_fmpz(q: *mut fmpq, n: *mut fmpz) -> ::std::os::raw::c_int;
15337}
15338#[repr(C)]
15339#[derive(Copy, Clone)]
15340pub struct thread_pool_entry_struct {
15341    pub pth: pthread_t,
15342    pub mutex: pthread_mutex_t,
15343    pub sleep1: pthread_cond_t,
15344    pub sleep2: pthread_cond_t,
15345    pub idx: ::std::os::raw::c_int,
15346    pub available: ::std::os::raw::c_int,
15347    pub max_workers: ::std::os::raw::c_int,
15348    pub fxn: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
15349    pub fxnarg: *mut ::std::os::raw::c_void,
15350    pub working: ::std::os::raw::c_int,
15351    pub exit: ::std::os::raw::c_int,
15352}
15353#[test]
15354fn bindgen_test_layout_thread_pool_entry_struct() {
15355    assert_eq!(
15356        ::std::mem::size_of::<thread_pool_entry_struct>(),
15357        184usize,
15358        concat!("Size of: ", stringify!(thread_pool_entry_struct))
15359    );
15360    assert_eq!(
15361        ::std::mem::align_of::<thread_pool_entry_struct>(),
15362        8usize,
15363        concat!("Alignment of ", stringify!(thread_pool_entry_struct))
15364    );
15365    assert_eq!(
15366        unsafe { &(*(::std::ptr::null::<thread_pool_entry_struct>())).pth as *const _ as usize },
15367        0usize,
15368        concat!(
15369            "Offset of field: ",
15370            stringify!(thread_pool_entry_struct),
15371            "::",
15372            stringify!(pth)
15373        )
15374    );
15375    assert_eq!(
15376        unsafe { &(*(::std::ptr::null::<thread_pool_entry_struct>())).mutex as *const _ as usize },
15377        8usize,
15378        concat!(
15379            "Offset of field: ",
15380            stringify!(thread_pool_entry_struct),
15381            "::",
15382            stringify!(mutex)
15383        )
15384    );
15385    assert_eq!(
15386        unsafe { &(*(::std::ptr::null::<thread_pool_entry_struct>())).sleep1 as *const _ as usize },
15387        48usize,
15388        concat!(
15389            "Offset of field: ",
15390            stringify!(thread_pool_entry_struct),
15391            "::",
15392            stringify!(sleep1)
15393        )
15394    );
15395    assert_eq!(
15396        unsafe { &(*(::std::ptr::null::<thread_pool_entry_struct>())).sleep2 as *const _ as usize },
15397        96usize,
15398        concat!(
15399            "Offset of field: ",
15400            stringify!(thread_pool_entry_struct),
15401            "::",
15402            stringify!(sleep2)
15403        )
15404    );
15405    assert_eq!(
15406        unsafe { &(*(::std::ptr::null::<thread_pool_entry_struct>())).idx as *const _ as usize },
15407        144usize,
15408        concat!(
15409            "Offset of field: ",
15410            stringify!(thread_pool_entry_struct),
15411            "::",
15412            stringify!(idx)
15413        )
15414    );
15415    assert_eq!(
15416        unsafe {
15417            &(*(::std::ptr::null::<thread_pool_entry_struct>())).available as *const _ as usize
15418        },
15419        148usize,
15420        concat!(
15421            "Offset of field: ",
15422            stringify!(thread_pool_entry_struct),
15423            "::",
15424            stringify!(available)
15425        )
15426    );
15427    assert_eq!(
15428        unsafe {
15429            &(*(::std::ptr::null::<thread_pool_entry_struct>())).max_workers as *const _ as usize
15430        },
15431        152usize,
15432        concat!(
15433            "Offset of field: ",
15434            stringify!(thread_pool_entry_struct),
15435            "::",
15436            stringify!(max_workers)
15437        )
15438    );
15439    assert_eq!(
15440        unsafe { &(*(::std::ptr::null::<thread_pool_entry_struct>())).fxn as *const _ as usize },
15441        160usize,
15442        concat!(
15443            "Offset of field: ",
15444            stringify!(thread_pool_entry_struct),
15445            "::",
15446            stringify!(fxn)
15447        )
15448    );
15449    assert_eq!(
15450        unsafe { &(*(::std::ptr::null::<thread_pool_entry_struct>())).fxnarg as *const _ as usize },
15451        168usize,
15452        concat!(
15453            "Offset of field: ",
15454            stringify!(thread_pool_entry_struct),
15455            "::",
15456            stringify!(fxnarg)
15457        )
15458    );
15459    assert_eq!(
15460        unsafe {
15461            &(*(::std::ptr::null::<thread_pool_entry_struct>())).working as *const _ as usize
15462        },
15463        176usize,
15464        concat!(
15465            "Offset of field: ",
15466            stringify!(thread_pool_entry_struct),
15467            "::",
15468            stringify!(working)
15469        )
15470    );
15471    assert_eq!(
15472        unsafe { &(*(::std::ptr::null::<thread_pool_entry_struct>())).exit as *const _ as usize },
15473        180usize,
15474        concat!(
15475            "Offset of field: ",
15476            stringify!(thread_pool_entry_struct),
15477            "::",
15478            stringify!(exit)
15479        )
15480    );
15481}
15482pub type thread_pool_entry_t = [thread_pool_entry_struct; 1usize];
15483#[repr(C)]
15484#[derive(Copy, Clone)]
15485pub struct thread_pool_struct {
15486    pub original_affinity: cpu_set_t,
15487    pub mutex: pthread_mutex_t,
15488    pub tdata: *mut thread_pool_entry_struct,
15489    pub length: mp_limb_signed_t,
15490}
15491#[test]
15492fn bindgen_test_layout_thread_pool_struct() {
15493    assert_eq!(
15494        ::std::mem::size_of::<thread_pool_struct>(),
15495        184usize,
15496        concat!("Size of: ", stringify!(thread_pool_struct))
15497    );
15498    assert_eq!(
15499        ::std::mem::align_of::<thread_pool_struct>(),
15500        8usize,
15501        concat!("Alignment of ", stringify!(thread_pool_struct))
15502    );
15503    assert_eq!(
15504        unsafe {
15505            &(*(::std::ptr::null::<thread_pool_struct>())).original_affinity as *const _ as usize
15506        },
15507        0usize,
15508        concat!(
15509            "Offset of field: ",
15510            stringify!(thread_pool_struct),
15511            "::",
15512            stringify!(original_affinity)
15513        )
15514    );
15515    assert_eq!(
15516        unsafe { &(*(::std::ptr::null::<thread_pool_struct>())).mutex as *const _ as usize },
15517        128usize,
15518        concat!(
15519            "Offset of field: ",
15520            stringify!(thread_pool_struct),
15521            "::",
15522            stringify!(mutex)
15523        )
15524    );
15525    assert_eq!(
15526        unsafe { &(*(::std::ptr::null::<thread_pool_struct>())).tdata as *const _ as usize },
15527        168usize,
15528        concat!(
15529            "Offset of field: ",
15530            stringify!(thread_pool_struct),
15531            "::",
15532            stringify!(tdata)
15533        )
15534    );
15535    assert_eq!(
15536        unsafe { &(*(::std::ptr::null::<thread_pool_struct>())).length as *const _ as usize },
15537        176usize,
15538        concat!(
15539            "Offset of field: ",
15540            stringify!(thread_pool_struct),
15541            "::",
15542            stringify!(length)
15543        )
15544    );
15545}
15546pub type thread_pool_t = [thread_pool_struct; 1usize];
15547pub type thread_pool_handle = ::std::os::raw::c_int;
15548extern "C" {
15549    pub static mut global_thread_pool: thread_pool_t;
15550}
15551extern "C" {
15552    pub static mut global_thread_pool_initialized: ::std::os::raw::c_int;
15553}
15554extern "C" {
15555    pub fn thread_pool_idle_loop(varg: *mut ::std::os::raw::c_void) -> *mut ::std::os::raw::c_void;
15556}
15557extern "C" {
15558    pub fn thread_pool_init(T: *mut thread_pool_struct, l: mp_limb_signed_t);
15559}
15560extern "C" {
15561    pub fn thread_pool_set_affinity(
15562        T: *mut thread_pool_struct,
15563        cpus: *mut ::std::os::raw::c_int,
15564        length: mp_limb_signed_t,
15565    ) -> ::std::os::raw::c_int;
15566}
15567extern "C" {
15568    pub fn thread_pool_restore_affinity(T: *mut thread_pool_struct) -> ::std::os::raw::c_int;
15569}
15570extern "C" {
15571    pub fn thread_pool_get_size(T: *mut thread_pool_struct) -> mp_limb_signed_t;
15572}
15573extern "C" {
15574    pub fn thread_pool_set_size(
15575        T: *mut thread_pool_struct,
15576        new_size: mp_limb_signed_t,
15577    ) -> ::std::os::raw::c_int;
15578}
15579extern "C" {
15580    pub fn thread_pool_request(
15581        T: *mut thread_pool_struct,
15582        out: *mut thread_pool_handle,
15583        requested: mp_limb_signed_t,
15584    ) -> mp_limb_signed_t;
15585}
15586extern "C" {
15587    pub fn thread_pool_wake(
15588        T: *mut thread_pool_struct,
15589        i: thread_pool_handle,
15590        max_workers: ::std::os::raw::c_int,
15591        f: ::std::option::Option<unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void)>,
15592        a: *mut ::std::os::raw::c_void,
15593    );
15594}
15595extern "C" {
15596    pub fn thread_pool_wait(T: *mut thread_pool_struct, i: thread_pool_handle);
15597}
15598extern "C" {
15599    pub fn thread_pool_give_back(T: *mut thread_pool_struct, i: thread_pool_handle);
15600}
15601extern "C" {
15602    pub fn thread_pool_clear(T: *mut thread_pool_struct);
15603}
15604extern "C" {
15605    pub fn flint_request_threads(
15606        handles: *mut *mut thread_pool_handle,
15607        thread_limit: mp_limb_signed_t,
15608    ) -> mp_limb_signed_t;
15609}
15610extern "C" {
15611    pub fn flint_give_back_threads(handles: *mut thread_pool_handle, num_handles: mp_limb_signed_t);
15612}
15613#[repr(C)]
15614#[derive(Debug, Copy, Clone)]
15615pub struct nmod_mat_struct {
15616    pub entries: *mut mp_limb_t,
15617    pub r: mp_limb_signed_t,
15618    pub c: mp_limb_signed_t,
15619    pub rows: *mut *mut mp_limb_t,
15620    pub mod_: nmod_t,
15621}
15622#[test]
15623fn bindgen_test_layout_nmod_mat_struct() {
15624    assert_eq!(
15625        ::std::mem::size_of::<nmod_mat_struct>(),
15626        56usize,
15627        concat!("Size of: ", stringify!(nmod_mat_struct))
15628    );
15629    assert_eq!(
15630        ::std::mem::align_of::<nmod_mat_struct>(),
15631        8usize,
15632        concat!("Alignment of ", stringify!(nmod_mat_struct))
15633    );
15634    assert_eq!(
15635        unsafe { &(*(::std::ptr::null::<nmod_mat_struct>())).entries as *const _ as usize },
15636        0usize,
15637        concat!(
15638            "Offset of field: ",
15639            stringify!(nmod_mat_struct),
15640            "::",
15641            stringify!(entries)
15642        )
15643    );
15644    assert_eq!(
15645        unsafe { &(*(::std::ptr::null::<nmod_mat_struct>())).r as *const _ as usize },
15646        8usize,
15647        concat!(
15648            "Offset of field: ",
15649            stringify!(nmod_mat_struct),
15650            "::",
15651            stringify!(r)
15652        )
15653    );
15654    assert_eq!(
15655        unsafe { &(*(::std::ptr::null::<nmod_mat_struct>())).c as *const _ as usize },
15656        16usize,
15657        concat!(
15658            "Offset of field: ",
15659            stringify!(nmod_mat_struct),
15660            "::",
15661            stringify!(c)
15662        )
15663    );
15664    assert_eq!(
15665        unsafe { &(*(::std::ptr::null::<nmod_mat_struct>())).rows as *const _ as usize },
15666        24usize,
15667        concat!(
15668            "Offset of field: ",
15669            stringify!(nmod_mat_struct),
15670            "::",
15671            stringify!(rows)
15672        )
15673    );
15674    assert_eq!(
15675        unsafe { &(*(::std::ptr::null::<nmod_mat_struct>())).mod_ as *const _ as usize },
15676        32usize,
15677        concat!(
15678            "Offset of field: ",
15679            stringify!(nmod_mat_struct),
15680            "::",
15681            stringify!(mod_)
15682        )
15683    );
15684}
15685pub type nmod_mat_t = [nmod_mat_struct; 1usize];
15686extern "C" {
15687    pub fn nmod_mat_set_entry(
15688        mat: *mut nmod_mat_struct,
15689        i: mp_limb_signed_t,
15690        j: mp_limb_signed_t,
15691        x: mp_limb_t,
15692    );
15693}
15694extern "C" {
15695    pub fn nmod_mat_init(
15696        mat: *mut nmod_mat_struct,
15697        rows: mp_limb_signed_t,
15698        cols: mp_limb_signed_t,
15699        n: mp_limb_t,
15700    );
15701}
15702extern "C" {
15703    pub fn nmod_mat_init_set(mat: *mut nmod_mat_struct, src: *mut nmod_mat_struct);
15704}
15705extern "C" {
15706    pub fn nmod_mat_clear(mat: *mut nmod_mat_struct);
15707}
15708extern "C" {
15709    pub fn nmod_mat_one(mat: *mut nmod_mat_struct);
15710}
15711extern "C" {
15712    pub fn nmod_mat_swap(mat1: *mut nmod_mat_struct, mat2: *mut nmod_mat_struct);
15713}
15714extern "C" {
15715    pub fn nmod_mat_window_init(
15716        window: *mut nmod_mat_struct,
15717        mat: *mut nmod_mat_struct,
15718        r1: mp_limb_signed_t,
15719        c1: mp_limb_signed_t,
15720        r2: mp_limb_signed_t,
15721        c2: mp_limb_signed_t,
15722    );
15723}
15724extern "C" {
15725    pub fn nmod_mat_window_clear(window: *mut nmod_mat_struct);
15726}
15727extern "C" {
15728    pub fn nmod_mat_concat_horizontal(
15729        res: *mut nmod_mat_struct,
15730        mat1: *mut nmod_mat_struct,
15731        mat2: *mut nmod_mat_struct,
15732    );
15733}
15734extern "C" {
15735    pub fn nmod_mat_concat_vertical(
15736        res: *mut nmod_mat_struct,
15737        mat1: *mut nmod_mat_struct,
15738        mat2: *mut nmod_mat_struct,
15739    );
15740}
15741extern "C" {
15742    pub fn nmod_mat_randtest(mat: *mut nmod_mat_struct, state: *mut flint_rand_s);
15743}
15744extern "C" {
15745    pub fn nmod_mat_randfull(mat: *mut nmod_mat_struct, state: *mut flint_rand_s);
15746}
15747extern "C" {
15748    pub fn nmod_mat_randpermdiag(
15749        mat: *mut nmod_mat_struct,
15750        state: *mut flint_rand_s,
15751        diag: mp_srcptr,
15752        n: mp_limb_signed_t,
15753    ) -> ::std::os::raw::c_int;
15754}
15755extern "C" {
15756    pub fn nmod_mat_randrank(
15757        arg1: *mut nmod_mat_struct,
15758        state: *mut flint_rand_s,
15759        rank: mp_limb_signed_t,
15760    );
15761}
15762extern "C" {
15763    pub fn nmod_mat_randops(
15764        mat: *mut nmod_mat_struct,
15765        count: mp_limb_signed_t,
15766        state: *mut flint_rand_s,
15767    );
15768}
15769extern "C" {
15770    pub fn nmod_mat_randtril(
15771        mat: *mut nmod_mat_struct,
15772        state: *mut flint_rand_s,
15773        unit: ::std::os::raw::c_int,
15774    );
15775}
15776extern "C" {
15777    pub fn nmod_mat_randtriu(
15778        mat: *mut nmod_mat_struct,
15779        state: *mut flint_rand_s,
15780        unit: ::std::os::raw::c_int,
15781    );
15782}
15783extern "C" {
15784    pub fn nmod_mat_print_pretty(mat: *mut nmod_mat_struct);
15785}
15786extern "C" {
15787    pub fn nmod_mat_equal(
15788        mat1: *mut nmod_mat_struct,
15789        mat2: *mut nmod_mat_struct,
15790    ) -> ::std::os::raw::c_int;
15791}
15792extern "C" {
15793    pub fn nmod_mat_zero(mat: *mut nmod_mat_struct);
15794}
15795extern "C" {
15796    pub fn nmod_mat_is_zero(mat: *mut nmod_mat_struct) -> ::std::os::raw::c_int;
15797}
15798extern "C" {
15799    pub fn nmod_mat_set(B: *mut nmod_mat_struct, A: *mut nmod_mat_struct);
15800}
15801extern "C" {
15802    pub fn nmod_mat_transpose(B: *mut nmod_mat_struct, A: *mut nmod_mat_struct);
15803}
15804extern "C" {
15805    pub fn nmod_mat_add(C: *mut nmod_mat_struct, A: *mut nmod_mat_struct, B: *mut nmod_mat_struct);
15806}
15807extern "C" {
15808    pub fn nmod_mat_sub(C: *mut nmod_mat_struct, A: *mut nmod_mat_struct, B: *mut nmod_mat_struct);
15809}
15810extern "C" {
15811    pub fn nmod_mat_neg(B: *mut nmod_mat_struct, A: *mut nmod_mat_struct);
15812}
15813extern "C" {
15814    pub fn nmod_mat_scalar_mul(B: *mut nmod_mat_struct, A: *mut nmod_mat_struct, c: mp_limb_t);
15815}
15816extern "C" {
15817    pub fn nmod_mat_scalar_mul_add(
15818        dest: *mut nmod_mat_struct,
15819        X: *mut nmod_mat_struct,
15820        b: mp_limb_t,
15821        Y: *mut nmod_mat_struct,
15822    );
15823}
15824extern "C" {
15825    pub fn nmod_mat_mul(C: *mut nmod_mat_struct, A: *mut nmod_mat_struct, B: *mut nmod_mat_struct);
15826}
15827extern "C" {
15828    pub fn nmod_mat_mul_classical(
15829        C: *mut nmod_mat_struct,
15830        A: *mut nmod_mat_struct,
15831        B: *mut nmod_mat_struct,
15832    );
15833}
15834extern "C" {
15835    pub fn _nmod_mat_mul_classical_threaded_pool_op(
15836        D: *mut nmod_mat_struct,
15837        C: *mut nmod_mat_struct,
15838        A: *mut nmod_mat_struct,
15839        B: *mut nmod_mat_struct,
15840        op: ::std::os::raw::c_int,
15841        threads: *mut thread_pool_handle,
15842        num_threads: mp_limb_signed_t,
15843    );
15844}
15845extern "C" {
15846    pub fn nmod_mat_mul_classical_threaded(
15847        C: *mut nmod_mat_struct,
15848        A: *mut nmod_mat_struct,
15849        B: *mut nmod_mat_struct,
15850    );
15851}
15852extern "C" {
15853    pub fn nmod_mat_mul_strassen(
15854        C: *mut nmod_mat_struct,
15855        A: *mut nmod_mat_struct,
15856        B: *mut nmod_mat_struct,
15857    );
15858}
15859extern "C" {
15860    pub fn _nmod_mat_mul_classical_op(
15861        D: *mut nmod_mat_struct,
15862        C: *mut nmod_mat_struct,
15863        A: *mut nmod_mat_struct,
15864        B: *mut nmod_mat_struct,
15865        op: ::std::os::raw::c_int,
15866    );
15867}
15868extern "C" {
15869    pub fn nmod_mat_addmul(
15870        D: *mut nmod_mat_struct,
15871        C: *mut nmod_mat_struct,
15872        A: *mut nmod_mat_struct,
15873        B: *mut nmod_mat_struct,
15874    );
15875}
15876extern "C" {
15877    pub fn nmod_mat_submul(
15878        D: *mut nmod_mat_struct,
15879        C: *mut nmod_mat_struct,
15880        A: *mut nmod_mat_struct,
15881        B: *mut nmod_mat_struct,
15882    );
15883}
15884extern "C" {
15885    pub fn _nmod_mat_pow(dest: *mut nmod_mat_struct, mat: *mut nmod_mat_struct, pow: mp_limb_t);
15886}
15887extern "C" {
15888    pub fn nmod_mat_pow(dest: *mut nmod_mat_struct, mat: *mut nmod_mat_struct, pow: mp_limb_t);
15889}
15890extern "C" {
15891    pub fn nmod_mat_trace(mat: *mut nmod_mat_struct) -> mp_limb_t;
15892}
15893extern "C" {
15894    pub fn _nmod_mat_det(A: *mut nmod_mat_struct) -> mp_limb_t;
15895}
15896extern "C" {
15897    pub fn nmod_mat_det(A: *mut nmod_mat_struct) -> mp_limb_t;
15898}
15899extern "C" {
15900    pub fn nmod_mat_rank(A: *mut nmod_mat_struct) -> mp_limb_signed_t;
15901}
15902extern "C" {
15903    pub fn nmod_mat_inv(B: *mut nmod_mat_struct, A: *mut nmod_mat_struct) -> ::std::os::raw::c_int;
15904}
15905extern "C" {
15906    pub fn nmod_mat_apply_permutation(
15907        A: *mut nmod_mat_struct,
15908        P: *mut mp_limb_signed_t,
15909        n: mp_limb_signed_t,
15910    );
15911}
15912extern "C" {
15913    pub fn nmod_mat_solve_tril(
15914        X: *mut nmod_mat_struct,
15915        L: *mut nmod_mat_struct,
15916        B: *mut nmod_mat_struct,
15917        unit: ::std::os::raw::c_int,
15918    );
15919}
15920extern "C" {
15921    pub fn nmod_mat_solve_tril_recursive(
15922        X: *mut nmod_mat_struct,
15923        L: *mut nmod_mat_struct,
15924        B: *mut nmod_mat_struct,
15925        unit: ::std::os::raw::c_int,
15926    );
15927}
15928extern "C" {
15929    pub fn nmod_mat_solve_tril_classical(
15930        X: *mut nmod_mat_struct,
15931        L: *mut nmod_mat_struct,
15932        B: *mut nmod_mat_struct,
15933        unit: ::std::os::raw::c_int,
15934    );
15935}
15936extern "C" {
15937    pub fn nmod_mat_solve_triu(
15938        X: *mut nmod_mat_struct,
15939        U: *mut nmod_mat_struct,
15940        B: *mut nmod_mat_struct,
15941        unit: ::std::os::raw::c_int,
15942    );
15943}
15944extern "C" {
15945    pub fn nmod_mat_solve_triu_recursive(
15946        X: *mut nmod_mat_struct,
15947        U: *mut nmod_mat_struct,
15948        B: *mut nmod_mat_struct,
15949        unit: ::std::os::raw::c_int,
15950    );
15951}
15952extern "C" {
15953    pub fn nmod_mat_solve_triu_classical(
15954        X: *mut nmod_mat_struct,
15955        U: *mut nmod_mat_struct,
15956        B: *mut nmod_mat_struct,
15957        unit: ::std::os::raw::c_int,
15958    );
15959}
15960extern "C" {
15961    pub fn nmod_mat_lu(
15962        P: *mut mp_limb_signed_t,
15963        A: *mut nmod_mat_struct,
15964        rank_check: ::std::os::raw::c_int,
15965    ) -> mp_limb_signed_t;
15966}
15967extern "C" {
15968    pub fn nmod_mat_lu_classical(
15969        P: *mut mp_limb_signed_t,
15970        A: *mut nmod_mat_struct,
15971        rank_check: ::std::os::raw::c_int,
15972    ) -> mp_limb_signed_t;
15973}
15974extern "C" {
15975    pub fn nmod_mat_lu_recursive(
15976        P: *mut mp_limb_signed_t,
15977        A: *mut nmod_mat_struct,
15978        rank_check: ::std::os::raw::c_int,
15979    ) -> mp_limb_signed_t;
15980}
15981extern "C" {
15982    pub fn nmod_mat_solve(
15983        X: *mut nmod_mat_struct,
15984        A: *mut nmod_mat_struct,
15985        B: *mut nmod_mat_struct,
15986    ) -> ::std::os::raw::c_int;
15987}
15988extern "C" {
15989    pub fn nmod_mat_solve_vec(
15990        x: mp_ptr,
15991        A: *mut nmod_mat_struct,
15992        b: mp_srcptr,
15993    ) -> ::std::os::raw::c_int;
15994}
15995extern "C" {
15996    pub fn nmod_mat_rref(A: *mut nmod_mat_struct) -> mp_limb_signed_t;
15997}
15998extern "C" {
15999    pub fn _nmod_mat_rref(
16000        A: *mut nmod_mat_struct,
16001        pivots_nonpivots: *mut mp_limb_signed_t,
16002        P: *mut mp_limb_signed_t,
16003    ) -> mp_limb_signed_t;
16004}
16005extern "C" {
16006    pub fn nmod_mat_rref_classical(A: *mut nmod_mat_struct) -> mp_limb_signed_t;
16007}
16008extern "C" {
16009    pub fn _nmod_mat_rref_classical(
16010        A: *mut nmod_mat_struct,
16011        pivots_nonpivots: *mut mp_limb_signed_t,
16012    ) -> mp_limb_signed_t;
16013}
16014extern "C" {
16015    pub fn nmod_mat_rref_storjohann(A: *mut nmod_mat_struct) -> mp_limb_signed_t;
16016}
16017extern "C" {
16018    pub fn _nmod_mat_rref_storjohann(
16019        A: *mut nmod_mat_struct,
16020        pivots_nonpivots: *mut mp_limb_signed_t,
16021    ) -> mp_limb_signed_t;
16022}
16023extern "C" {
16024    pub fn nmod_mat_reduce_row(
16025        M: *mut nmod_mat_struct,
16026        P: *mut mp_limb_signed_t,
16027        L: *mut mp_limb_signed_t,
16028        m: mp_limb_signed_t,
16029    ) -> mp_limb_signed_t;
16030}
16031extern "C" {
16032    pub fn nmod_mat_nullspace(X: *mut nmod_mat_struct, A: *mut nmod_mat_struct)
16033        -> mp_limb_signed_t;
16034}
16035extern "C" {
16036    pub fn nmod_mat_strong_echelon_form(A: *mut nmod_mat_struct);
16037}
16038extern "C" {
16039    pub fn nmod_mat_howell_form(A: *mut nmod_mat_struct) -> mp_limb_signed_t;
16040}
16041extern "C" {
16042    pub fn nmod_mat_similarity(M: *mut nmod_mat_struct, r: mp_limb_signed_t, d: mp_limb_t);
16043}
16044#[repr(C)]
16045#[derive(Debug, Copy, Clone)]
16046pub struct nmod_poly_struct {
16047    pub coeffs: mp_ptr,
16048    pub alloc: mp_limb_signed_t,
16049    pub length: mp_limb_signed_t,
16050    pub mod_: nmod_t,
16051}
16052#[test]
16053fn bindgen_test_layout_nmod_poly_struct() {
16054    assert_eq!(
16055        ::std::mem::size_of::<nmod_poly_struct>(),
16056        48usize,
16057        concat!("Size of: ", stringify!(nmod_poly_struct))
16058    );
16059    assert_eq!(
16060        ::std::mem::align_of::<nmod_poly_struct>(),
16061        8usize,
16062        concat!("Alignment of ", stringify!(nmod_poly_struct))
16063    );
16064    assert_eq!(
16065        unsafe { &(*(::std::ptr::null::<nmod_poly_struct>())).coeffs as *const _ as usize },
16066        0usize,
16067        concat!(
16068            "Offset of field: ",
16069            stringify!(nmod_poly_struct),
16070            "::",
16071            stringify!(coeffs)
16072        )
16073    );
16074    assert_eq!(
16075        unsafe { &(*(::std::ptr::null::<nmod_poly_struct>())).alloc as *const _ as usize },
16076        8usize,
16077        concat!(
16078            "Offset of field: ",
16079            stringify!(nmod_poly_struct),
16080            "::",
16081            stringify!(alloc)
16082        )
16083    );
16084    assert_eq!(
16085        unsafe { &(*(::std::ptr::null::<nmod_poly_struct>())).length as *const _ as usize },
16086        16usize,
16087        concat!(
16088            "Offset of field: ",
16089            stringify!(nmod_poly_struct),
16090            "::",
16091            stringify!(length)
16092        )
16093    );
16094    assert_eq!(
16095        unsafe { &(*(::std::ptr::null::<nmod_poly_struct>())).mod_ as *const _ as usize },
16096        24usize,
16097        concat!(
16098            "Offset of field: ",
16099            stringify!(nmod_poly_struct),
16100            "::",
16101            stringify!(mod_)
16102        )
16103    );
16104}
16105pub type nmod_poly_t = [nmod_poly_struct; 1usize];
16106#[repr(C)]
16107#[derive(Debug, Copy, Clone)]
16108pub struct nmod_poly_res_struct {
16109    pub res: mp_limb_t,
16110    pub lc: mp_limb_t,
16111    pub len0: mp_limb_signed_t,
16112    pub len1: mp_limb_signed_t,
16113    pub off: mp_limb_signed_t,
16114}
16115#[test]
16116fn bindgen_test_layout_nmod_poly_res_struct() {
16117    assert_eq!(
16118        ::std::mem::size_of::<nmod_poly_res_struct>(),
16119        40usize,
16120        concat!("Size of: ", stringify!(nmod_poly_res_struct))
16121    );
16122    assert_eq!(
16123        ::std::mem::align_of::<nmod_poly_res_struct>(),
16124        8usize,
16125        concat!("Alignment of ", stringify!(nmod_poly_res_struct))
16126    );
16127    assert_eq!(
16128        unsafe { &(*(::std::ptr::null::<nmod_poly_res_struct>())).res as *const _ as usize },
16129        0usize,
16130        concat!(
16131            "Offset of field: ",
16132            stringify!(nmod_poly_res_struct),
16133            "::",
16134            stringify!(res)
16135        )
16136    );
16137    assert_eq!(
16138        unsafe { &(*(::std::ptr::null::<nmod_poly_res_struct>())).lc as *const _ as usize },
16139        8usize,
16140        concat!(
16141            "Offset of field: ",
16142            stringify!(nmod_poly_res_struct),
16143            "::",
16144            stringify!(lc)
16145        )
16146    );
16147    assert_eq!(
16148        unsafe { &(*(::std::ptr::null::<nmod_poly_res_struct>())).len0 as *const _ as usize },
16149        16usize,
16150        concat!(
16151            "Offset of field: ",
16152            stringify!(nmod_poly_res_struct),
16153            "::",
16154            stringify!(len0)
16155        )
16156    );
16157    assert_eq!(
16158        unsafe { &(*(::std::ptr::null::<nmod_poly_res_struct>())).len1 as *const _ as usize },
16159        24usize,
16160        concat!(
16161            "Offset of field: ",
16162            stringify!(nmod_poly_res_struct),
16163            "::",
16164            stringify!(len1)
16165        )
16166    );
16167    assert_eq!(
16168        unsafe { &(*(::std::ptr::null::<nmod_poly_res_struct>())).off as *const _ as usize },
16169        32usize,
16170        concat!(
16171            "Offset of field: ",
16172            stringify!(nmod_poly_res_struct),
16173            "::",
16174            stringify!(off)
16175        )
16176    );
16177}
16178pub type nmod_poly_res_t = [nmod_poly_res_struct; 1usize];
16179#[repr(C)]
16180#[derive(Debug, Copy, Clone)]
16181pub struct nmod_poly_matrix_precompute_arg_t {
16182    pub A: *mut nmod_mat_struct,
16183    pub poly1: *mut nmod_poly_struct,
16184    pub poly2: *mut nmod_poly_struct,
16185    pub poly2inv: *mut nmod_poly_struct,
16186}
16187#[test]
16188fn bindgen_test_layout_nmod_poly_matrix_precompute_arg_t() {
16189    assert_eq!(
16190        ::std::mem::size_of::<nmod_poly_matrix_precompute_arg_t>(),
16191        32usize,
16192        concat!("Size of: ", stringify!(nmod_poly_matrix_precompute_arg_t))
16193    );
16194    assert_eq!(
16195        ::std::mem::align_of::<nmod_poly_matrix_precompute_arg_t>(),
16196        8usize,
16197        concat!(
16198            "Alignment of ",
16199            stringify!(nmod_poly_matrix_precompute_arg_t)
16200        )
16201    );
16202    assert_eq!(
16203        unsafe {
16204            &(*(::std::ptr::null::<nmod_poly_matrix_precompute_arg_t>())).A as *const _ as usize
16205        },
16206        0usize,
16207        concat!(
16208            "Offset of field: ",
16209            stringify!(nmod_poly_matrix_precompute_arg_t),
16210            "::",
16211            stringify!(A)
16212        )
16213    );
16214    assert_eq!(
16215        unsafe {
16216            &(*(::std::ptr::null::<nmod_poly_matrix_precompute_arg_t>())).poly1 as *const _ as usize
16217        },
16218        8usize,
16219        concat!(
16220            "Offset of field: ",
16221            stringify!(nmod_poly_matrix_precompute_arg_t),
16222            "::",
16223            stringify!(poly1)
16224        )
16225    );
16226    assert_eq!(
16227        unsafe {
16228            &(*(::std::ptr::null::<nmod_poly_matrix_precompute_arg_t>())).poly2 as *const _ as usize
16229        },
16230        16usize,
16231        concat!(
16232            "Offset of field: ",
16233            stringify!(nmod_poly_matrix_precompute_arg_t),
16234            "::",
16235            stringify!(poly2)
16236        )
16237    );
16238    assert_eq!(
16239        unsafe {
16240            &(*(::std::ptr::null::<nmod_poly_matrix_precompute_arg_t>())).poly2inv as *const _
16241                as usize
16242        },
16243        24usize,
16244        concat!(
16245            "Offset of field: ",
16246            stringify!(nmod_poly_matrix_precompute_arg_t),
16247            "::",
16248            stringify!(poly2inv)
16249        )
16250    );
16251}
16252#[repr(C)]
16253#[derive(Debug, Copy, Clone)]
16254pub struct nmod_poly_compose_mod_precomp_preinv_arg_t {
16255    pub A: *mut nmod_mat_struct,
16256    pub res: *mut nmod_poly_struct,
16257    pub poly1: *mut nmod_poly_struct,
16258    pub poly3: *mut nmod_poly_struct,
16259    pub poly3inv: *mut nmod_poly_struct,
16260}
16261#[test]
16262fn bindgen_test_layout_nmod_poly_compose_mod_precomp_preinv_arg_t() {
16263    assert_eq!(
16264        ::std::mem::size_of::<nmod_poly_compose_mod_precomp_preinv_arg_t>(),
16265        40usize,
16266        concat!(
16267            "Size of: ",
16268            stringify!(nmod_poly_compose_mod_precomp_preinv_arg_t)
16269        )
16270    );
16271    assert_eq!(
16272        ::std::mem::align_of::<nmod_poly_compose_mod_precomp_preinv_arg_t>(),
16273        8usize,
16274        concat!(
16275            "Alignment of ",
16276            stringify!(nmod_poly_compose_mod_precomp_preinv_arg_t)
16277        )
16278    );
16279    assert_eq!(
16280        unsafe {
16281            &(*(::std::ptr::null::<nmod_poly_compose_mod_precomp_preinv_arg_t>())).A as *const _
16282                as usize
16283        },
16284        0usize,
16285        concat!(
16286            "Offset of field: ",
16287            stringify!(nmod_poly_compose_mod_precomp_preinv_arg_t),
16288            "::",
16289            stringify!(A)
16290        )
16291    );
16292    assert_eq!(
16293        unsafe {
16294            &(*(::std::ptr::null::<nmod_poly_compose_mod_precomp_preinv_arg_t>())).res as *const _
16295                as usize
16296        },
16297        8usize,
16298        concat!(
16299            "Offset of field: ",
16300            stringify!(nmod_poly_compose_mod_precomp_preinv_arg_t),
16301            "::",
16302            stringify!(res)
16303        )
16304    );
16305    assert_eq!(
16306        unsafe {
16307            &(*(::std::ptr::null::<nmod_poly_compose_mod_precomp_preinv_arg_t>())).poly1 as *const _
16308                as usize
16309        },
16310        16usize,
16311        concat!(
16312            "Offset of field: ",
16313            stringify!(nmod_poly_compose_mod_precomp_preinv_arg_t),
16314            "::",
16315            stringify!(poly1)
16316        )
16317    );
16318    assert_eq!(
16319        unsafe {
16320            &(*(::std::ptr::null::<nmod_poly_compose_mod_precomp_preinv_arg_t>())).poly3 as *const _
16321                as usize
16322        },
16323        24usize,
16324        concat!(
16325            "Offset of field: ",
16326            stringify!(nmod_poly_compose_mod_precomp_preinv_arg_t),
16327            "::",
16328            stringify!(poly3)
16329        )
16330    );
16331    assert_eq!(
16332        unsafe {
16333            &(*(::std::ptr::null::<nmod_poly_compose_mod_precomp_preinv_arg_t>())).poly3inv
16334                as *const _ as usize
16335        },
16336        32usize,
16337        concat!(
16338            "Offset of field: ",
16339            stringify!(nmod_poly_compose_mod_precomp_preinv_arg_t),
16340            "::",
16341            stringify!(poly3inv)
16342        )
16343    );
16344}
16345extern "C" {
16346    pub fn nmod_poly_init(poly: *mut nmod_poly_struct, n: mp_limb_t);
16347}
16348extern "C" {
16349    pub fn nmod_poly_init_preinv(poly: *mut nmod_poly_struct, n: mp_limb_t, ninv: mp_limb_t);
16350}
16351extern "C" {
16352    pub fn nmod_poly_init2(poly: *mut nmod_poly_struct, n: mp_limb_t, alloc: mp_limb_signed_t);
16353}
16354extern "C" {
16355    pub fn nmod_poly_init2_preinv(
16356        poly: *mut nmod_poly_struct,
16357        n: mp_limb_t,
16358        ninv: mp_limb_t,
16359        alloc: mp_limb_signed_t,
16360    );
16361}
16362extern "C" {
16363    pub fn nmod_poly_realloc(poly: *mut nmod_poly_struct, alloc: mp_limb_signed_t);
16364}
16365extern "C" {
16366    pub fn nmod_poly_clear(poly: *mut nmod_poly_struct);
16367}
16368extern "C" {
16369    pub fn nmod_poly_fit_length(poly: *mut nmod_poly_struct, alloc: mp_limb_signed_t);
16370}
16371extern "C" {
16372    pub fn nmod_poly_set_trunc(
16373        res: *mut nmod_poly_struct,
16374        poly: *mut nmod_poly_struct,
16375        n: mp_limb_signed_t,
16376    );
16377}
16378extern "C" {
16379    pub fn _nmod_poly_reverse(
16380        output: mp_ptr,
16381        input: mp_srcptr,
16382        len: mp_limb_signed_t,
16383        m: mp_limb_signed_t,
16384    );
16385}
16386extern "C" {
16387    pub fn nmod_poly_reverse(
16388        output: *mut nmod_poly_struct,
16389        input: *mut nmod_poly_struct,
16390        m: mp_limb_signed_t,
16391    );
16392}
16393extern "C" {
16394    pub fn nmod_poly_equal_trunc(
16395        poly1: *mut nmod_poly_struct,
16396        poly2: *mut nmod_poly_struct,
16397        n: mp_limb_signed_t,
16398    ) -> ::std::os::raw::c_int;
16399}
16400extern "C" {
16401    pub fn nmod_poly_randtest(
16402        poly: *mut nmod_poly_struct,
16403        state: *mut flint_rand_s,
16404        len: mp_limb_signed_t,
16405    );
16406}
16407extern "C" {
16408    pub fn nmod_poly_randtest_irreducible(
16409        poly: *mut nmod_poly_struct,
16410        state: *mut flint_rand_s,
16411        len: mp_limb_signed_t,
16412    );
16413}
16414extern "C" {
16415    pub fn nmod_poly_randtest_monic(
16416        poly: *mut nmod_poly_struct,
16417        state: *mut flint_rand_s,
16418        len: mp_limb_signed_t,
16419    );
16420}
16421extern "C" {
16422    pub fn nmod_poly_randtest_monic_irreducible(
16423        poly: *mut nmod_poly_struct,
16424        state: *mut flint_rand_s,
16425        len: mp_limb_signed_t,
16426    );
16427}
16428extern "C" {
16429    pub fn nmod_poly_randtest_monic_primitive(
16430        poly: *mut nmod_poly_struct,
16431        state: *mut flint_rand_s,
16432        len: mp_limb_signed_t,
16433    );
16434}
16435extern "C" {
16436    pub fn nmod_poly_randtest_trinomial(
16437        poly: *mut nmod_poly_struct,
16438        state: *mut flint_rand_s,
16439        len: mp_limb_signed_t,
16440    );
16441}
16442extern "C" {
16443    pub fn nmod_poly_randtest_trinomial_irreducible(
16444        poly: *mut nmod_poly_struct,
16445        state: *mut flint_rand_s,
16446        len: mp_limb_signed_t,
16447        max_attempts: mp_limb_signed_t,
16448    ) -> ::std::os::raw::c_int;
16449}
16450extern "C" {
16451    pub fn nmod_poly_randtest_pentomial(
16452        poly: *mut nmod_poly_struct,
16453        state: *mut flint_rand_s,
16454        len: mp_limb_signed_t,
16455    );
16456}
16457extern "C" {
16458    pub fn nmod_poly_randtest_pentomial_irreducible(
16459        poly: *mut nmod_poly_struct,
16460        state: *mut flint_rand_s,
16461        len: mp_limb_signed_t,
16462        max_attempts: mp_limb_signed_t,
16463    ) -> ::std::os::raw::c_int;
16464}
16465extern "C" {
16466    pub fn nmod_poly_randtest_sparse_irreducible(
16467        poly: *mut nmod_poly_struct,
16468        state: *mut flint_rand_s,
16469        len: mp_limb_signed_t,
16470    );
16471}
16472extern "C" {
16473    pub fn nmod_poly_set_coeff_ui(poly: *mut nmod_poly_struct, j: mp_limb_signed_t, c: mp_limb_t);
16474}
16475extern "C" {
16476    pub fn nmod_poly_get_str(poly: *mut nmod_poly_struct) -> *mut ::std::os::raw::c_char;
16477}
16478extern "C" {
16479    pub fn nmod_poly_get_str_pretty(
16480        poly: *mut nmod_poly_struct,
16481        x: *const ::std::os::raw::c_char,
16482    ) -> *mut ::std::os::raw::c_char;
16483}
16484extern "C" {
16485    pub fn nmod_poly_set_str(
16486        poly: *mut nmod_poly_struct,
16487        s: *const ::std::os::raw::c_char,
16488    ) -> ::std::os::raw::c_int;
16489}
16490extern "C" {
16491    pub fn nmod_poly_fread(f: *mut FILE, poly: *mut nmod_poly_struct) -> ::std::os::raw::c_int;
16492}
16493extern "C" {
16494    pub fn nmod_poly_fprint_pretty(
16495        f: *mut FILE,
16496        a: *mut nmod_poly_struct,
16497        x: *const ::std::os::raw::c_char,
16498    ) -> ::std::os::raw::c_int;
16499}
16500extern "C" {
16501    pub fn _nmod_poly_shift_left(
16502        res: mp_ptr,
16503        poly: mp_srcptr,
16504        len: mp_limb_signed_t,
16505        k: mp_limb_signed_t,
16506    );
16507}
16508extern "C" {
16509    pub fn nmod_poly_shift_left(
16510        res: *mut nmod_poly_struct,
16511        poly: *mut nmod_poly_struct,
16512        k: mp_limb_signed_t,
16513    );
16514}
16515extern "C" {
16516    pub fn _nmod_poly_shift_right(
16517        res: mp_ptr,
16518        poly: mp_srcptr,
16519        len: mp_limb_signed_t,
16520        k: mp_limb_signed_t,
16521    );
16522}
16523extern "C" {
16524    pub fn nmod_poly_shift_right(
16525        res: *mut nmod_poly_struct,
16526        poly: *mut nmod_poly_struct,
16527        k: mp_limb_signed_t,
16528    );
16529}
16530extern "C" {
16531    pub fn _nmod_poly_add(
16532        res: mp_ptr,
16533        poly1: mp_srcptr,
16534        len1: mp_limb_signed_t,
16535        poly2: mp_srcptr,
16536        len2: mp_limb_signed_t,
16537        mod_: nmod_t,
16538    );
16539}
16540extern "C" {
16541    pub fn nmod_poly_add(
16542        res: *mut nmod_poly_struct,
16543        poly1: *mut nmod_poly_struct,
16544        poly2: *mut nmod_poly_struct,
16545    );
16546}
16547extern "C" {
16548    pub fn nmod_poly_add_ui(res: *mut nmod_poly_struct, poly: *mut nmod_poly_struct, c: mp_limb_t);
16549}
16550extern "C" {
16551    pub fn nmod_poly_add_series(
16552        res: *mut nmod_poly_struct,
16553        poly1: *mut nmod_poly_struct,
16554        poly2: *mut nmod_poly_struct,
16555        n: mp_limb_signed_t,
16556    );
16557}
16558extern "C" {
16559    pub fn _nmod_poly_sub(
16560        res: mp_ptr,
16561        poly1: mp_srcptr,
16562        len1: mp_limb_signed_t,
16563        poly2: mp_srcptr,
16564        len2: mp_limb_signed_t,
16565        mod_: nmod_t,
16566    );
16567}
16568extern "C" {
16569    pub fn nmod_poly_sub(
16570        res: *mut nmod_poly_struct,
16571        poly1: *mut nmod_poly_struct,
16572        poly2: *mut nmod_poly_struct,
16573    );
16574}
16575extern "C" {
16576    pub fn nmod_poly_sub_series(
16577        res: *mut nmod_poly_struct,
16578        poly1: *mut nmod_poly_struct,
16579        poly2: *mut nmod_poly_struct,
16580        n: mp_limb_signed_t,
16581    );
16582}
16583extern "C" {
16584    pub fn nmod_poly_sub_ui(res: *mut nmod_poly_struct, poly: *mut nmod_poly_struct, c: mp_limb_t);
16585}
16586extern "C" {
16587    pub fn nmod_poly_neg(res: *mut nmod_poly_struct, poly1: *mut nmod_poly_struct);
16588}
16589extern "C" {
16590    pub fn nmod_poly_scalar_mul_nmod(
16591        res: *mut nmod_poly_struct,
16592        poly1: *mut nmod_poly_struct,
16593        c: mp_limb_t,
16594    );
16595}
16596extern "C" {
16597    pub fn _nmod_poly_make_monic(
16598        output: mp_ptr,
16599        input: mp_srcptr,
16600        len: mp_limb_signed_t,
16601        mod_: nmod_t,
16602    );
16603}
16604extern "C" {
16605    pub fn nmod_poly_make_monic(output: *mut nmod_poly_struct, input: *mut nmod_poly_struct);
16606}
16607extern "C" {
16608    pub fn _nmod_poly_KS2_pack1(
16609        res: mp_ptr,
16610        op: mp_srcptr,
16611        n: mp_limb_signed_t,
16612        s: mp_limb_signed_t,
16613        b: mp_limb_t,
16614        k: mp_limb_t,
16615        r: mp_limb_signed_t,
16616    );
16617}
16618extern "C" {
16619    pub fn _nmod_poly_KS2_pack(
16620        res: mp_ptr,
16621        op: mp_srcptr,
16622        n: mp_limb_signed_t,
16623        s: mp_limb_signed_t,
16624        b: mp_limb_t,
16625        k: mp_limb_t,
16626        r: mp_limb_signed_t,
16627    );
16628}
16629extern "C" {
16630    pub fn _nmod_poly_KS2_unpack1(
16631        res: mp_ptr,
16632        op: mp_srcptr,
16633        n: mp_limb_signed_t,
16634        b: mp_limb_t,
16635        k: mp_limb_t,
16636    );
16637}
16638extern "C" {
16639    pub fn _nmod_poly_KS2_unpack2(
16640        res: mp_ptr,
16641        op: mp_srcptr,
16642        n: mp_limb_signed_t,
16643        b: mp_limb_t,
16644        k: mp_limb_t,
16645    );
16646}
16647extern "C" {
16648    pub fn _nmod_poly_KS2_unpack3(
16649        res: mp_ptr,
16650        op: mp_srcptr,
16651        n: mp_limb_signed_t,
16652        b: mp_limb_t,
16653        k: mp_limb_t,
16654    );
16655}
16656extern "C" {
16657    pub fn _nmod_poly_KS2_unpack(
16658        res: mp_ptr,
16659        op: mp_srcptr,
16660        n: mp_limb_signed_t,
16661        b: mp_limb_t,
16662        k: mp_limb_t,
16663    );
16664}
16665extern "C" {
16666    pub fn _nmod_poly_KS2_reduce(
16667        res: mp_ptr,
16668        s: mp_limb_signed_t,
16669        op: mp_srcptr,
16670        n: mp_limb_signed_t,
16671        w: mp_limb_t,
16672        mod_: nmod_t,
16673    );
16674}
16675extern "C" {
16676    pub fn _nmod_poly_KS2_recover_reduce1(
16677        res: mp_ptr,
16678        s: mp_limb_signed_t,
16679        op1: mp_srcptr,
16680        op2: mp_srcptr,
16681        n: mp_limb_signed_t,
16682        b: mp_limb_t,
16683        mod_: nmod_t,
16684    );
16685}
16686extern "C" {
16687    pub fn _nmod_poly_KS2_recover_reduce2(
16688        res: mp_ptr,
16689        s: mp_limb_signed_t,
16690        op1: mp_srcptr,
16691        op2: mp_srcptr,
16692        n: mp_limb_signed_t,
16693        b: mp_limb_t,
16694        mod_: nmod_t,
16695    );
16696}
16697extern "C" {
16698    pub fn _nmod_poly_KS2_recover_reduce2b(
16699        res: mp_ptr,
16700        s: mp_limb_signed_t,
16701        op1: mp_srcptr,
16702        op2: mp_srcptr,
16703        n: mp_limb_signed_t,
16704        b: mp_limb_t,
16705        mod_: nmod_t,
16706    );
16707}
16708extern "C" {
16709    pub fn _nmod_poly_KS2_recover_reduce3(
16710        res: mp_ptr,
16711        s: mp_limb_signed_t,
16712        op1: mp_srcptr,
16713        op2: mp_srcptr,
16714        n: mp_limb_signed_t,
16715        b: mp_limb_t,
16716        mod_: nmod_t,
16717    );
16718}
16719extern "C" {
16720    pub fn _nmod_poly_KS2_recover_reduce(
16721        res: mp_ptr,
16722        s: mp_limb_signed_t,
16723        op1: mp_srcptr,
16724        op2: mp_srcptr,
16725        n: mp_limb_signed_t,
16726        b: mp_limb_t,
16727        mod_: nmod_t,
16728    );
16729}
16730extern "C" {
16731    pub fn _nmod_poly_bit_pack(
16732        res: mp_ptr,
16733        poly: mp_srcptr,
16734        len: mp_limb_signed_t,
16735        bits: mp_limb_t,
16736    );
16737}
16738extern "C" {
16739    pub fn _nmod_poly_bit_unpack(
16740        res: mp_ptr,
16741        len: mp_limb_signed_t,
16742        mpn: mp_srcptr,
16743        bits: mp_limb_t,
16744        mod_: nmod_t,
16745    );
16746}
16747extern "C" {
16748    pub fn nmod_poly_bit_pack(f: *mut fmpz, poly: *mut nmod_poly_struct, bit_size: mp_limb_t);
16749}
16750extern "C" {
16751    pub fn nmod_poly_bit_unpack(poly: *mut nmod_poly_struct, f: *mut fmpz, bit_size: mp_limb_t);
16752}
16753extern "C" {
16754    pub fn _nmod_poly_mul_classical(
16755        res: mp_ptr,
16756        poly1: mp_srcptr,
16757        len1: mp_limb_signed_t,
16758        poly2: mp_srcptr,
16759        len2: mp_limb_signed_t,
16760        mod_: nmod_t,
16761    );
16762}
16763extern "C" {
16764    pub fn nmod_poly_mul_classical(
16765        res: *mut nmod_poly_struct,
16766        poly1: *mut nmod_poly_struct,
16767        poly2: *mut nmod_poly_struct,
16768    );
16769}
16770extern "C" {
16771    pub fn _nmod_poly_mullow_classical(
16772        res: mp_ptr,
16773        poly1: mp_srcptr,
16774        len1: mp_limb_signed_t,
16775        poly2: mp_srcptr,
16776        len2: mp_limb_signed_t,
16777        trunc: mp_limb_signed_t,
16778        mod_: nmod_t,
16779    );
16780}
16781extern "C" {
16782    pub fn nmod_poly_mullow_classical(
16783        res: *mut nmod_poly_struct,
16784        poly1: *mut nmod_poly_struct,
16785        poly2: *mut nmod_poly_struct,
16786        trunc: mp_limb_signed_t,
16787    );
16788}
16789extern "C" {
16790    pub fn _nmod_poly_mulhigh_classical(
16791        res: mp_ptr,
16792        poly1: mp_srcptr,
16793        len1: mp_limb_signed_t,
16794        poly2: mp_srcptr,
16795        len2: mp_limb_signed_t,
16796        start: mp_limb_signed_t,
16797        mod_: nmod_t,
16798    );
16799}
16800extern "C" {
16801    pub fn nmod_poly_mulhigh_classical(
16802        res: *mut nmod_poly_struct,
16803        poly1: *mut nmod_poly_struct,
16804        poly2: *mut nmod_poly_struct,
16805        start: mp_limb_signed_t,
16806    );
16807}
16808extern "C" {
16809    pub fn _nmod_poly_mul_KS(
16810        out: mp_ptr,
16811        in1: mp_srcptr,
16812        len1: mp_limb_signed_t,
16813        in2: mp_srcptr,
16814        len2: mp_limb_signed_t,
16815        bits: mp_limb_t,
16816        mod_: nmod_t,
16817    );
16818}
16819extern "C" {
16820    pub fn nmod_poly_mul_KS(
16821        res: *mut nmod_poly_struct,
16822        poly1: *mut nmod_poly_struct,
16823        poly2: *mut nmod_poly_struct,
16824        bits: mp_limb_t,
16825    );
16826}
16827extern "C" {
16828    pub fn _nmod_poly_mul_KS2(
16829        res: mp_ptr,
16830        op1: mp_srcptr,
16831        n1: mp_limb_signed_t,
16832        op2: mp_srcptr,
16833        n2: mp_limb_signed_t,
16834        mod_: nmod_t,
16835    );
16836}
16837extern "C" {
16838    pub fn nmod_poly_mul_KS2(
16839        res: *mut nmod_poly_struct,
16840        poly1: *mut nmod_poly_struct,
16841        poly2: *mut nmod_poly_struct,
16842    );
16843}
16844extern "C" {
16845    pub fn _nmod_poly_mul_KS4(
16846        res: mp_ptr,
16847        op1: mp_srcptr,
16848        n1: mp_limb_signed_t,
16849        op2: mp_srcptr,
16850        n2: mp_limb_signed_t,
16851        mod_: nmod_t,
16852    );
16853}
16854extern "C" {
16855    pub fn nmod_poly_mul_KS4(
16856        res: *mut nmod_poly_struct,
16857        poly1: *mut nmod_poly_struct,
16858        poly2: *mut nmod_poly_struct,
16859    );
16860}
16861extern "C" {
16862    pub fn _nmod_poly_mullow_KS(
16863        out: mp_ptr,
16864        in1: mp_srcptr,
16865        len1: mp_limb_signed_t,
16866        in2: mp_srcptr,
16867        len2: mp_limb_signed_t,
16868        bits: mp_limb_t,
16869        n: mp_limb_signed_t,
16870        mod_: nmod_t,
16871    );
16872}
16873extern "C" {
16874    pub fn nmod_poly_mullow_KS(
16875        res: *mut nmod_poly_struct,
16876        poly1: *mut nmod_poly_struct,
16877        poly2: *mut nmod_poly_struct,
16878        bits: mp_limb_t,
16879        n: mp_limb_signed_t,
16880    );
16881}
16882extern "C" {
16883    pub fn _nmod_poly_mul(
16884        res: mp_ptr,
16885        poly1: mp_srcptr,
16886        len1: mp_limb_signed_t,
16887        poly2: mp_srcptr,
16888        len2: mp_limb_signed_t,
16889        mod_: nmod_t,
16890    );
16891}
16892extern "C" {
16893    pub fn nmod_poly_mul(
16894        res: *mut nmod_poly_struct,
16895        poly1: *mut nmod_poly_struct,
16896        poly2: *mut nmod_poly_struct,
16897    );
16898}
16899extern "C" {
16900    pub fn _nmod_poly_mullow(
16901        res: mp_ptr,
16902        poly1: mp_srcptr,
16903        len1: mp_limb_signed_t,
16904        poly2: mp_srcptr,
16905        len2: mp_limb_signed_t,
16906        trunc: mp_limb_signed_t,
16907        mod_: nmod_t,
16908    );
16909}
16910extern "C" {
16911    pub fn nmod_poly_mullow(
16912        res: *mut nmod_poly_struct,
16913        poly1: *mut nmod_poly_struct,
16914        poly2: *mut nmod_poly_struct,
16915        trunc: mp_limb_signed_t,
16916    );
16917}
16918extern "C" {
16919    pub fn _nmod_poly_mulhigh(
16920        res: mp_ptr,
16921        poly1: mp_srcptr,
16922        len1: mp_limb_signed_t,
16923        poly2: mp_srcptr,
16924        len2: mp_limb_signed_t,
16925        n: mp_limb_signed_t,
16926        mod_: nmod_t,
16927    );
16928}
16929extern "C" {
16930    pub fn nmod_poly_mulhigh(
16931        res: *mut nmod_poly_struct,
16932        poly1: *mut nmod_poly_struct,
16933        poly2: *mut nmod_poly_struct,
16934        n: mp_limb_signed_t,
16935    );
16936}
16937extern "C" {
16938    pub fn _nmod_poly_mulmod(
16939        res: mp_ptr,
16940        poly1: mp_srcptr,
16941        len1: mp_limb_signed_t,
16942        poly2: mp_srcptr,
16943        len2: mp_limb_signed_t,
16944        f: mp_srcptr,
16945        lenf: mp_limb_signed_t,
16946        mod_: nmod_t,
16947    );
16948}
16949extern "C" {
16950    pub fn nmod_poly_mulmod(
16951        res: *mut nmod_poly_struct,
16952        poly1: *mut nmod_poly_struct,
16953        poly2: *mut nmod_poly_struct,
16954        f: *mut nmod_poly_struct,
16955    );
16956}
16957extern "C" {
16958    pub fn _nmod_poly_mulmod_preinv(
16959        res: mp_ptr,
16960        poly1: mp_srcptr,
16961        len1: mp_limb_signed_t,
16962        poly2: mp_srcptr,
16963        len2: mp_limb_signed_t,
16964        f: mp_srcptr,
16965        lenf: mp_limb_signed_t,
16966        finv: mp_srcptr,
16967        lenfinv: mp_limb_signed_t,
16968        mod_: nmod_t,
16969    );
16970}
16971extern "C" {
16972    pub fn nmod_poly_mulmod_preinv(
16973        res: *mut nmod_poly_struct,
16974        poly1: *mut nmod_poly_struct,
16975        poly2: *mut nmod_poly_struct,
16976        f: *mut nmod_poly_struct,
16977        finv: *mut nmod_poly_struct,
16978    );
16979}
16980extern "C" {
16981    pub fn _nmod_poly_invmod(
16982        A: *mut mp_limb_t,
16983        B: *const mp_limb_t,
16984        lenB: mp_limb_signed_t,
16985        P: *const mp_limb_t,
16986        lenP: mp_limb_signed_t,
16987        mod_: nmod_t,
16988    ) -> ::std::os::raw::c_int;
16989}
16990extern "C" {
16991    pub fn nmod_poly_invmod(
16992        A: *mut nmod_poly_struct,
16993        B: *mut nmod_poly_struct,
16994        P: *mut nmod_poly_struct,
16995    ) -> ::std::os::raw::c_int;
16996}
16997extern "C" {
16998    pub fn _nmod_poly_pow_binexp(
16999        res: mp_ptr,
17000        poly: mp_srcptr,
17001        len: mp_limb_signed_t,
17002        e: mp_limb_t,
17003        mod_: nmod_t,
17004    );
17005}
17006extern "C" {
17007    pub fn nmod_poly_pow_binexp(
17008        res: *mut nmod_poly_struct,
17009        poly: *mut nmod_poly_struct,
17010        e: mp_limb_t,
17011    );
17012}
17013extern "C" {
17014    pub fn _nmod_poly_pow(
17015        res: mp_ptr,
17016        poly: mp_srcptr,
17017        len: mp_limb_signed_t,
17018        e: mp_limb_t,
17019        mod_: nmod_t,
17020    );
17021}
17022extern "C" {
17023    pub fn nmod_poly_pow(res: *mut nmod_poly_struct, poly: *mut nmod_poly_struct, e: mp_limb_t);
17024}
17025extern "C" {
17026    pub fn _nmod_poly_pow_trunc_binexp(
17027        res: mp_ptr,
17028        poly: mp_srcptr,
17029        e: mp_limb_t,
17030        trunc: mp_limb_signed_t,
17031        mod_: nmod_t,
17032    );
17033}
17034extern "C" {
17035    pub fn nmod_poly_pow_trunc_binexp(
17036        res: *mut nmod_poly_struct,
17037        poly: *mut nmod_poly_struct,
17038        e: mp_limb_t,
17039        trunc: mp_limb_signed_t,
17040    );
17041}
17042extern "C" {
17043    pub fn _nmod_poly_pow_trunc(
17044        res: mp_ptr,
17045        poly: mp_srcptr,
17046        e: mp_limb_t,
17047        trunc: mp_limb_signed_t,
17048        mod_: nmod_t,
17049    );
17050}
17051extern "C" {
17052    pub fn nmod_poly_pow_trunc(
17053        res: *mut nmod_poly_struct,
17054        poly: *mut nmod_poly_struct,
17055        e: mp_limb_t,
17056        trunc: mp_limb_signed_t,
17057    );
17058}
17059extern "C" {
17060    pub fn nmod_poly_powmod_ui_binexp(
17061        res: *mut nmod_poly_struct,
17062        poly: *mut nmod_poly_struct,
17063        e: mp_limb_t,
17064        f: *mut nmod_poly_struct,
17065    );
17066}
17067extern "C" {
17068    pub fn _nmod_poly_powmod_ui_binexp(
17069        res: mp_ptr,
17070        poly: mp_srcptr,
17071        e: mp_limb_t,
17072        f: mp_srcptr,
17073        lenf: mp_limb_signed_t,
17074        mod_: nmod_t,
17075    );
17076}
17077extern "C" {
17078    pub fn nmod_poly_powmod_fmpz_binexp(
17079        res: *mut nmod_poly_struct,
17080        poly: *mut nmod_poly_struct,
17081        e: *mut fmpz,
17082        f: *mut nmod_poly_struct,
17083    );
17084}
17085extern "C" {
17086    pub fn _nmod_poly_powmod_fmpz_binexp(
17087        res: mp_ptr,
17088        poly: mp_srcptr,
17089        e: *mut fmpz,
17090        f: mp_srcptr,
17091        lenf: mp_limb_signed_t,
17092        mod_: nmod_t,
17093    );
17094}
17095extern "C" {
17096    pub fn _nmod_poly_powmod_mpz_binexp(
17097        res: mp_ptr,
17098        poly: mp_srcptr,
17099        e: mpz_srcptr,
17100        f: mp_srcptr,
17101        lenf: mp_limb_signed_t,
17102        mod_: nmod_t,
17103    );
17104}
17105extern "C" {
17106    pub fn nmod_poly_powmod_mpz_binexp(
17107        res: *mut nmod_poly_struct,
17108        poly: *mut nmod_poly_struct,
17109        e: mpz_srcptr,
17110        f: *mut nmod_poly_struct,
17111    );
17112}
17113extern "C" {
17114    pub fn _nmod_poly_powmod_ui_binexp_preinv(
17115        res: mp_ptr,
17116        poly: mp_srcptr,
17117        e: mp_limb_t,
17118        f: mp_srcptr,
17119        lenf: mp_limb_signed_t,
17120        finv: mp_srcptr,
17121        lenfinv: mp_limb_signed_t,
17122        mod_: nmod_t,
17123    );
17124}
17125extern "C" {
17126    pub fn nmod_poly_powmod_ui_binexp_preinv(
17127        res: *mut nmod_poly_struct,
17128        poly: *mut nmod_poly_struct,
17129        e: mp_limb_t,
17130        f: *mut nmod_poly_struct,
17131        finv: *mut nmod_poly_struct,
17132    );
17133}
17134extern "C" {
17135    pub fn _nmod_poly_powmod_fmpz_binexp_preinv(
17136        res: mp_ptr,
17137        poly: mp_srcptr,
17138        e: *mut fmpz,
17139        f: mp_srcptr,
17140        lenf: mp_limb_signed_t,
17141        finv: mp_srcptr,
17142        lenfinv: mp_limb_signed_t,
17143        mod_: nmod_t,
17144    );
17145}
17146extern "C" {
17147    pub fn nmod_poly_powmod_fmpz_binexp_preinv(
17148        res: *mut nmod_poly_struct,
17149        poly: *mut nmod_poly_struct,
17150        e: *mut fmpz,
17151        f: *mut nmod_poly_struct,
17152        finv: *mut nmod_poly_struct,
17153    );
17154}
17155extern "C" {
17156    pub fn _nmod_poly_powmod_x_ui_preinv(
17157        res: mp_ptr,
17158        e: mp_limb_t,
17159        f: mp_srcptr,
17160        lenf: mp_limb_signed_t,
17161        finv: mp_srcptr,
17162        lenfinv: mp_limb_signed_t,
17163        mod_: nmod_t,
17164    );
17165}
17166extern "C" {
17167    pub fn nmod_poly_powmod_x_ui_preinv(
17168        res: *mut nmod_poly_struct,
17169        e: mp_limb_t,
17170        f: *mut nmod_poly_struct,
17171        finv: *mut nmod_poly_struct,
17172    );
17173}
17174extern "C" {
17175    pub fn _nmod_poly_powmod_mpz_binexp_preinv(
17176        res: mp_ptr,
17177        poly: mp_srcptr,
17178        e: mpz_srcptr,
17179        f: mp_srcptr,
17180        lenf: mp_limb_signed_t,
17181        finv: mp_srcptr,
17182        lenfinv: mp_limb_signed_t,
17183        mod_: nmod_t,
17184    );
17185}
17186extern "C" {
17187    pub fn nmod_poly_powmod_mpz_binexp_preinv(
17188        res: *mut nmod_poly_struct,
17189        poly: *mut nmod_poly_struct,
17190        e: mpz_srcptr,
17191        f: *mut nmod_poly_struct,
17192        finv: *mut nmod_poly_struct,
17193    );
17194}
17195extern "C" {
17196    pub fn _nmod_poly_powmod_x_fmpz_preinv(
17197        res: mp_ptr,
17198        e: *mut fmpz,
17199        f: mp_srcptr,
17200        lenf: mp_limb_signed_t,
17201        finv: mp_srcptr,
17202        lenfinv: mp_limb_signed_t,
17203        mod_: nmod_t,
17204    );
17205}
17206extern "C" {
17207    pub fn nmod_poly_powmod_x_fmpz_preinv(
17208        res: *mut nmod_poly_struct,
17209        e: *mut fmpz,
17210        f: *mut nmod_poly_struct,
17211        finv: *mut nmod_poly_struct,
17212    );
17213}
17214extern "C" {
17215    pub fn _nmod_poly_powers_mod_preinv_naive(
17216        res: *mut mp_ptr,
17217        f: mp_srcptr,
17218        flen: mp_limb_signed_t,
17219        n: mp_limb_signed_t,
17220        g: mp_srcptr,
17221        glen: mp_limb_signed_t,
17222        ginv: mp_srcptr,
17223        ginvlen: mp_limb_signed_t,
17224        mod_: nmod_t,
17225    );
17226}
17227extern "C" {
17228    pub fn nmod_poly_powers_mod_naive(
17229        res: *mut nmod_poly_struct,
17230        f: *mut nmod_poly_struct,
17231        n: mp_limb_signed_t,
17232        g: *mut nmod_poly_struct,
17233    );
17234}
17235extern "C" {
17236    pub fn _nmod_poly_powers_mod_preinv_threaded_pool(
17237        res: *mut mp_ptr,
17238        f: mp_srcptr,
17239        flen: mp_limb_signed_t,
17240        n: mp_limb_signed_t,
17241        g: mp_srcptr,
17242        glen: mp_limb_signed_t,
17243        ginv: mp_srcptr,
17244        ginvlen: mp_limb_signed_t,
17245        mod_: nmod_t,
17246        threads: *mut thread_pool_handle,
17247        num_threads: mp_limb_signed_t,
17248    );
17249}
17250extern "C" {
17251    pub fn _nmod_poly_powers_mod_preinv_threaded(
17252        res: *mut mp_ptr,
17253        f: mp_srcptr,
17254        flen: mp_limb_signed_t,
17255        n: mp_limb_signed_t,
17256        g: mp_srcptr,
17257        glen: mp_limb_signed_t,
17258        ginv: mp_srcptr,
17259        ginvlen: mp_limb_signed_t,
17260        mod_: nmod_t,
17261    );
17262}
17263extern "C" {
17264    pub fn nmod_poly_powers_mod_bsgs(
17265        res: *mut nmod_poly_struct,
17266        f: *mut nmod_poly_struct,
17267        n: mp_limb_signed_t,
17268        g: *mut nmod_poly_struct,
17269    );
17270}
17271extern "C" {
17272    pub fn _nmod_poly_divrem_basecase(
17273        Q: mp_ptr,
17274        R: mp_ptr,
17275        W: mp_ptr,
17276        A: mp_srcptr,
17277        A_len: mp_limb_signed_t,
17278        B: mp_srcptr,
17279        B_len: mp_limb_signed_t,
17280        mod_: nmod_t,
17281    );
17282}
17283extern "C" {
17284    pub fn nmod_poly_divrem_basecase(
17285        Q: *mut nmod_poly_struct,
17286        R: *mut nmod_poly_struct,
17287        A: *mut nmod_poly_struct,
17288        B: *mut nmod_poly_struct,
17289    );
17290}
17291extern "C" {
17292    pub fn _nmod_poly_divrem_divconquer_recursive(
17293        Q: mp_ptr,
17294        BQ: mp_ptr,
17295        W: mp_ptr,
17296        V: mp_ptr,
17297        A: mp_srcptr,
17298        B: mp_srcptr,
17299        lenB: mp_limb_signed_t,
17300        mod_: nmod_t,
17301    );
17302}
17303extern "C" {
17304    pub fn _nmod_poly_divrem_divconquer(
17305        Q: mp_ptr,
17306        R: mp_ptr,
17307        A: mp_srcptr,
17308        lenA: mp_limb_signed_t,
17309        B: mp_srcptr,
17310        lenB: mp_limb_signed_t,
17311        mod_: nmod_t,
17312    );
17313}
17314extern "C" {
17315    pub fn nmod_poly_divrem_divconquer(
17316        Q: *mut nmod_poly_struct,
17317        R: *mut nmod_poly_struct,
17318        A: *mut nmod_poly_struct,
17319        B: *mut nmod_poly_struct,
17320    );
17321}
17322extern "C" {
17323    pub fn _nmod_poly_divrem_q0(
17324        Q: mp_ptr,
17325        R: mp_ptr,
17326        A: mp_srcptr,
17327        B: mp_srcptr,
17328        lenA: mp_limb_signed_t,
17329        mod_: nmod_t,
17330    );
17331}
17332extern "C" {
17333    pub fn _nmod_poly_divrem_q1(
17334        Q: mp_ptr,
17335        R: mp_ptr,
17336        A: mp_srcptr,
17337        lenA: mp_limb_signed_t,
17338        B: mp_srcptr,
17339        lenB: mp_limb_signed_t,
17340        mod_: nmod_t,
17341    );
17342}
17343extern "C" {
17344    pub fn _nmod_poly_divrem(
17345        Q: mp_ptr,
17346        R: mp_ptr,
17347        A: mp_srcptr,
17348        lenA: mp_limb_signed_t,
17349        B: mp_srcptr,
17350        lenB: mp_limb_signed_t,
17351        mod_: nmod_t,
17352    );
17353}
17354extern "C" {
17355    pub fn nmod_poly_divrem(
17356        Q: *mut nmod_poly_struct,
17357        R: *mut nmod_poly_struct,
17358        A: *mut nmod_poly_struct,
17359        B: *mut nmod_poly_struct,
17360    );
17361}
17362extern "C" {
17363    pub fn _nmod_poly_div_basecase(
17364        Q: mp_ptr,
17365        W: mp_ptr,
17366        A: mp_srcptr,
17367        A_len: mp_limb_signed_t,
17368        B: mp_srcptr,
17369        B_len: mp_limb_signed_t,
17370        mod_: nmod_t,
17371    );
17372}
17373extern "C" {
17374    pub fn nmod_poly_div_basecase(
17375        Q: *mut nmod_poly_struct,
17376        A: *mut nmod_poly_struct,
17377        B: *mut nmod_poly_struct,
17378    );
17379}
17380extern "C" {
17381    pub fn _nmod_poly_div_divconquer_recursive(
17382        Q: mp_ptr,
17383        W: mp_ptr,
17384        V: mp_ptr,
17385        A: mp_srcptr,
17386        B: mp_srcptr,
17387        lenB: mp_limb_signed_t,
17388        mod_: nmod_t,
17389    );
17390}
17391extern "C" {
17392    pub fn _nmod_poly_div_divconquer(
17393        Q: mp_ptr,
17394        A: mp_srcptr,
17395        lenA: mp_limb_signed_t,
17396        B: mp_srcptr,
17397        lenB: mp_limb_signed_t,
17398        mod_: nmod_t,
17399    );
17400}
17401extern "C" {
17402    pub fn nmod_poly_div_divconquer(
17403        Q: *mut nmod_poly_struct,
17404        A: *mut nmod_poly_struct,
17405        B: *mut nmod_poly_struct,
17406    );
17407}
17408extern "C" {
17409    pub fn _nmod_poly_div(
17410        Q: mp_ptr,
17411        A: mp_srcptr,
17412        lenA: mp_limb_signed_t,
17413        B: mp_srcptr,
17414        lenB: mp_limb_signed_t,
17415        mod_: nmod_t,
17416    );
17417}
17418extern "C" {
17419    pub fn nmod_poly_div(
17420        Q: *mut nmod_poly_struct,
17421        A: *mut nmod_poly_struct,
17422        B: *mut nmod_poly_struct,
17423    );
17424}
17425extern "C" {
17426    pub fn _nmod_poly_rem_basecase(
17427        R: mp_ptr,
17428        W: mp_ptr,
17429        A: mp_srcptr,
17430        lenA: mp_limb_signed_t,
17431        B: mp_srcptr,
17432        lenB: mp_limb_signed_t,
17433        mod_: nmod_t,
17434    );
17435}
17436extern "C" {
17437    pub fn nmod_poly_rem_basecase(
17438        R: *mut nmod_poly_struct,
17439        A: *mut nmod_poly_struct,
17440        B: *mut nmod_poly_struct,
17441    );
17442}
17443extern "C" {
17444    pub fn _nmod_poly_rem_q1(
17445        R: mp_ptr,
17446        A: mp_srcptr,
17447        lenA: mp_limb_signed_t,
17448        B: mp_srcptr,
17449        lenB: mp_limb_signed_t,
17450        mod_: nmod_t,
17451    );
17452}
17453extern "C" {
17454    pub fn _nmod_poly_rem(
17455        R: mp_ptr,
17456        A: mp_srcptr,
17457        lenA: mp_limb_signed_t,
17458        B: mp_srcptr,
17459        lenB: mp_limb_signed_t,
17460        mod_: nmod_t,
17461    );
17462}
17463extern "C" {
17464    pub fn nmod_poly_rem(
17465        R: *mut nmod_poly_struct,
17466        A: *mut nmod_poly_struct,
17467        B: *mut nmod_poly_struct,
17468    );
17469}
17470extern "C" {
17471    pub fn _nmod_poly_inv_series_basecase(
17472        Qinv: mp_ptr,
17473        Q: mp_srcptr,
17474        Qlen: mp_limb_signed_t,
17475        n: mp_limb_signed_t,
17476        mod_: nmod_t,
17477    );
17478}
17479extern "C" {
17480    pub fn nmod_poly_inv_series_basecase(
17481        Qinv: *mut nmod_poly_struct,
17482        Q: *mut nmod_poly_struct,
17483        n: mp_limb_signed_t,
17484    );
17485}
17486extern "C" {
17487    pub fn _nmod_poly_inv_series_newton(
17488        Qinv: mp_ptr,
17489        Q: mp_srcptr,
17490        Qlen: mp_limb_signed_t,
17491        n: mp_limb_signed_t,
17492        mod_: nmod_t,
17493    );
17494}
17495extern "C" {
17496    pub fn nmod_poly_inv_series_newton(
17497        Qinv: *mut nmod_poly_struct,
17498        Q: *mut nmod_poly_struct,
17499        n: mp_limb_signed_t,
17500    );
17501}
17502extern "C" {
17503    pub fn _nmod_poly_div_series_basecase(
17504        Q: mp_ptr,
17505        A: mp_srcptr,
17506        Alen: mp_limb_signed_t,
17507        B: mp_srcptr,
17508        Blen: mp_limb_signed_t,
17509        n: mp_limb_signed_t,
17510        mod_: nmod_t,
17511    );
17512}
17513extern "C" {
17514    pub fn nmod_poly_div_series_basecase(
17515        Q: *mut nmod_poly_struct,
17516        A: *mut nmod_poly_struct,
17517        B: *mut nmod_poly_struct,
17518        n: mp_limb_signed_t,
17519    );
17520}
17521extern "C" {
17522    pub fn _nmod_poly_div_series(
17523        Q: mp_ptr,
17524        A: mp_srcptr,
17525        Alen: mp_limb_signed_t,
17526        B: mp_srcptr,
17527        Blen: mp_limb_signed_t,
17528        n: mp_limb_signed_t,
17529        mod_: nmod_t,
17530    );
17531}
17532extern "C" {
17533    pub fn nmod_poly_div_series(
17534        Q: *mut nmod_poly_struct,
17535        A: *mut nmod_poly_struct,
17536        B: *mut nmod_poly_struct,
17537        n: mp_limb_signed_t,
17538    );
17539}
17540extern "C" {
17541    pub fn _nmod_poly_div_newton(
17542        Q: mp_ptr,
17543        A: mp_srcptr,
17544        Alen: mp_limb_signed_t,
17545        B: mp_srcptr,
17546        Blen: mp_limb_signed_t,
17547        mod_: nmod_t,
17548    );
17549}
17550extern "C" {
17551    pub fn nmod_poly_div_newton(
17552        Q: *mut nmod_poly_struct,
17553        A: *mut nmod_poly_struct,
17554        B: *mut nmod_poly_struct,
17555    );
17556}
17557extern "C" {
17558    pub fn _nmod_poly_divrem_newton(
17559        Q: mp_ptr,
17560        R: mp_ptr,
17561        A: mp_srcptr,
17562        Alen: mp_limb_signed_t,
17563        B: mp_srcptr,
17564        Blen: mp_limb_signed_t,
17565        mod_: nmod_t,
17566    );
17567}
17568extern "C" {
17569    pub fn nmod_poly_divrem_newton(
17570        Q: *mut nmod_poly_struct,
17571        R: *mut nmod_poly_struct,
17572        A: *mut nmod_poly_struct,
17573        B: *mut nmod_poly_struct,
17574    );
17575}
17576extern "C" {
17577    pub fn _nmod_poly_div_newton_n_preinv(
17578        Q: mp_ptr,
17579        A: mp_srcptr,
17580        lenA: mp_limb_signed_t,
17581        B: mp_srcptr,
17582        lenB: mp_limb_signed_t,
17583        Binv: mp_srcptr,
17584        lenBinv: mp_limb_signed_t,
17585        mod_: nmod_t,
17586    );
17587}
17588extern "C" {
17589    pub fn nmod_poly_div_newton_n_preinv(
17590        Q: *mut nmod_poly_struct,
17591        A: *mut nmod_poly_struct,
17592        B: *mut nmod_poly_struct,
17593        Binv: *mut nmod_poly_struct,
17594    );
17595}
17596extern "C" {
17597    pub fn _nmod_poly_divrem_newton_n_preinv(
17598        Q: mp_ptr,
17599        R: mp_ptr,
17600        A: mp_srcptr,
17601        lenA: mp_limb_signed_t,
17602        B: mp_srcptr,
17603        lenB: mp_limb_signed_t,
17604        Binv: mp_srcptr,
17605        lenBinv: mp_limb_signed_t,
17606        mod_: nmod_t,
17607    );
17608}
17609extern "C" {
17610    pub fn nmod_poly_divrem_newton_n_preinv(
17611        Q: *mut nmod_poly_struct,
17612        R: *mut nmod_poly_struct,
17613        A: *mut nmod_poly_struct,
17614        B: *mut nmod_poly_struct,
17615        Binv: *mut nmod_poly_struct,
17616    );
17617}
17618extern "C" {
17619    pub fn _nmod_poly_div_root(
17620        Q: mp_ptr,
17621        A: mp_srcptr,
17622        len: mp_limb_signed_t,
17623        c: mp_limb_t,
17624        mod_: nmod_t,
17625    ) -> mp_limb_t;
17626}
17627extern "C" {
17628    pub fn nmod_poly_div_root(
17629        Q: *mut nmod_poly_struct,
17630        A: *mut nmod_poly_struct,
17631        c: mp_limb_t,
17632    ) -> mp_limb_t;
17633}
17634extern "C" {
17635    pub fn _nmod_poly_derivative(
17636        x_prime: mp_ptr,
17637        x: mp_srcptr,
17638        len: mp_limb_signed_t,
17639        mod_: nmod_t,
17640    );
17641}
17642extern "C" {
17643    pub fn nmod_poly_derivative(x_prime: *mut nmod_poly_struct, x: *mut nmod_poly_struct);
17644}
17645extern "C" {
17646    pub fn _nmod_poly_integral(x_int: mp_ptr, x: mp_srcptr, len: mp_limb_signed_t, mod_: nmod_t);
17647}
17648extern "C" {
17649    pub fn nmod_poly_integral(x_int: *mut nmod_poly_struct, x: *mut nmod_poly_struct);
17650}
17651extern "C" {
17652    pub fn _nmod_poly_evaluate_fmpz(
17653        rop: *mut fmpz,
17654        poly: mp_srcptr,
17655        len: mp_limb_signed_t,
17656        c: *mut fmpz,
17657    );
17658}
17659extern "C" {
17660    pub fn nmod_poly_evaluate_fmpz(rop: *mut fmpz, poly: *mut nmod_poly_struct, c: *mut fmpz);
17661}
17662extern "C" {
17663    pub fn _nmod_poly_evaluate_nmod(
17664        poly: mp_srcptr,
17665        len: mp_limb_signed_t,
17666        c: mp_limb_t,
17667        mod_: nmod_t,
17668    ) -> mp_limb_t;
17669}
17670extern "C" {
17671    pub fn nmod_poly_evaluate_nmod(poly: *mut nmod_poly_struct, c: mp_limb_t) -> mp_limb_t;
17672}
17673extern "C" {
17674    pub fn _nmod_poly_evaluate_nmod_vec(
17675        ys: mp_ptr,
17676        coeffs: mp_srcptr,
17677        len: mp_limb_signed_t,
17678        xs: mp_srcptr,
17679        n: mp_limb_signed_t,
17680        mod_: nmod_t,
17681    );
17682}
17683extern "C" {
17684    pub fn nmod_poly_evaluate_nmod_vec(
17685        ys: mp_ptr,
17686        poly: *mut nmod_poly_struct,
17687        xs: mp_srcptr,
17688        n: mp_limb_signed_t,
17689    );
17690}
17691extern "C" {
17692    pub fn _nmod_poly_evaluate_nmod_vec_iter(
17693        ys: mp_ptr,
17694        coeffs: mp_srcptr,
17695        len: mp_limb_signed_t,
17696        xs: mp_srcptr,
17697        n: mp_limb_signed_t,
17698        mod_: nmod_t,
17699    );
17700}
17701extern "C" {
17702    pub fn nmod_poly_evaluate_nmod_vec_iter(
17703        ys: mp_ptr,
17704        poly: *mut nmod_poly_struct,
17705        xs: mp_srcptr,
17706        n: mp_limb_signed_t,
17707    );
17708}
17709extern "C" {
17710    pub fn _nmod_poly_evaluate_nmod_vec_fast_precomp(
17711        vs: mp_ptr,
17712        poly: mp_srcptr,
17713        plen: mp_limb_signed_t,
17714        tree: *const mp_ptr,
17715        len: mp_limb_signed_t,
17716        mod_: nmod_t,
17717    );
17718}
17719extern "C" {
17720    pub fn _nmod_poly_evaluate_nmod_vec_fast(
17721        ys: mp_ptr,
17722        coeffs: mp_srcptr,
17723        len: mp_limb_signed_t,
17724        xs: mp_srcptr,
17725        n: mp_limb_signed_t,
17726        mod_: nmod_t,
17727    );
17728}
17729extern "C" {
17730    pub fn nmod_poly_evaluate_nmod_vec_fast(
17731        ys: mp_ptr,
17732        poly: *mut nmod_poly_struct,
17733        xs: mp_srcptr,
17734        n: mp_limb_signed_t,
17735    );
17736}
17737extern "C" {
17738    pub fn nmod_mat_one_addmul(dest: *mut nmod_mat_struct, mat: *mut nmod_mat_struct, c: mp_limb_t);
17739}
17740extern "C" {
17741    pub fn nmod_poly_evaluate_mat_horner(
17742        dest: *mut nmod_mat_struct,
17743        poly: *mut nmod_poly_struct,
17744        c: *mut nmod_mat_struct,
17745    );
17746}
17747extern "C" {
17748    pub fn nmod_poly_evaluate_mat_paterson_stockmeyer(
17749        dest: *mut nmod_mat_struct,
17750        poly: *mut nmod_poly_struct,
17751        c: *mut nmod_mat_struct,
17752    );
17753}
17754extern "C" {
17755    pub fn _nmod_poly_tree_alloc(len: mp_limb_signed_t) -> *mut mp_ptr;
17756}
17757extern "C" {
17758    pub fn _nmod_poly_tree_free(tree: *mut mp_ptr, len: mp_limb_signed_t);
17759}
17760extern "C" {
17761    pub fn _nmod_poly_tree_build(
17762        tree: *mut mp_ptr,
17763        roots: mp_srcptr,
17764        len: mp_limb_signed_t,
17765        mod_: nmod_t,
17766    );
17767}
17768extern "C" {
17769    pub fn _nmod_poly_interpolate_nmod_vec_newton(
17770        poly: mp_ptr,
17771        xs: mp_srcptr,
17772        ys: mp_srcptr,
17773        n: mp_limb_signed_t,
17774        mod_: nmod_t,
17775    );
17776}
17777extern "C" {
17778    pub fn nmod_poly_interpolate_nmod_vec_newton(
17779        poly: *mut nmod_poly_struct,
17780        xs: mp_srcptr,
17781        ys: mp_srcptr,
17782        n: mp_limb_signed_t,
17783    );
17784}
17785extern "C" {
17786    pub fn _nmod_poly_interpolate_nmod_vec_barycentric(
17787        poly: mp_ptr,
17788        xs: mp_srcptr,
17789        ys: mp_srcptr,
17790        n: mp_limb_signed_t,
17791        mod_: nmod_t,
17792    );
17793}
17794extern "C" {
17795    pub fn nmod_poly_interpolate_nmod_vec_barycentric(
17796        poly: *mut nmod_poly_struct,
17797        xs: mp_srcptr,
17798        ys: mp_srcptr,
17799        n: mp_limb_signed_t,
17800    );
17801}
17802extern "C" {
17803    pub fn _nmod_poly_interpolate_nmod_vec(
17804        poly: mp_ptr,
17805        xs: mp_srcptr,
17806        ys: mp_srcptr,
17807        n: mp_limb_signed_t,
17808        mod_: nmod_t,
17809    );
17810}
17811extern "C" {
17812    pub fn nmod_poly_interpolate_nmod_vec(
17813        poly: *mut nmod_poly_struct,
17814        xs: mp_srcptr,
17815        ys: mp_srcptr,
17816        n: mp_limb_signed_t,
17817    );
17818}
17819extern "C" {
17820    pub fn nmod_poly_interpolate_nmod_vec_fast(
17821        poly: *mut nmod_poly_struct,
17822        xs: mp_srcptr,
17823        ys: mp_srcptr,
17824        n: mp_limb_signed_t,
17825    );
17826}
17827extern "C" {
17828    pub fn _nmod_poly_interpolate_nmod_vec_fast(
17829        poly: mp_ptr,
17830        xs: mp_srcptr,
17831        ys: mp_srcptr,
17832        len: mp_limb_signed_t,
17833        mod_: nmod_t,
17834    );
17835}
17836extern "C" {
17837    pub fn _nmod_poly_interpolate_nmod_vec_fast_precomp(
17838        poly: mp_ptr,
17839        ys: mp_srcptr,
17840        tree: *const mp_ptr,
17841        weights: mp_srcptr,
17842        len: mp_limb_signed_t,
17843        mod_: nmod_t,
17844    );
17845}
17846extern "C" {
17847    pub fn _nmod_poly_interpolation_weights(
17848        w: mp_ptr,
17849        tree: *const mp_ptr,
17850        len: mp_limb_signed_t,
17851        mod_: nmod_t,
17852    );
17853}
17854extern "C" {
17855    pub fn _nmod_poly_compose_horner(
17856        res: mp_ptr,
17857        poly1: mp_srcptr,
17858        len1: mp_limb_signed_t,
17859        poly2: mp_srcptr,
17860        len2: mp_limb_signed_t,
17861        mod_: nmod_t,
17862    );
17863}
17864extern "C" {
17865    pub fn nmod_poly_compose_horner(
17866        res: *mut nmod_poly_struct,
17867        poly1: *mut nmod_poly_struct,
17868        poly2: *mut nmod_poly_struct,
17869    );
17870}
17871extern "C" {
17872    pub fn _nmod_poly_compose_divconquer(
17873        res: mp_ptr,
17874        poly1: mp_srcptr,
17875        len1: mp_limb_signed_t,
17876        poly2: mp_srcptr,
17877        len2: mp_limb_signed_t,
17878        mod_: nmod_t,
17879    );
17880}
17881extern "C" {
17882    pub fn nmod_poly_compose_divconquer(
17883        res: *mut nmod_poly_struct,
17884        poly1: *mut nmod_poly_struct,
17885        poly2: *mut nmod_poly_struct,
17886    );
17887}
17888extern "C" {
17889    pub fn _nmod_poly_compose(
17890        res: mp_ptr,
17891        poly1: mp_srcptr,
17892        len1: mp_limb_signed_t,
17893        poly2: mp_srcptr,
17894        len2: mp_limb_signed_t,
17895        mod_: nmod_t,
17896    );
17897}
17898extern "C" {
17899    pub fn nmod_poly_compose(
17900        res: *mut nmod_poly_struct,
17901        poly1: *mut nmod_poly_struct,
17902        poly2: *mut nmod_poly_struct,
17903    );
17904}
17905extern "C" {
17906    pub fn _nmod_poly_taylor_shift_horner(
17907        poly: mp_ptr,
17908        c: mp_limb_t,
17909        len: mp_limb_signed_t,
17910        mod_: nmod_t,
17911    );
17912}
17913extern "C" {
17914    pub fn nmod_poly_taylor_shift_horner(
17915        g: *mut nmod_poly_struct,
17916        f: *mut nmod_poly_struct,
17917        c: mp_limb_t,
17918    );
17919}
17920extern "C" {
17921    pub fn _nmod_poly_taylor_shift_convolution(
17922        poly: mp_ptr,
17923        c: mp_limb_t,
17924        len: mp_limb_signed_t,
17925        mod_: nmod_t,
17926    );
17927}
17928extern "C" {
17929    pub fn nmod_poly_taylor_shift_convolution(
17930        g: *mut nmod_poly_struct,
17931        f: *mut nmod_poly_struct,
17932        c: mp_limb_t,
17933    );
17934}
17935extern "C" {
17936    pub fn _nmod_poly_taylor_shift(poly: mp_ptr, c: mp_limb_t, len: mp_limb_signed_t, mod_: nmod_t);
17937}
17938extern "C" {
17939    pub fn nmod_poly_taylor_shift(g: *mut nmod_poly_struct, f: *mut nmod_poly_struct, c: mp_limb_t);
17940}
17941extern "C" {
17942    pub fn _nmod_poly_compose_mod_brent_kung(
17943        res: mp_ptr,
17944        f: mp_srcptr,
17945        lenf: mp_limb_signed_t,
17946        g: mp_srcptr,
17947        h: mp_srcptr,
17948        lenh: mp_limb_signed_t,
17949        mod_: nmod_t,
17950    );
17951}
17952extern "C" {
17953    pub fn nmod_poly_compose_mod_brent_kung(
17954        res: *mut nmod_poly_struct,
17955        f: *mut nmod_poly_struct,
17956        g: *mut nmod_poly_struct,
17957        h: *mut nmod_poly_struct,
17958    );
17959}
17960extern "C" {
17961    pub fn _nmod_poly_reduce_matrix_mod_poly(
17962        A: *mut nmod_mat_struct,
17963        B: *mut nmod_mat_struct,
17964        f: *mut nmod_poly_struct,
17965    );
17966}
17967extern "C" {
17968    pub fn _nmod_poly_precompute_matrix(
17969        A: *mut nmod_mat_struct,
17970        poly1: mp_srcptr,
17971        poly2: mp_srcptr,
17972        len2: mp_limb_signed_t,
17973        poly2inv: mp_srcptr,
17974        len2inv: mp_limb_signed_t,
17975        mod_: nmod_t,
17976    );
17977}
17978extern "C" {
17979    pub fn _nmod_poly_precompute_matrix_worker(arg_ptr: *mut ::std::os::raw::c_void);
17980}
17981extern "C" {
17982    pub fn nmod_poly_precompute_matrix(
17983        A: *mut nmod_mat_struct,
17984        poly1: *mut nmod_poly_struct,
17985        poly2: *mut nmod_poly_struct,
17986        poly2inv: *mut nmod_poly_struct,
17987    );
17988}
17989extern "C" {
17990    pub fn _nmod_poly_compose_mod_brent_kung_precomp_preinv(
17991        res: mp_ptr,
17992        poly1: mp_srcptr,
17993        len1: mp_limb_signed_t,
17994        A: *mut nmod_mat_struct,
17995        poly3: mp_srcptr,
17996        len3: mp_limb_signed_t,
17997        poly3inv: mp_srcptr,
17998        len3inv: mp_limb_signed_t,
17999        mod_: nmod_t,
18000    );
18001}
18002extern "C" {
18003    pub fn _nmod_poly_compose_mod_brent_kung_precomp_preinv_worker(
18004        arg_ptr: *mut ::std::os::raw::c_void,
18005    );
18006}
18007extern "C" {
18008    pub fn nmod_poly_compose_mod_brent_kung_precomp_preinv(
18009        res: *mut nmod_poly_struct,
18010        poly1: *mut nmod_poly_struct,
18011        A: *mut nmod_mat_struct,
18012        poly3: *mut nmod_poly_struct,
18013        poly3inv: *mut nmod_poly_struct,
18014    );
18015}
18016extern "C" {
18017    pub fn _nmod_poly_compose_mod_brent_kung_preinv(
18018        res: mp_ptr,
18019        poly1: mp_srcptr,
18020        len1: mp_limb_signed_t,
18021        poly2: mp_srcptr,
18022        poly3: mp_srcptr,
18023        len3: mp_limb_signed_t,
18024        poly3inv: mp_srcptr,
18025        len3inv: mp_limb_signed_t,
18026        mod_: nmod_t,
18027    );
18028}
18029extern "C" {
18030    pub fn nmod_poly_compose_mod_brent_kung_preinv(
18031        res: *mut nmod_poly_struct,
18032        poly1: *mut nmod_poly_struct,
18033        poly2: *mut nmod_poly_struct,
18034        poly3: *mut nmod_poly_struct,
18035        poly3inv: *mut nmod_poly_struct,
18036    );
18037}
18038extern "C" {
18039    pub fn _nmod_poly_compose_mod_brent_kung_vec_preinv(
18040        res: *mut nmod_poly_struct,
18041        polys: *const nmod_poly_struct,
18042        len1: mp_limb_signed_t,
18043        l: mp_limb_signed_t,
18044        g: mp_srcptr,
18045        glen: mp_limb_signed_t,
18046        poly: mp_srcptr,
18047        len: mp_limb_signed_t,
18048        polyinv: mp_srcptr,
18049        leninv: mp_limb_signed_t,
18050        mod_: nmod_t,
18051    );
18052}
18053extern "C" {
18054    pub fn nmod_poly_compose_mod_brent_kung_vec_preinv(
18055        res: *mut nmod_poly_struct,
18056        polys: *const nmod_poly_struct,
18057        len1: mp_limb_signed_t,
18058        n: mp_limb_signed_t,
18059        g: *mut nmod_poly_struct,
18060        poly: *mut nmod_poly_struct,
18061        polyinv: *mut nmod_poly_struct,
18062    );
18063}
18064extern "C" {
18065    pub fn _nmod_poly_compose_mod_brent_kung_vec_preinv_worker(
18066        arg_ptr: *mut ::std::os::raw::c_void,
18067    );
18068}
18069extern "C" {
18070    pub fn nmod_poly_compose_mod_brent_kung_vec_preinv_threaded_pool(
18071        res: *mut nmod_poly_struct,
18072        polys: *const nmod_poly_struct,
18073        len1: mp_limb_signed_t,
18074        n: mp_limb_signed_t,
18075        g: *mut nmod_poly_struct,
18076        poly: *mut nmod_poly_struct,
18077        polyinv: *mut nmod_poly_struct,
18078        threads: *mut thread_pool_handle,
18079        num_threads: mp_limb_signed_t,
18080    );
18081}
18082extern "C" {
18083    pub fn _nmod_poly_compose_mod_brent_kung_vec_preinv_threaded_pool(
18084        res: *mut nmod_poly_struct,
18085        polys: *const nmod_poly_struct,
18086        lenpolys: mp_limb_signed_t,
18087        l: mp_limb_signed_t,
18088        g: mp_srcptr,
18089        glen: mp_limb_signed_t,
18090        poly: mp_srcptr,
18091        len: mp_limb_signed_t,
18092        polyinv: mp_srcptr,
18093        leninv: mp_limb_signed_t,
18094        mod_: nmod_t,
18095        threads: *mut thread_pool_handle,
18096        num_threads: mp_limb_signed_t,
18097    );
18098}
18099extern "C" {
18100    pub fn nmod_poly_compose_mod_brent_kung_vec_preinv_threaded(
18101        res: *mut nmod_poly_struct,
18102        polys: *const nmod_poly_struct,
18103        len1: mp_limb_signed_t,
18104        n: mp_limb_signed_t,
18105        g: *mut nmod_poly_struct,
18106        poly: *mut nmod_poly_struct,
18107        polyinv: *mut nmod_poly_struct,
18108    );
18109}
18110extern "C" {
18111    pub fn _nmod_poly_compose_mod_horner(
18112        res: mp_ptr,
18113        f: mp_srcptr,
18114        lenf: mp_limb_signed_t,
18115        g: mp_srcptr,
18116        h: mp_srcptr,
18117        lenh: mp_limb_signed_t,
18118        mod_: nmod_t,
18119    );
18120}
18121extern "C" {
18122    pub fn nmod_poly_compose_mod_horner(
18123        res: *mut nmod_poly_struct,
18124        f: *mut nmod_poly_struct,
18125        g: *mut nmod_poly_struct,
18126        h: *mut nmod_poly_struct,
18127    );
18128}
18129extern "C" {
18130    pub fn _nmod_poly_compose_mod(
18131        res: mp_ptr,
18132        f: mp_srcptr,
18133        lenf: mp_limb_signed_t,
18134        g: mp_srcptr,
18135        h: mp_srcptr,
18136        lenh: mp_limb_signed_t,
18137        mod_: nmod_t,
18138    );
18139}
18140extern "C" {
18141    pub fn nmod_poly_compose_mod(
18142        res: *mut nmod_poly_struct,
18143        f: *mut nmod_poly_struct,
18144        g: *mut nmod_poly_struct,
18145        h: *mut nmod_poly_struct,
18146    );
18147}
18148extern "C" {
18149    pub fn _nmod_poly_compose_series_horner(
18150        res: mp_ptr,
18151        poly1: mp_srcptr,
18152        len1: mp_limb_signed_t,
18153        poly2: mp_srcptr,
18154        len2: mp_limb_signed_t,
18155        n: mp_limb_signed_t,
18156        mod_: nmod_t,
18157    );
18158}
18159extern "C" {
18160    pub fn nmod_poly_compose_series_horner(
18161        res: *mut nmod_poly_struct,
18162        poly1: *mut nmod_poly_struct,
18163        poly2: *mut nmod_poly_struct,
18164        n: mp_limb_signed_t,
18165    );
18166}
18167extern "C" {
18168    pub fn _nmod_poly_compose_series_brent_kung(
18169        res: mp_ptr,
18170        poly1: mp_srcptr,
18171        len1: mp_limb_signed_t,
18172        poly2: mp_srcptr,
18173        len2: mp_limb_signed_t,
18174        n: mp_limb_signed_t,
18175        mod_: nmod_t,
18176    );
18177}
18178extern "C" {
18179    pub fn nmod_poly_compose_series_brent_kung(
18180        res: *mut nmod_poly_struct,
18181        poly1: *mut nmod_poly_struct,
18182        poly2: *mut nmod_poly_struct,
18183        n: mp_limb_signed_t,
18184    );
18185}
18186extern "C" {
18187    pub fn _nmod_poly_compose_series(
18188        res: mp_ptr,
18189        poly1: mp_srcptr,
18190        len1: mp_limb_signed_t,
18191        poly2: mp_srcptr,
18192        len2: mp_limb_signed_t,
18193        n: mp_limb_signed_t,
18194        mod_: nmod_t,
18195    );
18196}
18197extern "C" {
18198    pub fn nmod_poly_compose_series(
18199        res: *mut nmod_poly_struct,
18200        poly1: *mut nmod_poly_struct,
18201        poly2: *mut nmod_poly_struct,
18202        n: mp_limb_signed_t,
18203    );
18204}
18205extern "C" {
18206    pub fn _nmod_poly_revert_series_lagrange(
18207        Qinv: mp_ptr,
18208        Q: mp_srcptr,
18209        n: mp_limb_signed_t,
18210        mod_: nmod_t,
18211    );
18212}
18213extern "C" {
18214    pub fn nmod_poly_revert_series_lagrange(
18215        Qinv: *mut nmod_poly_struct,
18216        Q: *mut nmod_poly_struct,
18217        n: mp_limb_signed_t,
18218    );
18219}
18220extern "C" {
18221    pub fn _nmod_poly_revert_series_lagrange_fast(
18222        Qinv: mp_ptr,
18223        Q: mp_srcptr,
18224        n: mp_limb_signed_t,
18225        mod_: nmod_t,
18226    );
18227}
18228extern "C" {
18229    pub fn nmod_poly_revert_series_lagrange_fast(
18230        Qinv: *mut nmod_poly_struct,
18231        Q: *mut nmod_poly_struct,
18232        n: mp_limb_signed_t,
18233    );
18234}
18235extern "C" {
18236    pub fn _nmod_poly_revert_series_newton(
18237        Qinv: mp_ptr,
18238        Q: mp_srcptr,
18239        n: mp_limb_signed_t,
18240        mod_: nmod_t,
18241    );
18242}
18243extern "C" {
18244    pub fn nmod_poly_revert_series_newton(
18245        Qinv: *mut nmod_poly_struct,
18246        Q: *mut nmod_poly_struct,
18247        n: mp_limb_signed_t,
18248    );
18249}
18250extern "C" {
18251    pub fn _nmod_poly_revert_series(Qinv: mp_ptr, Q: mp_srcptr, n: mp_limb_signed_t, mod_: nmod_t);
18252}
18253extern "C" {
18254    pub fn nmod_poly_revert_series(
18255        Qinv: *mut nmod_poly_struct,
18256        Q: *mut nmod_poly_struct,
18257        n: mp_limb_signed_t,
18258    );
18259}
18260extern "C" {
18261    pub fn _nmod_poly_compose_series_divconquer(
18262        res: mp_ptr,
18263        poly1: mp_srcptr,
18264        len1: mp_limb_signed_t,
18265        poly2: mp_srcptr,
18266        len2: mp_limb_signed_t,
18267        N: mp_limb_signed_t,
18268        mod_: nmod_t,
18269    );
18270}
18271extern "C" {
18272    pub fn nmod_poly_compose_series_divconquer(
18273        res: *mut nmod_poly_struct,
18274        poly1: *mut nmod_poly_struct,
18275        poly2: *mut nmod_poly_struct,
18276        N: mp_limb_signed_t,
18277    );
18278}
18279extern "C" {
18280    pub fn _nmod_poly_gcd_euclidean(
18281        G: mp_ptr,
18282        A: mp_srcptr,
18283        lenA: mp_limb_signed_t,
18284        B: mp_srcptr,
18285        lenB: mp_limb_signed_t,
18286        mod_: nmod_t,
18287    ) -> mp_limb_signed_t;
18288}
18289extern "C" {
18290    pub fn nmod_poly_gcd_euclidean(
18291        G: *mut nmod_poly_struct,
18292        A: *mut nmod_poly_struct,
18293        B: *mut nmod_poly_struct,
18294    );
18295}
18296extern "C" {
18297    pub fn _nmod_poly_hgcd_recursive(
18298        M: *mut mp_ptr,
18299        lenM: *mut mp_limb_signed_t,
18300        A: mp_ptr,
18301        lenA: *mut mp_limb_signed_t,
18302        B: mp_ptr,
18303        lenB: *mut mp_limb_signed_t,
18304        a: mp_srcptr,
18305        lena: mp_limb_signed_t,
18306        b: mp_srcptr,
18307        lenb: mp_limb_signed_t,
18308        P: mp_ptr,
18309        mod_: nmod_t,
18310        flag: ::std::os::raw::c_int,
18311        res: *mut nmod_poly_res_struct,
18312    ) -> mp_limb_signed_t;
18313}
18314extern "C" {
18315    pub fn _nmod_poly_hgcd(
18316        M: *mut mp_ptr,
18317        lenM: *mut mp_limb_signed_t,
18318        A: mp_ptr,
18319        lenA: *mut mp_limb_signed_t,
18320        B: mp_ptr,
18321        lenB: *mut mp_limb_signed_t,
18322        a: mp_srcptr,
18323        lena: mp_limb_signed_t,
18324        b: mp_srcptr,
18325        lenb: mp_limb_signed_t,
18326        mod_: nmod_t,
18327    ) -> mp_limb_signed_t;
18328}
18329extern "C" {
18330    pub fn nmod_poly_hgcd_ref(
18331        m11: *mut nmod_poly_struct,
18332        m12: *mut nmod_poly_struct,
18333        m21: *mut nmod_poly_struct,
18334        m22: *mut nmod_poly_struct,
18335        A: *mut nmod_poly_struct,
18336        B: *mut nmod_poly_struct,
18337        a: *mut nmod_poly_struct,
18338        b: *mut nmod_poly_struct,
18339    ) -> mp_limb_signed_t;
18340}
18341extern "C" {
18342    pub fn nmod_poly_hgcd(
18343        m11: *mut nmod_poly_struct,
18344        m12: *mut nmod_poly_struct,
18345        m21: *mut nmod_poly_struct,
18346        m22: *mut nmod_poly_struct,
18347        A: *mut nmod_poly_struct,
18348        B: *mut nmod_poly_struct,
18349        a: *mut nmod_poly_struct,
18350        b: *mut nmod_poly_struct,
18351    ) -> mp_limb_signed_t;
18352}
18353extern "C" {
18354    pub fn _nmod_poly_gcd_hgcd(
18355        G: mp_ptr,
18356        A: mp_srcptr,
18357        lenA: mp_limb_signed_t,
18358        B: mp_srcptr,
18359        lenB: mp_limb_signed_t,
18360        mod_: nmod_t,
18361    ) -> mp_limb_signed_t;
18362}
18363extern "C" {
18364    pub fn nmod_poly_gcd_hgcd(
18365        G: *mut nmod_poly_struct,
18366        A: *mut nmod_poly_struct,
18367        B: *mut nmod_poly_struct,
18368    );
18369}
18370extern "C" {
18371    pub fn _nmod_poly_gcd(
18372        G: mp_ptr,
18373        A: mp_srcptr,
18374        lenA: mp_limb_signed_t,
18375        B: mp_srcptr,
18376        lenB: mp_limb_signed_t,
18377        mod_: nmod_t,
18378    ) -> mp_limb_signed_t;
18379}
18380extern "C" {
18381    pub fn nmod_poly_gcd(
18382        G: *mut nmod_poly_struct,
18383        A: *mut nmod_poly_struct,
18384        B: *mut nmod_poly_struct,
18385    );
18386}
18387extern "C" {
18388    pub fn _nmod_poly_xgcd_euclidean(
18389        res: mp_ptr,
18390        s: mp_ptr,
18391        t: mp_ptr,
18392        poly1: mp_srcptr,
18393        len1: mp_limb_signed_t,
18394        poly2: mp_srcptr,
18395        len2: mp_limb_signed_t,
18396        mod_: nmod_t,
18397    ) -> mp_limb_signed_t;
18398}
18399extern "C" {
18400    pub fn nmod_poly_xgcd_euclidean(
18401        G: *mut nmod_poly_struct,
18402        S: *mut nmod_poly_struct,
18403        T: *mut nmod_poly_struct,
18404        A: *mut nmod_poly_struct,
18405        B: *mut nmod_poly_struct,
18406    );
18407}
18408extern "C" {
18409    pub fn _nmod_poly_xgcd_hgcd(
18410        G: mp_ptr,
18411        S: mp_ptr,
18412        T: mp_ptr,
18413        A: mp_srcptr,
18414        lenA: mp_limb_signed_t,
18415        B: mp_srcptr,
18416        lenB: mp_limb_signed_t,
18417        mod_: nmod_t,
18418    ) -> mp_limb_signed_t;
18419}
18420extern "C" {
18421    pub fn nmod_poly_xgcd_hgcd(
18422        G: *mut nmod_poly_struct,
18423        S: *mut nmod_poly_struct,
18424        T: *mut nmod_poly_struct,
18425        A: *mut nmod_poly_struct,
18426        B: *mut nmod_poly_struct,
18427    );
18428}
18429extern "C" {
18430    pub fn _nmod_poly_xgcd(
18431        G: mp_ptr,
18432        S: mp_ptr,
18433        T: mp_ptr,
18434        A: mp_srcptr,
18435        lenA: mp_limb_signed_t,
18436        B: mp_srcptr,
18437        lenB: mp_limb_signed_t,
18438        mod_: nmod_t,
18439    ) -> mp_limb_signed_t;
18440}
18441extern "C" {
18442    pub fn nmod_poly_xgcd(
18443        G: *mut nmod_poly_struct,
18444        S: *mut nmod_poly_struct,
18445        T: *mut nmod_poly_struct,
18446        A: *mut nmod_poly_struct,
18447        B: *mut nmod_poly_struct,
18448    );
18449}
18450extern "C" {
18451    pub fn _nmod_poly_resultant_euclidean(
18452        poly1: mp_srcptr,
18453        len1: mp_limb_signed_t,
18454        poly2: mp_srcptr,
18455        len2: mp_limb_signed_t,
18456        mod_: nmod_t,
18457    ) -> mp_limb_t;
18458}
18459extern "C" {
18460    pub fn nmod_poly_resultant_euclidean(
18461        f: *mut nmod_poly_struct,
18462        g: *mut nmod_poly_struct,
18463    ) -> mp_limb_t;
18464}
18465extern "C" {
18466    pub fn _nmod_poly_resultant_hgcd(
18467        A: mp_srcptr,
18468        lenA: mp_limb_signed_t,
18469        B: mp_srcptr,
18470        lenB: mp_limb_signed_t,
18471        mod_: nmod_t,
18472    ) -> mp_limb_t;
18473}
18474extern "C" {
18475    pub fn nmod_poly_resultant_hgcd(
18476        A: *mut nmod_poly_struct,
18477        B: *mut nmod_poly_struct,
18478    ) -> mp_limb_t;
18479}
18480extern "C" {
18481    pub fn _nmod_poly_gcdinv(
18482        G: *mut mp_limb_t,
18483        S: *mut mp_limb_t,
18484        A: *const mp_limb_t,
18485        lenA: mp_limb_signed_t,
18486        B: *const mp_limb_t,
18487        lenB: mp_limb_signed_t,
18488        mod_: nmod_t,
18489    ) -> mp_limb_signed_t;
18490}
18491extern "C" {
18492    pub fn nmod_poly_gcdinv(
18493        G: *mut nmod_poly_struct,
18494        S: *mut nmod_poly_struct,
18495        A: *mut nmod_poly_struct,
18496        B: *mut nmod_poly_struct,
18497    );
18498}
18499extern "C" {
18500    pub fn _nmod_poly_discriminant(
18501        poly: mp_srcptr,
18502        len: mp_limb_signed_t,
18503        mod_: nmod_t,
18504    ) -> mp_limb_t;
18505}
18506extern "C" {
18507    pub fn nmod_poly_discriminant(f: *mut nmod_poly_struct) -> mp_limb_t;
18508}
18509extern "C" {
18510    pub fn _nmod_poly_invsqrt_series(g: mp_ptr, h: mp_srcptr, n: mp_limb_signed_t, mod_: nmod_t);
18511}
18512extern "C" {
18513    pub fn nmod_poly_invsqrt_series(
18514        g: *mut nmod_poly_struct,
18515        h: *mut nmod_poly_struct,
18516        n: mp_limb_signed_t,
18517    );
18518}
18519extern "C" {
18520    pub fn _nmod_poly_sqrt_series(g: mp_ptr, h: mp_srcptr, n: mp_limb_signed_t, mod_: nmod_t);
18521}
18522extern "C" {
18523    pub fn nmod_poly_sqrt_series(
18524        g: *mut nmod_poly_struct,
18525        h: *mut nmod_poly_struct,
18526        n: mp_limb_signed_t,
18527    );
18528}
18529extern "C" {
18530    pub fn _nmod_poly_sqrt(
18531        s: mp_ptr,
18532        p: mp_srcptr,
18533        len: mp_limb_signed_t,
18534        mod_: nmod_t,
18535    ) -> ::std::os::raw::c_int;
18536}
18537extern "C" {
18538    pub fn nmod_poly_sqrt(
18539        b: *mut nmod_poly_struct,
18540        a: *mut nmod_poly_struct,
18541    ) -> ::std::os::raw::c_int;
18542}
18543extern "C" {
18544    pub fn _nmod_poly_power_sums_naive(
18545        res: mp_ptr,
18546        poly: mp_srcptr,
18547        len: mp_limb_signed_t,
18548        n: mp_limb_signed_t,
18549        mod_: nmod_t,
18550    );
18551}
18552extern "C" {
18553    pub fn nmod_poly_power_sums_naive(
18554        res: *mut nmod_poly_struct,
18555        poly: *mut nmod_poly_struct,
18556        n: mp_limb_signed_t,
18557    );
18558}
18559extern "C" {
18560    pub fn _nmod_poly_power_sums_schoenhage(
18561        res: mp_ptr,
18562        poly: mp_srcptr,
18563        len: mp_limb_signed_t,
18564        n: mp_limb_signed_t,
18565        mod_: nmod_t,
18566    );
18567}
18568extern "C" {
18569    pub fn nmod_poly_power_sums_schoenhage(
18570        res: *mut nmod_poly_struct,
18571        poly: *mut nmod_poly_struct,
18572        n: mp_limb_signed_t,
18573    );
18574}
18575extern "C" {
18576    pub fn _nmod_poly_power_sums(
18577        res: mp_ptr,
18578        poly: mp_srcptr,
18579        len: mp_limb_signed_t,
18580        n: mp_limb_signed_t,
18581        mod_: nmod_t,
18582    );
18583}
18584extern "C" {
18585    pub fn nmod_poly_power_sums(
18586        res: *mut nmod_poly_struct,
18587        poly: *mut nmod_poly_struct,
18588        n: mp_limb_signed_t,
18589    );
18590}
18591extern "C" {
18592    pub fn _nmod_poly_power_sums_to_poly_naive(
18593        res: mp_ptr,
18594        poly: mp_srcptr,
18595        len: mp_limb_signed_t,
18596        mod_: nmod_t,
18597    );
18598}
18599extern "C" {
18600    pub fn nmod_poly_power_sums_to_poly_naive(res: *mut nmod_poly_struct, Q: *mut nmod_poly_struct);
18601}
18602extern "C" {
18603    pub fn _nmod_poly_power_sums_to_poly_schoenhage(
18604        res: mp_ptr,
18605        poly: mp_srcptr,
18606        len: mp_limb_signed_t,
18607        mod_: nmod_t,
18608    );
18609}
18610extern "C" {
18611    pub fn nmod_poly_power_sums_to_poly_schoenhage(
18612        res: *mut nmod_poly_struct,
18613        Q: *mut nmod_poly_struct,
18614    );
18615}
18616extern "C" {
18617    pub fn _nmod_poly_power_sums_to_poly(
18618        res: mp_ptr,
18619        poly: mp_srcptr,
18620        len: mp_limb_signed_t,
18621        mod_: nmod_t,
18622    );
18623}
18624extern "C" {
18625    pub fn nmod_poly_power_sums_to_poly(res: *mut nmod_poly_struct, Q: *mut nmod_poly_struct);
18626}
18627extern "C" {
18628    pub fn _nmod_poly_atan_series(g: mp_ptr, h: mp_srcptr, n: mp_limb_signed_t, mod_: nmod_t);
18629}
18630extern "C" {
18631    pub fn nmod_poly_atan_series(
18632        g: *mut nmod_poly_struct,
18633        h: *mut nmod_poly_struct,
18634        n: mp_limb_signed_t,
18635    );
18636}
18637extern "C" {
18638    pub fn _nmod_poly_tan_series(g: mp_ptr, h: mp_srcptr, n: mp_limb_signed_t, mod_: nmod_t);
18639}
18640extern "C" {
18641    pub fn nmod_poly_tan_series(
18642        g: *mut nmod_poly_struct,
18643        h: *mut nmod_poly_struct,
18644        n: mp_limb_signed_t,
18645    );
18646}
18647extern "C" {
18648    pub fn _nmod_poly_asin_series(g: mp_ptr, h: mp_srcptr, n: mp_limb_signed_t, mod_: nmod_t);
18649}
18650extern "C" {
18651    pub fn nmod_poly_asin_series(
18652        g: *mut nmod_poly_struct,
18653        h: *mut nmod_poly_struct,
18654        n: mp_limb_signed_t,
18655    );
18656}
18657extern "C" {
18658    pub fn _nmod_poly_sin_series(g: mp_ptr, h: mp_srcptr, n: mp_limb_signed_t, mod_: nmod_t);
18659}
18660extern "C" {
18661    pub fn nmod_poly_sin_series(
18662        g: *mut nmod_poly_struct,
18663        h: *mut nmod_poly_struct,
18664        n: mp_limb_signed_t,
18665    );
18666}
18667extern "C" {
18668    pub fn _nmod_poly_cos_series(g: mp_ptr, h: mp_srcptr, n: mp_limb_signed_t, mod_: nmod_t);
18669}
18670extern "C" {
18671    pub fn nmod_poly_cos_series(
18672        g: *mut nmod_poly_struct,
18673        h: *mut nmod_poly_struct,
18674        n: mp_limb_signed_t,
18675    );
18676}
18677extern "C" {
18678    pub fn _nmod_poly_asinh_series(g: mp_ptr, h: mp_srcptr, n: mp_limb_signed_t, mod_: nmod_t);
18679}
18680extern "C" {
18681    pub fn nmod_poly_asinh_series(
18682        g: *mut nmod_poly_struct,
18683        h: *mut nmod_poly_struct,
18684        n: mp_limb_signed_t,
18685    );
18686}
18687extern "C" {
18688    pub fn _nmod_poly_atanh_series(g: mp_ptr, h: mp_srcptr, n: mp_limb_signed_t, mod_: nmod_t);
18689}
18690extern "C" {
18691    pub fn nmod_poly_atanh_series(
18692        g: *mut nmod_poly_struct,
18693        h: *mut nmod_poly_struct,
18694        n: mp_limb_signed_t,
18695    );
18696}
18697extern "C" {
18698    pub fn _nmod_poly_sinh_series(g: mp_ptr, h: mp_srcptr, n: mp_limb_signed_t, mod_: nmod_t);
18699}
18700extern "C" {
18701    pub fn nmod_poly_sinh_series(
18702        g: *mut nmod_poly_struct,
18703        h: *mut nmod_poly_struct,
18704        n: mp_limb_signed_t,
18705    );
18706}
18707extern "C" {
18708    pub fn _nmod_poly_cosh_series(g: mp_ptr, h: mp_srcptr, n: mp_limb_signed_t, mod_: nmod_t);
18709}
18710extern "C" {
18711    pub fn nmod_poly_cosh_series(
18712        g: *mut nmod_poly_struct,
18713        h: *mut nmod_poly_struct,
18714        n: mp_limb_signed_t,
18715    );
18716}
18717extern "C" {
18718    pub fn _nmod_poly_tanh_series(g: mp_ptr, h: mp_srcptr, n: mp_limb_signed_t, mod_: nmod_t);
18719}
18720extern "C" {
18721    pub fn nmod_poly_tanh_series(
18722        g: *mut nmod_poly_struct,
18723        h: *mut nmod_poly_struct,
18724        n: mp_limb_signed_t,
18725    );
18726}
18727extern "C" {
18728    pub fn _nmod_poly_log_series_monomial_ui(
18729        res: mp_ptr,
18730        coeff: mp_limb_t,
18731        power: mp_limb_t,
18732        n: mp_limb_signed_t,
18733        mod_: nmod_t,
18734    );
18735}
18736extern "C" {
18737    pub fn nmod_poly_log_series_monomial_ui(
18738        res: *mut nmod_poly_struct,
18739        coeff: mp_limb_t,
18740        power: mp_limb_t,
18741        n: mp_limb_signed_t,
18742    );
18743}
18744extern "C" {
18745    pub fn _nmod_poly_log_series(
18746        res: mp_ptr,
18747        f: mp_srcptr,
18748        flen: mp_limb_signed_t,
18749        n: mp_limb_signed_t,
18750        mod_: nmod_t,
18751    );
18752}
18753extern "C" {
18754    pub fn nmod_poly_log_series(
18755        res: *mut nmod_poly_struct,
18756        f: *mut nmod_poly_struct,
18757        n: mp_limb_signed_t,
18758    );
18759}
18760extern "C" {
18761    pub fn _nmod_poly_exp_series_monomial_ui(
18762        res: mp_ptr,
18763        coeff: mp_limb_t,
18764        power: mp_limb_t,
18765        n: mp_limb_signed_t,
18766        mod_: nmod_t,
18767    );
18768}
18769extern "C" {
18770    pub fn nmod_poly_exp_series_monomial_ui(
18771        res: *mut nmod_poly_struct,
18772        coeff: mp_limb_t,
18773        power: mp_limb_t,
18774        n: mp_limb_signed_t,
18775    );
18776}
18777extern "C" {
18778    pub fn _nmod_poly_exp_series_basecase(
18779        f: mp_ptr,
18780        h: mp_srcptr,
18781        hlen: mp_limb_signed_t,
18782        n: mp_limb_signed_t,
18783        mod_: nmod_t,
18784    );
18785}
18786extern "C" {
18787    pub fn nmod_poly_exp_series_basecase(
18788        f: *mut nmod_poly_struct,
18789        h: *mut nmod_poly_struct,
18790        n: mp_limb_signed_t,
18791    );
18792}
18793extern "C" {
18794    pub fn _nmod_poly_exp_expinv_series(
18795        f: mp_ptr,
18796        g: mp_ptr,
18797        h: mp_srcptr,
18798        n: mp_limb_signed_t,
18799        mod_: nmod_t,
18800    );
18801}
18802extern "C" {
18803    pub fn _nmod_poly_exp_series(f: mp_ptr, h: mp_srcptr, n: mp_limb_signed_t, mod_: nmod_t);
18804}
18805extern "C" {
18806    pub fn _nmod_poly_exp_series2(
18807        f: mp_ptr,
18808        h: mp_srcptr,
18809        hlen: mp_limb_signed_t,
18810        n: mp_limb_signed_t,
18811        mod_: nmod_t,
18812    );
18813}
18814extern "C" {
18815    pub fn nmod_poly_exp_series(
18816        f: *mut nmod_poly_struct,
18817        h: *mut nmod_poly_struct,
18818        n: mp_limb_signed_t,
18819    );
18820}
18821extern "C" {
18822    pub fn nmod_poly_product_roots_nmod_vec(
18823        poly: *mut nmod_poly_struct,
18824        xs: mp_srcptr,
18825        n: mp_limb_signed_t,
18826    );
18827}
18828extern "C" {
18829    pub fn _nmod_poly_product_roots_nmod_vec(
18830        poly: mp_ptr,
18831        xs: mp_srcptr,
18832        n: mp_limb_signed_t,
18833        mod_: nmod_t,
18834    );
18835}
18836extern "C" {
18837    pub fn _nmod_poly_split_rabin(
18838        a: *mut nmod_poly_struct,
18839        b: *mut nmod_poly_struct,
18840        f: *mut nmod_poly_struct,
18841        t: *mut nmod_poly_struct,
18842        t2: *mut nmod_poly_struct,
18843        randstate: *mut flint_rand_s,
18844    );
18845}
18846extern "C" {
18847    pub fn nmod_poly_find_distinct_nonzero_roots(
18848        roots: *mut mp_limb_t,
18849        P: *mut nmod_poly_struct,
18850    ) -> ::std::os::raw::c_int;
18851}
18852#[repr(C)]
18853#[derive(Debug, Copy, Clone)]
18854pub struct _nmod_poly_multi_crt_prog_instr {
18855    pub a_idx: mp_limb_signed_t,
18856    pub b_idx: mp_limb_signed_t,
18857    pub c_idx: mp_limb_signed_t,
18858    pub idem: nmod_poly_t,
18859    pub modulus: nmod_poly_t,
18860}
18861#[test]
18862fn bindgen_test_layout__nmod_poly_multi_crt_prog_instr() {
18863    assert_eq!(
18864        ::std::mem::size_of::<_nmod_poly_multi_crt_prog_instr>(),
18865        120usize,
18866        concat!("Size of: ", stringify!(_nmod_poly_multi_crt_prog_instr))
18867    );
18868    assert_eq!(
18869        ::std::mem::align_of::<_nmod_poly_multi_crt_prog_instr>(),
18870        8usize,
18871        concat!("Alignment of ", stringify!(_nmod_poly_multi_crt_prog_instr))
18872    );
18873    assert_eq!(
18874        unsafe {
18875            &(*(::std::ptr::null::<_nmod_poly_multi_crt_prog_instr>())).a_idx as *const _ as usize
18876        },
18877        0usize,
18878        concat!(
18879            "Offset of field: ",
18880            stringify!(_nmod_poly_multi_crt_prog_instr),
18881            "::",
18882            stringify!(a_idx)
18883        )
18884    );
18885    assert_eq!(
18886        unsafe {
18887            &(*(::std::ptr::null::<_nmod_poly_multi_crt_prog_instr>())).b_idx as *const _ as usize
18888        },
18889        8usize,
18890        concat!(
18891            "Offset of field: ",
18892            stringify!(_nmod_poly_multi_crt_prog_instr),
18893            "::",
18894            stringify!(b_idx)
18895        )
18896    );
18897    assert_eq!(
18898        unsafe {
18899            &(*(::std::ptr::null::<_nmod_poly_multi_crt_prog_instr>())).c_idx as *const _ as usize
18900        },
18901        16usize,
18902        concat!(
18903            "Offset of field: ",
18904            stringify!(_nmod_poly_multi_crt_prog_instr),
18905            "::",
18906            stringify!(c_idx)
18907        )
18908    );
18909    assert_eq!(
18910        unsafe {
18911            &(*(::std::ptr::null::<_nmod_poly_multi_crt_prog_instr>())).idem as *const _ as usize
18912        },
18913        24usize,
18914        concat!(
18915            "Offset of field: ",
18916            stringify!(_nmod_poly_multi_crt_prog_instr),
18917            "::",
18918            stringify!(idem)
18919        )
18920    );
18921    assert_eq!(
18922        unsafe {
18923            &(*(::std::ptr::null::<_nmod_poly_multi_crt_prog_instr>())).modulus as *const _ as usize
18924        },
18925        72usize,
18926        concat!(
18927            "Offset of field: ",
18928            stringify!(_nmod_poly_multi_crt_prog_instr),
18929            "::",
18930            stringify!(modulus)
18931        )
18932    );
18933}
18934#[repr(C)]
18935#[derive(Debug, Copy, Clone)]
18936pub struct nmod_poly_multi_crt_struct {
18937    pub prog: *mut _nmod_poly_multi_crt_prog_instr,
18938    pub length: mp_limb_signed_t,
18939    pub alloc: mp_limb_signed_t,
18940    pub localsize: mp_limb_signed_t,
18941    pub temp1loc: mp_limb_signed_t,
18942    pub temp2loc: mp_limb_signed_t,
18943    pub good: ::std::os::raw::c_int,
18944}
18945#[test]
18946fn bindgen_test_layout_nmod_poly_multi_crt_struct() {
18947    assert_eq!(
18948        ::std::mem::size_of::<nmod_poly_multi_crt_struct>(),
18949        56usize,
18950        concat!("Size of: ", stringify!(nmod_poly_multi_crt_struct))
18951    );
18952    assert_eq!(
18953        ::std::mem::align_of::<nmod_poly_multi_crt_struct>(),
18954        8usize,
18955        concat!("Alignment of ", stringify!(nmod_poly_multi_crt_struct))
18956    );
18957    assert_eq!(
18958        unsafe { &(*(::std::ptr::null::<nmod_poly_multi_crt_struct>())).prog as *const _ as usize },
18959        0usize,
18960        concat!(
18961            "Offset of field: ",
18962            stringify!(nmod_poly_multi_crt_struct),
18963            "::",
18964            stringify!(prog)
18965        )
18966    );
18967    assert_eq!(
18968        unsafe {
18969            &(*(::std::ptr::null::<nmod_poly_multi_crt_struct>())).length as *const _ as usize
18970        },
18971        8usize,
18972        concat!(
18973            "Offset of field: ",
18974            stringify!(nmod_poly_multi_crt_struct),
18975            "::",
18976            stringify!(length)
18977        )
18978    );
18979    assert_eq!(
18980        unsafe {
18981            &(*(::std::ptr::null::<nmod_poly_multi_crt_struct>())).alloc as *const _ as usize
18982        },
18983        16usize,
18984        concat!(
18985            "Offset of field: ",
18986            stringify!(nmod_poly_multi_crt_struct),
18987            "::",
18988            stringify!(alloc)
18989        )
18990    );
18991    assert_eq!(
18992        unsafe {
18993            &(*(::std::ptr::null::<nmod_poly_multi_crt_struct>())).localsize as *const _ as usize
18994        },
18995        24usize,
18996        concat!(
18997            "Offset of field: ",
18998            stringify!(nmod_poly_multi_crt_struct),
18999            "::",
19000            stringify!(localsize)
19001        )
19002    );
19003    assert_eq!(
19004        unsafe {
19005            &(*(::std::ptr::null::<nmod_poly_multi_crt_struct>())).temp1loc as *const _ as usize
19006        },
19007        32usize,
19008        concat!(
19009            "Offset of field: ",
19010            stringify!(nmod_poly_multi_crt_struct),
19011            "::",
19012            stringify!(temp1loc)
19013        )
19014    );
19015    assert_eq!(
19016        unsafe {
19017            &(*(::std::ptr::null::<nmod_poly_multi_crt_struct>())).temp2loc as *const _ as usize
19018        },
19019        40usize,
19020        concat!(
19021            "Offset of field: ",
19022            stringify!(nmod_poly_multi_crt_struct),
19023            "::",
19024            stringify!(temp2loc)
19025        )
19026    );
19027    assert_eq!(
19028        unsafe { &(*(::std::ptr::null::<nmod_poly_multi_crt_struct>())).good as *const _ as usize },
19029        48usize,
19030        concat!(
19031            "Offset of field: ",
19032            stringify!(nmod_poly_multi_crt_struct),
19033            "::",
19034            stringify!(good)
19035        )
19036    );
19037}
19038pub type nmod_poly_multi_crt_t = [nmod_poly_multi_crt_struct; 1usize];
19039extern "C" {
19040    pub fn nmod_poly_multi_crt_init(CRT: *mut nmod_poly_multi_crt_struct);
19041}
19042extern "C" {
19043    pub fn nmod_poly_multi_crt_precompute(
19044        CRT: *mut nmod_poly_multi_crt_struct,
19045        moduli: *const nmod_poly_struct,
19046        len: mp_limb_signed_t,
19047    ) -> ::std::os::raw::c_int;
19048}
19049extern "C" {
19050    pub fn nmod_poly_multi_crt_precompute_p(
19051        CRT: *mut nmod_poly_multi_crt_struct,
19052        moduli: *const *const nmod_poly_struct,
19053        len: mp_limb_signed_t,
19054    ) -> ::std::os::raw::c_int;
19055}
19056extern "C" {
19057    pub fn nmod_poly_multi_crt_precomp(
19058        output: *mut nmod_poly_struct,
19059        CRT: *mut nmod_poly_multi_crt_struct,
19060        values: *const nmod_poly_struct,
19061    );
19062}
19063extern "C" {
19064    pub fn nmod_poly_multi_crt_precomp_p(
19065        output: *mut nmod_poly_struct,
19066        CRT: *mut nmod_poly_multi_crt_struct,
19067        values: *const *const nmod_poly_struct,
19068    );
19069}
19070extern "C" {
19071    pub fn nmod_poly_multi_crt(
19072        output: *mut nmod_poly_struct,
19073        moduli: *const nmod_poly_struct,
19074        values: *const nmod_poly_struct,
19075        len: mp_limb_signed_t,
19076    ) -> ::std::os::raw::c_int;
19077}
19078extern "C" {
19079    pub fn nmod_poly_multi_crt_clear(CRT: *mut nmod_poly_multi_crt_struct);
19080}
19081extern "C" {
19082    pub fn _nmod_poly_multi_crt_run(
19083        outputs: *mut nmod_poly_struct,
19084        CRT: *mut nmod_poly_multi_crt_struct,
19085        inputs: *const nmod_poly_struct,
19086    );
19087}
19088extern "C" {
19089    pub fn _nmod_poly_multi_crt_run_p(
19090        outputs: *mut nmod_poly_struct,
19091        CRT: *mut nmod_poly_multi_crt_struct,
19092        inputs: *const *const nmod_poly_struct,
19093    );
19094}
19095extern "C" {
19096    pub fn nmod_poly_deflation(input: *mut nmod_poly_struct) -> mp_limb_t;
19097}
19098extern "C" {
19099    pub fn nmod_poly_deflate(
19100        result: *mut nmod_poly_struct,
19101        input: *mut nmod_poly_struct,
19102        deflation: mp_limb_t,
19103    );
19104}
19105extern "C" {
19106    pub fn nmod_poly_inflate(
19107        result: *mut nmod_poly_struct,
19108        input: *mut nmod_poly_struct,
19109        inflation: mp_limb_t,
19110    );
19111}
19112extern "C" {
19113    pub fn nmod_mat_charpoly_danilevsky(p: *mut nmod_poly_struct, M: *mut nmod_mat_struct);
19114}
19115extern "C" {
19116    pub fn nmod_mat_minpoly_with_gens(
19117        p: *mut nmod_poly_struct,
19118        X: *mut nmod_mat_struct,
19119        P: *mut mp_limb_t,
19120    );
19121}
19122extern "C" {
19123    pub fn nmod_mat_minpoly(p: *mut nmod_poly_struct, M: *mut nmod_mat_struct);
19124}
19125#[repr(C)]
19126#[derive(Debug, Copy, Clone)]
19127pub struct nmod_berlekamp_massey_struct {
19128    pub npoints: mp_limb_signed_t,
19129    pub R0: nmod_poly_t,
19130    pub R1: nmod_poly_t,
19131    pub V0: nmod_poly_t,
19132    pub V1: nmod_poly_t,
19133    pub qt: nmod_poly_t,
19134    pub rt: nmod_poly_t,
19135    pub points: nmod_poly_t,
19136}
19137#[test]
19138fn bindgen_test_layout_nmod_berlekamp_massey_struct() {
19139    assert_eq!(
19140        ::std::mem::size_of::<nmod_berlekamp_massey_struct>(),
19141        344usize,
19142        concat!("Size of: ", stringify!(nmod_berlekamp_massey_struct))
19143    );
19144    assert_eq!(
19145        ::std::mem::align_of::<nmod_berlekamp_massey_struct>(),
19146        8usize,
19147        concat!("Alignment of ", stringify!(nmod_berlekamp_massey_struct))
19148    );
19149    assert_eq!(
19150        unsafe {
19151            &(*(::std::ptr::null::<nmod_berlekamp_massey_struct>())).npoints as *const _ as usize
19152        },
19153        0usize,
19154        concat!(
19155            "Offset of field: ",
19156            stringify!(nmod_berlekamp_massey_struct),
19157            "::",
19158            stringify!(npoints)
19159        )
19160    );
19161    assert_eq!(
19162        unsafe { &(*(::std::ptr::null::<nmod_berlekamp_massey_struct>())).R0 as *const _ as usize },
19163        8usize,
19164        concat!(
19165            "Offset of field: ",
19166            stringify!(nmod_berlekamp_massey_struct),
19167            "::",
19168            stringify!(R0)
19169        )
19170    );
19171    assert_eq!(
19172        unsafe { &(*(::std::ptr::null::<nmod_berlekamp_massey_struct>())).R1 as *const _ as usize },
19173        56usize,
19174        concat!(
19175            "Offset of field: ",
19176            stringify!(nmod_berlekamp_massey_struct),
19177            "::",
19178            stringify!(R1)
19179        )
19180    );
19181    assert_eq!(
19182        unsafe { &(*(::std::ptr::null::<nmod_berlekamp_massey_struct>())).V0 as *const _ as usize },
19183        104usize,
19184        concat!(
19185            "Offset of field: ",
19186            stringify!(nmod_berlekamp_massey_struct),
19187            "::",
19188            stringify!(V0)
19189        )
19190    );
19191    assert_eq!(
19192        unsafe { &(*(::std::ptr::null::<nmod_berlekamp_massey_struct>())).V1 as *const _ as usize },
19193        152usize,
19194        concat!(
19195            "Offset of field: ",
19196            stringify!(nmod_berlekamp_massey_struct),
19197            "::",
19198            stringify!(V1)
19199        )
19200    );
19201    assert_eq!(
19202        unsafe { &(*(::std::ptr::null::<nmod_berlekamp_massey_struct>())).qt as *const _ as usize },
19203        200usize,
19204        concat!(
19205            "Offset of field: ",
19206            stringify!(nmod_berlekamp_massey_struct),
19207            "::",
19208            stringify!(qt)
19209        )
19210    );
19211    assert_eq!(
19212        unsafe { &(*(::std::ptr::null::<nmod_berlekamp_massey_struct>())).rt as *const _ as usize },
19213        248usize,
19214        concat!(
19215            "Offset of field: ",
19216            stringify!(nmod_berlekamp_massey_struct),
19217            "::",
19218            stringify!(rt)
19219        )
19220    );
19221    assert_eq!(
19222        unsafe {
19223            &(*(::std::ptr::null::<nmod_berlekamp_massey_struct>())).points as *const _ as usize
19224        },
19225        296usize,
19226        concat!(
19227            "Offset of field: ",
19228            stringify!(nmod_berlekamp_massey_struct),
19229            "::",
19230            stringify!(points)
19231        )
19232    );
19233}
19234pub type nmod_berlekamp_massey_t = [nmod_berlekamp_massey_struct; 1usize];
19235extern "C" {
19236    pub fn nmod_berlekamp_massey_init(B: *mut nmod_berlekamp_massey_struct, p: mp_limb_t);
19237}
19238extern "C" {
19239    pub fn nmod_berlekamp_massey_start_over(B: *mut nmod_berlekamp_massey_struct);
19240}
19241extern "C" {
19242    pub fn nmod_berlekamp_massey_clear(B: *mut nmod_berlekamp_massey_struct);
19243}
19244extern "C" {
19245    pub fn nmod_berlekamp_massey_set_prime(B: *mut nmod_berlekamp_massey_struct, p: mp_limb_t);
19246}
19247extern "C" {
19248    pub fn nmod_berlekamp_massey_print(B: *mut nmod_berlekamp_massey_struct);
19249}
19250extern "C" {
19251    pub fn nmod_berlekamp_massey_add_points(
19252        B: *mut nmod_berlekamp_massey_struct,
19253        a: *const mp_limb_t,
19254        count: mp_limb_signed_t,
19255    );
19256}
19257extern "C" {
19258    pub fn nmod_berlekamp_massey_add_zeros(
19259        B: *mut nmod_berlekamp_massey_struct,
19260        count: mp_limb_signed_t,
19261    );
19262}
19263extern "C" {
19264    pub fn nmod_berlekamp_massey_add_point(B: *mut nmod_berlekamp_massey_struct, a: mp_limb_t);
19265}
19266extern "C" {
19267    pub fn nmod_berlekamp_massey_reduce(
19268        B: *mut nmod_berlekamp_massey_struct,
19269    ) -> ::std::os::raw::c_int;
19270}
19271#[repr(C)]
19272#[derive(Debug, Copy, Clone)]
19273pub struct nmod_poly_factor_struct {
19274    pub p: *mut nmod_poly_struct,
19275    pub exp: *mut mp_limb_signed_t,
19276    pub num: mp_limb_signed_t,
19277    pub alloc: mp_limb_signed_t,
19278}
19279#[test]
19280fn bindgen_test_layout_nmod_poly_factor_struct() {
19281    assert_eq!(
19282        ::std::mem::size_of::<nmod_poly_factor_struct>(),
19283        32usize,
19284        concat!("Size of: ", stringify!(nmod_poly_factor_struct))
19285    );
19286    assert_eq!(
19287        ::std::mem::align_of::<nmod_poly_factor_struct>(),
19288        8usize,
19289        concat!("Alignment of ", stringify!(nmod_poly_factor_struct))
19290    );
19291    assert_eq!(
19292        unsafe { &(*(::std::ptr::null::<nmod_poly_factor_struct>())).p as *const _ as usize },
19293        0usize,
19294        concat!(
19295            "Offset of field: ",
19296            stringify!(nmod_poly_factor_struct),
19297            "::",
19298            stringify!(p)
19299        )
19300    );
19301    assert_eq!(
19302        unsafe { &(*(::std::ptr::null::<nmod_poly_factor_struct>())).exp as *const _ as usize },
19303        8usize,
19304        concat!(
19305            "Offset of field: ",
19306            stringify!(nmod_poly_factor_struct),
19307            "::",
19308            stringify!(exp)
19309        )
19310    );
19311    assert_eq!(
19312        unsafe { &(*(::std::ptr::null::<nmod_poly_factor_struct>())).num as *const _ as usize },
19313        16usize,
19314        concat!(
19315            "Offset of field: ",
19316            stringify!(nmod_poly_factor_struct),
19317            "::",
19318            stringify!(num)
19319        )
19320    );
19321    assert_eq!(
19322        unsafe { &(*(::std::ptr::null::<nmod_poly_factor_struct>())).alloc as *const _ as usize },
19323        24usize,
19324        concat!(
19325            "Offset of field: ",
19326            stringify!(nmod_poly_factor_struct),
19327            "::",
19328            stringify!(alloc)
19329        )
19330    );
19331}
19332#[repr(C)]
19333#[derive(Debug, Copy, Clone)]
19334pub struct nmod_poly_interval_poly_arg_t {
19335    pub baby: *mut nmod_poly_struct,
19336    pub res: *mut nmod_poly_struct,
19337    pub H: *mut nmod_poly_struct,
19338    pub v: *mut nmod_poly_struct,
19339    pub vinv: *mut nmod_poly_struct,
19340    pub tmp: mp_ptr,
19341    pub m: mp_limb_signed_t,
19342}
19343#[test]
19344fn bindgen_test_layout_nmod_poly_interval_poly_arg_t() {
19345    assert_eq!(
19346        ::std::mem::size_of::<nmod_poly_interval_poly_arg_t>(),
19347        56usize,
19348        concat!("Size of: ", stringify!(nmod_poly_interval_poly_arg_t))
19349    );
19350    assert_eq!(
19351        ::std::mem::align_of::<nmod_poly_interval_poly_arg_t>(),
19352        8usize,
19353        concat!("Alignment of ", stringify!(nmod_poly_interval_poly_arg_t))
19354    );
19355    assert_eq!(
19356        unsafe {
19357            &(*(::std::ptr::null::<nmod_poly_interval_poly_arg_t>())).baby as *const _ as usize
19358        },
19359        0usize,
19360        concat!(
19361            "Offset of field: ",
19362            stringify!(nmod_poly_interval_poly_arg_t),
19363            "::",
19364            stringify!(baby)
19365        )
19366    );
19367    assert_eq!(
19368        unsafe {
19369            &(*(::std::ptr::null::<nmod_poly_interval_poly_arg_t>())).res as *const _ as usize
19370        },
19371        8usize,
19372        concat!(
19373            "Offset of field: ",
19374            stringify!(nmod_poly_interval_poly_arg_t),
19375            "::",
19376            stringify!(res)
19377        )
19378    );
19379    assert_eq!(
19380        unsafe { &(*(::std::ptr::null::<nmod_poly_interval_poly_arg_t>())).H as *const _ as usize },
19381        16usize,
19382        concat!(
19383            "Offset of field: ",
19384            stringify!(nmod_poly_interval_poly_arg_t),
19385            "::",
19386            stringify!(H)
19387        )
19388    );
19389    assert_eq!(
19390        unsafe { &(*(::std::ptr::null::<nmod_poly_interval_poly_arg_t>())).v as *const _ as usize },
19391        24usize,
19392        concat!(
19393            "Offset of field: ",
19394            stringify!(nmod_poly_interval_poly_arg_t),
19395            "::",
19396            stringify!(v)
19397        )
19398    );
19399    assert_eq!(
19400        unsafe {
19401            &(*(::std::ptr::null::<nmod_poly_interval_poly_arg_t>())).vinv as *const _ as usize
19402        },
19403        32usize,
19404        concat!(
19405            "Offset of field: ",
19406            stringify!(nmod_poly_interval_poly_arg_t),
19407            "::",
19408            stringify!(vinv)
19409        )
19410    );
19411    assert_eq!(
19412        unsafe {
19413            &(*(::std::ptr::null::<nmod_poly_interval_poly_arg_t>())).tmp as *const _ as usize
19414        },
19415        40usize,
19416        concat!(
19417            "Offset of field: ",
19418            stringify!(nmod_poly_interval_poly_arg_t),
19419            "::",
19420            stringify!(tmp)
19421        )
19422    );
19423    assert_eq!(
19424        unsafe { &(*(::std::ptr::null::<nmod_poly_interval_poly_arg_t>())).m as *const _ as usize },
19425        48usize,
19426        concat!(
19427            "Offset of field: ",
19428            stringify!(nmod_poly_interval_poly_arg_t),
19429            "::",
19430            stringify!(m)
19431        )
19432    );
19433}
19434pub type nmod_poly_factor_t = [nmod_poly_factor_struct; 1usize];
19435extern "C" {
19436    pub fn nmod_poly_factor_init(fac: *mut nmod_poly_factor_struct);
19437}
19438extern "C" {
19439    pub fn nmod_poly_factor_clear(fac: *mut nmod_poly_factor_struct);
19440}
19441extern "C" {
19442    pub fn nmod_poly_factor_realloc(fac: *mut nmod_poly_factor_struct, alloc: mp_limb_signed_t);
19443}
19444extern "C" {
19445    pub fn nmod_poly_factor_fit_length(fac: *mut nmod_poly_factor_struct, len: mp_limb_signed_t);
19446}
19447extern "C" {
19448    pub fn nmod_poly_factor_set(
19449        res: *mut nmod_poly_factor_struct,
19450        fac: *mut nmod_poly_factor_struct,
19451    );
19452}
19453extern "C" {
19454    pub fn nmod_poly_factor_insert(
19455        fac: *mut nmod_poly_factor_struct,
19456        poly: *mut nmod_poly_struct,
19457        exp: mp_limb_signed_t,
19458    );
19459}
19460extern "C" {
19461    pub fn nmod_poly_factor_print(fac: *mut nmod_poly_factor_struct);
19462}
19463extern "C" {
19464    pub fn nmod_poly_factor_concat(
19465        res: *mut nmod_poly_factor_struct,
19466        fac: *mut nmod_poly_factor_struct,
19467    );
19468}
19469extern "C" {
19470    pub fn nmod_poly_factor_pow(fac: *mut nmod_poly_factor_struct, exp: mp_limb_signed_t);
19471}
19472extern "C" {
19473    pub fn nmod_poly_factor_equal_deg(
19474        factors: *mut nmod_poly_factor_struct,
19475        pol: *mut nmod_poly_struct,
19476        d: mp_limb_signed_t,
19477    );
19478}
19479extern "C" {
19480    pub fn nmod_poly_factor_equal_deg_prob(
19481        factor: *mut nmod_poly_struct,
19482        state: *mut flint_rand_s,
19483        pol: *mut nmod_poly_struct,
19484        d: mp_limb_signed_t,
19485    ) -> ::std::os::raw::c_int;
19486}
19487extern "C" {
19488    pub fn nmod_poly_factor_distinct_deg(
19489        res: *mut nmod_poly_factor_struct,
19490        poly: *mut nmod_poly_struct,
19491        degs: *const *mut mp_limb_signed_t,
19492    );
19493}
19494extern "C" {
19495    pub fn nmod_poly_remove(f: *mut nmod_poly_struct, p: *mut nmod_poly_struct) -> mp_limb_t;
19496}
19497extern "C" {
19498    pub fn nmod_poly_factor_distinct_deg_threaded(
19499        res: *mut nmod_poly_factor_struct,
19500        poly: *mut nmod_poly_struct,
19501        degs: *const *mut mp_limb_signed_t,
19502    );
19503}
19504extern "C" {
19505    pub fn nmod_poly_is_irreducible(f: *mut nmod_poly_struct) -> ::std::os::raw::c_int;
19506}
19507extern "C" {
19508    pub fn nmod_poly_is_irreducible_rabin(f: *mut nmod_poly_struct) -> ::std::os::raw::c_int;
19509}
19510extern "C" {
19511    pub fn nmod_poly_is_irreducible_ddf(f: *mut nmod_poly_struct) -> ::std::os::raw::c_int;
19512}
19513extern "C" {
19514    pub fn _nmod_poly_is_squarefree(
19515        f: mp_srcptr,
19516        len: mp_limb_signed_t,
19517        mod_: nmod_t,
19518    ) -> ::std::os::raw::c_int;
19519}
19520extern "C" {
19521    pub fn nmod_poly_is_squarefree(f: *mut nmod_poly_struct) -> ::std::os::raw::c_int;
19522}
19523extern "C" {
19524    pub fn nmod_poly_factor_cantor_zassenhaus(
19525        res: *mut nmod_poly_factor_struct,
19526        f: *mut nmod_poly_struct,
19527    );
19528}
19529extern "C" {
19530    pub fn nmod_poly_factor_berlekamp(
19531        factors: *mut nmod_poly_factor_struct,
19532        f: *mut nmod_poly_struct,
19533    );
19534}
19535extern "C" {
19536    pub fn nmod_poly_factor_kaltofen_shoup(
19537        res: *mut nmod_poly_factor_struct,
19538        poly: *mut nmod_poly_struct,
19539    );
19540}
19541extern "C" {
19542    pub fn nmod_poly_factor_squarefree(res: *mut nmod_poly_factor_struct, f: *mut nmod_poly_struct);
19543}
19544extern "C" {
19545    pub fn nmod_poly_factor_with_berlekamp(
19546        result: *mut nmod_poly_factor_struct,
19547        input: *mut nmod_poly_struct,
19548    ) -> mp_limb_t;
19549}
19550extern "C" {
19551    pub fn nmod_poly_factor_with_cantor_zassenhaus(
19552        result: *mut nmod_poly_factor_struct,
19553        input: *mut nmod_poly_struct,
19554    ) -> mp_limb_t;
19555}
19556extern "C" {
19557    pub fn nmod_poly_factor_with_kaltofen_shoup(
19558        result: *mut nmod_poly_factor_struct,
19559        input: *mut nmod_poly_struct,
19560    ) -> mp_limb_t;
19561}
19562extern "C" {
19563    pub fn nmod_poly_factor(
19564        result: *mut nmod_poly_factor_struct,
19565        input: *mut nmod_poly_struct,
19566    ) -> mp_limb_t;
19567}
19568extern "C" {
19569    pub fn _nmod_poly_interval_poly_worker(arg_ptr: *mut ::std::os::raw::c_void);
19570}
19571extern "C" {
19572    pub fn nmod_poly_roots(
19573        r: *mut nmod_poly_factor_struct,
19574        f: *mut nmod_poly_struct,
19575        with_multiplicity: ::std::os::raw::c_int,
19576    );
19577}
19578extern "C" {
19579    pub fn nmod_poly_roots_factored(
19580        r: *mut nmod_poly_factor_struct,
19581        f: *mut nmod_poly_struct,
19582        with_multiplicity: ::std::os::raw::c_int,
19583        n: *const n_factor_t,
19584    ) -> ::std::os::raw::c_int;
19585}
19586extern "C" {
19587    pub fn nmod_poly_factor_get_nmod_poly(
19588        z: *mut nmod_poly_struct,
19589        fac: *mut nmod_poly_factor_struct,
19590        i: mp_limb_signed_t,
19591    );
19592}
19593#[repr(C)]
19594#[derive(Debug, Copy, Clone)]
19595pub struct fmpz_poly_struct {
19596    pub coeffs: *mut fmpz,
19597    pub alloc: mp_limb_signed_t,
19598    pub length: mp_limb_signed_t,
19599}
19600#[test]
19601fn bindgen_test_layout_fmpz_poly_struct() {
19602    assert_eq!(
19603        ::std::mem::size_of::<fmpz_poly_struct>(),
19604        24usize,
19605        concat!("Size of: ", stringify!(fmpz_poly_struct))
19606    );
19607    assert_eq!(
19608        ::std::mem::align_of::<fmpz_poly_struct>(),
19609        8usize,
19610        concat!("Alignment of ", stringify!(fmpz_poly_struct))
19611    );
19612    assert_eq!(
19613        unsafe { &(*(::std::ptr::null::<fmpz_poly_struct>())).coeffs as *const _ as usize },
19614        0usize,
19615        concat!(
19616            "Offset of field: ",
19617            stringify!(fmpz_poly_struct),
19618            "::",
19619            stringify!(coeffs)
19620        )
19621    );
19622    assert_eq!(
19623        unsafe { &(*(::std::ptr::null::<fmpz_poly_struct>())).alloc as *const _ as usize },
19624        8usize,
19625        concat!(
19626            "Offset of field: ",
19627            stringify!(fmpz_poly_struct),
19628            "::",
19629            stringify!(alloc)
19630        )
19631    );
19632    assert_eq!(
19633        unsafe { &(*(::std::ptr::null::<fmpz_poly_struct>())).length as *const _ as usize },
19634        16usize,
19635        concat!(
19636            "Offset of field: ",
19637            stringify!(fmpz_poly_struct),
19638            "::",
19639            stringify!(length)
19640        )
19641    );
19642}
19643pub type fmpz_poly_t = [fmpz_poly_struct; 1usize];
19644#[repr(C)]
19645#[derive(Debug, Copy, Clone)]
19646pub struct fmpz_poly_powers_precomp_struct {
19647    pub powers: *mut *mut fmpz,
19648    pub len: mp_limb_signed_t,
19649}
19650#[test]
19651fn bindgen_test_layout_fmpz_poly_powers_precomp_struct() {
19652    assert_eq!(
19653        ::std::mem::size_of::<fmpz_poly_powers_precomp_struct>(),
19654        16usize,
19655        concat!("Size of: ", stringify!(fmpz_poly_powers_precomp_struct))
19656    );
19657    assert_eq!(
19658        ::std::mem::align_of::<fmpz_poly_powers_precomp_struct>(),
19659        8usize,
19660        concat!("Alignment of ", stringify!(fmpz_poly_powers_precomp_struct))
19661    );
19662    assert_eq!(
19663        unsafe {
19664            &(*(::std::ptr::null::<fmpz_poly_powers_precomp_struct>())).powers as *const _ as usize
19665        },
19666        0usize,
19667        concat!(
19668            "Offset of field: ",
19669            stringify!(fmpz_poly_powers_precomp_struct),
19670            "::",
19671            stringify!(powers)
19672        )
19673    );
19674    assert_eq!(
19675        unsafe {
19676            &(*(::std::ptr::null::<fmpz_poly_powers_precomp_struct>())).len as *const _ as usize
19677        },
19678        8usize,
19679        concat!(
19680            "Offset of field: ",
19681            stringify!(fmpz_poly_powers_precomp_struct),
19682            "::",
19683            stringify!(len)
19684        )
19685    );
19686}
19687pub type fmpz_poly_powers_precomp_t = [fmpz_poly_powers_precomp_struct; 1usize];
19688#[repr(C)]
19689#[derive(Debug, Copy, Clone)]
19690pub struct fmpz_poly_factor_struct {
19691    pub c: fmpz,
19692    pub p: *mut fmpz_poly_struct,
19693    pub exp: *mut mp_limb_signed_t,
19694    pub num: mp_limb_signed_t,
19695    pub alloc: mp_limb_signed_t,
19696}
19697#[test]
19698fn bindgen_test_layout_fmpz_poly_factor_struct() {
19699    assert_eq!(
19700        ::std::mem::size_of::<fmpz_poly_factor_struct>(),
19701        40usize,
19702        concat!("Size of: ", stringify!(fmpz_poly_factor_struct))
19703    );
19704    assert_eq!(
19705        ::std::mem::align_of::<fmpz_poly_factor_struct>(),
19706        8usize,
19707        concat!("Alignment of ", stringify!(fmpz_poly_factor_struct))
19708    );
19709    assert_eq!(
19710        unsafe { &(*(::std::ptr::null::<fmpz_poly_factor_struct>())).c as *const _ as usize },
19711        0usize,
19712        concat!(
19713            "Offset of field: ",
19714            stringify!(fmpz_poly_factor_struct),
19715            "::",
19716            stringify!(c)
19717        )
19718    );
19719    assert_eq!(
19720        unsafe { &(*(::std::ptr::null::<fmpz_poly_factor_struct>())).p as *const _ as usize },
19721        8usize,
19722        concat!(
19723            "Offset of field: ",
19724            stringify!(fmpz_poly_factor_struct),
19725            "::",
19726            stringify!(p)
19727        )
19728    );
19729    assert_eq!(
19730        unsafe { &(*(::std::ptr::null::<fmpz_poly_factor_struct>())).exp as *const _ as usize },
19731        16usize,
19732        concat!(
19733            "Offset of field: ",
19734            stringify!(fmpz_poly_factor_struct),
19735            "::",
19736            stringify!(exp)
19737        )
19738    );
19739    assert_eq!(
19740        unsafe { &(*(::std::ptr::null::<fmpz_poly_factor_struct>())).num as *const _ as usize },
19741        24usize,
19742        concat!(
19743            "Offset of field: ",
19744            stringify!(fmpz_poly_factor_struct),
19745            "::",
19746            stringify!(num)
19747        )
19748    );
19749    assert_eq!(
19750        unsafe { &(*(::std::ptr::null::<fmpz_poly_factor_struct>())).alloc as *const _ as usize },
19751        32usize,
19752        concat!(
19753            "Offset of field: ",
19754            stringify!(fmpz_poly_factor_struct),
19755            "::",
19756            stringify!(alloc)
19757        )
19758    );
19759}
19760pub type fmpz_poly_factor_t = [fmpz_poly_factor_struct; 1usize];
19761#[repr(C)]
19762#[derive(Debug, Copy, Clone)]
19763pub struct fmpz_poly_mul_precache_struct {
19764    pub jj: *mut *mut mp_limb_t,
19765    pub n: mp_limb_signed_t,
19766    pub len2: mp_limb_signed_t,
19767    pub loglen: mp_limb_signed_t,
19768    pub bits2: mp_limb_signed_t,
19769    pub limbs: mp_limb_signed_t,
19770    pub poly2: fmpz_poly_t,
19771}
19772#[test]
19773fn bindgen_test_layout_fmpz_poly_mul_precache_struct() {
19774    assert_eq!(
19775        ::std::mem::size_of::<fmpz_poly_mul_precache_struct>(),
19776        72usize,
19777        concat!("Size of: ", stringify!(fmpz_poly_mul_precache_struct))
19778    );
19779    assert_eq!(
19780        ::std::mem::align_of::<fmpz_poly_mul_precache_struct>(),
19781        8usize,
19782        concat!("Alignment of ", stringify!(fmpz_poly_mul_precache_struct))
19783    );
19784    assert_eq!(
19785        unsafe {
19786            &(*(::std::ptr::null::<fmpz_poly_mul_precache_struct>())).jj as *const _ as usize
19787        },
19788        0usize,
19789        concat!(
19790            "Offset of field: ",
19791            stringify!(fmpz_poly_mul_precache_struct),
19792            "::",
19793            stringify!(jj)
19794        )
19795    );
19796    assert_eq!(
19797        unsafe { &(*(::std::ptr::null::<fmpz_poly_mul_precache_struct>())).n as *const _ as usize },
19798        8usize,
19799        concat!(
19800            "Offset of field: ",
19801            stringify!(fmpz_poly_mul_precache_struct),
19802            "::",
19803            stringify!(n)
19804        )
19805    );
19806    assert_eq!(
19807        unsafe {
19808            &(*(::std::ptr::null::<fmpz_poly_mul_precache_struct>())).len2 as *const _ as usize
19809        },
19810        16usize,
19811        concat!(
19812            "Offset of field: ",
19813            stringify!(fmpz_poly_mul_precache_struct),
19814            "::",
19815            stringify!(len2)
19816        )
19817    );
19818    assert_eq!(
19819        unsafe {
19820            &(*(::std::ptr::null::<fmpz_poly_mul_precache_struct>())).loglen as *const _ as usize
19821        },
19822        24usize,
19823        concat!(
19824            "Offset of field: ",
19825            stringify!(fmpz_poly_mul_precache_struct),
19826            "::",
19827            stringify!(loglen)
19828        )
19829    );
19830    assert_eq!(
19831        unsafe {
19832            &(*(::std::ptr::null::<fmpz_poly_mul_precache_struct>())).bits2 as *const _ as usize
19833        },
19834        32usize,
19835        concat!(
19836            "Offset of field: ",
19837            stringify!(fmpz_poly_mul_precache_struct),
19838            "::",
19839            stringify!(bits2)
19840        )
19841    );
19842    assert_eq!(
19843        unsafe {
19844            &(*(::std::ptr::null::<fmpz_poly_mul_precache_struct>())).limbs as *const _ as usize
19845        },
19846        40usize,
19847        concat!(
19848            "Offset of field: ",
19849            stringify!(fmpz_poly_mul_precache_struct),
19850            "::",
19851            stringify!(limbs)
19852        )
19853    );
19854    assert_eq!(
19855        unsafe {
19856            &(*(::std::ptr::null::<fmpz_poly_mul_precache_struct>())).poly2 as *const _ as usize
19857        },
19858        48usize,
19859        concat!(
19860            "Offset of field: ",
19861            stringify!(fmpz_poly_mul_precache_struct),
19862            "::",
19863            stringify!(poly2)
19864        )
19865    );
19866}
19867pub type fmpz_poly_mul_precache_t = [fmpz_poly_mul_precache_struct; 1usize];
19868extern "C" {
19869    pub fn fmpz_poly_init(poly: *mut fmpz_poly_struct);
19870}
19871extern "C" {
19872    pub fn fmpz_poly_init2(poly: *mut fmpz_poly_struct, alloc: mp_limb_signed_t);
19873}
19874extern "C" {
19875    pub fn fmpz_poly_realloc(poly: *mut fmpz_poly_struct, alloc: mp_limb_signed_t);
19876}
19877extern "C" {
19878    pub fn fmpz_poly_fit_length(poly: *mut fmpz_poly_struct, len: mp_limb_signed_t);
19879}
19880extern "C" {
19881    pub fn fmpz_poly_clear(poly: *mut fmpz_poly_struct);
19882}
19883extern "C" {
19884    pub fn _fmpz_poly_normalise(poly: *mut fmpz_poly_struct);
19885}
19886extern "C" {
19887    pub fn fmpz_poly_set(poly1: *mut fmpz_poly_struct, poly2: *mut fmpz_poly_struct);
19888}
19889extern "C" {
19890    pub fn fmpz_poly_set_ui(poly: *mut fmpz_poly_struct, c: mp_limb_t);
19891}
19892extern "C" {
19893    pub fn fmpz_poly_set_si(poly: *mut fmpz_poly_struct, c: mp_limb_signed_t);
19894}
19895extern "C" {
19896    pub fn fmpz_poly_set_fmpz(poly: *mut fmpz_poly_struct, c: *mut fmpz);
19897}
19898extern "C" {
19899    pub fn fmpz_poly_set_mpz(poly: *mut fmpz_poly_struct, c: *mut __mpz_struct);
19900}
19901extern "C" {
19902    pub fn _fmpz_poly_set_str(
19903        poly: *mut fmpz,
19904        str: *const ::std::os::raw::c_char,
19905    ) -> ::std::os::raw::c_int;
19906}
19907extern "C" {
19908    pub fn fmpz_poly_set_str(
19909        poly: *mut fmpz_poly_struct,
19910        str: *const ::std::os::raw::c_char,
19911    ) -> ::std::os::raw::c_int;
19912}
19913extern "C" {
19914    pub fn _fmpz_poly_get_str(
19915        poly: *const fmpz,
19916        len: mp_limb_signed_t,
19917    ) -> *mut ::std::os::raw::c_char;
19918}
19919extern "C" {
19920    pub fn fmpz_poly_get_str(poly: *mut fmpz_poly_struct) -> *mut ::std::os::raw::c_char;
19921}
19922extern "C" {
19923    pub fn _fmpz_poly_get_str_pretty(
19924        poly: *const fmpz,
19925        len: mp_limb_signed_t,
19926        x: *const ::std::os::raw::c_char,
19927    ) -> *mut ::std::os::raw::c_char;
19928}
19929extern "C" {
19930    pub fn fmpz_poly_get_str_pretty(
19931        poly: *mut fmpz_poly_struct,
19932        x: *const ::std::os::raw::c_char,
19933    ) -> *mut ::std::os::raw::c_char;
19934}
19935extern "C" {
19936    pub fn fmpz_poly_zero_coeffs(
19937        poly: *mut fmpz_poly_struct,
19938        i: mp_limb_signed_t,
19939        j: mp_limb_signed_t,
19940    );
19941}
19942extern "C" {
19943    pub fn fmpz_poly_swap(poly1: *mut fmpz_poly_struct, poly2: *mut fmpz_poly_struct);
19944}
19945extern "C" {
19946    pub fn _fmpz_poly_reverse(
19947        res: *mut fmpz,
19948        poly: *const fmpz,
19949        len: mp_limb_signed_t,
19950        n: mp_limb_signed_t,
19951    );
19952}
19953extern "C" {
19954    pub fn fmpz_poly_reverse(
19955        res: *mut fmpz_poly_struct,
19956        poly: *mut fmpz_poly_struct,
19957        n: mp_limb_signed_t,
19958    );
19959}
19960extern "C" {
19961    pub fn fmpz_poly_deflation(input: *mut fmpz_poly_struct) -> mp_limb_t;
19962}
19963extern "C" {
19964    pub fn fmpz_poly_deflate(
19965        result: *mut fmpz_poly_struct,
19966        input: *mut fmpz_poly_struct,
19967        deflation: mp_limb_t,
19968    );
19969}
19970extern "C" {
19971    pub fn fmpz_poly_inflate(
19972        result: *mut fmpz_poly_struct,
19973        input: *mut fmpz_poly_struct,
19974        inflation: mp_limb_t,
19975    );
19976}
19977extern "C" {
19978    pub fn fmpz_poly_set_trunc(
19979        res: *mut fmpz_poly_struct,
19980        poly: *mut fmpz_poly_struct,
19981        n: mp_limb_signed_t,
19982    );
19983}
19984extern "C" {
19985    pub fn fmpz_poly_randtest(
19986        f: *mut fmpz_poly_struct,
19987        state: *mut flint_rand_s,
19988        len: mp_limb_signed_t,
19989        bits: mp_limb_t,
19990    );
19991}
19992extern "C" {
19993    pub fn fmpz_poly_randtest_unsigned(
19994        f: *mut fmpz_poly_struct,
19995        state: *mut flint_rand_s,
19996        len: mp_limb_signed_t,
19997        bits: mp_limb_t,
19998    );
19999}
20000extern "C" {
20001    pub fn fmpz_poly_randtest_not_zero(
20002        f: *mut fmpz_poly_struct,
20003        state: *mut flint_rand_s,
20004        len: mp_limb_signed_t,
20005        bits: mp_limb_t,
20006    );
20007}
20008extern "C" {
20009    pub fn fmpz_poly_randtest_no_real_root(
20010        p: *mut fmpz_poly_struct,
20011        state: *mut flint_rand_s,
20012        len: mp_limb_signed_t,
20013        bits: mp_limb_t,
20014    );
20015}
20016extern "C" {
20017    pub fn fmpz_poly_get_coeff_si(
20018        poly: *mut fmpz_poly_struct,
20019        n: mp_limb_signed_t,
20020    ) -> mp_limb_signed_t;
20021}
20022extern "C" {
20023    pub fn fmpz_poly_set_coeff_si(
20024        poly: *mut fmpz_poly_struct,
20025        n: mp_limb_signed_t,
20026        x: mp_limb_signed_t,
20027    );
20028}
20029extern "C" {
20030    pub fn fmpz_poly_get_coeff_ui(poly: *mut fmpz_poly_struct, n: mp_limb_signed_t) -> mp_limb_t;
20031}
20032extern "C" {
20033    pub fn fmpz_poly_set_coeff_ui(poly: *mut fmpz_poly_struct, n: mp_limb_signed_t, x: mp_limb_t);
20034}
20035extern "C" {
20036    pub fn fmpz_poly_set_coeff_fmpz(poly: *mut fmpz_poly_struct, n: mp_limb_signed_t, x: *mut fmpz);
20037}
20038extern "C" {
20039    pub fn fmpz_poly_get_coeff_fmpz(x: *mut fmpz, poly: *mut fmpz_poly_struct, n: mp_limb_signed_t);
20040}
20041extern "C" {
20042    pub fn fmpz_poly_equal(
20043        poly1: *mut fmpz_poly_struct,
20044        poly2: *mut fmpz_poly_struct,
20045    ) -> ::std::os::raw::c_int;
20046}
20047extern "C" {
20048    pub fn fmpz_poly_equal_trunc(
20049        poly1: *mut fmpz_poly_struct,
20050        poly2: *mut fmpz_poly_struct,
20051        n: mp_limb_signed_t,
20052    ) -> ::std::os::raw::c_int;
20053}
20054extern "C" {
20055    pub fn _fmpz_poly_add(
20056        res: *mut fmpz,
20057        poly1: *const fmpz,
20058        len1: mp_limb_signed_t,
20059        poly2: *const fmpz,
20060        len2: mp_limb_signed_t,
20061    );
20062}
20063extern "C" {
20064    pub fn fmpz_poly_add(
20065        res: *mut fmpz_poly_struct,
20066        poly1: *mut fmpz_poly_struct,
20067        poly2: *mut fmpz_poly_struct,
20068    );
20069}
20070extern "C" {
20071    pub fn fmpz_poly_add_series(
20072        res: *mut fmpz_poly_struct,
20073        poly1: *mut fmpz_poly_struct,
20074        poly2: *mut fmpz_poly_struct,
20075        n: mp_limb_signed_t,
20076    );
20077}
20078extern "C" {
20079    pub fn _fmpz_poly_sub(
20080        res: *mut fmpz,
20081        poly1: *const fmpz,
20082        len1: mp_limb_signed_t,
20083        poly2: *const fmpz,
20084        len2: mp_limb_signed_t,
20085    );
20086}
20087extern "C" {
20088    pub fn fmpz_poly_sub(
20089        res: *mut fmpz_poly_struct,
20090        poly1: *mut fmpz_poly_struct,
20091        poly2: *mut fmpz_poly_struct,
20092    );
20093}
20094extern "C" {
20095    pub fn fmpz_poly_sub_series(
20096        res: *mut fmpz_poly_struct,
20097        poly1: *mut fmpz_poly_struct,
20098        poly2: *mut fmpz_poly_struct,
20099        n: mp_limb_signed_t,
20100    );
20101}
20102extern "C" {
20103    pub fn fmpz_poly_neg(res: *mut fmpz_poly_struct, poly: *mut fmpz_poly_struct);
20104}
20105extern "C" {
20106    pub fn fmpz_poly_scalar_abs(res: *mut fmpz_poly_struct, poly: *mut fmpz_poly_struct);
20107}
20108extern "C" {
20109    pub fn fmpz_poly_scalar_mul_ui(
20110        poly1: *mut fmpz_poly_struct,
20111        poly2: *mut fmpz_poly_struct,
20112        x: mp_limb_t,
20113    );
20114}
20115extern "C" {
20116    pub fn fmpz_poly_scalar_mul_si(
20117        poly1: *mut fmpz_poly_struct,
20118        poly2: *mut fmpz_poly_struct,
20119        x: mp_limb_signed_t,
20120    );
20121}
20122extern "C" {
20123    pub fn fmpz_poly_scalar_mul_fmpz(
20124        poly1: *mut fmpz_poly_struct,
20125        poly2: *mut fmpz_poly_struct,
20126        x: *mut fmpz,
20127    );
20128}
20129extern "C" {
20130    pub fn fmpz_poly_scalar_addmul_fmpz(
20131        poly1: *mut fmpz_poly_struct,
20132        poly2: *mut fmpz_poly_struct,
20133        x: *mut fmpz,
20134    );
20135}
20136extern "C" {
20137    pub fn fmpz_poly_scalar_submul_fmpz(
20138        poly1: *mut fmpz_poly_struct,
20139        poly2: *mut fmpz_poly_struct,
20140        x: *mut fmpz,
20141    );
20142}
20143extern "C" {
20144    pub fn fmpz_poly_scalar_fdiv_ui(
20145        poly1: *mut fmpz_poly_struct,
20146        poly2: *mut fmpz_poly_struct,
20147        x: mp_limb_t,
20148    );
20149}
20150extern "C" {
20151    pub fn fmpz_poly_scalar_fdiv_si(
20152        poly1: *mut fmpz_poly_struct,
20153        poly2: *mut fmpz_poly_struct,
20154        x: mp_limb_signed_t,
20155    );
20156}
20157extern "C" {
20158    pub fn fmpz_poly_scalar_fdiv_fmpz(
20159        poly1: *mut fmpz_poly_struct,
20160        poly2: *mut fmpz_poly_struct,
20161        x: *mut fmpz,
20162    );
20163}
20164extern "C" {
20165    pub fn fmpz_poly_scalar_tdiv_ui(
20166        poly1: *mut fmpz_poly_struct,
20167        poly2: *mut fmpz_poly_struct,
20168        x: mp_limb_t,
20169    );
20170}
20171extern "C" {
20172    pub fn fmpz_poly_scalar_tdiv_si(
20173        poly1: *mut fmpz_poly_struct,
20174        poly2: *mut fmpz_poly_struct,
20175        x: mp_limb_signed_t,
20176    );
20177}
20178extern "C" {
20179    pub fn fmpz_poly_scalar_tdiv_fmpz(
20180        poly1: *mut fmpz_poly_struct,
20181        poly2: *mut fmpz_poly_struct,
20182        x: *mut fmpz,
20183    );
20184}
20185extern "C" {
20186    pub fn fmpz_poly_scalar_divexact_ui(
20187        poly1: *mut fmpz_poly_struct,
20188        poly2: *mut fmpz_poly_struct,
20189        x: mp_limb_t,
20190    );
20191}
20192extern "C" {
20193    pub fn fmpz_poly_scalar_divexact_si(
20194        poly1: *mut fmpz_poly_struct,
20195        poly2: *mut fmpz_poly_struct,
20196        x: mp_limb_signed_t,
20197    );
20198}
20199extern "C" {
20200    pub fn fmpz_poly_scalar_divexact_fmpz(
20201        poly1: *mut fmpz_poly_struct,
20202        poly2: *mut fmpz_poly_struct,
20203        x: *mut fmpz,
20204    );
20205}
20206extern "C" {
20207    pub fn fmpz_poly_scalar_fdiv_2exp(
20208        poly1: *mut fmpz_poly_struct,
20209        poly2: *mut fmpz_poly_struct,
20210        exp: mp_limb_t,
20211    );
20212}
20213extern "C" {
20214    pub fn fmpz_poly_scalar_tdiv_2exp(
20215        poly1: *mut fmpz_poly_struct,
20216        poly2: *mut fmpz_poly_struct,
20217        exp: mp_limb_t,
20218    );
20219}
20220extern "C" {
20221    pub fn fmpz_poly_scalar_mul_2exp(
20222        poly1: *mut fmpz_poly_struct,
20223        poly2: *mut fmpz_poly_struct,
20224        exp: mp_limb_t,
20225    );
20226}
20227extern "C" {
20228    pub fn _fmpz_poly_remove_content_2exp(
20229        pol: *mut fmpz,
20230        len: mp_limb_signed_t,
20231    ) -> mp_limb_signed_t;
20232}
20233extern "C" {
20234    pub fn _fmpz_poly_scale_2exp(pol: *mut fmpz, len: mp_limb_signed_t, k: mp_limb_signed_t);
20235}
20236extern "C" {
20237    pub fn _fmpz_poly_bit_pack(
20238        arr: mp_ptr,
20239        poly: *const fmpz,
20240        len: mp_limb_signed_t,
20241        bit_size: mp_limb_t,
20242        negate: ::std::os::raw::c_int,
20243    );
20244}
20245extern "C" {
20246    pub fn _fmpz_poly_bit_unpack(
20247        poly: *mut fmpz,
20248        len: mp_limb_signed_t,
20249        arr: mp_srcptr,
20250        bit_size: mp_limb_t,
20251        negate: ::std::os::raw::c_int,
20252    ) -> ::std::os::raw::c_int;
20253}
20254extern "C" {
20255    pub fn _fmpz_poly_bit_unpack_unsigned(
20256        poly: *mut fmpz,
20257        len: mp_limb_signed_t,
20258        arr: mp_srcptr,
20259        bit_size: mp_limb_t,
20260    );
20261}
20262extern "C" {
20263    pub fn fmpz_poly_bit_pack(f: *mut fmpz, poly: *mut fmpz_poly_struct, bit_size: mp_limb_t);
20264}
20265extern "C" {
20266    pub fn fmpz_poly_bit_unpack(poly: *mut fmpz_poly_struct, f: *mut fmpz, bit_size: mp_limb_t);
20267}
20268extern "C" {
20269    pub fn fmpz_poly_bit_unpack_unsigned(
20270        poly: *mut fmpz_poly_struct,
20271        f: *mut fmpz,
20272        bit_size: mp_limb_t,
20273    );
20274}
20275extern "C" {
20276    pub fn _fmpz_poly_mul_classical(
20277        res: *mut fmpz,
20278        poly1: *const fmpz,
20279        len1: mp_limb_signed_t,
20280        poly2: *const fmpz,
20281        len2: mp_limb_signed_t,
20282    );
20283}
20284extern "C" {
20285    pub fn fmpz_poly_mul_classical(
20286        res: *mut fmpz_poly_struct,
20287        poly1: *mut fmpz_poly_struct,
20288        poly2: *mut fmpz_poly_struct,
20289    );
20290}
20291extern "C" {
20292    pub fn _fmpz_poly_mullow_classical(
20293        res: *mut fmpz,
20294        poly1: *const fmpz,
20295        len1: mp_limb_signed_t,
20296        poly2: *const fmpz,
20297        len2: mp_limb_signed_t,
20298        n: mp_limb_signed_t,
20299    );
20300}
20301extern "C" {
20302    pub fn fmpz_poly_mullow_classical(
20303        res: *mut fmpz_poly_struct,
20304        poly1: *mut fmpz_poly_struct,
20305        poly2: *mut fmpz_poly_struct,
20306        n: mp_limb_signed_t,
20307    );
20308}
20309extern "C" {
20310    pub fn _fmpz_poly_mulhigh_classical(
20311        res: *mut fmpz,
20312        poly1: *const fmpz,
20313        len1: mp_limb_signed_t,
20314        poly2: *const fmpz,
20315        len2: mp_limb_signed_t,
20316        start: mp_limb_signed_t,
20317    );
20318}
20319extern "C" {
20320    pub fn fmpz_poly_mulhigh_classical(
20321        res: *mut fmpz_poly_struct,
20322        poly1: *mut fmpz_poly_struct,
20323        poly2: *mut fmpz_poly_struct,
20324        start: mp_limb_signed_t,
20325    );
20326}
20327extern "C" {
20328    pub fn _fmpz_poly_mulmid_classical(
20329        res: *mut fmpz,
20330        poly1: *const fmpz,
20331        len1: mp_limb_signed_t,
20332        poly2: *const fmpz,
20333        len2: mp_limb_signed_t,
20334    );
20335}
20336extern "C" {
20337    pub fn fmpz_poly_mulmid_classical(
20338        res: *mut fmpz_poly_struct,
20339        poly1: *mut fmpz_poly_struct,
20340        poly2: *mut fmpz_poly_struct,
20341    );
20342}
20343extern "C" {
20344    pub fn fmpz_poly_mul_karatsuba(
20345        res: *mut fmpz_poly_struct,
20346        poly1: *mut fmpz_poly_struct,
20347        poly2: *mut fmpz_poly_struct,
20348    );
20349}
20350extern "C" {
20351    pub fn _fmpz_poly_mul_karatsuba(
20352        res: *mut fmpz,
20353        poly1: *const fmpz,
20354        len1: mp_limb_signed_t,
20355        poly2: *const fmpz,
20356        len2: mp_limb_signed_t,
20357    );
20358}
20359extern "C" {
20360    pub fn _fmpz_poly_mullow_karatsuba_n(
20361        res: *mut fmpz,
20362        poly1: *const fmpz,
20363        poly2: *const fmpz,
20364        n: mp_limb_signed_t,
20365    );
20366}
20367extern "C" {
20368    pub fn fmpz_poly_mullow_karatsuba_n(
20369        res: *mut fmpz_poly_struct,
20370        poly1: *mut fmpz_poly_struct,
20371        poly2: *mut fmpz_poly_struct,
20372        n: mp_limb_signed_t,
20373    );
20374}
20375extern "C" {
20376    pub fn _fmpz_poly_mulhigh_karatsuba_n(
20377        res: *mut fmpz,
20378        poly1: *const fmpz,
20379        poly2: *const fmpz,
20380        len: mp_limb_signed_t,
20381    );
20382}
20383extern "C" {
20384    pub fn fmpz_poly_mulhigh_karatsuba_n(
20385        res: *mut fmpz_poly_struct,
20386        poly1: *mut fmpz_poly_struct,
20387        poly2: *mut fmpz_poly_struct,
20388        length: mp_limb_signed_t,
20389    );
20390}
20391extern "C" {
20392    pub fn _fmpz_poly_mul_KS(
20393        res: *mut fmpz,
20394        poly1: *const fmpz,
20395        len1: mp_limb_signed_t,
20396        poly2: *const fmpz,
20397        len2: mp_limb_signed_t,
20398    );
20399}
20400extern "C" {
20401    pub fn fmpz_poly_mul_KS(
20402        res: *mut fmpz_poly_struct,
20403        poly1: *mut fmpz_poly_struct,
20404        poly2: *mut fmpz_poly_struct,
20405    );
20406}
20407extern "C" {
20408    pub fn _fmpz_poly_mullow_KS(
20409        res: *mut fmpz,
20410        poly1: *const fmpz,
20411        len1: mp_limb_signed_t,
20412        poly2: *const fmpz,
20413        len2: mp_limb_signed_t,
20414        n: mp_limb_signed_t,
20415    );
20416}
20417extern "C" {
20418    pub fn fmpz_poly_mullow_KS(
20419        res: *mut fmpz_poly_struct,
20420        poly1: *mut fmpz_poly_struct,
20421        poly2: *mut fmpz_poly_struct,
20422        n: mp_limb_signed_t,
20423    );
20424}
20425extern "C" {
20426    pub fn _fmpz_poly_mul_SS(
20427        output: *mut fmpz,
20428        input1: *const fmpz,
20429        length1: mp_limb_signed_t,
20430        input2: *const fmpz,
20431        length2: mp_limb_signed_t,
20432    );
20433}
20434extern "C" {
20435    pub fn fmpz_poly_mul_SS(
20436        res: *mut fmpz_poly_struct,
20437        poly1: *mut fmpz_poly_struct,
20438        poly2: *mut fmpz_poly_struct,
20439    );
20440}
20441extern "C" {
20442    pub fn _fmpz_poly_mullow_SS(
20443        output: *mut fmpz,
20444        input1: *const fmpz,
20445        length1: mp_limb_signed_t,
20446        input2: *const fmpz,
20447        length2: mp_limb_signed_t,
20448        n: mp_limb_signed_t,
20449    );
20450}
20451extern "C" {
20452    pub fn fmpz_poly_mullow_SS(
20453        res: *mut fmpz_poly_struct,
20454        poly1: *mut fmpz_poly_struct,
20455        poly2: *mut fmpz_poly_struct,
20456        n: mp_limb_signed_t,
20457    );
20458}
20459extern "C" {
20460    pub fn _fmpz_poly_mul(
20461        res: *mut fmpz,
20462        poly1: *const fmpz,
20463        len1: mp_limb_signed_t,
20464        poly2: *const fmpz,
20465        len2: mp_limb_signed_t,
20466    );
20467}
20468extern "C" {
20469    pub fn fmpz_poly_mul(
20470        res: *mut fmpz_poly_struct,
20471        poly1: *mut fmpz_poly_struct,
20472        poly2: *mut fmpz_poly_struct,
20473    );
20474}
20475extern "C" {
20476    pub fn _fmpz_poly_mullow(
20477        res: *mut fmpz,
20478        poly1: *const fmpz,
20479        len1: mp_limb_signed_t,
20480        poly2: *const fmpz,
20481        len2: mp_limb_signed_t,
20482        n: mp_limb_signed_t,
20483    );
20484}
20485extern "C" {
20486    pub fn fmpz_poly_mullow(
20487        res: *mut fmpz_poly_struct,
20488        poly1: *mut fmpz_poly_struct,
20489        poly2: *mut fmpz_poly_struct,
20490        n: mp_limb_signed_t,
20491    );
20492}
20493extern "C" {
20494    pub fn fmpz_poly_mulhigh_n(
20495        res: *mut fmpz_poly_struct,
20496        poly1: *mut fmpz_poly_struct,
20497        poly2: *mut fmpz_poly_struct,
20498        n: mp_limb_signed_t,
20499    );
20500}
20501extern "C" {
20502    pub fn fmpz_poly_mul_SS_precache_init(
20503        pre: *mut fmpz_poly_mul_precache_struct,
20504        len1: mp_limb_signed_t,
20505        bits1: mp_limb_signed_t,
20506        poly2: *mut fmpz_poly_struct,
20507    );
20508}
20509extern "C" {
20510    pub fn fmpz_poly_mul_precache_clear(pre: *mut fmpz_poly_mul_precache_struct);
20511}
20512extern "C" {
20513    pub fn _fmpz_poly_mullow_SS_precache(
20514        output: *mut fmpz,
20515        input1: *const fmpz,
20516        len1: mp_limb_signed_t,
20517        pre: *mut fmpz_poly_mul_precache_struct,
20518        trunc: mp_limb_signed_t,
20519    );
20520}
20521extern "C" {
20522    pub fn fmpz_poly_mullow_SS_precache(
20523        res: *mut fmpz_poly_struct,
20524        poly1: *mut fmpz_poly_struct,
20525        pre: *mut fmpz_poly_mul_precache_struct,
20526        n: mp_limb_signed_t,
20527    );
20528}
20529extern "C" {
20530    pub fn _fmpz_poly_sqr_KS(rop: *mut fmpz, op: *const fmpz, len: mp_limb_signed_t);
20531}
20532extern "C" {
20533    pub fn fmpz_poly_sqr_KS(rop: *mut fmpz_poly_struct, op: *mut fmpz_poly_struct);
20534}
20535extern "C" {
20536    pub fn fmpz_poly_sqr_karatsuba(rop: *mut fmpz_poly_struct, op: *mut fmpz_poly_struct);
20537}
20538extern "C" {
20539    pub fn _fmpz_poly_sqr_karatsuba(rop: *mut fmpz, op: *const fmpz, len: mp_limb_signed_t);
20540}
20541extern "C" {
20542    pub fn _fmpz_poly_sqr_classical(rop: *mut fmpz, op: *const fmpz, len: mp_limb_signed_t);
20543}
20544extern "C" {
20545    pub fn fmpz_poly_sqr_classical(rop: *mut fmpz_poly_struct, op: *mut fmpz_poly_struct);
20546}
20547extern "C" {
20548    pub fn _fmpz_poly_sqr(rop: *mut fmpz, op: *const fmpz, len: mp_limb_signed_t);
20549}
20550extern "C" {
20551    pub fn fmpz_poly_sqr(rop: *mut fmpz_poly_struct, op: *mut fmpz_poly_struct);
20552}
20553extern "C" {
20554    pub fn _fmpz_poly_sqrlow_KS(
20555        res: *mut fmpz,
20556        poly: *const fmpz,
20557        len: mp_limb_signed_t,
20558        n: mp_limb_signed_t,
20559    );
20560}
20561extern "C" {
20562    pub fn fmpz_poly_sqrlow_KS(
20563        res: *mut fmpz_poly_struct,
20564        poly: *mut fmpz_poly_struct,
20565        n: mp_limb_signed_t,
20566    );
20567}
20568extern "C" {
20569    pub fn _fmpz_poly_sqrlow_karatsuba_n(res: *mut fmpz, poly: *const fmpz, n: mp_limb_signed_t);
20570}
20571extern "C" {
20572    pub fn fmpz_poly_sqrlow_karatsuba_n(
20573        res: *mut fmpz_poly_struct,
20574        poly: *mut fmpz_poly_struct,
20575        n: mp_limb_signed_t,
20576    );
20577}
20578extern "C" {
20579    pub fn _fmpz_poly_sqrlow_classical(
20580        res: *mut fmpz,
20581        poly: *const fmpz,
20582        len: mp_limb_signed_t,
20583        n: mp_limb_signed_t,
20584    );
20585}
20586extern "C" {
20587    pub fn fmpz_poly_sqrlow_classical(
20588        res: *mut fmpz_poly_struct,
20589        poly: *mut fmpz_poly_struct,
20590        n: mp_limb_signed_t,
20591    );
20592}
20593extern "C" {
20594    pub fn _fmpz_poly_sqrlow(
20595        res: *mut fmpz,
20596        poly: *const fmpz,
20597        len: mp_limb_signed_t,
20598        n: mp_limb_signed_t,
20599    );
20600}
20601extern "C" {
20602    pub fn fmpz_poly_sqrlow(
20603        res: *mut fmpz_poly_struct,
20604        poly: *mut fmpz_poly_struct,
20605        n: mp_limb_signed_t,
20606    );
20607}
20608extern "C" {
20609    pub fn _fmpz_poly_pow_multinomial(
20610        res: *mut fmpz,
20611        poly: *const fmpz,
20612        len: mp_limb_signed_t,
20613        e: mp_limb_t,
20614    );
20615}
20616extern "C" {
20617    pub fn fmpz_poly_pow_multinomial(
20618        res: *mut fmpz_poly_struct,
20619        poly: *mut fmpz_poly_struct,
20620        e: mp_limb_t,
20621    );
20622}
20623extern "C" {
20624    pub fn _fmpz_poly_pow_binomial(res: *mut fmpz, poly: *const fmpz, e: mp_limb_t);
20625}
20626extern "C" {
20627    pub fn fmpz_poly_pow_binomial(
20628        res: *mut fmpz_poly_struct,
20629        poly: *mut fmpz_poly_struct,
20630        e: mp_limb_t,
20631    );
20632}
20633extern "C" {
20634    pub fn _fmpz_poly_pow_binexp(
20635        res: *mut fmpz,
20636        poly: *const fmpz,
20637        len: mp_limb_signed_t,
20638        e: mp_limb_t,
20639    );
20640}
20641extern "C" {
20642    pub fn fmpz_poly_pow_binexp(
20643        res: *mut fmpz_poly_struct,
20644        poly: *mut fmpz_poly_struct,
20645        e: mp_limb_t,
20646    );
20647}
20648extern "C" {
20649    pub fn _fmpz_poly_pow_addchains(
20650        res: *mut fmpz,
20651        poly: *const fmpz,
20652        len: mp_limb_signed_t,
20653        a: *const ::std::os::raw::c_int,
20654        n: ::std::os::raw::c_int,
20655    );
20656}
20657extern "C" {
20658    pub fn fmpz_poly_pow_addchains(
20659        res: *mut fmpz_poly_struct,
20660        poly: *mut fmpz_poly_struct,
20661        e: mp_limb_t,
20662    );
20663}
20664extern "C" {
20665    pub fn _fmpz_poly_pow_small(
20666        res: *mut fmpz,
20667        poly: *const fmpz,
20668        len: mp_limb_signed_t,
20669        e: mp_limb_t,
20670    );
20671}
20672extern "C" {
20673    pub fn _fmpz_poly_pow(res: *mut fmpz, poly: *const fmpz, len: mp_limb_signed_t, e: mp_limb_t);
20674}
20675extern "C" {
20676    pub fn fmpz_poly_pow(res: *mut fmpz_poly_struct, poly: *mut fmpz_poly_struct, e: mp_limb_t);
20677}
20678extern "C" {
20679    pub fn _fmpz_poly_pow_trunc(
20680        res: *mut fmpz,
20681        poly: *const fmpz,
20682        e: mp_limb_t,
20683        n: mp_limb_signed_t,
20684    );
20685}
20686extern "C" {
20687    pub fn fmpz_poly_pow_trunc(
20688        res: *mut fmpz_poly_struct,
20689        poly: *mut fmpz_poly_struct,
20690        e: mp_limb_t,
20691        n: mp_limb_signed_t,
20692    );
20693}
20694extern "C" {
20695    pub fn _fmpz_poly_shift_left(
20696        res: *mut fmpz,
20697        poly: *const fmpz,
20698        len: mp_limb_signed_t,
20699        n: mp_limb_signed_t,
20700    );
20701}
20702extern "C" {
20703    pub fn _fmpz_poly_shift_right(
20704        res: *mut fmpz,
20705        poly: *const fmpz,
20706        len: mp_limb_signed_t,
20707        n: mp_limb_signed_t,
20708    );
20709}
20710extern "C" {
20711    pub fn fmpz_poly_shift_left(
20712        res: *mut fmpz_poly_struct,
20713        poly: *mut fmpz_poly_struct,
20714        n: mp_limb_signed_t,
20715    );
20716}
20717extern "C" {
20718    pub fn fmpz_poly_shift_right(
20719        res: *mut fmpz_poly_struct,
20720        poly: *mut fmpz_poly_struct,
20721        n: mp_limb_signed_t,
20722    );
20723}
20724extern "C" {
20725    pub fn _fmpz_poly_2norm(res: *mut fmpz, poly: *const fmpz, len: mp_limb_signed_t);
20726}
20727extern "C" {
20728    pub fn fmpz_poly_2norm(res: *mut fmpz, poly: *mut fmpz_poly_struct);
20729}
20730extern "C" {
20731    pub fn _fmpz_poly_2norm_normalised_bits(poly: *const fmpz, len: mp_limb_signed_t) -> mp_limb_t;
20732}
20733extern "C" {
20734    pub fn _fmpz_poly_gcd_subresultant(
20735        res: *mut fmpz,
20736        poly1: *const fmpz,
20737        len1: mp_limb_signed_t,
20738        poly2: *const fmpz,
20739        len2: mp_limb_signed_t,
20740    );
20741}
20742extern "C" {
20743    pub fn fmpz_poly_gcd_subresultant(
20744        res: *mut fmpz_poly_struct,
20745        poly1: *mut fmpz_poly_struct,
20746        poly2: *mut fmpz_poly_struct,
20747    );
20748}
20749extern "C" {
20750    pub fn _fmpz_poly_gcd_heuristic(
20751        res: *mut fmpz,
20752        poly1: *const fmpz,
20753        len1: mp_limb_signed_t,
20754        poly2: *const fmpz,
20755        len2: mp_limb_signed_t,
20756    ) -> ::std::os::raw::c_int;
20757}
20758extern "C" {
20759    pub fn fmpz_poly_gcd_heuristic(
20760        res: *mut fmpz_poly_struct,
20761        poly1: *mut fmpz_poly_struct,
20762        poly2: *mut fmpz_poly_struct,
20763    ) -> ::std::os::raw::c_int;
20764}
20765extern "C" {
20766    pub fn _fmpz_poly_gcd_modular(
20767        res: *mut fmpz,
20768        poly1: *const fmpz,
20769        len1: mp_limb_signed_t,
20770        poly2: *const fmpz,
20771        len2: mp_limb_signed_t,
20772    );
20773}
20774extern "C" {
20775    pub fn fmpz_poly_gcd_modular(
20776        res: *mut fmpz_poly_struct,
20777        poly1: *mut fmpz_poly_struct,
20778        poly2: *mut fmpz_poly_struct,
20779    );
20780}
20781extern "C" {
20782    pub fn _fmpz_poly_gcd(
20783        res: *mut fmpz,
20784        poly1: *const fmpz,
20785        len1: mp_limb_signed_t,
20786        poly2: *const fmpz,
20787        len2: mp_limb_signed_t,
20788    );
20789}
20790extern "C" {
20791    pub fn fmpz_poly_gcd(
20792        res: *mut fmpz_poly_struct,
20793        poly1: *mut fmpz_poly_struct,
20794        poly2: *mut fmpz_poly_struct,
20795    );
20796}
20797extern "C" {
20798    pub fn _fmpz_poly_lcm(
20799        res: *mut fmpz,
20800        poly1: *const fmpz,
20801        len1: mp_limb_signed_t,
20802        poly2: *const fmpz,
20803        len2: mp_limb_signed_t,
20804    );
20805}
20806extern "C" {
20807    pub fn fmpz_poly_lcm(
20808        res: *mut fmpz_poly_struct,
20809        poly1: *mut fmpz_poly_struct,
20810        poly2: *mut fmpz_poly_struct,
20811    );
20812}
20813extern "C" {
20814    pub fn _fmpz_poly_resultant_euclidean(
20815        res: *mut fmpz,
20816        poly1: *const fmpz,
20817        len1: mp_limb_signed_t,
20818        poly2: *const fmpz,
20819        len2: mp_limb_signed_t,
20820    );
20821}
20822extern "C" {
20823    pub fn fmpz_poly_resultant_euclidean(
20824        res: *mut fmpz,
20825        poly1: *mut fmpz_poly_struct,
20826        poly2: *mut fmpz_poly_struct,
20827    );
20828}
20829extern "C" {
20830    pub fn _fmpz_poly_resultant_modular(
20831        res: *mut fmpz,
20832        poly1: *const fmpz,
20833        len1: mp_limb_signed_t,
20834        poly2: *const fmpz,
20835        len2: mp_limb_signed_t,
20836    );
20837}
20838extern "C" {
20839    pub fn fmpz_poly_resultant_modular(
20840        res: *mut fmpz,
20841        poly1: *mut fmpz_poly_struct,
20842        poly2: *mut fmpz_poly_struct,
20843    );
20844}
20845extern "C" {
20846    pub fn _fmpz_poly_resultant(
20847        res: *mut fmpz,
20848        poly1: *const fmpz,
20849        len1: mp_limb_signed_t,
20850        poly2: *const fmpz,
20851        len2: mp_limb_signed_t,
20852    );
20853}
20854extern "C" {
20855    pub fn fmpz_poly_resultant(
20856        res: *mut fmpz,
20857        poly1: *mut fmpz_poly_struct,
20858        poly2: *mut fmpz_poly_struct,
20859    );
20860}
20861extern "C" {
20862    pub fn _fmpz_poly_resultant_modular_div(
20863        res: *mut fmpz,
20864        poly1: *const fmpz,
20865        len1: mp_limb_signed_t,
20866        poly2: *const fmpz,
20867        len2: mp_limb_signed_t,
20868        divisor: *mut fmpz,
20869        nbits: mp_limb_signed_t,
20870    );
20871}
20872extern "C" {
20873    pub fn fmpz_poly_resultant_modular_div(
20874        res: *mut fmpz,
20875        poly1: *mut fmpz_poly_struct,
20876        poly2: *mut fmpz_poly_struct,
20877        divisor: *mut fmpz,
20878        nbits: mp_limb_signed_t,
20879    );
20880}
20881extern "C" {
20882    pub fn _fmpz_poly_xgcd_modular(
20883        r: *mut fmpz,
20884        s: *mut fmpz,
20885        t: *mut fmpz,
20886        poly1: *const fmpz,
20887        len1: mp_limb_signed_t,
20888        poly2: *const fmpz,
20889        len2: mp_limb_signed_t,
20890    );
20891}
20892extern "C" {
20893    pub fn fmpz_poly_xgcd_modular(
20894        r: *mut fmpz,
20895        s: *mut fmpz_poly_struct,
20896        t: *mut fmpz_poly_struct,
20897        poly1: *mut fmpz_poly_struct,
20898        poly2: *mut fmpz_poly_struct,
20899    );
20900}
20901extern "C" {
20902    pub fn _fmpz_poly_discriminant(res: *mut fmpz, poly: *const fmpz, len: mp_limb_signed_t);
20903}
20904extern "C" {
20905    pub fn fmpz_poly_discriminant(res: *mut fmpz, poly: *mut fmpz_poly_struct);
20906}
20907extern "C" {
20908    pub fn _fmpz_poly_content(res: *mut fmpz, poly: *const fmpz, len: mp_limb_signed_t);
20909}
20910extern "C" {
20911    pub fn fmpz_poly_content(res: *mut fmpz, poly: *mut fmpz_poly_struct);
20912}
20913extern "C" {
20914    pub fn _fmpz_poly_primitive_part(res: *mut fmpz, poly: *const fmpz, len: mp_limb_signed_t);
20915}
20916extern "C" {
20917    pub fn fmpz_poly_primitive_part(res: *mut fmpz_poly_struct, poly: *mut fmpz_poly_struct);
20918}
20919extern "C" {
20920    pub fn _fmpz_poly_is_squarefree(
20921        poly: *const fmpz,
20922        len: mp_limb_signed_t,
20923    ) -> ::std::os::raw::c_int;
20924}
20925extern "C" {
20926    pub fn fmpz_poly_is_squarefree(poly: *mut fmpz_poly_struct) -> ::std::os::raw::c_int;
20927}
20928extern "C" {
20929    pub fn _fmpz_poly_divrem_basecase(
20930        Q: *mut fmpz,
20931        R: *mut fmpz,
20932        A: *const fmpz,
20933        lenA: mp_limb_signed_t,
20934        B: *const fmpz,
20935        lenB: mp_limb_signed_t,
20936        exact: ::std::os::raw::c_int,
20937    ) -> ::std::os::raw::c_int;
20938}
20939extern "C" {
20940    pub fn fmpz_poly_divrem_basecase(
20941        Q: *mut fmpz_poly_struct,
20942        R: *mut fmpz_poly_struct,
20943        A: *mut fmpz_poly_struct,
20944        B: *mut fmpz_poly_struct,
20945    );
20946}
20947extern "C" {
20948    pub fn _fmpz_poly_divrem_divconquer_recursive(
20949        Q: *mut fmpz,
20950        BQ: *mut fmpz,
20951        W: *mut fmpz,
20952        A: *const fmpz,
20953        B: *const fmpz,
20954        lenB: mp_limb_signed_t,
20955        exact: ::std::os::raw::c_int,
20956    ) -> ::std::os::raw::c_int;
20957}
20958extern "C" {
20959    pub fn _fmpz_poly_divrem_divconquer(
20960        Q: *mut fmpz,
20961        R: *mut fmpz,
20962        A: *const fmpz,
20963        lenA: mp_limb_signed_t,
20964        B: *const fmpz,
20965        lenB: mp_limb_signed_t,
20966        exact: ::std::os::raw::c_int,
20967    ) -> ::std::os::raw::c_int;
20968}
20969extern "C" {
20970    pub fn fmpz_poly_divrem_divconquer(
20971        Q: *mut fmpz_poly_struct,
20972        R: *mut fmpz_poly_struct,
20973        A: *mut fmpz_poly_struct,
20974        B: *mut fmpz_poly_struct,
20975    );
20976}
20977extern "C" {
20978    pub fn _fmpz_poly_divrem(
20979        Q: *mut fmpz,
20980        R: *mut fmpz,
20981        A: *const fmpz,
20982        lenA: mp_limb_signed_t,
20983        B: *const fmpz,
20984        lenB: mp_limb_signed_t,
20985        exact: ::std::os::raw::c_int,
20986    ) -> ::std::os::raw::c_int;
20987}
20988extern "C" {
20989    pub fn fmpz_poly_divrem(
20990        Q: *mut fmpz_poly_struct,
20991        R: *mut fmpz_poly_struct,
20992        A: *mut fmpz_poly_struct,
20993        B: *mut fmpz_poly_struct,
20994    );
20995}
20996extern "C" {
20997    pub fn _fmpz_poly_div_basecase(
20998        Q: *mut fmpz,
20999        R: *mut fmpz,
21000        A: *const fmpz,
21001        lenA: mp_limb_signed_t,
21002        B: *const fmpz,
21003        lenB: mp_limb_signed_t,
21004        exact: ::std::os::raw::c_int,
21005    ) -> ::std::os::raw::c_int;
21006}
21007extern "C" {
21008    pub fn fmpz_poly_div_basecase(
21009        Q: *mut fmpz_poly_struct,
21010        A: *mut fmpz_poly_struct,
21011        B: *mut fmpz_poly_struct,
21012    );
21013}
21014extern "C" {
21015    pub fn _fmpz_poly_divremlow_divconquer_recursive(
21016        Q: *mut fmpz,
21017        QB: *mut fmpz,
21018        A: *const fmpz,
21019        B: *const fmpz,
21020        lenB: mp_limb_signed_t,
21021        exact: ::std::os::raw::c_int,
21022    ) -> ::std::os::raw::c_int;
21023}
21024extern "C" {
21025    pub fn _fmpz_poly_div_divconquer_recursive(
21026        Q: *mut fmpz,
21027        temp: *mut fmpz,
21028        A: *const fmpz,
21029        B: *const fmpz,
21030        lenB: mp_limb_signed_t,
21031        exact: ::std::os::raw::c_int,
21032    ) -> ::std::os::raw::c_int;
21033}
21034extern "C" {
21035    pub fn _fmpz_poly_div_divconquer(
21036        Q: *mut fmpz,
21037        A: *const fmpz,
21038        lenA: mp_limb_signed_t,
21039        B: *const fmpz,
21040        lenB: mp_limb_signed_t,
21041        exact: ::std::os::raw::c_int,
21042    ) -> ::std::os::raw::c_int;
21043}
21044extern "C" {
21045    pub fn fmpz_poly_div_divconquer(
21046        Q: *mut fmpz_poly_struct,
21047        A: *mut fmpz_poly_struct,
21048        B: *mut fmpz_poly_struct,
21049    );
21050}
21051extern "C" {
21052    pub fn _fmpz_poly_div(
21053        Q: *mut fmpz,
21054        A: *const fmpz,
21055        lenA: mp_limb_signed_t,
21056        B: *const fmpz,
21057        lenB: mp_limb_signed_t,
21058        exact: ::std::os::raw::c_int,
21059    ) -> ::std::os::raw::c_int;
21060}
21061extern "C" {
21062    pub fn fmpz_poly_div(
21063        Q: *mut fmpz_poly_struct,
21064        A: *mut fmpz_poly_struct,
21065        B: *mut fmpz_poly_struct,
21066    );
21067}
21068extern "C" {
21069    pub fn _fmpz_poly_preinvert(B_inv: *mut fmpz, B: *const fmpz, n: mp_limb_signed_t);
21070}
21071extern "C" {
21072    pub fn fmpz_poly_preinvert(B_inv: *mut fmpz_poly_struct, B: *mut fmpz_poly_struct);
21073}
21074extern "C" {
21075    pub fn _fmpz_poly_div_preinv(
21076        Q: *mut fmpz,
21077        A: *const fmpz,
21078        len1: mp_limb_signed_t,
21079        B: *const fmpz,
21080        B_inv: *const fmpz,
21081        len2: mp_limb_signed_t,
21082    );
21083}
21084extern "C" {
21085    pub fn fmpz_poly_div_preinv(
21086        Q: *mut fmpz_poly_struct,
21087        A: *mut fmpz_poly_struct,
21088        B: *mut fmpz_poly_struct,
21089        B_inv: *mut fmpz_poly_struct,
21090    );
21091}
21092extern "C" {
21093    pub fn _fmpz_poly_divrem_preinv(
21094        Q: *mut fmpz,
21095        A: *mut fmpz,
21096        len1: mp_limb_signed_t,
21097        B: *const fmpz,
21098        B_inv: *const fmpz,
21099        len2: mp_limb_signed_t,
21100    );
21101}
21102extern "C" {
21103    pub fn fmpz_poly_divrem_preinv(
21104        Q: *mut fmpz_poly_struct,
21105        R: *mut fmpz_poly_struct,
21106        A: *mut fmpz_poly_struct,
21107        B: *mut fmpz_poly_struct,
21108        B_inv: *mut fmpz_poly_struct,
21109    );
21110}
21111extern "C" {
21112    pub fn _fmpz_poly_powers_precompute(B: *const fmpz, len: mp_limb_signed_t) -> *mut *mut fmpz;
21113}
21114extern "C" {
21115    pub fn fmpz_poly_powers_precompute(
21116        pinv: *mut fmpz_poly_powers_precomp_struct,
21117        poly: *mut fmpz_poly_struct,
21118    );
21119}
21120extern "C" {
21121    pub fn _fmpz_poly_powers_clear(powers: *mut *mut fmpz, len: mp_limb_signed_t);
21122}
21123extern "C" {
21124    pub fn fmpz_poly_powers_clear(pinv: *mut fmpz_poly_powers_precomp_struct);
21125}
21126extern "C" {
21127    pub fn _fmpz_poly_rem_powers_precomp(
21128        A: *mut fmpz,
21129        m: mp_limb_signed_t,
21130        B: *const fmpz,
21131        n: mp_limb_signed_t,
21132        powers: *mut *mut fmpz,
21133    );
21134}
21135extern "C" {
21136    pub fn fmpz_poly_rem_powers_precomp(
21137        R: *mut fmpz_poly_struct,
21138        A: *mut fmpz_poly_struct,
21139        B: *mut fmpz_poly_struct,
21140        B_inv: *mut fmpz_poly_powers_precomp_struct,
21141    );
21142}
21143extern "C" {
21144    pub fn _fmpz_poly_rem_basecase(
21145        Q: *mut fmpz,
21146        A: *const fmpz,
21147        lenA: mp_limb_signed_t,
21148        B: *const fmpz,
21149        lenB: mp_limb_signed_t,
21150    );
21151}
21152extern "C" {
21153    pub fn fmpz_poly_rem_basecase(
21154        R: *mut fmpz_poly_struct,
21155        A: *mut fmpz_poly_struct,
21156        B: *mut fmpz_poly_struct,
21157    );
21158}
21159extern "C" {
21160    pub fn _fmpz_poly_rem(
21161        R: *mut fmpz,
21162        A: *const fmpz,
21163        lenA: mp_limb_signed_t,
21164        B: *const fmpz,
21165        lenB: mp_limb_signed_t,
21166    );
21167}
21168extern "C" {
21169    pub fn fmpz_poly_rem(
21170        R: *mut fmpz_poly_struct,
21171        A: *mut fmpz_poly_struct,
21172        B: *mut fmpz_poly_struct,
21173    );
21174}
21175extern "C" {
21176    pub fn fmpz_poly_div_root(Q: *mut fmpz_poly_struct, A: *mut fmpz_poly_struct, c: *mut fmpz);
21177}
21178extern "C" {
21179    pub fn _fmpz_poly_div_root(Q: *mut fmpz, A: *const fmpz, len: mp_limb_signed_t, c: *mut fmpz);
21180}
21181extern "C" {
21182    pub fn _fmpz_poly_inv_series_basecase(
21183        Qinv: *mut fmpz,
21184        Q: *const fmpz,
21185        Qlen: mp_limb_signed_t,
21186        n: mp_limb_signed_t,
21187    );
21188}
21189extern "C" {
21190    pub fn fmpz_poly_inv_series_basecase(
21191        Qinv: *mut fmpz_poly_struct,
21192        Q: *mut fmpz_poly_struct,
21193        n: mp_limb_signed_t,
21194    );
21195}
21196extern "C" {
21197    pub fn _fmpz_poly_inv_series_newton(
21198        Qinv: *mut fmpz,
21199        Q: *const fmpz,
21200        Qlen: mp_limb_signed_t,
21201        n: mp_limb_signed_t,
21202    );
21203}
21204extern "C" {
21205    pub fn fmpz_poly_inv_series_newton(
21206        Qinv: *mut fmpz_poly_struct,
21207        Q: *mut fmpz_poly_struct,
21208        n: mp_limb_signed_t,
21209    );
21210}
21211extern "C" {
21212    pub fn _fmpz_poly_inv_series(
21213        Qinv: *mut fmpz,
21214        Q: *const fmpz,
21215        Qlen: mp_limb_signed_t,
21216        n: mp_limb_signed_t,
21217    );
21218}
21219extern "C" {
21220    pub fn fmpz_poly_inv_series(
21221        Qinv: *mut fmpz_poly_struct,
21222        Q: *mut fmpz_poly_struct,
21223        n: mp_limb_signed_t,
21224    );
21225}
21226extern "C" {
21227    pub fn _fmpz_poly_div_series_basecase(
21228        Q: *mut fmpz,
21229        A: *const fmpz,
21230        Alen: mp_limb_signed_t,
21231        B: *const fmpz,
21232        Blen: mp_limb_signed_t,
21233        n: mp_limb_signed_t,
21234    );
21235}
21236extern "C" {
21237    pub fn _fmpz_poly_div_series_divconquer(
21238        Q: *mut fmpz,
21239        A: *const fmpz,
21240        Alen: mp_limb_signed_t,
21241        B: *const fmpz,
21242        Blen: mp_limb_signed_t,
21243        n: mp_limb_signed_t,
21244    );
21245}
21246extern "C" {
21247    pub fn _fmpz_poly_div_series(
21248        Q: *mut fmpz,
21249        A: *const fmpz,
21250        Alen: mp_limb_signed_t,
21251        B: *const fmpz,
21252        Blen: mp_limb_signed_t,
21253        n: mp_limb_signed_t,
21254    );
21255}
21256extern "C" {
21257    pub fn fmpz_poly_div_series_basecase(
21258        Q: *mut fmpz_poly_struct,
21259        A: *mut fmpz_poly_struct,
21260        B: *mut fmpz_poly_struct,
21261        n: mp_limb_signed_t,
21262    );
21263}
21264extern "C" {
21265    pub fn fmpz_poly_div_series_divconquer(
21266        Q: *mut fmpz_poly_struct,
21267        A: *mut fmpz_poly_struct,
21268        B: *mut fmpz_poly_struct,
21269        n: mp_limb_signed_t,
21270    );
21271}
21272extern "C" {
21273    pub fn fmpz_poly_div_series(
21274        Q: *mut fmpz_poly_struct,
21275        A: *mut fmpz_poly_struct,
21276        B: *mut fmpz_poly_struct,
21277        n: mp_limb_signed_t,
21278    );
21279}
21280extern "C" {
21281    pub fn _fmpz_poly_divides(
21282        q: *mut fmpz,
21283        a: *const fmpz,
21284        len1: mp_limb_signed_t,
21285        b: *const fmpz,
21286        len2: mp_limb_signed_t,
21287    ) -> ::std::os::raw::c_int;
21288}
21289extern "C" {
21290    pub fn fmpz_poly_divides(
21291        q: *mut fmpz_poly_struct,
21292        a: *mut fmpz_poly_struct,
21293        b: *mut fmpz_poly_struct,
21294    ) -> ::std::os::raw::c_int;
21295}
21296extern "C" {
21297    pub fn fmpz_poly_remove(
21298        res: *mut fmpz_poly_struct,
21299        poly1: *mut fmpz_poly_struct,
21300        poly2: *mut fmpz_poly_struct,
21301    ) -> mp_limb_signed_t;
21302}
21303extern "C" {
21304    pub fn _fmpz_poly_pseudo_divrem_basecase(
21305        Q: *mut fmpz,
21306        R: *mut fmpz,
21307        d: *mut mp_limb_t,
21308        A: *const fmpz,
21309        A_len: mp_limb_signed_t,
21310        B: *const fmpz,
21311        B_len: mp_limb_signed_t,
21312        inv: *mut fmpz_preinvn_struct,
21313    );
21314}
21315extern "C" {
21316    pub fn fmpz_poly_pseudo_divrem_basecase(
21317        Q: *mut fmpz_poly_struct,
21318        R: *mut fmpz_poly_struct,
21319        d: *mut mp_limb_t,
21320        A: *mut fmpz_poly_struct,
21321        B: *mut fmpz_poly_struct,
21322    );
21323}
21324extern "C" {
21325    pub fn _fmpz_poly_pseudo_divrem_divconquer(
21326        Q: *mut fmpz,
21327        R: *mut fmpz,
21328        d: *mut mp_limb_t,
21329        A: *const fmpz,
21330        lenA: mp_limb_signed_t,
21331        B: *const fmpz,
21332        lenB: mp_limb_signed_t,
21333        inv: *mut fmpz_preinvn_struct,
21334    );
21335}
21336extern "C" {
21337    pub fn fmpz_poly_pseudo_divrem_divconquer(
21338        Q: *mut fmpz_poly_struct,
21339        R: *mut fmpz_poly_struct,
21340        d: *mut mp_limb_t,
21341        A: *mut fmpz_poly_struct,
21342        B: *mut fmpz_poly_struct,
21343    );
21344}
21345extern "C" {
21346    pub fn _fmpz_poly_pseudo_divrem_cohen(
21347        Q: *mut fmpz,
21348        R: *mut fmpz,
21349        A: *const fmpz,
21350        lenA: mp_limb_signed_t,
21351        B: *const fmpz,
21352        lenB: mp_limb_signed_t,
21353    );
21354}
21355extern "C" {
21356    pub fn fmpz_poly_pseudo_divrem_cohen(
21357        Q: *mut fmpz_poly_struct,
21358        R: *mut fmpz_poly_struct,
21359        A: *mut fmpz_poly_struct,
21360        B: *mut fmpz_poly_struct,
21361    );
21362}
21363extern "C" {
21364    pub fn _fmpz_poly_pseudo_rem_cohen(
21365        R: *mut fmpz,
21366        A: *const fmpz,
21367        lenA: mp_limb_signed_t,
21368        B: *const fmpz,
21369        lenB: mp_limb_signed_t,
21370    );
21371}
21372extern "C" {
21373    pub fn fmpz_poly_pseudo_rem_cohen(
21374        R: *mut fmpz_poly_struct,
21375        A: *mut fmpz_poly_struct,
21376        B: *mut fmpz_poly_struct,
21377    );
21378}
21379extern "C" {
21380    pub fn _fmpz_poly_pseudo_div(
21381        Q: *mut fmpz,
21382        d: *mut mp_limb_t,
21383        A: *const fmpz,
21384        lenA: mp_limb_signed_t,
21385        B: *const fmpz,
21386        lenB: mp_limb_signed_t,
21387        inv: *mut fmpz_preinvn_struct,
21388    );
21389}
21390extern "C" {
21391    pub fn fmpz_poly_pseudo_div(
21392        Q: *mut fmpz_poly_struct,
21393        d: *mut mp_limb_t,
21394        A: *mut fmpz_poly_struct,
21395        B: *mut fmpz_poly_struct,
21396    );
21397}
21398extern "C" {
21399    pub fn _fmpz_poly_pseudo_rem(
21400        R: *mut fmpz,
21401        d: *mut mp_limb_t,
21402        A: *const fmpz,
21403        lenA: mp_limb_signed_t,
21404        B: *const fmpz,
21405        lenB: mp_limb_signed_t,
21406        inv: *mut fmpz_preinvn_struct,
21407    );
21408}
21409extern "C" {
21410    pub fn fmpz_poly_pseudo_rem(
21411        R: *mut fmpz_poly_struct,
21412        d: *mut mp_limb_t,
21413        A: *mut fmpz_poly_struct,
21414        B: *mut fmpz_poly_struct,
21415    );
21416}
21417extern "C" {
21418    pub fn fmpz_poly_divlow_smodp(
21419        res: *mut fmpz,
21420        f: *mut fmpz_poly_struct,
21421        g: *mut fmpz_poly_struct,
21422        p: *mut fmpz,
21423        n: mp_limb_signed_t,
21424    );
21425}
21426extern "C" {
21427    pub fn fmpz_poly_divhigh_smodp(
21428        res: *mut fmpz,
21429        f: *mut fmpz_poly_struct,
21430        g: *mut fmpz_poly_struct,
21431        p: *mut fmpz,
21432        n: mp_limb_signed_t,
21433    );
21434}
21435extern "C" {
21436    pub fn _fmpz_poly_derivative(rpoly: *mut fmpz, poly: *const fmpz, len: mp_limb_signed_t);
21437}
21438extern "C" {
21439    pub fn fmpz_poly_derivative(res: *mut fmpz_poly_struct, poly: *mut fmpz_poly_struct);
21440}
21441extern "C" {
21442    pub fn _fmpz_poly_evaluate_divconquer_fmpz(
21443        res: *mut fmpz,
21444        poly: *const fmpz,
21445        len: mp_limb_signed_t,
21446        a: *mut fmpz,
21447    );
21448}
21449extern "C" {
21450    pub fn fmpz_poly_evaluate_divconquer_fmpz(
21451        res: *mut fmpz,
21452        poly: *mut fmpz_poly_struct,
21453        a: *mut fmpz,
21454    );
21455}
21456extern "C" {
21457    pub fn _fmpz_poly_evaluate_horner_fmpz(
21458        res: *mut fmpz,
21459        f: *const fmpz,
21460        len: mp_limb_signed_t,
21461        a: *mut fmpz,
21462    );
21463}
21464extern "C" {
21465    pub fn fmpz_poly_evaluate_horner_fmpz(res: *mut fmpz, f: *mut fmpz_poly_struct, a: *mut fmpz);
21466}
21467extern "C" {
21468    pub fn _fmpz_poly_evaluate_fmpz(
21469        res: *mut fmpz,
21470        f: *const fmpz,
21471        len: mp_limb_signed_t,
21472        a: *mut fmpz,
21473    );
21474}
21475extern "C" {
21476    pub fn fmpz_poly_evaluate_fmpz(res: *mut fmpz, f: *mut fmpz_poly_struct, a: *mut fmpz);
21477}
21478extern "C" {
21479    pub fn _fmpz_poly_evaluate_horner_fmpq(
21480        rnum: *mut fmpz,
21481        rden: *mut fmpz,
21482        f: *const fmpz,
21483        len: mp_limb_signed_t,
21484        anum: *mut fmpz,
21485        aden: *mut fmpz,
21486    );
21487}
21488extern "C" {
21489    pub fn fmpz_poly_evaluate_horner_fmpq(res: *mut fmpq, f: *mut fmpz_poly_struct, a: *mut fmpq);
21490}
21491extern "C" {
21492    pub fn _fmpz_poly_evaluate_divconquer_fmpq(
21493        rnum: *mut fmpz,
21494        rden: *mut fmpz,
21495        f: *const fmpz,
21496        len: mp_limb_signed_t,
21497        anum: *mut fmpz,
21498        aden: *mut fmpz,
21499    );
21500}
21501extern "C" {
21502    pub fn fmpz_poly_evaluate_divconquer_fmpq(
21503        res: *mut fmpq,
21504        f: *mut fmpz_poly_struct,
21505        a: *mut fmpq,
21506    );
21507}
21508extern "C" {
21509    pub fn _fmpz_poly_evaluate_fmpq(
21510        rnum: *mut fmpz,
21511        rden: *mut fmpz,
21512        f: *const fmpz,
21513        len: mp_limb_signed_t,
21514        anum: *mut fmpz,
21515        aden: *mut fmpz,
21516    );
21517}
21518extern "C" {
21519    pub fn fmpz_poly_evaluate_fmpq(res: *mut fmpq, f: *mut fmpz_poly_struct, a: *mut fmpq);
21520}
21521extern "C" {
21522    pub fn fmpz_poly_evaluate_mpq(
21523        res: *mut __mpq_struct,
21524        f: *mut fmpz_poly_struct,
21525        a: *mut __mpq_struct,
21526    );
21527}
21528extern "C" {
21529    pub fn _fmpz_poly_evaluate_mod(
21530        poly: *const fmpz,
21531        len: mp_limb_signed_t,
21532        a: mp_limb_t,
21533        n: mp_limb_t,
21534        ninv: mp_limb_t,
21535    ) -> mp_limb_t;
21536}
21537extern "C" {
21538    pub fn fmpz_poly_evaluate_mod(
21539        poly: *mut fmpz_poly_struct,
21540        a: mp_limb_t,
21541        n: mp_limb_t,
21542    ) -> mp_limb_t;
21543}
21544extern "C" {
21545    pub fn _fmpz_poly_evaluate_horner_d(poly: *const fmpz, n: mp_limb_signed_t, d: f64) -> f64;
21546}
21547extern "C" {
21548    pub fn fmpz_poly_evaluate_horner_d(poly: *mut fmpz_poly_struct, d: f64) -> f64;
21549}
21550extern "C" {
21551    pub fn _fmpz_poly_evaluate_horner_d_2exp(
21552        exp: *mut mp_limb_signed_t,
21553        poly: *const fmpz,
21554        n: mp_limb_signed_t,
21555        d: f64,
21556    ) -> f64;
21557}
21558extern "C" {
21559    pub fn fmpz_poly_evaluate_horner_d_2exp(
21560        exp: *mut mp_limb_signed_t,
21561        poly: *mut fmpz_poly_struct,
21562        d: f64,
21563    ) -> f64;
21564}
21565extern "C" {
21566    pub fn _fmpz_poly_evaluate_horner_d_2exp2(
21567        exp: *mut mp_limb_signed_t,
21568        poly: *const fmpz,
21569        n: mp_limb_signed_t,
21570        d: f64,
21571        dexp: mp_limb_signed_t,
21572        prec_in: mp_limb_t,
21573    ) -> f64;
21574}
21575extern "C" {
21576    pub fn fmpz_poly_evaluate_horner_d_2exp2(
21577        exp: *mut mp_limb_signed_t,
21578        poly: *mut fmpz_poly_struct,
21579        d: f64,
21580        dexp: mp_limb_signed_t,
21581        prec: mp_limb_t,
21582    ) -> f64;
21583}
21584extern "C" {
21585    pub fn _fmpz_poly_compose_horner(
21586        res: *mut fmpz,
21587        poly1: *const fmpz,
21588        len1: mp_limb_signed_t,
21589        poly2: *const fmpz,
21590        len2: mp_limb_signed_t,
21591    );
21592}
21593extern "C" {
21594    pub fn fmpz_poly_compose_horner(
21595        res: *mut fmpz_poly_struct,
21596        poly1: *mut fmpz_poly_struct,
21597        poly2: *mut fmpz_poly_struct,
21598    );
21599}
21600extern "C" {
21601    pub fn _fmpz_poly_compose_divconquer(
21602        res: *mut fmpz,
21603        poly1: *const fmpz,
21604        len1: mp_limb_signed_t,
21605        poly2: *const fmpz,
21606        len2: mp_limb_signed_t,
21607    );
21608}
21609extern "C" {
21610    pub fn fmpz_poly_compose_divconquer(
21611        res: *mut fmpz_poly_struct,
21612        poly1: *mut fmpz_poly_struct,
21613        poly2: *mut fmpz_poly_struct,
21614    );
21615}
21616extern "C" {
21617    pub fn _fmpz_poly_compose(
21618        res: *mut fmpz,
21619        poly1: *const fmpz,
21620        len1: mp_limb_signed_t,
21621        poly2: *const fmpz,
21622        len2: mp_limb_signed_t,
21623    );
21624}
21625extern "C" {
21626    pub fn fmpz_poly_compose(
21627        res: *mut fmpz_poly_struct,
21628        poly1: *mut fmpz_poly_struct,
21629        poly2: *mut fmpz_poly_struct,
21630    );
21631}
21632extern "C" {
21633    pub fn _fmpz_poly_taylor_shift_horner(poly: *mut fmpz, c: *mut fmpz, n: mp_limb_signed_t);
21634}
21635extern "C" {
21636    pub fn fmpz_poly_taylor_shift_horner(
21637        g: *mut fmpz_poly_struct,
21638        f: *mut fmpz_poly_struct,
21639        c: *mut fmpz,
21640    );
21641}
21642extern "C" {
21643    pub fn _fmpz_poly_taylor_shift_divconquer(poly: *mut fmpz, c: *mut fmpz, n: mp_limb_signed_t);
21644}
21645extern "C" {
21646    pub fn fmpz_poly_taylor_shift_divconquer(
21647        g: *mut fmpz_poly_struct,
21648        f: *mut fmpz_poly_struct,
21649        c: *mut fmpz,
21650    );
21651}
21652extern "C" {
21653    pub fn _fmpz_poly_taylor_shift_multi_mod(poly: *mut fmpz, c: *mut fmpz, n: mp_limb_signed_t);
21654}
21655extern "C" {
21656    pub fn _fmpz_poly_taylor_shift(poly: *mut fmpz, c: *mut fmpz, n: mp_limb_signed_t);
21657}
21658extern "C" {
21659    pub fn fmpz_poly_taylor_shift(g: *mut fmpz_poly_struct, f: *mut fmpz_poly_struct, c: *mut fmpz);
21660}
21661extern "C" {
21662    pub fn _fmpz_poly_compose_series_brent_kung(
21663        res: *mut fmpz,
21664        poly1: *const fmpz,
21665        len1: mp_limb_signed_t,
21666        poly2: *const fmpz,
21667        len2: mp_limb_signed_t,
21668        n: mp_limb_signed_t,
21669    );
21670}
21671extern "C" {
21672    pub fn fmpz_poly_compose_series_brent_kung(
21673        res: *mut fmpz_poly_struct,
21674        poly1: *mut fmpz_poly_struct,
21675        poly2: *mut fmpz_poly_struct,
21676        n: mp_limb_signed_t,
21677    );
21678}
21679extern "C" {
21680    pub fn _fmpz_poly_compose_series_horner(
21681        res: *mut fmpz,
21682        poly1: *const fmpz,
21683        len1: mp_limb_signed_t,
21684        poly2: *const fmpz,
21685        len2: mp_limb_signed_t,
21686        n: mp_limb_signed_t,
21687    );
21688}
21689extern "C" {
21690    pub fn fmpz_poly_compose_series_horner(
21691        res: *mut fmpz_poly_struct,
21692        poly1: *mut fmpz_poly_struct,
21693        poly2: *mut fmpz_poly_struct,
21694        n: mp_limb_signed_t,
21695    );
21696}
21697extern "C" {
21698    pub fn _fmpz_poly_compose_series(
21699        res: *mut fmpz,
21700        poly1: *const fmpz,
21701        len1: mp_limb_signed_t,
21702        poly2: *const fmpz,
21703        len2: mp_limb_signed_t,
21704        n: mp_limb_signed_t,
21705    );
21706}
21707extern "C" {
21708    pub fn fmpz_poly_compose_series(
21709        res: *mut fmpz_poly_struct,
21710        poly1: *mut fmpz_poly_struct,
21711        poly2: *mut fmpz_poly_struct,
21712        n: mp_limb_signed_t,
21713    );
21714}
21715extern "C" {
21716    pub fn _fmpz_poly_revert_series_lagrange(
21717        Qinv: *mut fmpz,
21718        Q: *const fmpz,
21719        Qlen: mp_limb_signed_t,
21720        n: mp_limb_signed_t,
21721    );
21722}
21723extern "C" {
21724    pub fn fmpz_poly_revert_series_lagrange(
21725        Qinv: *mut fmpz_poly_struct,
21726        Q: *mut fmpz_poly_struct,
21727        n: mp_limb_signed_t,
21728    );
21729}
21730extern "C" {
21731    pub fn _fmpz_poly_revert_series_lagrange_fast(
21732        Qinv: *mut fmpz,
21733        Q: *const fmpz,
21734        Qlen: mp_limb_signed_t,
21735        n: mp_limb_signed_t,
21736    );
21737}
21738extern "C" {
21739    pub fn fmpz_poly_revert_series_lagrange_fast(
21740        Qinv: *mut fmpz_poly_struct,
21741        Q: *mut fmpz_poly_struct,
21742        n: mp_limb_signed_t,
21743    );
21744}
21745extern "C" {
21746    pub fn _fmpz_poly_revert_series_newton(
21747        Qinv: *mut fmpz,
21748        Q: *const fmpz,
21749        Qlen: mp_limb_signed_t,
21750        n: mp_limb_signed_t,
21751    );
21752}
21753extern "C" {
21754    pub fn fmpz_poly_revert_series_newton(
21755        Qinv: *mut fmpz_poly_struct,
21756        Q: *mut fmpz_poly_struct,
21757        n: mp_limb_signed_t,
21758    );
21759}
21760extern "C" {
21761    pub fn _fmpz_poly_revert_series(
21762        Qinv: *mut fmpz,
21763        Q: *const fmpz,
21764        Qlen: mp_limb_signed_t,
21765        n: mp_limb_signed_t,
21766    );
21767}
21768extern "C" {
21769    pub fn fmpz_poly_revert_series(
21770        Qinv: *mut fmpz_poly_struct,
21771        Q: *mut fmpz_poly_struct,
21772        n: mp_limb_signed_t,
21773    );
21774}
21775extern "C" {
21776    pub fn _fmpz_poly_sqrtrem_classical(
21777        res: *mut fmpz,
21778        r: *mut fmpz,
21779        poly: *const fmpz,
21780        len: mp_limb_signed_t,
21781    ) -> ::std::os::raw::c_int;
21782}
21783extern "C" {
21784    pub fn fmpz_poly_sqrtrem_classical(
21785        b: *mut fmpz_poly_struct,
21786        r: *mut fmpz_poly_struct,
21787        a: *mut fmpz_poly_struct,
21788    ) -> ::std::os::raw::c_int;
21789}
21790extern "C" {
21791    pub fn _fmpz_poly_sqrtrem_divconquer(
21792        res: *mut fmpz,
21793        r: *mut fmpz,
21794        poly: *const fmpz,
21795        len: mp_limb_signed_t,
21796        temp: *mut fmpz,
21797    ) -> ::std::os::raw::c_int;
21798}
21799extern "C" {
21800    pub fn fmpz_poly_sqrtrem_divconquer(
21801        b: *mut fmpz_poly_struct,
21802        r: *mut fmpz_poly_struct,
21803        a: *mut fmpz_poly_struct,
21804    ) -> ::std::os::raw::c_int;
21805}
21806extern "C" {
21807    pub fn _fmpz_poly_sqrt_classical(
21808        res: *mut fmpz,
21809        poly: *const fmpz,
21810        len: mp_limb_signed_t,
21811        exact: ::std::os::raw::c_int,
21812    ) -> ::std::os::raw::c_int;
21813}
21814extern "C" {
21815    pub fn fmpz_poly_sqrt_classical(
21816        b: *mut fmpz_poly_struct,
21817        a: *mut fmpz_poly_struct,
21818    ) -> ::std::os::raw::c_int;
21819}
21820extern "C" {
21821    pub fn _fmpz_poly_sqrt_divconquer(
21822        res: *mut fmpz,
21823        poly: *const fmpz,
21824        len: mp_limb_signed_t,
21825        exact: ::std::os::raw::c_int,
21826    ) -> ::std::os::raw::c_int;
21827}
21828extern "C" {
21829    pub fn fmpz_poly_sqrt_divconquer(
21830        b: *mut fmpz_poly_struct,
21831        a: *mut fmpz_poly_struct,
21832    ) -> ::std::os::raw::c_int;
21833}
21834extern "C" {
21835    pub fn _fmpz_poly_sqrt_KS(
21836        rop: *mut fmpz,
21837        op: *const fmpz,
21838        len: mp_limb_signed_t,
21839    ) -> ::std::os::raw::c_int;
21840}
21841extern "C" {
21842    pub fn fmpz_poly_sqrt_KS(
21843        b: *mut fmpz_poly_struct,
21844        a: *mut fmpz_poly_struct,
21845    ) -> ::std::os::raw::c_int;
21846}
21847extern "C" {
21848    pub fn _fmpz_poly_sqrt(
21849        res: *mut fmpz,
21850        poly: *const fmpz,
21851        len: mp_limb_signed_t,
21852    ) -> ::std::os::raw::c_int;
21853}
21854extern "C" {
21855    pub fn fmpz_poly_sqrt(
21856        b: *mut fmpz_poly_struct,
21857        a: *mut fmpz_poly_struct,
21858    ) -> ::std::os::raw::c_int;
21859}
21860extern "C" {
21861    pub fn _fmpz_poly_sqrt_series(
21862        res: *mut fmpz,
21863        poly: *const fmpz,
21864        len: mp_limb_signed_t,
21865        n: mp_limb_signed_t,
21866    ) -> ::std::os::raw::c_int;
21867}
21868extern "C" {
21869    pub fn fmpz_poly_sqrt_series(
21870        b: *mut fmpz_poly_struct,
21871        a: *mut fmpz_poly_struct,
21872        n: mp_limb_signed_t,
21873    ) -> ::std::os::raw::c_int;
21874}
21875extern "C" {
21876    pub fn _fmpz_poly_power_sums_naive(
21877        res: *mut fmpz,
21878        poly: *const fmpz,
21879        len: mp_limb_signed_t,
21880        n: mp_limb_signed_t,
21881    );
21882}
21883extern "C" {
21884    pub fn fmpz_poly_power_sums_naive(
21885        res: *mut fmpz_poly_struct,
21886        poly: *mut fmpz_poly_struct,
21887        n: mp_limb_signed_t,
21888    );
21889}
21890extern "C" {
21891    pub fn fmpz_poly_power_sums(
21892        res: *mut fmpz_poly_struct,
21893        poly: *mut fmpz_poly_struct,
21894        n: mp_limb_signed_t,
21895    );
21896}
21897extern "C" {
21898    pub fn _fmpz_poly_power_sums_to_poly(res: *mut fmpz, poly: *const fmpz, len: mp_limb_signed_t);
21899}
21900extern "C" {
21901    pub fn fmpz_poly_power_sums_to_poly(res: *mut fmpz_poly_struct, Q: *mut fmpz_poly_struct);
21902}
21903extern "C" {
21904    pub fn _fmpz_poly_signature(
21905        r1: *mut mp_limb_signed_t,
21906        r2: *mut mp_limb_signed_t,
21907        poly: *const fmpz,
21908        len: mp_limb_signed_t,
21909    );
21910}
21911extern "C" {
21912    pub fn fmpz_poly_signature(
21913        r1: *mut mp_limb_signed_t,
21914        r2: *mut mp_limb_signed_t,
21915        poly: *mut fmpz_poly_struct,
21916    );
21917}
21918extern "C" {
21919    pub fn _fmpz_poly_fprint(
21920        file: *mut FILE,
21921        poly: *const fmpz,
21922        len: mp_limb_signed_t,
21923    ) -> ::std::os::raw::c_int;
21924}
21925extern "C" {
21926    pub fn fmpz_poly_fprint(file: *mut FILE, poly: *mut fmpz_poly_struct) -> ::std::os::raw::c_int;
21927}
21928extern "C" {
21929    pub fn _fmpz_poly_fprint_pretty(
21930        file: *mut FILE,
21931        poly: *const fmpz,
21932        len: mp_limb_signed_t,
21933        x: *const ::std::os::raw::c_char,
21934    ) -> ::std::os::raw::c_int;
21935}
21936extern "C" {
21937    pub fn fmpz_poly_fprint_pretty(
21938        file: *mut FILE,
21939        poly: *mut fmpz_poly_struct,
21940        x: *const ::std::os::raw::c_char,
21941    ) -> ::std::os::raw::c_int;
21942}
21943extern "C" {
21944    pub fn fmpz_poly_fread(file: *mut FILE, poly: *mut fmpz_poly_struct) -> ::std::os::raw::c_int;
21945}
21946extern "C" {
21947    pub fn fmpz_poly_fread_pretty(
21948        file: *mut FILE,
21949        poly: *mut fmpz_poly_struct,
21950        x: *mut *mut ::std::os::raw::c_char,
21951    ) -> ::std::os::raw::c_int;
21952}
21953extern "C" {
21954    pub fn fmpz_poly_get_nmod_poly(res: *mut nmod_poly_struct, poly: *mut fmpz_poly_struct);
21955}
21956extern "C" {
21957    pub fn fmpz_poly_set_nmod_poly(res: *mut fmpz_poly_struct, poly: *mut nmod_poly_struct);
21958}
21959extern "C" {
21960    pub fn fmpz_poly_set_nmod_poly_unsigned(
21961        res: *mut fmpz_poly_struct,
21962        poly: *mut nmod_poly_struct,
21963    );
21964}
21965extern "C" {
21966    pub fn _fmpz_poly_CRT_ui_precomp(
21967        res: *mut fmpz,
21968        poly1: *const fmpz,
21969        len1: mp_limb_signed_t,
21970        m1: *mut fmpz,
21971        poly2: mp_srcptr,
21972        len2: mp_limb_signed_t,
21973        m2: mp_limb_t,
21974        m2inv: mp_limb_t,
21975        m1m2: *mut fmpz,
21976        c: mp_limb_t,
21977        sign: ::std::os::raw::c_int,
21978    );
21979}
21980extern "C" {
21981    pub fn _fmpz_poly_CRT_ui(
21982        res: *mut fmpz,
21983        poly1: *const fmpz,
21984        len1: mp_limb_signed_t,
21985        m1: *mut fmpz,
21986        poly2: mp_srcptr,
21987        len2: mp_limb_signed_t,
21988        m2: mp_limb_t,
21989        m2inv: mp_limb_t,
21990        sign: ::std::os::raw::c_int,
21991    );
21992}
21993extern "C" {
21994    pub fn fmpz_poly_CRT_ui(
21995        res: *mut fmpz_poly_struct,
21996        poly1: *mut fmpz_poly_struct,
21997        m1: *mut fmpz,
21998        poly2: *mut nmod_poly_struct,
21999        sign: ::std::os::raw::c_int,
22000    );
22001}
22002extern "C" {
22003    pub fn _fmpz_poly_product_roots_fmpz_vec(poly: *mut fmpz, xs: *const fmpz, n: mp_limb_signed_t);
22004}
22005extern "C" {
22006    pub fn fmpz_poly_product_roots_fmpz_vec(
22007        poly: *mut fmpz_poly_struct,
22008        xs: *const fmpz,
22009        n: mp_limb_signed_t,
22010    );
22011}
22012extern "C" {
22013    pub fn _fmpz_poly_product_roots_fmpq_vec(poly: *mut fmpz, xs: *const fmpq, n: mp_limb_signed_t);
22014}
22015extern "C" {
22016    pub fn fmpz_poly_product_roots_fmpq_vec(
22017        poly: *mut fmpz_poly_struct,
22018        xs: *const fmpq,
22019        n: mp_limb_signed_t,
22020    );
22021}
22022extern "C" {
22023    pub fn _fmpz_poly_monomial_to_newton(poly: *mut fmpz, roots: *const fmpz, n: mp_limb_signed_t);
22024}
22025extern "C" {
22026    pub fn _fmpz_poly_newton_to_monomial(poly: *mut fmpz, roots: *const fmpz, n: mp_limb_signed_t);
22027}
22028extern "C" {
22029    pub fn fmpz_poly_evaluate_fmpz_vec(
22030        res: *mut fmpz,
22031        f: *mut fmpz_poly_struct,
22032        a: *const fmpz,
22033        n: mp_limb_signed_t,
22034    );
22035}
22036extern "C" {
22037    pub fn fmpz_poly_interpolate_fmpz_vec(
22038        poly: *mut fmpz_poly_struct,
22039        xs: *const fmpz,
22040        ys: *const fmpz,
22041        n: mp_limb_signed_t,
22042    );
22043}
22044extern "C" {
22045    pub fn fmpz_poly_hensel_build_tree(
22046        link: *mut mp_limb_signed_t,
22047        v: *mut fmpz_poly_t,
22048        w: *mut fmpz_poly_t,
22049        fac: *mut nmod_poly_factor_struct,
22050    );
22051}
22052extern "C" {
22053    pub fn fmpz_poly_hensel_lift(
22054        Gout: *mut fmpz_poly_struct,
22055        Hout: *mut fmpz_poly_struct,
22056        Aout: *mut fmpz_poly_struct,
22057        Bout: *mut fmpz_poly_struct,
22058        f: *mut fmpz_poly_struct,
22059        g: *mut fmpz_poly_struct,
22060        h: *mut fmpz_poly_struct,
22061        a: *mut fmpz_poly_struct,
22062        b: *mut fmpz_poly_struct,
22063        p: *mut fmpz,
22064        p1: *mut fmpz,
22065    );
22066}
22067extern "C" {
22068    pub fn _fmpz_poly_hensel_lift_without_inverse(
22069        G: *mut fmpz,
22070        H: *mut fmpz,
22071        f: *const fmpz,
22072        lenF: mp_limb_signed_t,
22073        g: *const fmpz,
22074        lenG: mp_limb_signed_t,
22075        h: *const fmpz,
22076        lenH: mp_limb_signed_t,
22077        a: *const fmpz,
22078        lenA: mp_limb_signed_t,
22079        b: *const fmpz,
22080        lenB: mp_limb_signed_t,
22081        p: *mut fmpz,
22082        p1: *mut fmpz,
22083    );
22084}
22085extern "C" {
22086    pub fn fmpz_poly_hensel_lift_without_inverse(
22087        Gout: *mut fmpz_poly_struct,
22088        Hout: *mut fmpz_poly_struct,
22089        f: *mut fmpz_poly_struct,
22090        g: *mut fmpz_poly_struct,
22091        h: *mut fmpz_poly_struct,
22092        a: *mut fmpz_poly_struct,
22093        b: *mut fmpz_poly_struct,
22094        p: *mut fmpz,
22095        p1: *mut fmpz,
22096    );
22097}
22098extern "C" {
22099    pub fn _fmpz_poly_hensel_lift_only_inverse(
22100        A: *mut fmpz,
22101        B: *mut fmpz,
22102        G: *const fmpz,
22103        lenG: mp_limb_signed_t,
22104        H: *const fmpz,
22105        lenH: mp_limb_signed_t,
22106        a: *const fmpz,
22107        lenA: mp_limb_signed_t,
22108        b: *const fmpz,
22109        lenB: mp_limb_signed_t,
22110        p: *mut fmpz,
22111        p1: *mut fmpz,
22112    );
22113}
22114extern "C" {
22115    pub fn fmpz_poly_hensel_lift_only_inverse(
22116        Aout: *mut fmpz_poly_struct,
22117        Bout: *mut fmpz_poly_struct,
22118        G: *mut fmpz_poly_struct,
22119        H: *mut fmpz_poly_struct,
22120        a: *mut fmpz_poly_struct,
22121        b: *mut fmpz_poly_struct,
22122        p: *mut fmpz,
22123        p1: *mut fmpz,
22124    );
22125}
22126extern "C" {
22127    pub fn fmpz_poly_hensel_lift_tree_recursive(
22128        link: *mut mp_limb_signed_t,
22129        v: *mut fmpz_poly_t,
22130        w: *mut fmpz_poly_t,
22131        f: *mut fmpz_poly_struct,
22132        j: mp_limb_signed_t,
22133        inv: mp_limb_signed_t,
22134        p0: *mut fmpz,
22135        p1: *mut fmpz,
22136    );
22137}
22138extern "C" {
22139    pub fn fmpz_poly_hensel_lift_tree(
22140        link: *mut mp_limb_signed_t,
22141        v: *mut fmpz_poly_t,
22142        w: *mut fmpz_poly_t,
22143        f: *mut fmpz_poly_struct,
22144        r: mp_limb_signed_t,
22145        p: *mut fmpz,
22146        e0: mp_limb_signed_t,
22147        e1: mp_limb_signed_t,
22148        inv: mp_limb_signed_t,
22149    );
22150}
22151extern "C" {
22152    pub fn _fmpz_poly_hensel_start_lift(
22153        lifted_fac: *mut fmpz_poly_factor_struct,
22154        link: *mut mp_limb_signed_t,
22155        v: *mut fmpz_poly_t,
22156        w: *mut fmpz_poly_t,
22157        f: *mut fmpz_poly_struct,
22158        local_fac: *mut nmod_poly_factor_struct,
22159        target_exp: mp_limb_signed_t,
22160    ) -> mp_limb_signed_t;
22161}
22162extern "C" {
22163    pub fn _fmpz_poly_hensel_continue_lift(
22164        lifted_fac: *mut fmpz_poly_factor_struct,
22165        link: *mut mp_limb_signed_t,
22166        v: *mut fmpz_poly_t,
22167        w: *mut fmpz_poly_t,
22168        f: *mut fmpz_poly_struct,
22169        prev: mp_limb_signed_t,
22170        curr: mp_limb_signed_t,
22171        N: mp_limb_signed_t,
22172        p: *mut fmpz,
22173    ) -> mp_limb_signed_t;
22174}
22175extern "C" {
22176    pub fn fmpz_poly_hensel_lift_once(
22177        lifted_fac: *mut fmpz_poly_factor_struct,
22178        f: *mut fmpz_poly_struct,
22179        local_fac: *mut nmod_poly_factor_struct,
22180        N: mp_limb_signed_t,
22181    );
22182}
22183extern "C" {
22184    pub fn _fmpz_poly_bound_roots(bound: *mut fmpz, poly: *const fmpz, len: mp_limb_signed_t);
22185}
22186extern "C" {
22187    pub fn fmpz_poly_bound_roots(bound: *mut fmpz, poly: *mut fmpz_poly_struct);
22188}
22189extern "C" {
22190    pub fn _fmpz_poly_num_real_roots_sturm(
22191        n_neg: *mut mp_limb_signed_t,
22192        n_pos: *mut mp_limb_signed_t,
22193        pol: *const fmpz,
22194        len: mp_limb_signed_t,
22195    );
22196}
22197extern "C" {
22198    pub fn fmpz_poly_num_real_roots_sturm(poly: *mut fmpz_poly_struct) -> mp_limb_signed_t;
22199}
22200extern "C" {
22201    pub fn _fmpz_poly_num_real_roots(pol: *const fmpz, len: mp_limb_signed_t) -> mp_limb_signed_t;
22202}
22203extern "C" {
22204    pub fn fmpz_poly_num_real_roots(poly: *mut fmpz_poly_struct) -> mp_limb_signed_t;
22205}
22206extern "C" {
22207    pub fn fmpz_poly_CLD_bound(res: *mut fmpz, f: *mut fmpz_poly_struct, n: mp_limb_signed_t);
22208}
22209extern "C" {
22210    pub fn _fmpz_poly_cyclotomic(
22211        a: *mut fmpz,
22212        n: mp_limb_t,
22213        factors: mp_ptr,
22214        num_factors: mp_limb_signed_t,
22215        phi: mp_limb_t,
22216    );
22217}
22218extern "C" {
22219    pub fn fmpz_poly_cyclotomic(poly: *mut fmpz_poly_struct, n: mp_limb_t);
22220}
22221extern "C" {
22222    pub fn _fmpz_poly_is_cyclotomic(poly: *const fmpz, len: mp_limb_signed_t) -> mp_limb_t;
22223}
22224extern "C" {
22225    pub fn fmpz_poly_is_cyclotomic(poly: *mut fmpz_poly_struct) -> mp_limb_t;
22226}
22227extern "C" {
22228    pub fn _fmpz_poly_cos_minpoly(f: *mut fmpz, n: mp_limb_t);
22229}
22230extern "C" {
22231    pub fn fmpz_poly_cos_minpoly(f: *mut fmpz_poly_struct, n: mp_limb_t);
22232}
22233extern "C" {
22234    pub fn _fmpz_poly_swinnerton_dyer(T: *mut fmpz, n: mp_limb_t);
22235}
22236extern "C" {
22237    pub fn fmpz_poly_swinnerton_dyer(poly: *mut fmpz_poly_struct, n: mp_limb_t);
22238}
22239extern "C" {
22240    pub fn _fmpz_poly_chebyshev_t(coeffs: *mut fmpz, n: mp_limb_t);
22241}
22242extern "C" {
22243    pub fn fmpz_poly_chebyshev_t(poly: *mut fmpz_poly_struct, n: mp_limb_t);
22244}
22245extern "C" {
22246    pub fn _fmpz_poly_chebyshev_u(coeffs: *mut fmpz, n: mp_limb_t);
22247}
22248extern "C" {
22249    pub fn fmpz_poly_chebyshev_u(poly: *mut fmpz_poly_struct, n: mp_limb_t);
22250}
22251extern "C" {
22252    pub fn _fmpz_poly_legendre_pt(coeffs: *mut fmpz, n: mp_limb_t);
22253}
22254extern "C" {
22255    pub fn fmpz_poly_legendre_pt(poly: *mut fmpz_poly_struct, n: mp_limb_t);
22256}
22257extern "C" {
22258    pub fn _fmpz_poly_hermite_h(coeffs: *mut fmpz, n: mp_limb_t);
22259}
22260extern "C" {
22261    pub fn fmpz_poly_hermite_h(poly: *mut fmpz_poly_struct, n: mp_limb_t);
22262}
22263extern "C" {
22264    pub fn _fmpz_poly_hermite_he(coeffs: *mut fmpz, n: mp_limb_t);
22265}
22266extern "C" {
22267    pub fn fmpz_poly_hermite_he(poly: *mut fmpz_poly_struct, n: mp_limb_t);
22268}
22269extern "C" {
22270    pub fn _fmpz_poly_fibonacci(coeffs: *mut fmpz, n: mp_limb_t);
22271}
22272extern "C" {
22273    pub fn fmpz_poly_fibonacci(poly: *mut fmpz_poly_struct, n: mp_limb_t);
22274}
22275extern "C" {
22276    pub fn _fmpz_poly_eta_qexp(f: *mut fmpz, e: mp_limb_signed_t, n: mp_limb_signed_t);
22277}
22278extern "C" {
22279    pub fn fmpz_poly_eta_qexp(f: *mut fmpz_poly_struct, e: mp_limb_signed_t, n: mp_limb_signed_t);
22280}
22281extern "C" {
22282    pub fn _fmpz_poly_theta_qexp(f: *mut fmpz, e: mp_limb_signed_t, n: mp_limb_signed_t);
22283}
22284extern "C" {
22285    pub fn fmpz_poly_theta_qexp(f: *mut fmpz_poly_struct, e: mp_limb_signed_t, n: mp_limb_signed_t);
22286}
22287extern "C" {
22288    pub fn fmpz_poly_add_si(
22289        res: *mut fmpz_poly_struct,
22290        poly: *mut fmpz_poly_struct,
22291        c: mp_limb_signed_t,
22292    );
22293}
22294extern "C" {
22295    pub fn fmpz_poly_sub_si(
22296        res: *mut fmpz_poly_struct,
22297        poly: *mut fmpz_poly_struct,
22298        c: mp_limb_signed_t,
22299    );
22300}
22301extern "C" {
22302    pub fn fmpz_poly_si_sub(
22303        res: *mut fmpz_poly_struct,
22304        c: mp_limb_signed_t,
22305        poly: *mut fmpz_poly_struct,
22306    );
22307}
22308extern "C" {
22309    pub fn fmpz_poly_add_fmpz(
22310        res: *mut fmpz_poly_struct,
22311        poly: *mut fmpz_poly_struct,
22312        c: *mut fmpz,
22313    );
22314}
22315extern "C" {
22316    pub fn fmpz_poly_sub_fmpz(
22317        res: *mut fmpz_poly_struct,
22318        poly: *mut fmpz_poly_struct,
22319        c: *mut fmpz,
22320    );
22321}
22322extern "C" {
22323    pub fn fmpz_poly_fmpz_sub(
22324        res: *mut fmpz_poly_struct,
22325        c: *mut fmpz,
22326        poly: *mut fmpz_poly_struct,
22327    );
22328}
22329pub type float_t = f32;
22330pub type double_t = f64;
22331extern "C" {
22332    pub fn __fpclassify(__value: f64) -> ::std::os::raw::c_int;
22333}
22334extern "C" {
22335    pub fn __signbit(__value: f64) -> ::std::os::raw::c_int;
22336}
22337extern "C" {
22338    pub fn __isinf(__value: f64) -> ::std::os::raw::c_int;
22339}
22340extern "C" {
22341    pub fn __finite(__value: f64) -> ::std::os::raw::c_int;
22342}
22343extern "C" {
22344    pub fn __isnan(__value: f64) -> ::std::os::raw::c_int;
22345}
22346extern "C" {
22347    pub fn __iseqsig(__x: f64, __y: f64) -> ::std::os::raw::c_int;
22348}
22349extern "C" {
22350    pub fn __issignaling(__value: f64) -> ::std::os::raw::c_int;
22351}
22352extern "C" {
22353    pub fn acos(__x: f64) -> f64;
22354}
22355extern "C" {
22356    pub fn __acos(__x: f64) -> f64;
22357}
22358extern "C" {
22359    pub fn asin(__x: f64) -> f64;
22360}
22361extern "C" {
22362    pub fn __asin(__x: f64) -> f64;
22363}
22364extern "C" {
22365    pub fn atan(__x: f64) -> f64;
22366}
22367extern "C" {
22368    pub fn __atan(__x: f64) -> f64;
22369}
22370extern "C" {
22371    pub fn atan2(__y: f64, __x: f64) -> f64;
22372}
22373extern "C" {
22374    pub fn __atan2(__y: f64, __x: f64) -> f64;
22375}
22376extern "C" {
22377    pub fn cos(__x: f64) -> f64;
22378}
22379extern "C" {
22380    pub fn __cos(__x: f64) -> f64;
22381}
22382extern "C" {
22383    pub fn sin(__x: f64) -> f64;
22384}
22385extern "C" {
22386    pub fn __sin(__x: f64) -> f64;
22387}
22388extern "C" {
22389    pub fn tan(__x: f64) -> f64;
22390}
22391extern "C" {
22392    pub fn __tan(__x: f64) -> f64;
22393}
22394extern "C" {
22395    pub fn cosh(__x: f64) -> f64;
22396}
22397extern "C" {
22398    pub fn __cosh(__x: f64) -> f64;
22399}
22400extern "C" {
22401    pub fn sinh(__x: f64) -> f64;
22402}
22403extern "C" {
22404    pub fn __sinh(__x: f64) -> f64;
22405}
22406extern "C" {
22407    pub fn tanh(__x: f64) -> f64;
22408}
22409extern "C" {
22410    pub fn __tanh(__x: f64) -> f64;
22411}
22412extern "C" {
22413    pub fn acosh(__x: f64) -> f64;
22414}
22415extern "C" {
22416    pub fn __acosh(__x: f64) -> f64;
22417}
22418extern "C" {
22419    pub fn asinh(__x: f64) -> f64;
22420}
22421extern "C" {
22422    pub fn __asinh(__x: f64) -> f64;
22423}
22424extern "C" {
22425    pub fn atanh(__x: f64) -> f64;
22426}
22427extern "C" {
22428    pub fn __atanh(__x: f64) -> f64;
22429}
22430extern "C" {
22431    pub fn exp(__x: f64) -> f64;
22432}
22433extern "C" {
22434    pub fn __exp(__x: f64) -> f64;
22435}
22436extern "C" {
22437    pub fn frexp(__x: f64, __exponent: *mut ::std::os::raw::c_int) -> f64;
22438}
22439extern "C" {
22440    pub fn __frexp(__x: f64, __exponent: *mut ::std::os::raw::c_int) -> f64;
22441}
22442extern "C" {
22443    pub fn ldexp(__x: f64, __exponent: ::std::os::raw::c_int) -> f64;
22444}
22445extern "C" {
22446    pub fn __ldexp(__x: f64, __exponent: ::std::os::raw::c_int) -> f64;
22447}
22448extern "C" {
22449    pub fn log(__x: f64) -> f64;
22450}
22451extern "C" {
22452    pub fn __log(__x: f64) -> f64;
22453}
22454extern "C" {
22455    pub fn log10(__x: f64) -> f64;
22456}
22457extern "C" {
22458    pub fn __log10(__x: f64) -> f64;
22459}
22460extern "C" {
22461    pub fn modf(__x: f64, __iptr: *mut f64) -> f64;
22462}
22463extern "C" {
22464    pub fn __modf(__x: f64, __iptr: *mut f64) -> f64;
22465}
22466extern "C" {
22467    pub fn expm1(__x: f64) -> f64;
22468}
22469extern "C" {
22470    pub fn __expm1(__x: f64) -> f64;
22471}
22472extern "C" {
22473    pub fn log1p(__x: f64) -> f64;
22474}
22475extern "C" {
22476    pub fn __log1p(__x: f64) -> f64;
22477}
22478extern "C" {
22479    pub fn logb(__x: f64) -> f64;
22480}
22481extern "C" {
22482    pub fn __logb(__x: f64) -> f64;
22483}
22484extern "C" {
22485    pub fn exp2(__x: f64) -> f64;
22486}
22487extern "C" {
22488    pub fn __exp2(__x: f64) -> f64;
22489}
22490extern "C" {
22491    pub fn log2(__x: f64) -> f64;
22492}
22493extern "C" {
22494    pub fn __log2(__x: f64) -> f64;
22495}
22496extern "C" {
22497    pub fn pow(__x: f64, __y: f64) -> f64;
22498}
22499extern "C" {
22500    pub fn __pow(__x: f64, __y: f64) -> f64;
22501}
22502extern "C" {
22503    pub fn sqrt(__x: f64) -> f64;
22504}
22505extern "C" {
22506    pub fn __sqrt(__x: f64) -> f64;
22507}
22508extern "C" {
22509    pub fn hypot(__x: f64, __y: f64) -> f64;
22510}
22511extern "C" {
22512    pub fn __hypot(__x: f64, __y: f64) -> f64;
22513}
22514extern "C" {
22515    pub fn cbrt(__x: f64) -> f64;
22516}
22517extern "C" {
22518    pub fn __cbrt(__x: f64) -> f64;
22519}
22520extern "C" {
22521    pub fn ceil(__x: f64) -> f64;
22522}
22523extern "C" {
22524    pub fn __ceil(__x: f64) -> f64;
22525}
22526extern "C" {
22527    pub fn fabs(__x: f64) -> f64;
22528}
22529extern "C" {
22530    pub fn __fabs(__x: f64) -> f64;
22531}
22532extern "C" {
22533    pub fn floor(__x: f64) -> f64;
22534}
22535extern "C" {
22536    pub fn __floor(__x: f64) -> f64;
22537}
22538extern "C" {
22539    pub fn fmod(__x: f64, __y: f64) -> f64;
22540}
22541extern "C" {
22542    pub fn __fmod(__x: f64, __y: f64) -> f64;
22543}
22544extern "C" {
22545    pub fn isinf(__value: f64) -> ::std::os::raw::c_int;
22546}
22547extern "C" {
22548    pub fn finite(__value: f64) -> ::std::os::raw::c_int;
22549}
22550extern "C" {
22551    pub fn drem(__x: f64, __y: f64) -> f64;
22552}
22553extern "C" {
22554    pub fn __drem(__x: f64, __y: f64) -> f64;
22555}
22556extern "C" {
22557    pub fn significand(__x: f64) -> f64;
22558}
22559extern "C" {
22560    pub fn __significand(__x: f64) -> f64;
22561}
22562extern "C" {
22563    pub fn copysign(__x: f64, __y: f64) -> f64;
22564}
22565extern "C" {
22566    pub fn __copysign(__x: f64, __y: f64) -> f64;
22567}
22568extern "C" {
22569    pub fn nan(__tagb: *const ::std::os::raw::c_char) -> f64;
22570}
22571extern "C" {
22572    pub fn __nan(__tagb: *const ::std::os::raw::c_char) -> f64;
22573}
22574extern "C" {
22575    pub fn isnan(__value: f64) -> ::std::os::raw::c_int;
22576}
22577extern "C" {
22578    pub fn j0(arg1: f64) -> f64;
22579}
22580extern "C" {
22581    pub fn __j0(arg1: f64) -> f64;
22582}
22583extern "C" {
22584    pub fn j1(arg1: f64) -> f64;
22585}
22586extern "C" {
22587    pub fn __j1(arg1: f64) -> f64;
22588}
22589extern "C" {
22590    pub fn jn(arg1: ::std::os::raw::c_int, arg2: f64) -> f64;
22591}
22592extern "C" {
22593    pub fn __jn(arg1: ::std::os::raw::c_int, arg2: f64) -> f64;
22594}
22595extern "C" {
22596    pub fn y0(arg1: f64) -> f64;
22597}
22598extern "C" {
22599    pub fn __y0(arg1: f64) -> f64;
22600}
22601extern "C" {
22602    pub fn y1(arg1: f64) -> f64;
22603}
22604extern "C" {
22605    pub fn __y1(arg1: f64) -> f64;
22606}
22607extern "C" {
22608    pub fn yn(arg1: ::std::os::raw::c_int, arg2: f64) -> f64;
22609}
22610extern "C" {
22611    pub fn __yn(arg1: ::std::os::raw::c_int, arg2: f64) -> f64;
22612}
22613extern "C" {
22614    pub fn erf(arg1: f64) -> f64;
22615}
22616extern "C" {
22617    pub fn __erf(arg1: f64) -> f64;
22618}
22619extern "C" {
22620    pub fn erfc(arg1: f64) -> f64;
22621}
22622extern "C" {
22623    pub fn __erfc(arg1: f64) -> f64;
22624}
22625extern "C" {
22626    pub fn lgamma(arg1: f64) -> f64;
22627}
22628extern "C" {
22629    pub fn __lgamma(arg1: f64) -> f64;
22630}
22631extern "C" {
22632    pub fn tgamma(arg1: f64) -> f64;
22633}
22634extern "C" {
22635    pub fn __tgamma(arg1: f64) -> f64;
22636}
22637extern "C" {
22638    pub fn gamma(arg1: f64) -> f64;
22639}
22640extern "C" {
22641    pub fn __gamma(arg1: f64) -> f64;
22642}
22643extern "C" {
22644    pub fn lgamma_r(arg1: f64, __signgamp: *mut ::std::os::raw::c_int) -> f64;
22645}
22646extern "C" {
22647    pub fn __lgamma_r(arg1: f64, __signgamp: *mut ::std::os::raw::c_int) -> f64;
22648}
22649extern "C" {
22650    pub fn rint(__x: f64) -> f64;
22651}
22652extern "C" {
22653    pub fn __rint(__x: f64) -> f64;
22654}
22655extern "C" {
22656    pub fn nextafter(__x: f64, __y: f64) -> f64;
22657}
22658extern "C" {
22659    pub fn __nextafter(__x: f64, __y: f64) -> f64;
22660}
22661extern "C" {
22662    pub fn nexttoward(__x: f64, __y: u128) -> f64;
22663}
22664extern "C" {
22665    pub fn __nexttoward(__x: f64, __y: u128) -> f64;
22666}
22667extern "C" {
22668    pub fn remainder(__x: f64, __y: f64) -> f64;
22669}
22670extern "C" {
22671    pub fn __remainder(__x: f64, __y: f64) -> f64;
22672}
22673extern "C" {
22674    pub fn scalbn(__x: f64, __n: ::std::os::raw::c_int) -> f64;
22675}
22676extern "C" {
22677    pub fn __scalbn(__x: f64, __n: ::std::os::raw::c_int) -> f64;
22678}
22679extern "C" {
22680    pub fn ilogb(__x: f64) -> ::std::os::raw::c_int;
22681}
22682extern "C" {
22683    pub fn __ilogb(__x: f64) -> ::std::os::raw::c_int;
22684}
22685extern "C" {
22686    pub fn scalbln(__x: f64, __n: ::std::os::raw::c_long) -> f64;
22687}
22688extern "C" {
22689    pub fn __scalbln(__x: f64, __n: ::std::os::raw::c_long) -> f64;
22690}
22691extern "C" {
22692    pub fn nearbyint(__x: f64) -> f64;
22693}
22694extern "C" {
22695    pub fn __nearbyint(__x: f64) -> f64;
22696}
22697extern "C" {
22698    pub fn round(__x: f64) -> f64;
22699}
22700extern "C" {
22701    pub fn __round(__x: f64) -> f64;
22702}
22703extern "C" {
22704    pub fn trunc(__x: f64) -> f64;
22705}
22706extern "C" {
22707    pub fn __trunc(__x: f64) -> f64;
22708}
22709extern "C" {
22710    pub fn remquo(__x: f64, __y: f64, __quo: *mut ::std::os::raw::c_int) -> f64;
22711}
22712extern "C" {
22713    pub fn __remquo(__x: f64, __y: f64, __quo: *mut ::std::os::raw::c_int) -> f64;
22714}
22715extern "C" {
22716    pub fn lrint(__x: f64) -> ::std::os::raw::c_long;
22717}
22718extern "C" {
22719    pub fn __lrint(__x: f64) -> ::std::os::raw::c_long;
22720}
22721extern "C" {
22722    pub fn llrint(__x: f64) -> ::std::os::raw::c_longlong;
22723}
22724extern "C" {
22725    pub fn __llrint(__x: f64) -> ::std::os::raw::c_longlong;
22726}
22727extern "C" {
22728    pub fn lround(__x: f64) -> ::std::os::raw::c_long;
22729}
22730extern "C" {
22731    pub fn __lround(__x: f64) -> ::std::os::raw::c_long;
22732}
22733extern "C" {
22734    pub fn llround(__x: f64) -> ::std::os::raw::c_longlong;
22735}
22736extern "C" {
22737    pub fn __llround(__x: f64) -> ::std::os::raw::c_longlong;
22738}
22739extern "C" {
22740    pub fn fdim(__x: f64, __y: f64) -> f64;
22741}
22742extern "C" {
22743    pub fn __fdim(__x: f64, __y: f64) -> f64;
22744}
22745extern "C" {
22746    pub fn fmax(__x: f64, __y: f64) -> f64;
22747}
22748extern "C" {
22749    pub fn __fmax(__x: f64, __y: f64) -> f64;
22750}
22751extern "C" {
22752    pub fn fmin(__x: f64, __y: f64) -> f64;
22753}
22754extern "C" {
22755    pub fn __fmin(__x: f64, __y: f64) -> f64;
22756}
22757extern "C" {
22758    pub fn fma(__x: f64, __y: f64, __z: f64) -> f64;
22759}
22760extern "C" {
22761    pub fn __fma(__x: f64, __y: f64, __z: f64) -> f64;
22762}
22763extern "C" {
22764    pub fn scalb(__x: f64, __n: f64) -> f64;
22765}
22766extern "C" {
22767    pub fn __scalb(__x: f64, __n: f64) -> f64;
22768}
22769extern "C" {
22770    pub fn __fpclassifyf(__value: f32) -> ::std::os::raw::c_int;
22771}
22772extern "C" {
22773    pub fn __signbitf(__value: f32) -> ::std::os::raw::c_int;
22774}
22775extern "C" {
22776    pub fn __isinff(__value: f32) -> ::std::os::raw::c_int;
22777}
22778extern "C" {
22779    pub fn __finitef(__value: f32) -> ::std::os::raw::c_int;
22780}
22781extern "C" {
22782    pub fn __isnanf(__value: f32) -> ::std::os::raw::c_int;
22783}
22784extern "C" {
22785    pub fn __iseqsigf(__x: f32, __y: f32) -> ::std::os::raw::c_int;
22786}
22787extern "C" {
22788    pub fn __issignalingf(__value: f32) -> ::std::os::raw::c_int;
22789}
22790extern "C" {
22791    pub fn acosf(__x: f32) -> f32;
22792}
22793extern "C" {
22794    pub fn __acosf(__x: f32) -> f32;
22795}
22796extern "C" {
22797    pub fn asinf(__x: f32) -> f32;
22798}
22799extern "C" {
22800    pub fn __asinf(__x: f32) -> f32;
22801}
22802extern "C" {
22803    pub fn atanf(__x: f32) -> f32;
22804}
22805extern "C" {
22806    pub fn __atanf(__x: f32) -> f32;
22807}
22808extern "C" {
22809    pub fn atan2f(__y: f32, __x: f32) -> f32;
22810}
22811extern "C" {
22812    pub fn __atan2f(__y: f32, __x: f32) -> f32;
22813}
22814extern "C" {
22815    pub fn cosf(__x: f32) -> f32;
22816}
22817extern "C" {
22818    pub fn __cosf(__x: f32) -> f32;
22819}
22820extern "C" {
22821    pub fn sinf(__x: f32) -> f32;
22822}
22823extern "C" {
22824    pub fn __sinf(__x: f32) -> f32;
22825}
22826extern "C" {
22827    pub fn tanf(__x: f32) -> f32;
22828}
22829extern "C" {
22830    pub fn __tanf(__x: f32) -> f32;
22831}
22832extern "C" {
22833    pub fn coshf(__x: f32) -> f32;
22834}
22835extern "C" {
22836    pub fn __coshf(__x: f32) -> f32;
22837}
22838extern "C" {
22839    pub fn sinhf(__x: f32) -> f32;
22840}
22841extern "C" {
22842    pub fn __sinhf(__x: f32) -> f32;
22843}
22844extern "C" {
22845    pub fn tanhf(__x: f32) -> f32;
22846}
22847extern "C" {
22848    pub fn __tanhf(__x: f32) -> f32;
22849}
22850extern "C" {
22851    pub fn acoshf(__x: f32) -> f32;
22852}
22853extern "C" {
22854    pub fn __acoshf(__x: f32) -> f32;
22855}
22856extern "C" {
22857    pub fn asinhf(__x: f32) -> f32;
22858}
22859extern "C" {
22860    pub fn __asinhf(__x: f32) -> f32;
22861}
22862extern "C" {
22863    pub fn atanhf(__x: f32) -> f32;
22864}
22865extern "C" {
22866    pub fn __atanhf(__x: f32) -> f32;
22867}
22868extern "C" {
22869    pub fn expf(__x: f32) -> f32;
22870}
22871extern "C" {
22872    pub fn __expf(__x: f32) -> f32;
22873}
22874extern "C" {
22875    pub fn frexpf(__x: f32, __exponent: *mut ::std::os::raw::c_int) -> f32;
22876}
22877extern "C" {
22878    pub fn __frexpf(__x: f32, __exponent: *mut ::std::os::raw::c_int) -> f32;
22879}
22880extern "C" {
22881    pub fn ldexpf(__x: f32, __exponent: ::std::os::raw::c_int) -> f32;
22882}
22883extern "C" {
22884    pub fn __ldexpf(__x: f32, __exponent: ::std::os::raw::c_int) -> f32;
22885}
22886extern "C" {
22887    pub fn logf(__x: f32) -> f32;
22888}
22889extern "C" {
22890    pub fn __logf(__x: f32) -> f32;
22891}
22892extern "C" {
22893    pub fn log10f(__x: f32) -> f32;
22894}
22895extern "C" {
22896    pub fn __log10f(__x: f32) -> f32;
22897}
22898extern "C" {
22899    pub fn modff(__x: f32, __iptr: *mut f32) -> f32;
22900}
22901extern "C" {
22902    pub fn __modff(__x: f32, __iptr: *mut f32) -> f32;
22903}
22904extern "C" {
22905    pub fn expm1f(__x: f32) -> f32;
22906}
22907extern "C" {
22908    pub fn __expm1f(__x: f32) -> f32;
22909}
22910extern "C" {
22911    pub fn log1pf(__x: f32) -> f32;
22912}
22913extern "C" {
22914    pub fn __log1pf(__x: f32) -> f32;
22915}
22916extern "C" {
22917    pub fn logbf(__x: f32) -> f32;
22918}
22919extern "C" {
22920    pub fn __logbf(__x: f32) -> f32;
22921}
22922extern "C" {
22923    pub fn exp2f(__x: f32) -> f32;
22924}
22925extern "C" {
22926    pub fn __exp2f(__x: f32) -> f32;
22927}
22928extern "C" {
22929    pub fn log2f(__x: f32) -> f32;
22930}
22931extern "C" {
22932    pub fn __log2f(__x: f32) -> f32;
22933}
22934extern "C" {
22935    pub fn powf(__x: f32, __y: f32) -> f32;
22936}
22937extern "C" {
22938    pub fn __powf(__x: f32, __y: f32) -> f32;
22939}
22940extern "C" {
22941    pub fn sqrtf(__x: f32) -> f32;
22942}
22943extern "C" {
22944    pub fn __sqrtf(__x: f32) -> f32;
22945}
22946extern "C" {
22947    pub fn hypotf(__x: f32, __y: f32) -> f32;
22948}
22949extern "C" {
22950    pub fn __hypotf(__x: f32, __y: f32) -> f32;
22951}
22952extern "C" {
22953    pub fn cbrtf(__x: f32) -> f32;
22954}
22955extern "C" {
22956    pub fn __cbrtf(__x: f32) -> f32;
22957}
22958extern "C" {
22959    pub fn ceilf(__x: f32) -> f32;
22960}
22961extern "C" {
22962    pub fn __ceilf(__x: f32) -> f32;
22963}
22964extern "C" {
22965    pub fn fabsf(__x: f32) -> f32;
22966}
22967extern "C" {
22968    pub fn __fabsf(__x: f32) -> f32;
22969}
22970extern "C" {
22971    pub fn floorf(__x: f32) -> f32;
22972}
22973extern "C" {
22974    pub fn __floorf(__x: f32) -> f32;
22975}
22976extern "C" {
22977    pub fn fmodf(__x: f32, __y: f32) -> f32;
22978}
22979extern "C" {
22980    pub fn __fmodf(__x: f32, __y: f32) -> f32;
22981}
22982extern "C" {
22983    pub fn isinff(__value: f32) -> ::std::os::raw::c_int;
22984}
22985extern "C" {
22986    pub fn finitef(__value: f32) -> ::std::os::raw::c_int;
22987}
22988extern "C" {
22989    pub fn dremf(__x: f32, __y: f32) -> f32;
22990}
22991extern "C" {
22992    pub fn __dremf(__x: f32, __y: f32) -> f32;
22993}
22994extern "C" {
22995    pub fn significandf(__x: f32) -> f32;
22996}
22997extern "C" {
22998    pub fn __significandf(__x: f32) -> f32;
22999}
23000extern "C" {
23001    pub fn copysignf(__x: f32, __y: f32) -> f32;
23002}
23003extern "C" {
23004    pub fn __copysignf(__x: f32, __y: f32) -> f32;
23005}
23006extern "C" {
23007    pub fn nanf(__tagb: *const ::std::os::raw::c_char) -> f32;
23008}
23009extern "C" {
23010    pub fn __nanf(__tagb: *const ::std::os::raw::c_char) -> f32;
23011}
23012extern "C" {
23013    pub fn isnanf(__value: f32) -> ::std::os::raw::c_int;
23014}
23015extern "C" {
23016    pub fn j0f(arg1: f32) -> f32;
23017}
23018extern "C" {
23019    pub fn __j0f(arg1: f32) -> f32;
23020}
23021extern "C" {
23022    pub fn j1f(arg1: f32) -> f32;
23023}
23024extern "C" {
23025    pub fn __j1f(arg1: f32) -> f32;
23026}
23027extern "C" {
23028    pub fn jnf(arg1: ::std::os::raw::c_int, arg2: f32) -> f32;
23029}
23030extern "C" {
23031    pub fn __jnf(arg1: ::std::os::raw::c_int, arg2: f32) -> f32;
23032}
23033extern "C" {
23034    pub fn y0f(arg1: f32) -> f32;
23035}
23036extern "C" {
23037    pub fn __y0f(arg1: f32) -> f32;
23038}
23039extern "C" {
23040    pub fn y1f(arg1: f32) -> f32;
23041}
23042extern "C" {
23043    pub fn __y1f(arg1: f32) -> f32;
23044}
23045extern "C" {
23046    pub fn ynf(arg1: ::std::os::raw::c_int, arg2: f32) -> f32;
23047}
23048extern "C" {
23049    pub fn __ynf(arg1: ::std::os::raw::c_int, arg2: f32) -> f32;
23050}
23051extern "C" {
23052    pub fn erff(arg1: f32) -> f32;
23053}
23054extern "C" {
23055    pub fn __erff(arg1: f32) -> f32;
23056}
23057extern "C" {
23058    pub fn erfcf(arg1: f32) -> f32;
23059}
23060extern "C" {
23061    pub fn __erfcf(arg1: f32) -> f32;
23062}
23063extern "C" {
23064    pub fn lgammaf(arg1: f32) -> f32;
23065}
23066extern "C" {
23067    pub fn __lgammaf(arg1: f32) -> f32;
23068}
23069extern "C" {
23070    pub fn tgammaf(arg1: f32) -> f32;
23071}
23072extern "C" {
23073    pub fn __tgammaf(arg1: f32) -> f32;
23074}
23075extern "C" {
23076    pub fn gammaf(arg1: f32) -> f32;
23077}
23078extern "C" {
23079    pub fn __gammaf(arg1: f32) -> f32;
23080}
23081extern "C" {
23082    pub fn lgammaf_r(arg1: f32, __signgamp: *mut ::std::os::raw::c_int) -> f32;
23083}
23084extern "C" {
23085    pub fn __lgammaf_r(arg1: f32, __signgamp: *mut ::std::os::raw::c_int) -> f32;
23086}
23087extern "C" {
23088    pub fn rintf(__x: f32) -> f32;
23089}
23090extern "C" {
23091    pub fn __rintf(__x: f32) -> f32;
23092}
23093extern "C" {
23094    pub fn nextafterf(__x: f32, __y: f32) -> f32;
23095}
23096extern "C" {
23097    pub fn __nextafterf(__x: f32, __y: f32) -> f32;
23098}
23099extern "C" {
23100    pub fn nexttowardf(__x: f32, __y: u128) -> f32;
23101}
23102extern "C" {
23103    pub fn __nexttowardf(__x: f32, __y: u128) -> f32;
23104}
23105extern "C" {
23106    pub fn remainderf(__x: f32, __y: f32) -> f32;
23107}
23108extern "C" {
23109    pub fn __remainderf(__x: f32, __y: f32) -> f32;
23110}
23111extern "C" {
23112    pub fn scalbnf(__x: f32, __n: ::std::os::raw::c_int) -> f32;
23113}
23114extern "C" {
23115    pub fn __scalbnf(__x: f32, __n: ::std::os::raw::c_int) -> f32;
23116}
23117extern "C" {
23118    pub fn ilogbf(__x: f32) -> ::std::os::raw::c_int;
23119}
23120extern "C" {
23121    pub fn __ilogbf(__x: f32) -> ::std::os::raw::c_int;
23122}
23123extern "C" {
23124    pub fn scalblnf(__x: f32, __n: ::std::os::raw::c_long) -> f32;
23125}
23126extern "C" {
23127    pub fn __scalblnf(__x: f32, __n: ::std::os::raw::c_long) -> f32;
23128}
23129extern "C" {
23130    pub fn nearbyintf(__x: f32) -> f32;
23131}
23132extern "C" {
23133    pub fn __nearbyintf(__x: f32) -> f32;
23134}
23135extern "C" {
23136    pub fn roundf(__x: f32) -> f32;
23137}
23138extern "C" {
23139    pub fn __roundf(__x: f32) -> f32;
23140}
23141extern "C" {
23142    pub fn truncf(__x: f32) -> f32;
23143}
23144extern "C" {
23145    pub fn __truncf(__x: f32) -> f32;
23146}
23147extern "C" {
23148    pub fn remquof(__x: f32, __y: f32, __quo: *mut ::std::os::raw::c_int) -> f32;
23149}
23150extern "C" {
23151    pub fn __remquof(__x: f32, __y: f32, __quo: *mut ::std::os::raw::c_int) -> f32;
23152}
23153extern "C" {
23154    pub fn lrintf(__x: f32) -> ::std::os::raw::c_long;
23155}
23156extern "C" {
23157    pub fn __lrintf(__x: f32) -> ::std::os::raw::c_long;
23158}
23159extern "C" {
23160    pub fn llrintf(__x: f32) -> ::std::os::raw::c_longlong;
23161}
23162extern "C" {
23163    pub fn __llrintf(__x: f32) -> ::std::os::raw::c_longlong;
23164}
23165extern "C" {
23166    pub fn lroundf(__x: f32) -> ::std::os::raw::c_long;
23167}
23168extern "C" {
23169    pub fn __lroundf(__x: f32) -> ::std::os::raw::c_long;
23170}
23171extern "C" {
23172    pub fn llroundf(__x: f32) -> ::std::os::raw::c_longlong;
23173}
23174extern "C" {
23175    pub fn __llroundf(__x: f32) -> ::std::os::raw::c_longlong;
23176}
23177extern "C" {
23178    pub fn fdimf(__x: f32, __y: f32) -> f32;
23179}
23180extern "C" {
23181    pub fn __fdimf(__x: f32, __y: f32) -> f32;
23182}
23183extern "C" {
23184    pub fn fmaxf(__x: f32, __y: f32) -> f32;
23185}
23186extern "C" {
23187    pub fn __fmaxf(__x: f32, __y: f32) -> f32;
23188}
23189extern "C" {
23190    pub fn fminf(__x: f32, __y: f32) -> f32;
23191}
23192extern "C" {
23193    pub fn __fminf(__x: f32, __y: f32) -> f32;
23194}
23195extern "C" {
23196    pub fn fmaf(__x: f32, __y: f32, __z: f32) -> f32;
23197}
23198extern "C" {
23199    pub fn __fmaf(__x: f32, __y: f32, __z: f32) -> f32;
23200}
23201extern "C" {
23202    pub fn scalbf(__x: f32, __n: f32) -> f32;
23203}
23204extern "C" {
23205    pub fn __scalbf(__x: f32, __n: f32) -> f32;
23206}
23207extern "C" {
23208    pub fn __fpclassifyl(__value: u128) -> ::std::os::raw::c_int;
23209}
23210extern "C" {
23211    pub fn __signbitl(__value: u128) -> ::std::os::raw::c_int;
23212}
23213extern "C" {
23214    pub fn __isinfl(__value: u128) -> ::std::os::raw::c_int;
23215}
23216extern "C" {
23217    pub fn __finitel(__value: u128) -> ::std::os::raw::c_int;
23218}
23219extern "C" {
23220    pub fn __isnanl(__value: u128) -> ::std::os::raw::c_int;
23221}
23222extern "C" {
23223    pub fn __iseqsigl(__x: u128, __y: u128) -> ::std::os::raw::c_int;
23224}
23225extern "C" {
23226    pub fn __issignalingl(__value: u128) -> ::std::os::raw::c_int;
23227}
23228extern "C" {
23229    pub fn acosl(__x: u128) -> u128;
23230}
23231extern "C" {
23232    pub fn __acosl(__x: u128) -> u128;
23233}
23234extern "C" {
23235    pub fn asinl(__x: u128) -> u128;
23236}
23237extern "C" {
23238    pub fn __asinl(__x: u128) -> u128;
23239}
23240extern "C" {
23241    pub fn atanl(__x: u128) -> u128;
23242}
23243extern "C" {
23244    pub fn __atanl(__x: u128) -> u128;
23245}
23246extern "C" {
23247    pub fn atan2l(__y: u128, __x: u128) -> u128;
23248}
23249extern "C" {
23250    pub fn __atan2l(__y: u128, __x: u128) -> u128;
23251}
23252extern "C" {
23253    pub fn cosl(__x: u128) -> u128;
23254}
23255extern "C" {
23256    pub fn __cosl(__x: u128) -> u128;
23257}
23258extern "C" {
23259    pub fn sinl(__x: u128) -> u128;
23260}
23261extern "C" {
23262    pub fn __sinl(__x: u128) -> u128;
23263}
23264extern "C" {
23265    pub fn tanl(__x: u128) -> u128;
23266}
23267extern "C" {
23268    pub fn __tanl(__x: u128) -> u128;
23269}
23270extern "C" {
23271    pub fn coshl(__x: u128) -> u128;
23272}
23273extern "C" {
23274    pub fn __coshl(__x: u128) -> u128;
23275}
23276extern "C" {
23277    pub fn sinhl(__x: u128) -> u128;
23278}
23279extern "C" {
23280    pub fn __sinhl(__x: u128) -> u128;
23281}
23282extern "C" {
23283    pub fn tanhl(__x: u128) -> u128;
23284}
23285extern "C" {
23286    pub fn __tanhl(__x: u128) -> u128;
23287}
23288extern "C" {
23289    pub fn acoshl(__x: u128) -> u128;
23290}
23291extern "C" {
23292    pub fn __acoshl(__x: u128) -> u128;
23293}
23294extern "C" {
23295    pub fn asinhl(__x: u128) -> u128;
23296}
23297extern "C" {
23298    pub fn __asinhl(__x: u128) -> u128;
23299}
23300extern "C" {
23301    pub fn atanhl(__x: u128) -> u128;
23302}
23303extern "C" {
23304    pub fn __atanhl(__x: u128) -> u128;
23305}
23306extern "C" {
23307    pub fn expl(__x: u128) -> u128;
23308}
23309extern "C" {
23310    pub fn __expl(__x: u128) -> u128;
23311}
23312extern "C" {
23313    pub fn frexpl(__x: u128, __exponent: *mut ::std::os::raw::c_int) -> u128;
23314}
23315extern "C" {
23316    pub fn __frexpl(__x: u128, __exponent: *mut ::std::os::raw::c_int) -> u128;
23317}
23318extern "C" {
23319    pub fn ldexpl(__x: u128, __exponent: ::std::os::raw::c_int) -> u128;
23320}
23321extern "C" {
23322    pub fn __ldexpl(__x: u128, __exponent: ::std::os::raw::c_int) -> u128;
23323}
23324extern "C" {
23325    pub fn logl(__x: u128) -> u128;
23326}
23327extern "C" {
23328    pub fn __logl(__x: u128) -> u128;
23329}
23330extern "C" {
23331    pub fn log10l(__x: u128) -> u128;
23332}
23333extern "C" {
23334    pub fn __log10l(__x: u128) -> u128;
23335}
23336extern "C" {
23337    pub fn modfl(__x: u128, __iptr: *mut u128) -> u128;
23338}
23339extern "C" {
23340    pub fn __modfl(__x: u128, __iptr: *mut u128) -> u128;
23341}
23342extern "C" {
23343    pub fn expm1l(__x: u128) -> u128;
23344}
23345extern "C" {
23346    pub fn __expm1l(__x: u128) -> u128;
23347}
23348extern "C" {
23349    pub fn log1pl(__x: u128) -> u128;
23350}
23351extern "C" {
23352    pub fn __log1pl(__x: u128) -> u128;
23353}
23354extern "C" {
23355    pub fn logbl(__x: u128) -> u128;
23356}
23357extern "C" {
23358    pub fn __logbl(__x: u128) -> u128;
23359}
23360extern "C" {
23361    pub fn exp2l(__x: u128) -> u128;
23362}
23363extern "C" {
23364    pub fn __exp2l(__x: u128) -> u128;
23365}
23366extern "C" {
23367    pub fn log2l(__x: u128) -> u128;
23368}
23369extern "C" {
23370    pub fn __log2l(__x: u128) -> u128;
23371}
23372extern "C" {
23373    pub fn powl(__x: u128, __y: u128) -> u128;
23374}
23375extern "C" {
23376    pub fn __powl(__x: u128, __y: u128) -> u128;
23377}
23378extern "C" {
23379    pub fn sqrtl(__x: u128) -> u128;
23380}
23381extern "C" {
23382    pub fn __sqrtl(__x: u128) -> u128;
23383}
23384extern "C" {
23385    pub fn hypotl(__x: u128, __y: u128) -> u128;
23386}
23387extern "C" {
23388    pub fn __hypotl(__x: u128, __y: u128) -> u128;
23389}
23390extern "C" {
23391    pub fn cbrtl(__x: u128) -> u128;
23392}
23393extern "C" {
23394    pub fn __cbrtl(__x: u128) -> u128;
23395}
23396extern "C" {
23397    pub fn ceill(__x: u128) -> u128;
23398}
23399extern "C" {
23400    pub fn __ceill(__x: u128) -> u128;
23401}
23402extern "C" {
23403    pub fn fabsl(__x: u128) -> u128;
23404}
23405extern "C" {
23406    pub fn __fabsl(__x: u128) -> u128;
23407}
23408extern "C" {
23409    pub fn floorl(__x: u128) -> u128;
23410}
23411extern "C" {
23412    pub fn __floorl(__x: u128) -> u128;
23413}
23414extern "C" {
23415    pub fn fmodl(__x: u128, __y: u128) -> u128;
23416}
23417extern "C" {
23418    pub fn __fmodl(__x: u128, __y: u128) -> u128;
23419}
23420extern "C" {
23421    pub fn isinfl(__value: u128) -> ::std::os::raw::c_int;
23422}
23423extern "C" {
23424    pub fn finitel(__value: u128) -> ::std::os::raw::c_int;
23425}
23426extern "C" {
23427    pub fn dreml(__x: u128, __y: u128) -> u128;
23428}
23429extern "C" {
23430    pub fn __dreml(__x: u128, __y: u128) -> u128;
23431}
23432extern "C" {
23433    pub fn significandl(__x: u128) -> u128;
23434}
23435extern "C" {
23436    pub fn __significandl(__x: u128) -> u128;
23437}
23438extern "C" {
23439    pub fn copysignl(__x: u128, __y: u128) -> u128;
23440}
23441extern "C" {
23442    pub fn __copysignl(__x: u128, __y: u128) -> u128;
23443}
23444extern "C" {
23445    pub fn nanl(__tagb: *const ::std::os::raw::c_char) -> u128;
23446}
23447extern "C" {
23448    pub fn __nanl(__tagb: *const ::std::os::raw::c_char) -> u128;
23449}
23450extern "C" {
23451    pub fn isnanl(__value: u128) -> ::std::os::raw::c_int;
23452}
23453extern "C" {
23454    pub fn j0l(arg1: u128) -> u128;
23455}
23456extern "C" {
23457    pub fn __j0l(arg1: u128) -> u128;
23458}
23459extern "C" {
23460    pub fn j1l(arg1: u128) -> u128;
23461}
23462extern "C" {
23463    pub fn __j1l(arg1: u128) -> u128;
23464}
23465extern "C" {
23466    pub fn jnl(arg1: ::std::os::raw::c_int, arg2: u128) -> u128;
23467}
23468extern "C" {
23469    pub fn __jnl(arg1: ::std::os::raw::c_int, arg2: u128) -> u128;
23470}
23471extern "C" {
23472    pub fn y0l(arg1: u128) -> u128;
23473}
23474extern "C" {
23475    pub fn __y0l(arg1: u128) -> u128;
23476}
23477extern "C" {
23478    pub fn y1l(arg1: u128) -> u128;
23479}
23480extern "C" {
23481    pub fn __y1l(arg1: u128) -> u128;
23482}
23483extern "C" {
23484    pub fn ynl(arg1: ::std::os::raw::c_int, arg2: u128) -> u128;
23485}
23486extern "C" {
23487    pub fn __ynl(arg1: ::std::os::raw::c_int, arg2: u128) -> u128;
23488}
23489extern "C" {
23490    pub fn erfl(arg1: u128) -> u128;
23491}
23492extern "C" {
23493    pub fn __erfl(arg1: u128) -> u128;
23494}
23495extern "C" {
23496    pub fn erfcl(arg1: u128) -> u128;
23497}
23498extern "C" {
23499    pub fn __erfcl(arg1: u128) -> u128;
23500}
23501extern "C" {
23502    pub fn lgammal(arg1: u128) -> u128;
23503}
23504extern "C" {
23505    pub fn __lgammal(arg1: u128) -> u128;
23506}
23507extern "C" {
23508    pub fn tgammal(arg1: u128) -> u128;
23509}
23510extern "C" {
23511    pub fn __tgammal(arg1: u128) -> u128;
23512}
23513extern "C" {
23514    pub fn gammal(arg1: u128) -> u128;
23515}
23516extern "C" {
23517    pub fn __gammal(arg1: u128) -> u128;
23518}
23519extern "C" {
23520    pub fn lgammal_r(arg1: u128, __signgamp: *mut ::std::os::raw::c_int) -> u128;
23521}
23522extern "C" {
23523    pub fn __lgammal_r(arg1: u128, __signgamp: *mut ::std::os::raw::c_int) -> u128;
23524}
23525extern "C" {
23526    pub fn rintl(__x: u128) -> u128;
23527}
23528extern "C" {
23529    pub fn __rintl(__x: u128) -> u128;
23530}
23531extern "C" {
23532    pub fn nextafterl(__x: u128, __y: u128) -> u128;
23533}
23534extern "C" {
23535    pub fn __nextafterl(__x: u128, __y: u128) -> u128;
23536}
23537extern "C" {
23538    pub fn nexttowardl(__x: u128, __y: u128) -> u128;
23539}
23540extern "C" {
23541    pub fn __nexttowardl(__x: u128, __y: u128) -> u128;
23542}
23543extern "C" {
23544    pub fn remainderl(__x: u128, __y: u128) -> u128;
23545}
23546extern "C" {
23547    pub fn __remainderl(__x: u128, __y: u128) -> u128;
23548}
23549extern "C" {
23550    pub fn scalbnl(__x: u128, __n: ::std::os::raw::c_int) -> u128;
23551}
23552extern "C" {
23553    pub fn __scalbnl(__x: u128, __n: ::std::os::raw::c_int) -> u128;
23554}
23555extern "C" {
23556    pub fn ilogbl(__x: u128) -> ::std::os::raw::c_int;
23557}
23558extern "C" {
23559    pub fn __ilogbl(__x: u128) -> ::std::os::raw::c_int;
23560}
23561extern "C" {
23562    pub fn scalblnl(__x: u128, __n: ::std::os::raw::c_long) -> u128;
23563}
23564extern "C" {
23565    pub fn __scalblnl(__x: u128, __n: ::std::os::raw::c_long) -> u128;
23566}
23567extern "C" {
23568    pub fn nearbyintl(__x: u128) -> u128;
23569}
23570extern "C" {
23571    pub fn __nearbyintl(__x: u128) -> u128;
23572}
23573extern "C" {
23574    pub fn roundl(__x: u128) -> u128;
23575}
23576extern "C" {
23577    pub fn __roundl(__x: u128) -> u128;
23578}
23579extern "C" {
23580    pub fn truncl(__x: u128) -> u128;
23581}
23582extern "C" {
23583    pub fn __truncl(__x: u128) -> u128;
23584}
23585extern "C" {
23586    pub fn remquol(__x: u128, __y: u128, __quo: *mut ::std::os::raw::c_int) -> u128;
23587}
23588extern "C" {
23589    pub fn __remquol(__x: u128, __y: u128, __quo: *mut ::std::os::raw::c_int) -> u128;
23590}
23591extern "C" {
23592    pub fn lrintl(__x: u128) -> ::std::os::raw::c_long;
23593}
23594extern "C" {
23595    pub fn __lrintl(__x: u128) -> ::std::os::raw::c_long;
23596}
23597extern "C" {
23598    pub fn llrintl(__x: u128) -> ::std::os::raw::c_longlong;
23599}
23600extern "C" {
23601    pub fn __llrintl(__x: u128) -> ::std::os::raw::c_longlong;
23602}
23603extern "C" {
23604    pub fn lroundl(__x: u128) -> ::std::os::raw::c_long;
23605}
23606extern "C" {
23607    pub fn __lroundl(__x: u128) -> ::std::os::raw::c_long;
23608}
23609extern "C" {
23610    pub fn llroundl(__x: u128) -> ::std::os::raw::c_longlong;
23611}
23612extern "C" {
23613    pub fn __llroundl(__x: u128) -> ::std::os::raw::c_longlong;
23614}
23615extern "C" {
23616    pub fn fdiml(__x: u128, __y: u128) -> u128;
23617}
23618extern "C" {
23619    pub fn __fdiml(__x: u128, __y: u128) -> u128;
23620}
23621extern "C" {
23622    pub fn fmaxl(__x: u128, __y: u128) -> u128;
23623}
23624extern "C" {
23625    pub fn __fmaxl(__x: u128, __y: u128) -> u128;
23626}
23627extern "C" {
23628    pub fn fminl(__x: u128, __y: u128) -> u128;
23629}
23630extern "C" {
23631    pub fn __fminl(__x: u128, __y: u128) -> u128;
23632}
23633extern "C" {
23634    pub fn fmal(__x: u128, __y: u128, __z: u128) -> u128;
23635}
23636extern "C" {
23637    pub fn __fmal(__x: u128, __y: u128, __z: u128) -> u128;
23638}
23639extern "C" {
23640    pub fn scalbl(__x: u128, __n: u128) -> u128;
23641}
23642extern "C" {
23643    pub fn __scalbl(__x: u128, __n: u128) -> u128;
23644}
23645extern "C" {
23646    pub static mut signgam: ::std::os::raw::c_int;
23647}
23648pub type _bindgen_ty_21 = u32;
23649extern "C" {
23650    pub fn d_randtest(state: *mut flint_rand_s) -> f64;
23651}
23652extern "C" {
23653    pub fn d_randtest_signed(
23654        state: *mut flint_rand_s,
23655        minexp: mp_limb_signed_t,
23656        maxexp: mp_limb_signed_t,
23657    ) -> f64;
23658}
23659extern "C" {
23660    pub fn d_randtest_special(
23661        state: *mut flint_rand_s,
23662        minexp: mp_limb_signed_t,
23663        maxexp: mp_limb_signed_t,
23664    ) -> f64;
23665}
23666extern "C" {
23667    pub fn d_lambertw(x: f64) -> f64;
23668}
23669extern "C" {
23670    pub fn d_is_nan(x: f64) -> ::std::os::raw::c_int;
23671}
23672extern "C" {
23673    pub fn d_log2(x: f64) -> f64;
23674}
23675extern "C" {
23676    pub fn _d_vec_init(len: mp_limb_signed_t) -> *mut f64;
23677}
23678extern "C" {
23679    pub fn _d_vec_clear(vec: *mut f64);
23680}
23681extern "C" {
23682    pub fn _d_vec_randtest(
23683        f: *mut f64,
23684        state: *mut flint_rand_s,
23685        len: mp_limb_signed_t,
23686        minexp: mp_limb_signed_t,
23687        maxexp: mp_limb_signed_t,
23688    );
23689}
23690extern "C" {
23691    pub fn _d_vec_set(vec1: *mut f64, vec2: *const f64, len2: mp_limb_signed_t);
23692}
23693extern "C" {
23694    pub fn _d_vec_zero(vec: *mut f64, len: mp_limb_signed_t);
23695}
23696extern "C" {
23697    pub fn _d_vec_equal(
23698        vec1: *const f64,
23699        vec2: *const f64,
23700        len: mp_limb_signed_t,
23701    ) -> ::std::os::raw::c_int;
23702}
23703extern "C" {
23704    pub fn _d_vec_approx_equal(
23705        vec1: *const f64,
23706        vec2: *const f64,
23707        len: mp_limb_signed_t,
23708        eps: f64,
23709    ) -> ::std::os::raw::c_int;
23710}
23711extern "C" {
23712    pub fn _d_vec_is_zero(vec: *const f64, len: mp_limb_signed_t) -> ::std::os::raw::c_int;
23713}
23714extern "C" {
23715    pub fn _d_vec_is_approx_zero(
23716        vec: *const f64,
23717        len: mp_limb_signed_t,
23718        eps: f64,
23719    ) -> ::std::os::raw::c_int;
23720}
23721extern "C" {
23722    pub fn _d_vec_add(res: *mut f64, vec1: *const f64, vec2: *const f64, len2: mp_limb_signed_t);
23723}
23724extern "C" {
23725    pub fn _d_vec_sub(res: *mut f64, vec1: *const f64, vec2: *const f64, len2: mp_limb_signed_t);
23726}
23727extern "C" {
23728    pub fn _d_vec_dot(vec1: *const f64, vec2: *const f64, len2: mp_limb_signed_t) -> f64;
23729}
23730extern "C" {
23731    pub fn _d_vec_norm(vec: *const f64, len: mp_limb_signed_t) -> f64;
23732}
23733extern "C" {
23734    pub fn _d_vec_dot_heuristic(
23735        vec1: *const f64,
23736        vec2: *const f64,
23737        len2: mp_limb_signed_t,
23738        err: *mut f64,
23739    ) -> f64;
23740}
23741extern "C" {
23742    pub fn _d_vec_dot_thrice(
23743        vec1: *const f64,
23744        vec2: *const f64,
23745        len2: mp_limb_signed_t,
23746        err: *mut f64,
23747    ) -> f64;
23748}
23749#[repr(C)]
23750#[derive(Debug, Copy, Clone)]
23751pub struct d_mat_struct {
23752    pub entries: *mut f64,
23753    pub r: mp_limb_signed_t,
23754    pub c: mp_limb_signed_t,
23755    pub rows: *mut *mut f64,
23756}
23757#[test]
23758fn bindgen_test_layout_d_mat_struct() {
23759    assert_eq!(
23760        ::std::mem::size_of::<d_mat_struct>(),
23761        32usize,
23762        concat!("Size of: ", stringify!(d_mat_struct))
23763    );
23764    assert_eq!(
23765        ::std::mem::align_of::<d_mat_struct>(),
23766        8usize,
23767        concat!("Alignment of ", stringify!(d_mat_struct))
23768    );
23769    assert_eq!(
23770        unsafe { &(*(::std::ptr::null::<d_mat_struct>())).entries as *const _ as usize },
23771        0usize,
23772        concat!(
23773            "Offset of field: ",
23774            stringify!(d_mat_struct),
23775            "::",
23776            stringify!(entries)
23777        )
23778    );
23779    assert_eq!(
23780        unsafe { &(*(::std::ptr::null::<d_mat_struct>())).r as *const _ as usize },
23781        8usize,
23782        concat!(
23783            "Offset of field: ",
23784            stringify!(d_mat_struct),
23785            "::",
23786            stringify!(r)
23787        )
23788    );
23789    assert_eq!(
23790        unsafe { &(*(::std::ptr::null::<d_mat_struct>())).c as *const _ as usize },
23791        16usize,
23792        concat!(
23793            "Offset of field: ",
23794            stringify!(d_mat_struct),
23795            "::",
23796            stringify!(c)
23797        )
23798    );
23799    assert_eq!(
23800        unsafe { &(*(::std::ptr::null::<d_mat_struct>())).rows as *const _ as usize },
23801        24usize,
23802        concat!(
23803            "Offset of field: ",
23804            stringify!(d_mat_struct),
23805            "::",
23806            stringify!(rows)
23807        )
23808    );
23809}
23810pub type d_mat_t = [d_mat_struct; 1usize];
23811extern "C" {
23812    pub fn d_mat_init(mat: *mut d_mat_struct, rows: mp_limb_signed_t, cols: mp_limb_signed_t);
23813}
23814extern "C" {
23815    pub fn d_mat_swap(mat1: *mut d_mat_struct, mat2: *mut d_mat_struct);
23816}
23817extern "C" {
23818    pub fn d_mat_set(mat1: *mut d_mat_struct, mat2: *mut d_mat_struct);
23819}
23820extern "C" {
23821    pub fn d_mat_clear(mat: *mut d_mat_struct);
23822}
23823extern "C" {
23824    pub fn d_mat_equal(mat1: *mut d_mat_struct, mat2: *mut d_mat_struct) -> ::std::os::raw::c_int;
23825}
23826extern "C" {
23827    pub fn d_mat_approx_equal(
23828        mat1: *mut d_mat_struct,
23829        mat2: *mut d_mat_struct,
23830        eps: f64,
23831    ) -> ::std::os::raw::c_int;
23832}
23833extern "C" {
23834    pub fn d_mat_is_zero(mat: *mut d_mat_struct) -> ::std::os::raw::c_int;
23835}
23836extern "C" {
23837    pub fn d_mat_is_approx_zero(mat: *mut d_mat_struct, eps: f64) -> ::std::os::raw::c_int;
23838}
23839extern "C" {
23840    pub fn d_mat_zero(mat: *mut d_mat_struct);
23841}
23842extern "C" {
23843    pub fn d_mat_one(mat: *mut d_mat_struct);
23844}
23845extern "C" {
23846    pub fn d_mat_print(mat: *mut d_mat_struct);
23847}
23848extern "C" {
23849    pub fn d_mat_randtest(
23850        mat: *mut d_mat_struct,
23851        state: *mut flint_rand_s,
23852        minexp: mp_limb_signed_t,
23853        maxexp: mp_limb_signed_t,
23854    );
23855}
23856extern "C" {
23857    pub fn d_mat_transpose(B: *mut d_mat_struct, A: *mut d_mat_struct);
23858}
23859extern "C" {
23860    pub fn d_mat_mul_classical(C: *mut d_mat_struct, A: *mut d_mat_struct, B: *mut d_mat_struct);
23861}
23862extern "C" {
23863    pub fn d_mat_gso(B: *mut d_mat_struct, A: *mut d_mat_struct);
23864}
23865extern "C" {
23866    pub fn d_mat_qr(Q: *mut d_mat_struct, R: *mut d_mat_struct, A: *mut d_mat_struct);
23867}
23868#[repr(C)]
23869#[derive(Debug, Copy, Clone)]
23870pub struct mpf_mat_struct {
23871    pub entries: *mut mpf,
23872    pub r: mp_limb_signed_t,
23873    pub c: mp_limb_signed_t,
23874    pub prec: mp_limb_t,
23875    pub rows: *mut *mut mpf,
23876}
23877#[test]
23878fn bindgen_test_layout_mpf_mat_struct() {
23879    assert_eq!(
23880        ::std::mem::size_of::<mpf_mat_struct>(),
23881        40usize,
23882        concat!("Size of: ", stringify!(mpf_mat_struct))
23883    );
23884    assert_eq!(
23885        ::std::mem::align_of::<mpf_mat_struct>(),
23886        8usize,
23887        concat!("Alignment of ", stringify!(mpf_mat_struct))
23888    );
23889    assert_eq!(
23890        unsafe { &(*(::std::ptr::null::<mpf_mat_struct>())).entries as *const _ as usize },
23891        0usize,
23892        concat!(
23893            "Offset of field: ",
23894            stringify!(mpf_mat_struct),
23895            "::",
23896            stringify!(entries)
23897        )
23898    );
23899    assert_eq!(
23900        unsafe { &(*(::std::ptr::null::<mpf_mat_struct>())).r as *const _ as usize },
23901        8usize,
23902        concat!(
23903            "Offset of field: ",
23904            stringify!(mpf_mat_struct),
23905            "::",
23906            stringify!(r)
23907        )
23908    );
23909    assert_eq!(
23910        unsafe { &(*(::std::ptr::null::<mpf_mat_struct>())).c as *const _ as usize },
23911        16usize,
23912        concat!(
23913            "Offset of field: ",
23914            stringify!(mpf_mat_struct),
23915            "::",
23916            stringify!(c)
23917        )
23918    );
23919    assert_eq!(
23920        unsafe { &(*(::std::ptr::null::<mpf_mat_struct>())).prec as *const _ as usize },
23921        24usize,
23922        concat!(
23923            "Offset of field: ",
23924            stringify!(mpf_mat_struct),
23925            "::",
23926            stringify!(prec)
23927        )
23928    );
23929    assert_eq!(
23930        unsafe { &(*(::std::ptr::null::<mpf_mat_struct>())).rows as *const _ as usize },
23931        32usize,
23932        concat!(
23933            "Offset of field: ",
23934            stringify!(mpf_mat_struct),
23935            "::",
23936            stringify!(rows)
23937        )
23938    );
23939}
23940pub type mpf_mat_t = [mpf_mat_struct; 1usize];
23941extern "C" {
23942    pub fn mpf_mat_init(
23943        mat: *mut mpf_mat_struct,
23944        rows: mp_limb_signed_t,
23945        cols: mp_limb_signed_t,
23946        prec: mp_limb_t,
23947    );
23948}
23949extern "C" {
23950    pub fn mpf_mat_swap(mat1: *mut mpf_mat_struct, mat2: *mut mpf_mat_struct);
23951}
23952extern "C" {
23953    pub fn mpf_mat_set(mat1: *mut mpf_mat_struct, mat2: *mut mpf_mat_struct);
23954}
23955extern "C" {
23956    pub fn mpf_mat_clear(mat: *mut mpf_mat_struct);
23957}
23958extern "C" {
23959    pub fn mpf_mat_equal(
23960        mat1: *mut mpf_mat_struct,
23961        mat2: *mut mpf_mat_struct,
23962    ) -> ::std::os::raw::c_int;
23963}
23964extern "C" {
23965    pub fn mpf_mat_approx_equal(
23966        mat1: *mut mpf_mat_struct,
23967        mat2: *mut mpf_mat_struct,
23968        bits: mp_limb_t,
23969    ) -> ::std::os::raw::c_int;
23970}
23971extern "C" {
23972    pub fn mpf_mat_is_zero(mat: *mut mpf_mat_struct) -> ::std::os::raw::c_int;
23973}
23974extern "C" {
23975    pub fn mpf_mat_zero(mat: *mut mpf_mat_struct);
23976}
23977extern "C" {
23978    pub fn mpf_mat_one(mat: *mut mpf_mat_struct);
23979}
23980extern "C" {
23981    pub fn mpf_mat_print(mat: *mut mpf_mat_struct);
23982}
23983extern "C" {
23984    pub fn mpf_mat_randtest(mat: *mut mpf_mat_struct, state: *mut flint_rand_s, bits: mp_limb_t);
23985}
23986extern "C" {
23987    pub fn mpf_mat_mul(C: *mut mpf_mat_struct, A: *mut mpf_mat_struct, B: *mut mpf_mat_struct);
23988}
23989extern "C" {
23990    pub fn mpf_mat_gso(B: *mut mpf_mat_struct, A: *mut mpf_mat_struct);
23991}
23992extern "C" {
23993    pub fn mpf_mat_qr(Q: *mut mpf_mat_struct, R: *mut mpf_mat_struct, A: *mut mpf_mat_struct);
23994}
23995#[repr(C)]
23996#[derive(Debug, Copy, Clone)]
23997pub struct fmpz_mat_struct {
23998    pub entries: *mut fmpz,
23999    pub r: mp_limb_signed_t,
24000    pub c: mp_limb_signed_t,
24001    pub rows: *mut *mut fmpz,
24002}
24003#[test]
24004fn bindgen_test_layout_fmpz_mat_struct() {
24005    assert_eq!(
24006        ::std::mem::size_of::<fmpz_mat_struct>(),
24007        32usize,
24008        concat!("Size of: ", stringify!(fmpz_mat_struct))
24009    );
24010    assert_eq!(
24011        ::std::mem::align_of::<fmpz_mat_struct>(),
24012        8usize,
24013        concat!("Alignment of ", stringify!(fmpz_mat_struct))
24014    );
24015    assert_eq!(
24016        unsafe { &(*(::std::ptr::null::<fmpz_mat_struct>())).entries as *const _ as usize },
24017        0usize,
24018        concat!(
24019            "Offset of field: ",
24020            stringify!(fmpz_mat_struct),
24021            "::",
24022            stringify!(entries)
24023        )
24024    );
24025    assert_eq!(
24026        unsafe { &(*(::std::ptr::null::<fmpz_mat_struct>())).r as *const _ as usize },
24027        8usize,
24028        concat!(
24029            "Offset of field: ",
24030            stringify!(fmpz_mat_struct),
24031            "::",
24032            stringify!(r)
24033        )
24034    );
24035    assert_eq!(
24036        unsafe { &(*(::std::ptr::null::<fmpz_mat_struct>())).c as *const _ as usize },
24037        16usize,
24038        concat!(
24039            "Offset of field: ",
24040            stringify!(fmpz_mat_struct),
24041            "::",
24042            stringify!(c)
24043        )
24044    );
24045    assert_eq!(
24046        unsafe { &(*(::std::ptr::null::<fmpz_mat_struct>())).rows as *const _ as usize },
24047        24usize,
24048        concat!(
24049            "Offset of field: ",
24050            stringify!(fmpz_mat_struct),
24051            "::",
24052            stringify!(rows)
24053        )
24054    );
24055}
24056pub type fmpz_mat_t = [fmpz_mat_struct; 1usize];
24057#[repr(C)]
24058#[derive(Debug, Copy, Clone)]
24059pub struct col_hash_t {
24060    pub col: mp_limb_t,
24061    pub hash: mp_limb_t,
24062}
24063#[test]
24064fn bindgen_test_layout_col_hash_t() {
24065    assert_eq!(
24066        ::std::mem::size_of::<col_hash_t>(),
24067        16usize,
24068        concat!("Size of: ", stringify!(col_hash_t))
24069    );
24070    assert_eq!(
24071        ::std::mem::align_of::<col_hash_t>(),
24072        8usize,
24073        concat!("Alignment of ", stringify!(col_hash_t))
24074    );
24075    assert_eq!(
24076        unsafe { &(*(::std::ptr::null::<col_hash_t>())).col as *const _ as usize },
24077        0usize,
24078        concat!(
24079            "Offset of field: ",
24080            stringify!(col_hash_t),
24081            "::",
24082            stringify!(col)
24083        )
24084    );
24085    assert_eq!(
24086        unsafe { &(*(::std::ptr::null::<col_hash_t>())).hash as *const _ as usize },
24087        8usize,
24088        concat!(
24089            "Offset of field: ",
24090            stringify!(col_hash_t),
24091            "::",
24092            stringify!(hash)
24093        )
24094    );
24095}
24096extern "C" {
24097    pub fn fmpz_mat_init(mat: *mut fmpz_mat_struct, rows: mp_limb_signed_t, cols: mp_limb_signed_t);
24098}
24099extern "C" {
24100    pub fn fmpz_mat_init_set(mat: *mut fmpz_mat_struct, src: *mut fmpz_mat_struct);
24101}
24102extern "C" {
24103    pub fn fmpz_mat_swap(mat1: *mut fmpz_mat_struct, mat2: *mut fmpz_mat_struct);
24104}
24105extern "C" {
24106    pub fn fmpz_mat_set(mat1: *mut fmpz_mat_struct, mat2: *mut fmpz_mat_struct);
24107}
24108extern "C" {
24109    pub fn fmpz_mat_clear(mat: *mut fmpz_mat_struct);
24110}
24111extern "C" {
24112    pub fn fmpz_mat_equal(
24113        mat1: *mut fmpz_mat_struct,
24114        mat2: *mut fmpz_mat_struct,
24115    ) -> ::std::os::raw::c_int;
24116}
24117extern "C" {
24118    pub fn fmpz_mat_is_zero(mat: *mut fmpz_mat_struct) -> ::std::os::raw::c_int;
24119}
24120extern "C" {
24121    pub fn fmpz_mat_is_one(mat: *mut fmpz_mat_struct) -> ::std::os::raw::c_int;
24122}
24123extern "C" {
24124    pub fn fmpz_mat_zero(mat: *mut fmpz_mat_struct);
24125}
24126extern "C" {
24127    pub fn fmpz_mat_one(mat: *mut fmpz_mat_struct);
24128}
24129extern "C" {
24130    pub fn fmpz_mat_window_init(
24131        window: *mut fmpz_mat_struct,
24132        mat: *mut fmpz_mat_struct,
24133        r1: mp_limb_signed_t,
24134        c1: mp_limb_signed_t,
24135        r2: mp_limb_signed_t,
24136        c2: mp_limb_signed_t,
24137    );
24138}
24139extern "C" {
24140    pub fn fmpz_mat_window_clear(window: *mut fmpz_mat_struct);
24141}
24142extern "C" {
24143    pub fn fmpz_mat_concat_horizontal(
24144        res: *mut fmpz_mat_struct,
24145        mat1: *mut fmpz_mat_struct,
24146        mat2: *mut fmpz_mat_struct,
24147    );
24148}
24149extern "C" {
24150    pub fn fmpz_mat_concat_vertical(
24151        res: *mut fmpz_mat_struct,
24152        mat1: *mut fmpz_mat_struct,
24153        mat2: *mut fmpz_mat_struct,
24154    );
24155}
24156extern "C" {
24157    pub fn fmpz_mat_fprint(file: *mut FILE, mat: *mut fmpz_mat_struct) -> ::std::os::raw::c_int;
24158}
24159extern "C" {
24160    pub fn fmpz_mat_fprint_pretty(
24161        file: *mut FILE,
24162        mat: *mut fmpz_mat_struct,
24163    ) -> ::std::os::raw::c_int;
24164}
24165extern "C" {
24166    pub fn fmpz_mat_fread(file: *mut FILE, mat: *mut fmpz_mat_struct) -> ::std::os::raw::c_int;
24167}
24168extern "C" {
24169    pub fn fmpz_mat_randbits(mat: *mut fmpz_mat_struct, state: *mut flint_rand_s, bits: mp_limb_t);
24170}
24171extern "C" {
24172    pub fn fmpz_mat_randtest(mat: *mut fmpz_mat_struct, state: *mut flint_rand_s, bits: mp_limb_t);
24173}
24174extern "C" {
24175    pub fn fmpz_mat_randtest_unsigned(
24176        mat: *mut fmpz_mat_struct,
24177        state: *mut flint_rand_s,
24178        bits: mp_limb_t,
24179    );
24180}
24181extern "C" {
24182    pub fn fmpz_mat_randintrel(
24183        mat: *mut fmpz_mat_struct,
24184        state: *mut flint_rand_s,
24185        bits: mp_limb_t,
24186    );
24187}
24188extern "C" {
24189    pub fn fmpz_mat_randsimdioph(
24190        mat: *mut fmpz_mat_struct,
24191        state: *mut flint_rand_s,
24192        bits: mp_limb_t,
24193        bits2: mp_limb_t,
24194    );
24195}
24196extern "C" {
24197    pub fn fmpz_mat_randntrulike(
24198        mat: *mut fmpz_mat_struct,
24199        state: *mut flint_rand_s,
24200        bits: mp_limb_t,
24201        q: mp_limb_t,
24202    );
24203}
24204extern "C" {
24205    pub fn fmpz_mat_randntrulike2(
24206        mat: *mut fmpz_mat_struct,
24207        state: *mut flint_rand_s,
24208        bits: mp_limb_t,
24209        q: mp_limb_t,
24210    );
24211}
24212extern "C" {
24213    pub fn fmpz_mat_randajtai(mat: *mut fmpz_mat_struct, state: *mut flint_rand_s, alpha: f64);
24214}
24215extern "C" {
24216    pub fn fmpz_mat_randrank(
24217        mat: *mut fmpz_mat_struct,
24218        state: *mut flint_rand_s,
24219        rank: mp_limb_signed_t,
24220        bits: mp_limb_t,
24221    );
24222}
24223extern "C" {
24224    pub fn fmpz_mat_randdet(mat: *mut fmpz_mat_struct, state: *mut flint_rand_s, det: *mut fmpz);
24225}
24226extern "C" {
24227    pub fn fmpz_mat_randops(
24228        mat: *mut fmpz_mat_struct,
24229        state: *mut flint_rand_s,
24230        count: mp_limb_signed_t,
24231    );
24232}
24233extern "C" {
24234    pub fn fmpz_mat_randpermdiag(
24235        mat: *mut fmpz_mat_struct,
24236        state: *mut flint_rand_s,
24237        diag: *const fmpz,
24238        n: mp_limb_signed_t,
24239    ) -> ::std::os::raw::c_int;
24240}
24241extern "C" {
24242    pub fn fmpz_mat_max_bits(mat: *mut fmpz_mat_struct) -> mp_limb_signed_t;
24243}
24244extern "C" {
24245    pub fn fmpz_mat_transpose(B: *mut fmpz_mat_struct, A: *mut fmpz_mat_struct);
24246}
24247extern "C" {
24248    pub fn fmpz_mat_add(C: *mut fmpz_mat_struct, A: *mut fmpz_mat_struct, B: *mut fmpz_mat_struct);
24249}
24250extern "C" {
24251    pub fn fmpz_mat_sub(C: *mut fmpz_mat_struct, A: *mut fmpz_mat_struct, B: *mut fmpz_mat_struct);
24252}
24253extern "C" {
24254    pub fn fmpz_mat_neg(B: *mut fmpz_mat_struct, A: *mut fmpz_mat_struct);
24255}
24256extern "C" {
24257    pub fn fmpz_mat_scalar_mul_fmpz(B: *mut fmpz_mat_struct, A: *mut fmpz_mat_struct, c: *mut fmpz);
24258}
24259extern "C" {
24260    pub fn fmpz_mat_scalar_mul_si(
24261        B: *mut fmpz_mat_struct,
24262        A: *mut fmpz_mat_struct,
24263        c: mp_limb_signed_t,
24264    );
24265}
24266extern "C" {
24267    pub fn fmpz_mat_scalar_mul_ui(B: *mut fmpz_mat_struct, A: *mut fmpz_mat_struct, c: mp_limb_t);
24268}
24269extern "C" {
24270    pub fn fmpz_mat_scalar_addmul_fmpz(
24271        B: *mut fmpz_mat_struct,
24272        A: *mut fmpz_mat_struct,
24273        c: *mut fmpz,
24274    );
24275}
24276extern "C" {
24277    pub fn fmpz_mat_scalar_addmul_si(
24278        B: *mut fmpz_mat_struct,
24279        A: *mut fmpz_mat_struct,
24280        c: mp_limb_signed_t,
24281    );
24282}
24283extern "C" {
24284    pub fn fmpz_mat_scalar_addmul_ui(
24285        B: *mut fmpz_mat_struct,
24286        A: *mut fmpz_mat_struct,
24287        c: mp_limb_t,
24288    );
24289}
24290extern "C" {
24291    pub fn fmpz_mat_scalar_submul_fmpz(
24292        B: *mut fmpz_mat_struct,
24293        A: *mut fmpz_mat_struct,
24294        c: *mut fmpz,
24295    );
24296}
24297extern "C" {
24298    pub fn fmpz_mat_scalar_submul_si(
24299        B: *mut fmpz_mat_struct,
24300        A: *mut fmpz_mat_struct,
24301        c: mp_limb_signed_t,
24302    );
24303}
24304extern "C" {
24305    pub fn fmpz_mat_scalar_submul_ui(
24306        B: *mut fmpz_mat_struct,
24307        A: *mut fmpz_mat_struct,
24308        c: mp_limb_t,
24309    );
24310}
24311extern "C" {
24312    pub fn fmpz_mat_scalar_addmul_nmod_mat_fmpz(
24313        B: *mut fmpz_mat_struct,
24314        A: *mut nmod_mat_struct,
24315        c: *mut fmpz,
24316    );
24317}
24318extern "C" {
24319    pub fn fmpz_mat_scalar_addmul_nmod_mat_ui(
24320        B: *mut fmpz_mat_struct,
24321        A: *mut nmod_mat_struct,
24322        c: mp_limb_t,
24323    );
24324}
24325extern "C" {
24326    pub fn fmpz_mat_scalar_divexact_fmpz(
24327        B: *mut fmpz_mat_struct,
24328        A: *mut fmpz_mat_struct,
24329        c: *mut fmpz,
24330    );
24331}
24332extern "C" {
24333    pub fn fmpz_mat_scalar_divexact_si(
24334        B: *mut fmpz_mat_struct,
24335        A: *mut fmpz_mat_struct,
24336        c: mp_limb_signed_t,
24337    );
24338}
24339extern "C" {
24340    pub fn fmpz_mat_scalar_divexact_ui(
24341        B: *mut fmpz_mat_struct,
24342        A: *mut fmpz_mat_struct,
24343        c: mp_limb_t,
24344    );
24345}
24346extern "C" {
24347    pub fn fmpz_mat_scalar_mul_2exp(
24348        B: *mut fmpz_mat_struct,
24349        A: *mut fmpz_mat_struct,
24350        exp: mp_limb_t,
24351    );
24352}
24353extern "C" {
24354    pub fn fmpz_mat_scalar_tdiv_q_2exp(
24355        B: *mut fmpz_mat_struct,
24356        A: *mut fmpz_mat_struct,
24357        exp: mp_limb_t,
24358    );
24359}
24360extern "C" {
24361    pub fn fmpz_mat_scalar_smod(B: *mut fmpz_mat_struct, A: *mut fmpz_mat_struct, P: *mut fmpz);
24362}
24363extern "C" {
24364    pub fn fmpz_mat_scalar_mod_fmpz(B: *mut fmpz_mat_struct, A: *mut fmpz_mat_struct, m: *mut fmpz);
24365}
24366extern "C" {
24367    pub fn fmpz_mat_mul(C: *mut fmpz_mat_struct, A: *mut fmpz_mat_struct, B: *mut fmpz_mat_struct);
24368}
24369extern "C" {
24370    pub fn fmpz_mat_mul_classical(
24371        C: *mut fmpz_mat_struct,
24372        A: *mut fmpz_mat_struct,
24373        B: *mut fmpz_mat_struct,
24374    );
24375}
24376extern "C" {
24377    pub fn fmpz_mat_mul_strassen(
24378        C: *mut fmpz_mat_struct,
24379        A: *mut fmpz_mat_struct,
24380        B: *mut fmpz_mat_struct,
24381    );
24382}
24383extern "C" {
24384    pub fn fmpz_mat_mul_classical_inline(
24385        C: *mut fmpz_mat_struct,
24386        A: *mut fmpz_mat_struct,
24387        B: *mut fmpz_mat_struct,
24388    );
24389}
24390extern "C" {
24391    pub fn _fmpz_mat_mul_multi_mod(
24392        C: *mut fmpz_mat_struct,
24393        A: *mut fmpz_mat_struct,
24394        B: *mut fmpz_mat_struct,
24395        bits: mp_limb_t,
24396    );
24397}
24398extern "C" {
24399    pub fn fmpz_mat_mul_multi_mod(
24400        C: *mut fmpz_mat_struct,
24401        A: *mut fmpz_mat_struct,
24402        B: *mut fmpz_mat_struct,
24403    );
24404}
24405extern "C" {
24406    pub fn fmpz_mat_sqr_bodrato(B: *mut fmpz_mat_struct, A: *mut fmpz_mat_struct);
24407}
24408extern "C" {
24409    pub fn fmpz_mat_sqr(B: *mut fmpz_mat_struct, A: *mut fmpz_mat_struct);
24410}
24411extern "C" {
24412    pub fn fmpz_mat_pow(B: *mut fmpz_mat_struct, A: *mut fmpz_mat_struct, exp: mp_limb_t);
24413}
24414extern "C" {
24415    pub fn fmpz_mat_kronecker_product(
24416        C: *mut fmpz_mat_struct,
24417        A: *mut fmpz_mat_struct,
24418        B: *mut fmpz_mat_struct,
24419    );
24420}
24421extern "C" {
24422    pub fn fmpz_mat_content(ret: *mut fmpz, A: *mut fmpz_mat_struct);
24423}
24424extern "C" {
24425    pub fn fmpz_mat_find_pivot_any(
24426        mat: *mut fmpz_mat_struct,
24427        start_row: mp_limb_signed_t,
24428        end_row: mp_limb_signed_t,
24429        c: mp_limb_signed_t,
24430    ) -> mp_limb_signed_t;
24431}
24432extern "C" {
24433    pub fn fmpz_mat_find_pivot_smallest(
24434        mat: *mut fmpz_mat_struct,
24435        start_row: mp_limb_signed_t,
24436        end_row: mp_limb_signed_t,
24437        c: mp_limb_signed_t,
24438    ) -> mp_limb_signed_t;
24439}
24440extern "C" {
24441    pub fn fmpz_mat_fflu(
24442        B: *mut fmpz_mat_struct,
24443        den: *mut fmpz,
24444        perm: *mut mp_limb_signed_t,
24445        A: *mut fmpz_mat_struct,
24446        rank_check: ::std::os::raw::c_int,
24447    ) -> mp_limb_signed_t;
24448}
24449extern "C" {
24450    pub fn fmpz_mat_rank_small_inplace(B: *mut fmpz_mat_struct) -> mp_limb_signed_t;
24451}
24452extern "C" {
24453    pub fn fmpz_mat_rref(
24454        B: *mut fmpz_mat_struct,
24455        den: *mut fmpz,
24456        A: *mut fmpz_mat_struct,
24457    ) -> mp_limb_signed_t;
24458}
24459extern "C" {
24460    pub fn fmpz_mat_rref_fflu(
24461        B: *mut fmpz_mat_struct,
24462        den: *mut fmpz,
24463        A: *mut fmpz_mat_struct,
24464    ) -> mp_limb_signed_t;
24465}
24466extern "C" {
24467    pub fn fmpz_mat_rref_mul(
24468        B: *mut fmpz_mat_struct,
24469        den: *mut fmpz,
24470        A: *mut fmpz_mat_struct,
24471    ) -> mp_limb_signed_t;
24472}
24473extern "C" {
24474    pub fn fmpz_mat_is_in_rref_with_rank(
24475        A: *mut fmpz_mat_struct,
24476        den: *mut fmpz,
24477        rank: mp_limb_signed_t,
24478    ) -> ::std::os::raw::c_int;
24479}
24480extern "C" {
24481    pub fn fmpz_mat_rref_mod(
24482        perm: *mut mp_limb_signed_t,
24483        A: *mut fmpz_mat_struct,
24484        p: *mut fmpz,
24485    ) -> mp_limb_signed_t;
24486}
24487extern "C" {
24488    pub fn fmpz_mat_howell_form_mod(A: *mut fmpz_mat_struct, mod_: *mut fmpz) -> mp_limb_signed_t;
24489}
24490extern "C" {
24491    pub fn fmpz_mat_strong_echelon_form_mod(A: *mut fmpz_mat_struct, mod_: *mut fmpz);
24492}
24493extern "C" {
24494    pub fn fmpz_mat_trace(trace: *mut fmpz, mat: *mut fmpz_mat_struct);
24495}
24496extern "C" {
24497    pub fn fmpz_mat_det(det: *mut fmpz, A: *mut fmpz_mat_struct);
24498}
24499extern "C" {
24500    pub fn fmpz_mat_det_cofactor(det: *mut fmpz, A: *mut fmpz_mat_struct);
24501}
24502extern "C" {
24503    pub fn fmpz_mat_det_bareiss(det: *mut fmpz, A: *mut fmpz_mat_struct);
24504}
24505extern "C" {
24506    pub fn fmpz_mat_det_modular(
24507        det: *mut fmpz,
24508        A: *mut fmpz_mat_struct,
24509        proved: ::std::os::raw::c_int,
24510    );
24511}
24512extern "C" {
24513    pub fn fmpz_mat_det_modular_accelerated(
24514        det: *mut fmpz,
24515        A: *mut fmpz_mat_struct,
24516        proved: ::std::os::raw::c_int,
24517    );
24518}
24519extern "C" {
24520    pub fn fmpz_mat_det_modular_given_divisor(
24521        det: *mut fmpz,
24522        A: *mut fmpz_mat_struct,
24523        d: *mut fmpz,
24524        proved: ::std::os::raw::c_int,
24525    );
24526}
24527extern "C" {
24528    pub fn fmpz_mat_det_bound(bound: *mut fmpz, A: *mut fmpz_mat_struct);
24529}
24530extern "C" {
24531    pub fn fmpz_mat_det_divisor(d: *mut fmpz, A: *mut fmpz_mat_struct);
24532}
24533extern "C" {
24534    pub fn fmpz_mat_similarity(A: *mut fmpz_mat_struct, r: mp_limb_signed_t, d: *mut fmpz);
24535}
24536extern "C" {
24537    pub fn _fmpz_mat_charpoly_berkowitz(rop: *mut fmpz, op: *mut fmpz_mat_struct);
24538}
24539extern "C" {
24540    pub fn fmpz_mat_charpoly_berkowitz(cp: *mut fmpz_poly_struct, mat: *mut fmpz_mat_struct);
24541}
24542extern "C" {
24543    pub fn _fmpz_mat_charpoly_modular(rop: *mut fmpz, op: *mut fmpz_mat_struct);
24544}
24545extern "C" {
24546    pub fn fmpz_mat_charpoly_modular(cp: *mut fmpz_poly_struct, mat: *mut fmpz_mat_struct);
24547}
24548extern "C" {
24549    pub fn _fmpz_mat_minpoly_modular(rop: *mut fmpz, op: *mut fmpz_mat_struct) -> mp_limb_signed_t;
24550}
24551extern "C" {
24552    pub fn fmpz_mat_minpoly_modular(cp: *mut fmpz_poly_struct, mat: *mut fmpz_mat_struct);
24553}
24554extern "C" {
24555    pub fn fmpz_mat_rank(A: *mut fmpz_mat_struct) -> mp_limb_signed_t;
24556}
24557extern "C" {
24558    pub fn fmpz_mat_solve_bound(
24559        N: *mut fmpz,
24560        D: *mut fmpz,
24561        A: *mut fmpz_mat_struct,
24562        B: *mut fmpz_mat_struct,
24563    );
24564}
24565extern "C" {
24566    pub fn fmpz_mat_solve(
24567        X: *mut fmpz_mat_struct,
24568        den: *mut fmpz,
24569        A: *mut fmpz_mat_struct,
24570        B: *mut fmpz_mat_struct,
24571    ) -> ::std::os::raw::c_int;
24572}
24573extern "C" {
24574    pub fn fmpz_mat_solve_cramer(
24575        X: *mut fmpz_mat_struct,
24576        den: *mut fmpz,
24577        A: *mut fmpz_mat_struct,
24578        B: *mut fmpz_mat_struct,
24579    ) -> ::std::os::raw::c_int;
24580}
24581extern "C" {
24582    pub fn fmpz_mat_solve_fflu(
24583        X: *mut fmpz_mat_struct,
24584        den: *mut fmpz,
24585        A: *mut fmpz_mat_struct,
24586        B: *mut fmpz_mat_struct,
24587    ) -> ::std::os::raw::c_int;
24588}
24589extern "C" {
24590    pub fn fmpz_mat_solve_fflu_precomp(
24591        X: *mut fmpz_mat_struct,
24592        perm: *const mp_limb_signed_t,
24593        FFLU: *mut fmpz_mat_struct,
24594        B: *mut fmpz_mat_struct,
24595    );
24596}
24597extern "C" {
24598    pub fn fmpz_mat_find_good_prime_and_invert(
24599        Ainv: *mut nmod_mat_struct,
24600        A: *mut fmpz_mat_struct,
24601        det_bound: *mut fmpz,
24602    ) -> mp_limb_t;
24603}
24604extern "C" {
24605    pub fn fmpz_mat_dixon_get_crt_primes(
24606        num_primes: *mut mp_limb_signed_t,
24607        A: *mut fmpz_mat_struct,
24608        p: mp_limb_t,
24609    ) -> *mut mp_limb_t;
24610}
24611extern "C" {
24612    pub fn _fmpz_mat_solve_dixon(
24613        X: *mut fmpz_mat_struct,
24614        mod_: *mut fmpz,
24615        A: *mut fmpz_mat_struct,
24616        B: *mut fmpz_mat_struct,
24617        Ainv: *mut nmod_mat_struct,
24618        p: mp_limb_t,
24619        N: *mut fmpz,
24620        D: *mut fmpz,
24621    );
24622}
24623extern "C" {
24624    pub fn fmpz_mat_solve_dixon(
24625        X: *mut fmpz_mat_struct,
24626        mod_: *mut fmpz,
24627        A: *mut fmpz_mat_struct,
24628        B: *mut fmpz_mat_struct,
24629    ) -> ::std::os::raw::c_int;
24630}
24631extern "C" {
24632    pub fn _fmpz_mat_solve_dixon_den(
24633        X: *mut fmpz_mat_struct,
24634        den: *mut fmpz,
24635        A: *mut fmpz_mat_struct,
24636        B: *mut fmpz_mat_struct,
24637        Ainv: *mut nmod_mat_struct,
24638        p: mp_limb_t,
24639        N: *mut fmpz,
24640        D: *mut fmpz,
24641    );
24642}
24643extern "C" {
24644    pub fn fmpz_mat_solve_dixon_den(
24645        X: *mut fmpz_mat_struct,
24646        den: *mut fmpz,
24647        A: *mut fmpz_mat_struct,
24648        B: *mut fmpz_mat_struct,
24649    ) -> ::std::os::raw::c_int;
24650}
24651extern "C" {
24652    pub fn fmpz_mat_solve_multi_mod_den(
24653        X: *mut fmpz_mat_struct,
24654        den: *mut fmpz,
24655        A: *mut fmpz_mat_struct,
24656        B: *mut fmpz_mat_struct,
24657    ) -> ::std::os::raw::c_int;
24658}
24659extern "C" {
24660    pub fn fmpz_mat_nullspace(
24661        res: *mut fmpz_mat_struct,
24662        mat: *mut fmpz_mat_struct,
24663    ) -> mp_limb_signed_t;
24664}
24665extern "C" {
24666    pub fn fmpz_mat_inv(
24667        B: *mut fmpz_mat_struct,
24668        den: *mut fmpz,
24669        A: *mut fmpz_mat_struct,
24670    ) -> ::std::os::raw::c_int;
24671}
24672extern "C" {
24673    pub fn fmpz_mat_set_nmod_mat(A: *mut fmpz_mat_struct, Amod: *mut nmod_mat_struct);
24674}
24675extern "C" {
24676    pub fn fmpz_mat_set_nmod_mat_unsigned(A: *mut fmpz_mat_struct, Amod: *mut nmod_mat_struct);
24677}
24678extern "C" {
24679    pub fn fmpz_mat_get_nmod_mat(Amod: *mut nmod_mat_struct, A: *mut fmpz_mat_struct);
24680}
24681extern "C" {
24682    pub fn fmpz_mat_CRT_ui(
24683        res: *mut fmpz_mat_struct,
24684        mat1: *mut fmpz_mat_struct,
24685        m1: *mut fmpz,
24686        mat2: *mut nmod_mat_struct,
24687        sign: ::std::os::raw::c_int,
24688    );
24689}
24690extern "C" {
24691    pub fn fmpz_mat_multi_mod_ui_precomp(
24692        residues: *mut nmod_mat_t,
24693        nres: mp_limb_signed_t,
24694        mat: *mut fmpz_mat_struct,
24695        comb: *mut fmpz_comb_struct,
24696        temp: *mut fmpz_comb_temp_struct,
24697    );
24698}
24699extern "C" {
24700    pub fn fmpz_mat_multi_mod_ui(
24701        residues: *mut nmod_mat_t,
24702        nres: mp_limb_signed_t,
24703        mat: *mut fmpz_mat_struct,
24704    );
24705}
24706extern "C" {
24707    pub fn fmpz_mat_multi_CRT_ui_precomp(
24708        mat: *mut fmpz_mat_struct,
24709        residues: *mut nmod_mat_t,
24710        nres: mp_limb_signed_t,
24711        comb: *mut fmpz_comb_struct,
24712        temp: *mut fmpz_comb_temp_struct,
24713        sign: ::std::os::raw::c_int,
24714    );
24715}
24716extern "C" {
24717    pub fn fmpz_mat_multi_CRT_ui(
24718        mat: *mut fmpz_mat_struct,
24719        residues: *mut nmod_mat_t,
24720        nres: mp_limb_signed_t,
24721        sign: ::std::os::raw::c_int,
24722    );
24723}
24724extern "C" {
24725    pub fn fmpz_mat_hnf(H: *mut fmpz_mat_struct, A: *mut fmpz_mat_struct);
24726}
24727extern "C" {
24728    pub fn fmpz_mat_hnf_transform(
24729        H: *mut fmpz_mat_struct,
24730        U: *mut fmpz_mat_struct,
24731        A: *mut fmpz_mat_struct,
24732    );
24733}
24734extern "C" {
24735    pub fn fmpz_mat_hnf_classical(H: *mut fmpz_mat_struct, A: *mut fmpz_mat_struct);
24736}
24737extern "C" {
24738    pub fn fmpz_mat_hnf_xgcd(H: *mut fmpz_mat_struct, A: *mut fmpz_mat_struct);
24739}
24740extern "C" {
24741    pub fn fmpz_mat_hnf_minors(H: *mut fmpz_mat_struct, A: *mut fmpz_mat_struct);
24742}
24743extern "C" {
24744    pub fn fmpz_mat_hnf_minors_transform(
24745        H: *mut fmpz_mat_struct,
24746        U: *mut fmpz_mat_struct,
24747        A: *mut fmpz_mat_struct,
24748    );
24749}
24750extern "C" {
24751    pub fn fmpz_mat_hnf_modular(H: *mut fmpz_mat_struct, A: *mut fmpz_mat_struct, D: *mut fmpz);
24752}
24753extern "C" {
24754    pub fn fmpz_mat_hnf_modular_eldiv(A: *mut fmpz_mat_struct, D: *mut fmpz);
24755}
24756extern "C" {
24757    pub fn fmpz_mat_hnf_pernet_stein(
24758        H: *mut fmpz_mat_struct,
24759        A: *mut fmpz_mat_struct,
24760        state: *mut flint_rand_s,
24761    );
24762}
24763extern "C" {
24764    pub fn fmpz_mat_is_in_hnf(A: *mut fmpz_mat_struct) -> ::std::os::raw::c_int;
24765}
24766extern "C" {
24767    pub fn fmpz_mat_snf(S: *mut fmpz_mat_struct, A: *mut fmpz_mat_struct);
24768}
24769extern "C" {
24770    pub fn fmpz_mat_snf_diagonal(S: *mut fmpz_mat_struct, A: *mut fmpz_mat_struct);
24771}
24772extern "C" {
24773    pub fn fmpz_mat_snf_kannan_bachem(S: *mut fmpz_mat_struct, A: *mut fmpz_mat_struct);
24774}
24775extern "C" {
24776    pub fn fmpz_mat_snf_iliopoulos(
24777        S: *mut fmpz_mat_struct,
24778        A: *mut fmpz_mat_struct,
24779        mod_: *mut fmpz,
24780    );
24781}
24782extern "C" {
24783    pub fn fmpz_mat_is_in_snf(A: *mut fmpz_mat_struct) -> ::std::os::raw::c_int;
24784}
24785extern "C" {
24786    pub fn fmpz_mat_is_hadamard(A: *mut fmpz_mat_struct) -> ::std::os::raw::c_int;
24787}
24788extern "C" {
24789    pub fn fmpz_mat_hadamard(A: *mut fmpz_mat_struct) -> ::std::os::raw::c_int;
24790}
24791extern "C" {
24792    pub fn fmpz_mat_gram(B: *mut fmpz_mat_struct, A: *mut fmpz_mat_struct);
24793}
24794extern "C" {
24795    pub fn fmpz_mat_get_d_mat(
24796        B: *mut d_mat_struct,
24797        A: *mut fmpz_mat_struct,
24798    ) -> ::std::os::raw::c_int;
24799}
24800extern "C" {
24801    pub fn fmpz_mat_get_d_mat_transpose(
24802        B: *mut d_mat_struct,
24803        A: *mut fmpz_mat_struct,
24804    ) -> ::std::os::raw::c_int;
24805}
24806extern "C" {
24807    pub fn fmpz_mat_get_mpf_mat(B: *mut mpf_mat_struct, A: *mut fmpz_mat_struct);
24808}
24809extern "C" {
24810    pub fn fmpz_mat_chol_d(R: *mut d_mat_struct, A: *mut fmpz_mat_struct);
24811}
24812extern "C" {
24813    pub fn fmpz_mat_is_reduced(
24814        A: *mut fmpz_mat_struct,
24815        delta: f64,
24816        eta: f64,
24817    ) -> ::std::os::raw::c_int;
24818}
24819extern "C" {
24820    pub fn fmpz_mat_is_reduced_gram(
24821        A: *mut fmpz_mat_struct,
24822        delta: f64,
24823        eta: f64,
24824    ) -> ::std::os::raw::c_int;
24825}
24826extern "C" {
24827    pub fn fmpz_mat_is_reduced_with_removal(
24828        A: *mut fmpz_mat_struct,
24829        delta: f64,
24830        eta: f64,
24831        gs_B: *mut fmpz,
24832        newd: ::std::os::raw::c_int,
24833    ) -> ::std::os::raw::c_int;
24834}
24835extern "C" {
24836    pub fn fmpz_mat_is_reduced_gram_with_removal(
24837        A: *mut fmpz_mat_struct,
24838        delta: f64,
24839        eta: f64,
24840        gs_B: *mut fmpz,
24841        newd: ::std::os::raw::c_int,
24842    ) -> ::std::os::raw::c_int;
24843}
24844extern "C" {
24845    pub fn fmpz_mat_lll_original(A: *mut fmpz_mat_struct, delta: *mut fmpq, eta: *mut fmpq);
24846}
24847extern "C" {
24848    pub fn fmpz_mat_lll_storjohann(A: *mut fmpz_mat_struct, delta: *mut fmpq, eta: *mut fmpq);
24849}
24850extern "C" {
24851    pub fn fmpz_mat_col_partition(
24852        part: *mut mp_limb_signed_t,
24853        M: *mut fmpz_mat_struct,
24854        short_circuit: ::std::os::raw::c_int,
24855    ) -> ::std::os::raw::c_int;
24856}
24857extern "C" {
24858    pub fn fmpz_mat_next_col_van_hoeij(
24859        M: *mut fmpz_mat_struct,
24860        P: *mut fmpz,
24861        col: *mut fmpz_mat_struct,
24862        exp: mp_limb_signed_t,
24863        U_exp: mp_limb_signed_t,
24864    ) -> ::std::os::raw::c_int;
24865}
24866extern "C" {
24867    pub fn fmpz_poly_factor_init(fac: *mut fmpz_poly_factor_struct);
24868}
24869extern "C" {
24870    pub fn fmpz_poly_factor_init2(fac: *mut fmpz_poly_factor_struct, alloc: mp_limb_signed_t);
24871}
24872extern "C" {
24873    pub fn fmpz_poly_factor_realloc(fac: *mut fmpz_poly_factor_struct, alloc: mp_limb_signed_t);
24874}
24875extern "C" {
24876    pub fn fmpz_poly_factor_fit_length(fac: *mut fmpz_poly_factor_struct, len: mp_limb_signed_t);
24877}
24878extern "C" {
24879    pub fn fmpz_poly_factor_clear(fac: *mut fmpz_poly_factor_struct);
24880}
24881extern "C" {
24882    pub fn fmpz_poly_factor_set(
24883        res: *mut fmpz_poly_factor_struct,
24884        fac: *mut fmpz_poly_factor_struct,
24885    );
24886}
24887extern "C" {
24888    pub fn fmpz_poly_factor_insert(
24889        fac: *mut fmpz_poly_factor_struct,
24890        p: *mut fmpz_poly_struct,
24891        exp: mp_limb_signed_t,
24892    );
24893}
24894extern "C" {
24895    pub fn fmpz_poly_factor_concat(
24896        res: *mut fmpz_poly_factor_struct,
24897        fac: *mut fmpz_poly_factor_struct,
24898    );
24899}
24900extern "C" {
24901    pub fn fmpz_poly_factor_print(fac: *mut fmpz_poly_factor_struct);
24902}
24903extern "C" {
24904    pub fn fmpz_poly_factor_zassenhaus_recombination(
24905        final_fac: *mut fmpz_poly_factor_struct,
24906        lifted_fac: *mut fmpz_poly_factor_struct,
24907        F: *mut fmpz_poly_struct,
24908        P: *mut fmpz,
24909        exp: mp_limb_signed_t,
24910    );
24911}
24912extern "C" {
24913    pub fn fmpz_poly_factor_squarefree(fac: *mut fmpz_poly_factor_struct, F: *mut fmpz_poly_struct);
24914}
24915extern "C" {
24916    pub fn fmpz_poly_factor_mignotte(B: *mut fmpz, f: *mut fmpz_poly_struct);
24917}
24918extern "C" {
24919    pub fn _fmpz_poly_factor_zassenhaus(
24920        final_fac: *mut fmpz_poly_factor_struct,
24921        exp: mp_limb_signed_t,
24922        f: *mut fmpz_poly_struct,
24923        cutoff: mp_limb_signed_t,
24924        use_van_hoeij: ::std::os::raw::c_int,
24925    );
24926}
24927extern "C" {
24928    pub fn fmpz_poly_factor_zassenhaus(fac: *mut fmpz_poly_factor_struct, G: *mut fmpz_poly_struct);
24929}
24930extern "C" {
24931    pub fn _fmpz_poly_factor_quadratic(
24932        fac: *mut fmpz_poly_factor_struct,
24933        f: *mut fmpz_poly_struct,
24934        exp: mp_limb_signed_t,
24935    );
24936}
24937extern "C" {
24938    pub fn _fmpz_poly_factor_CLD_mat(
24939        res: *mut fmpz_mat_struct,
24940        f: *mut fmpz_poly_struct,
24941        lifted_fac: *mut fmpz_poly_factor_struct,
24942        P: *mut fmpz,
24943        k: mp_limb_t,
24944    ) -> mp_limb_signed_t;
24945}
24946extern "C" {
24947    pub fn fmpz_poly_factor_van_hoeij_check_if_solved(
24948        M: *mut fmpz_mat_struct,
24949        final_fac: *mut fmpz_poly_factor_struct,
24950        lifted_fac: *mut fmpz_poly_factor_struct,
24951        f: *mut fmpz_poly_struct,
24952        P: *mut fmpz,
24953        exp: mp_limb_signed_t,
24954        lc: *mut fmpz,
24955    ) -> ::std::os::raw::c_int;
24956}
24957extern "C" {
24958    pub fn fmpz_poly_factor_van_hoeij(
24959        final_fac: *mut fmpz_poly_factor_struct,
24960        fac: *mut nmod_poly_factor_struct,
24961        f: *mut fmpz_poly_struct,
24962        exp: mp_limb_signed_t,
24963        p: mp_limb_t,
24964    );
24965}
24966extern "C" {
24967    pub fn fmpz_poly_factor(fac: *mut fmpz_poly_factor_struct, G: *mut fmpz_poly_struct);
24968}
24969extern "C" {
24970    pub fn fmpz_poly_factor_get_fmpz_poly(
24971        z: *mut fmpz_poly_struct,
24972        F: *mut fmpz_poly_factor_struct,
24973        i: mp_limb_signed_t,
24974    );
24975}
24976extern "C" {
24977    pub fn fmpz_poly_factor_get_fmpz(z: *mut fmpz, F: *mut fmpz_poly_factor_struct);
24978}
24979#[repr(C)]
24980#[derive(Debug, Copy, Clone)]
24981pub struct fmpq_poly_struct {
24982    pub coeffs: *mut fmpz,
24983    pub den: fmpz_t,
24984    pub alloc: mp_limb_signed_t,
24985    pub length: mp_limb_signed_t,
24986}
24987#[test]
24988fn bindgen_test_layout_fmpq_poly_struct() {
24989    assert_eq!(
24990        ::std::mem::size_of::<fmpq_poly_struct>(),
24991        32usize,
24992        concat!("Size of: ", stringify!(fmpq_poly_struct))
24993    );
24994    assert_eq!(
24995        ::std::mem::align_of::<fmpq_poly_struct>(),
24996        8usize,
24997        concat!("Alignment of ", stringify!(fmpq_poly_struct))
24998    );
24999    assert_eq!(
25000        unsafe { &(*(::std::ptr::null::<fmpq_poly_struct>())).coeffs as *const _ as usize },
25001        0usize,
25002        concat!(
25003            "Offset of field: ",
25004            stringify!(fmpq_poly_struct),
25005            "::",
25006            stringify!(coeffs)
25007        )
25008    );
25009    assert_eq!(
25010        unsafe { &(*(::std::ptr::null::<fmpq_poly_struct>())).den as *const _ as usize },
25011        8usize,
25012        concat!(
25013            "Offset of field: ",
25014            stringify!(fmpq_poly_struct),
25015            "::",
25016            stringify!(den)
25017        )
25018    );
25019    assert_eq!(
25020        unsafe { &(*(::std::ptr::null::<fmpq_poly_struct>())).alloc as *const _ as usize },
25021        16usize,
25022        concat!(
25023            "Offset of field: ",
25024            stringify!(fmpq_poly_struct),
25025            "::",
25026            stringify!(alloc)
25027        )
25028    );
25029    assert_eq!(
25030        unsafe { &(*(::std::ptr::null::<fmpq_poly_struct>())).length as *const _ as usize },
25031        24usize,
25032        concat!(
25033            "Offset of field: ",
25034            stringify!(fmpq_poly_struct),
25035            "::",
25036            stringify!(length)
25037        )
25038    );
25039}
25040pub type fmpq_poly_t = [fmpq_poly_struct; 1usize];
25041#[repr(C)]
25042#[derive(Debug, Copy, Clone)]
25043pub struct fmpq_poly_powers_precomp_struct {
25044    pub powers: *mut fmpq_poly_struct,
25045    pub len: mp_limb_signed_t,
25046}
25047#[test]
25048fn bindgen_test_layout_fmpq_poly_powers_precomp_struct() {
25049    assert_eq!(
25050        ::std::mem::size_of::<fmpq_poly_powers_precomp_struct>(),
25051        16usize,
25052        concat!("Size of: ", stringify!(fmpq_poly_powers_precomp_struct))
25053    );
25054    assert_eq!(
25055        ::std::mem::align_of::<fmpq_poly_powers_precomp_struct>(),
25056        8usize,
25057        concat!("Alignment of ", stringify!(fmpq_poly_powers_precomp_struct))
25058    );
25059    assert_eq!(
25060        unsafe {
25061            &(*(::std::ptr::null::<fmpq_poly_powers_precomp_struct>())).powers as *const _ as usize
25062        },
25063        0usize,
25064        concat!(
25065            "Offset of field: ",
25066            stringify!(fmpq_poly_powers_precomp_struct),
25067            "::",
25068            stringify!(powers)
25069        )
25070    );
25071    assert_eq!(
25072        unsafe {
25073            &(*(::std::ptr::null::<fmpq_poly_powers_precomp_struct>())).len as *const _ as usize
25074        },
25075        8usize,
25076        concat!(
25077            "Offset of field: ",
25078            stringify!(fmpq_poly_powers_precomp_struct),
25079            "::",
25080            stringify!(len)
25081        )
25082    );
25083}
25084pub type fmpq_poly_powers_precomp_t = [fmpq_poly_powers_precomp_struct; 1usize];
25085extern "C" {
25086    pub fn fmpq_poly_init(poly: *mut fmpq_poly_struct);
25087}
25088extern "C" {
25089    pub fn fmpq_poly_init2(poly: *mut fmpq_poly_struct, alloc: mp_limb_signed_t);
25090}
25091extern "C" {
25092    pub fn fmpq_poly_realloc(poly: *mut fmpq_poly_struct, alloc: mp_limb_signed_t);
25093}
25094extern "C" {
25095    pub fn fmpq_poly_fit_length(poly: *mut fmpq_poly_struct, len: mp_limb_signed_t);
25096}
25097extern "C" {
25098    pub fn _fmpq_poly_set_length(poly: *mut fmpq_poly_struct, len: mp_limb_signed_t);
25099}
25100extern "C" {
25101    pub fn fmpq_poly_clear(poly: *mut fmpq_poly_struct);
25102}
25103extern "C" {
25104    pub fn _fmpq_poly_normalise(poly: *mut fmpq_poly_struct);
25105}
25106extern "C" {
25107    pub fn fmpq_poly_get_numerator(res: *mut fmpz_poly_struct, poly: *mut fmpq_poly_struct);
25108}
25109extern "C" {
25110    pub fn fmpq_poly_get_denominator(den: *mut fmpz, poly: *mut fmpq_poly_struct);
25111}
25112extern "C" {
25113    pub fn _fmpq_poly_canonicalise(rpoly: *mut fmpz, den: *mut fmpz, len: mp_limb_signed_t);
25114}
25115extern "C" {
25116    pub fn fmpq_poly_canonicalise(poly: *mut fmpq_poly_struct);
25117}
25118extern "C" {
25119    pub fn _fmpq_poly_is_canonical(
25120        poly: *const fmpz,
25121        den: *mut fmpz,
25122        len: mp_limb_signed_t,
25123    ) -> ::std::os::raw::c_int;
25124}
25125extern "C" {
25126    pub fn fmpq_poly_is_canonical(poly: *mut fmpq_poly_struct) -> ::std::os::raw::c_int;
25127}
25128extern "C" {
25129    pub fn fmpq_poly_degree(poly: *mut fmpq_poly_struct) -> mp_limb_signed_t;
25130}
25131extern "C" {
25132    pub fn fmpq_poly_length(poly: *mut fmpq_poly_struct) -> mp_limb_signed_t;
25133}
25134extern "C" {
25135    pub fn fmpq_poly_randtest(
25136        f: *mut fmpq_poly_struct,
25137        state: *mut flint_rand_s,
25138        len: mp_limb_signed_t,
25139        bits_in: mp_limb_t,
25140    );
25141}
25142extern "C" {
25143    pub fn fmpq_poly_randtest_unsigned(
25144        f: *mut fmpq_poly_struct,
25145        state: *mut flint_rand_s,
25146        len: mp_limb_signed_t,
25147        bits_in: mp_limb_t,
25148    );
25149}
25150extern "C" {
25151    pub fn fmpq_poly_randtest_not_zero(
25152        f: *mut fmpq_poly_struct,
25153        state: *mut flint_rand_s,
25154        len: mp_limb_signed_t,
25155        bits_in: mp_limb_t,
25156    );
25157}
25158extern "C" {
25159    pub fn fmpq_poly_set(poly1: *mut fmpq_poly_struct, poly2: *mut fmpq_poly_struct);
25160}
25161extern "C" {
25162    pub fn fmpq_poly_set_si(poly: *mut fmpq_poly_struct, x: mp_limb_signed_t);
25163}
25164extern "C" {
25165    pub fn fmpq_poly_set_ui(poly: *mut fmpq_poly_struct, x: mp_limb_t);
25166}
25167extern "C" {
25168    pub fn fmpq_poly_set_fmpz(poly: *mut fmpq_poly_struct, x: *mut fmpz);
25169}
25170extern "C" {
25171    pub fn fmpq_poly_set_fmpq(poly: *mut fmpq_poly_struct, x: *mut fmpq);
25172}
25173extern "C" {
25174    pub fn fmpq_poly_set_mpz(poly: *mut fmpq_poly_struct, x: *mut __mpz_struct);
25175}
25176extern "C" {
25177    pub fn fmpq_poly_set_mpq(poly: *mut fmpq_poly_struct, x: *mut __mpq_struct);
25178}
25179extern "C" {
25180    pub fn fmpq_poly_set_fmpz_poly(rop: *mut fmpq_poly_struct, op: *mut fmpz_poly_struct);
25181}
25182extern "C" {
25183    pub fn _fmpq_poly_get_nmod_poly(rop: *mut nmod_poly_struct, op: *mut fmpq_poly_struct);
25184}
25185extern "C" {
25186    pub fn fmpq_poly_get_nmod_poly_den(
25187        rop: *mut nmod_poly_struct,
25188        op: *mut fmpq_poly_struct,
25189        den: ::std::os::raw::c_int,
25190    );
25191}
25192extern "C" {
25193    pub fn fmpq_poly_get_nmod_poly(rop: *mut nmod_poly_struct, op: *mut fmpq_poly_struct);
25194}
25195extern "C" {
25196    pub fn fmpq_poly_set_nmod_poly(rop: *mut fmpq_poly_struct, op: *mut nmod_poly_struct);
25197}
25198extern "C" {
25199    pub fn _fmpq_poly_set_array_mpq(
25200        poly: *mut fmpz,
25201        den: *mut fmpz,
25202        a: *const mpq_t,
25203        n: mp_limb_signed_t,
25204    );
25205}
25206extern "C" {
25207    pub fn fmpq_poly_set_array_mpq(
25208        poly: *mut fmpq_poly_struct,
25209        a: *const mpq_t,
25210        n: mp_limb_signed_t,
25211    );
25212}
25213extern "C" {
25214    pub fn _fmpq_poly_set_str(
25215        poly: *mut fmpz,
25216        den: *mut fmpz,
25217        str: *const ::std::os::raw::c_char,
25218        len: mp_limb_signed_t,
25219    ) -> ::std::os::raw::c_int;
25220}
25221extern "C" {
25222    pub fn fmpq_poly_set_str(
25223        poly: *mut fmpq_poly_struct,
25224        str: *const ::std::os::raw::c_char,
25225    ) -> ::std::os::raw::c_int;
25226}
25227extern "C" {
25228    pub fn fmpq_poly_get_str(poly: *mut fmpq_poly_struct) -> *mut ::std::os::raw::c_char;
25229}
25230extern "C" {
25231    pub fn fmpq_poly_get_str_pretty(
25232        poly: *mut fmpq_poly_struct,
25233        var: *const ::std::os::raw::c_char,
25234    ) -> *mut ::std::os::raw::c_char;
25235}
25236extern "C" {
25237    pub fn _fmpq_poly_get_str_pretty(
25238        poly: *const fmpz,
25239        den: *mut fmpz,
25240        len: mp_limb_signed_t,
25241        var: *const ::std::os::raw::c_char,
25242    ) -> *mut ::std::os::raw::c_char;
25243}
25244extern "C" {
25245    pub fn fmpq_poly_zero(poly: *mut fmpq_poly_struct);
25246}
25247extern "C" {
25248    pub fn fmpq_poly_one(poly: *mut fmpq_poly_struct);
25249}
25250extern "C" {
25251    pub fn fmpq_poly_neg(poly1: *mut fmpq_poly_struct, poly2: *mut fmpq_poly_struct);
25252}
25253extern "C" {
25254    pub fn fmpq_poly_inv(poly1: *mut fmpq_poly_struct, poly2: *mut fmpq_poly_struct);
25255}
25256extern "C" {
25257    pub fn fmpq_poly_swap(poly1: *mut fmpq_poly_struct, poly2: *mut fmpq_poly_struct);
25258}
25259extern "C" {
25260    pub fn fmpq_poly_truncate(poly: *mut fmpq_poly_struct, n: mp_limb_signed_t);
25261}
25262extern "C" {
25263    pub fn fmpq_poly_set_trunc(
25264        res: *mut fmpq_poly_struct,
25265        poly: *mut fmpq_poly_struct,
25266        n: mp_limb_signed_t,
25267    );
25268}
25269extern "C" {
25270    pub fn fmpq_poly_get_slice(
25271        rop: *mut fmpq_poly_struct,
25272        op: *mut fmpq_poly_struct,
25273        i: mp_limb_signed_t,
25274        j: mp_limb_signed_t,
25275    );
25276}
25277extern "C" {
25278    pub fn fmpq_poly_reverse(
25279        res: *mut fmpq_poly_struct,
25280        poly: *mut fmpq_poly_struct,
25281        n: mp_limb_signed_t,
25282    );
25283}
25284extern "C" {
25285    pub fn fmpq_poly_get_coeff_fmpz(x: *mut fmpz, poly: *mut fmpq_poly_struct, n: mp_limb_signed_t);
25286}
25287extern "C" {
25288    pub fn fmpq_poly_get_coeff_fmpq(x: *mut fmpq, poly: *mut fmpq_poly_struct, n: mp_limb_signed_t);
25289}
25290extern "C" {
25291    pub fn fmpq_poly_get_coeff_mpq(
25292        x: *mut __mpq_struct,
25293        poly: *mut fmpq_poly_struct,
25294        n: mp_limb_signed_t,
25295    );
25296}
25297extern "C" {
25298    pub fn fmpq_poly_set_coeff_si(
25299        poly: *mut fmpq_poly_struct,
25300        n: mp_limb_signed_t,
25301        x: mp_limb_signed_t,
25302    );
25303}
25304extern "C" {
25305    pub fn fmpq_poly_set_coeff_ui(poly: *mut fmpq_poly_struct, n: mp_limb_signed_t, x: mp_limb_t);
25306}
25307extern "C" {
25308    pub fn fmpq_poly_set_coeff_fmpz(poly: *mut fmpq_poly_struct, n: mp_limb_signed_t, x: *mut fmpz);
25309}
25310extern "C" {
25311    pub fn fmpq_poly_set_coeff_fmpq(poly: *mut fmpq_poly_struct, n: mp_limb_signed_t, x: *mut fmpq);
25312}
25313extern "C" {
25314    pub fn fmpq_poly_set_coeff_mpz(
25315        poly: *mut fmpq_poly_struct,
25316        n: mp_limb_signed_t,
25317        x: *mut __mpz_struct,
25318    );
25319}
25320extern "C" {
25321    pub fn fmpq_poly_set_coeff_mpq(
25322        poly: *mut fmpq_poly_struct,
25323        n: mp_limb_signed_t,
25324        x: *mut __mpq_struct,
25325    );
25326}
25327extern "C" {
25328    pub fn fmpq_poly_equal(
25329        poly1: *mut fmpq_poly_struct,
25330        poly2: *mut fmpq_poly_struct,
25331    ) -> ::std::os::raw::c_int;
25332}
25333extern "C" {
25334    pub fn _fmpq_poly_cmp(
25335        lpoly: *const fmpz,
25336        lden: *mut fmpz,
25337        rpoly: *const fmpz,
25338        rden: *mut fmpz,
25339        len: mp_limb_signed_t,
25340    ) -> ::std::os::raw::c_int;
25341}
25342extern "C" {
25343    pub fn fmpq_poly_cmp(
25344        left: *mut fmpq_poly_struct,
25345        right: *mut fmpq_poly_struct,
25346    ) -> ::std::os::raw::c_int;
25347}
25348extern "C" {
25349    pub fn _fmpq_poly_equal_trunc(
25350        poly1: *const fmpz,
25351        den1: *mut fmpz,
25352        len1: mp_limb_signed_t,
25353        poly2: *const fmpz,
25354        den2: *mut fmpz,
25355        len2: mp_limb_signed_t,
25356        n: mp_limb_signed_t,
25357    ) -> ::std::os::raw::c_int;
25358}
25359extern "C" {
25360    pub fn fmpq_poly_equal_trunc(
25361        poly1: *mut fmpq_poly_struct,
25362        poly2: *mut fmpq_poly_struct,
25363        n: mp_limb_signed_t,
25364    ) -> ::std::os::raw::c_int;
25365}
25366extern "C" {
25367    pub fn fmpq_poly_is_zero(poly: *mut fmpq_poly_struct) -> ::std::os::raw::c_int;
25368}
25369extern "C" {
25370    pub fn fmpq_poly_is_one(poly: *mut fmpq_poly_struct) -> ::std::os::raw::c_int;
25371}
25372extern "C" {
25373    pub fn fmpq_poly_is_gen(op: *mut fmpq_poly_struct) -> ::std::os::raw::c_int;
25374}
25375extern "C" {
25376    pub fn fmpq_poly_add_si(
25377        res: *mut fmpq_poly_struct,
25378        poly: *mut fmpq_poly_struct,
25379        c: mp_limb_signed_t,
25380    );
25381}
25382extern "C" {
25383    pub fn fmpq_poly_sub_si(
25384        res: *mut fmpq_poly_struct,
25385        poly: *mut fmpq_poly_struct,
25386        c: mp_limb_signed_t,
25387    );
25388}
25389extern "C" {
25390    pub fn fmpq_poly_si_sub(
25391        res: *mut fmpq_poly_struct,
25392        c: mp_limb_signed_t,
25393        poly: *mut fmpq_poly_struct,
25394    );
25395}
25396extern "C" {
25397    pub fn fmpq_poly_add_fmpz(
25398        res: *mut fmpq_poly_struct,
25399        poly: *mut fmpq_poly_struct,
25400        c: *mut fmpz,
25401    );
25402}
25403extern "C" {
25404    pub fn fmpq_poly_sub_fmpz(
25405        res: *mut fmpq_poly_struct,
25406        poly: *mut fmpq_poly_struct,
25407        c: *mut fmpz,
25408    );
25409}
25410extern "C" {
25411    pub fn fmpq_poly_fmpz_sub(
25412        res: *mut fmpq_poly_struct,
25413        c: *mut fmpz,
25414        poly: *mut fmpq_poly_struct,
25415    );
25416}
25417extern "C" {
25418    pub fn fmpq_poly_add_fmpq(
25419        res: *mut fmpq_poly_struct,
25420        poly: *mut fmpq_poly_struct,
25421        c: *mut fmpq,
25422    );
25423}
25424extern "C" {
25425    pub fn fmpq_poly_sub_fmpq(
25426        res: *mut fmpq_poly_struct,
25427        poly: *mut fmpq_poly_struct,
25428        c: *mut fmpq,
25429    );
25430}
25431extern "C" {
25432    pub fn fmpq_poly_fmpq_sub(
25433        res: *mut fmpq_poly_struct,
25434        c: *mut fmpq,
25435        poly: *mut fmpq_poly_struct,
25436    );
25437}
25438extern "C" {
25439    pub fn _fmpq_poly_add(
25440        rpoly: *mut fmpz,
25441        rden: *mut fmpz,
25442        poly1: *const fmpz,
25443        den1: *mut fmpz,
25444        len1: mp_limb_signed_t,
25445        poly2: *const fmpz,
25446        den2: *mut fmpz,
25447        len2: mp_limb_signed_t,
25448    );
25449}
25450extern "C" {
25451    pub fn fmpq_poly_add(
25452        res: *mut fmpq_poly_struct,
25453        poly1: *mut fmpq_poly_struct,
25454        poly2: *mut fmpq_poly_struct,
25455    );
25456}
25457extern "C" {
25458    pub fn _fmpq_poly_add_can(
25459        rpoly: *mut fmpz,
25460        rden: *mut fmpz,
25461        poly1: *const fmpz,
25462        den1: *mut fmpz,
25463        len1: mp_limb_signed_t,
25464        poly2: *const fmpz,
25465        den2: *mut fmpz,
25466        len2: mp_limb_signed_t,
25467        can: ::std::os::raw::c_int,
25468    );
25469}
25470extern "C" {
25471    pub fn fmpq_poly_add_can(
25472        res: *mut fmpq_poly_struct,
25473        poly1: *mut fmpq_poly_struct,
25474        poly2: *mut fmpq_poly_struct,
25475        can: ::std::os::raw::c_int,
25476    );
25477}
25478extern "C" {
25479    pub fn _fmpq_poly_add_series(
25480        rpoly: *mut fmpz,
25481        rden: *mut fmpz,
25482        poly1: *const fmpz,
25483        den1: *mut fmpz,
25484        len1: mp_limb_signed_t,
25485        poly2: *const fmpz,
25486        den2: *mut fmpz,
25487        len2: mp_limb_signed_t,
25488        n: mp_limb_signed_t,
25489    );
25490}
25491extern "C" {
25492    pub fn fmpq_poly_add_series(
25493        res: *mut fmpq_poly_struct,
25494        poly1: *mut fmpq_poly_struct,
25495        poly2: *mut fmpq_poly_struct,
25496        n: mp_limb_signed_t,
25497    );
25498}
25499extern "C" {
25500    pub fn _fmpq_poly_add_series_can(
25501        rpoly: *mut fmpz,
25502        rden: *mut fmpz,
25503        poly1: *const fmpz,
25504        den1: *mut fmpz,
25505        len1: mp_limb_signed_t,
25506        poly2: *const fmpz,
25507        den2: *mut fmpz,
25508        len2: mp_limb_signed_t,
25509        n: mp_limb_signed_t,
25510        can: ::std::os::raw::c_int,
25511    );
25512}
25513extern "C" {
25514    pub fn fmpq_poly_add_series_can(
25515        res: *mut fmpq_poly_struct,
25516        poly1: *mut fmpq_poly_struct,
25517        poly2: *mut fmpq_poly_struct,
25518        n: mp_limb_signed_t,
25519        can: ::std::os::raw::c_int,
25520    );
25521}
25522extern "C" {
25523    pub fn _fmpq_poly_sub(
25524        rpoly: *mut fmpz,
25525        rden: *mut fmpz,
25526        poly1: *const fmpz,
25527        den1: *mut fmpz,
25528        len1: mp_limb_signed_t,
25529        poly2: *const fmpz,
25530        den2: *mut fmpz,
25531        len2: mp_limb_signed_t,
25532    );
25533}
25534extern "C" {
25535    pub fn fmpq_poly_sub(
25536        res: *mut fmpq_poly_struct,
25537        poly1: *mut fmpq_poly_struct,
25538        poly2: *mut fmpq_poly_struct,
25539    );
25540}
25541extern "C" {
25542    pub fn _fmpq_poly_sub_can(
25543        rpoly: *mut fmpz,
25544        rden: *mut fmpz,
25545        poly1: *const fmpz,
25546        den1: *mut fmpz,
25547        len1: mp_limb_signed_t,
25548        poly2: *const fmpz,
25549        den2: *mut fmpz,
25550        len2: mp_limb_signed_t,
25551        can: ::std::os::raw::c_int,
25552    );
25553}
25554extern "C" {
25555    pub fn fmpq_poly_sub_can(
25556        res: *mut fmpq_poly_struct,
25557        poly1: *mut fmpq_poly_struct,
25558        poly2: *mut fmpq_poly_struct,
25559        can: ::std::os::raw::c_int,
25560    );
25561}
25562extern "C" {
25563    pub fn _fmpq_poly_sub_series(
25564        rpoly: *mut fmpz,
25565        rden: *mut fmpz,
25566        poly1: *const fmpz,
25567        den1: *mut fmpz,
25568        len1: mp_limb_signed_t,
25569        poly2: *const fmpz,
25570        den2: *mut fmpz,
25571        len2: mp_limb_signed_t,
25572        n: mp_limb_signed_t,
25573    );
25574}
25575extern "C" {
25576    pub fn fmpq_poly_sub_series(
25577        res: *mut fmpq_poly_struct,
25578        poly1: *mut fmpq_poly_struct,
25579        poly2: *mut fmpq_poly_struct,
25580        n: mp_limb_signed_t,
25581    );
25582}
25583extern "C" {
25584    pub fn _fmpq_poly_sub_series_can(
25585        rpoly: *mut fmpz,
25586        rden: *mut fmpz,
25587        poly1: *const fmpz,
25588        den1: *mut fmpz,
25589        len1: mp_limb_signed_t,
25590        poly2: *const fmpz,
25591        den2: *mut fmpz,
25592        len2: mp_limb_signed_t,
25593        n: mp_limb_signed_t,
25594        can: ::std::os::raw::c_int,
25595    );
25596}
25597extern "C" {
25598    pub fn fmpq_poly_sub_series_can(
25599        res: *mut fmpq_poly_struct,
25600        poly1: *mut fmpq_poly_struct,
25601        poly2: *mut fmpq_poly_struct,
25602        n: mp_limb_signed_t,
25603        can: ::std::os::raw::c_int,
25604    );
25605}
25606extern "C" {
25607    pub fn _fmpq_poly_scalar_mul_si(
25608        rpoly: *mut fmpz,
25609        rden: *mut fmpz,
25610        poly: *const fmpz,
25611        den: *mut fmpz,
25612        len: mp_limb_signed_t,
25613        c: mp_limb_signed_t,
25614    );
25615}
25616extern "C" {
25617    pub fn _fmpq_poly_scalar_mul_ui(
25618        rpoly: *mut fmpz,
25619        rden: *mut fmpz,
25620        poly: *const fmpz,
25621        den: *mut fmpz,
25622        len: mp_limb_signed_t,
25623        c: mp_limb_t,
25624    );
25625}
25626extern "C" {
25627    pub fn _fmpq_poly_scalar_mul_fmpz(
25628        rpoly: *mut fmpz,
25629        rden: *mut fmpz,
25630        poly: *const fmpz,
25631        den: *mut fmpz,
25632        len: mp_limb_signed_t,
25633        c: *mut fmpz,
25634    );
25635}
25636extern "C" {
25637    pub fn _fmpq_poly_scalar_mul_fmpq(
25638        rpoly: *mut fmpz,
25639        rden: *mut fmpz,
25640        poly: *const fmpz,
25641        den: *mut fmpz,
25642        len: mp_limb_signed_t,
25643        r: *mut fmpz,
25644        s: *mut fmpz,
25645    );
25646}
25647extern "C" {
25648    pub fn fmpq_poly_scalar_mul_si(
25649        rop: *mut fmpq_poly_struct,
25650        op: *mut fmpq_poly_struct,
25651        c: mp_limb_signed_t,
25652    );
25653}
25654extern "C" {
25655    pub fn fmpq_poly_scalar_mul_ui(
25656        rop: *mut fmpq_poly_struct,
25657        op: *mut fmpq_poly_struct,
25658        c: mp_limb_t,
25659    );
25660}
25661extern "C" {
25662    pub fn fmpq_poly_scalar_mul_fmpz(
25663        rop: *mut fmpq_poly_struct,
25664        op: *mut fmpq_poly_struct,
25665        c: *mut fmpz,
25666    );
25667}
25668extern "C" {
25669    pub fn fmpq_poly_scalar_mul_fmpq(
25670        rop: *mut fmpq_poly_struct,
25671        op: *mut fmpq_poly_struct,
25672        c: *mut fmpq,
25673    );
25674}
25675extern "C" {
25676    pub fn fmpq_poly_scalar_mul_mpz(
25677        rop: *mut fmpq_poly_struct,
25678        op: *mut fmpq_poly_struct,
25679        c: *mut __mpz_struct,
25680    );
25681}
25682extern "C" {
25683    pub fn fmpq_poly_scalar_mul_mpq(
25684        rop: *mut fmpq_poly_struct,
25685        op: *mut fmpq_poly_struct,
25686        c: *mut __mpq_struct,
25687    );
25688}
25689extern "C" {
25690    pub fn _fmpq_poly_scalar_div_si(
25691        rpoly: *mut fmpz,
25692        rden: *mut fmpz,
25693        poly: *const fmpz,
25694        den: *mut fmpz,
25695        len: mp_limb_signed_t,
25696        c: mp_limb_signed_t,
25697    );
25698}
25699extern "C" {
25700    pub fn _fmpq_poly_scalar_div_ui(
25701        rpoly: *mut fmpz,
25702        rden: *mut fmpz,
25703        poly: *const fmpz,
25704        den: *mut fmpz,
25705        len: mp_limb_signed_t,
25706        c: mp_limb_t,
25707    );
25708}
25709extern "C" {
25710    pub fn _fmpq_poly_scalar_div_fmpz(
25711        rpoly: *mut fmpz,
25712        rden: *mut fmpz,
25713        poly: *const fmpz,
25714        den: *mut fmpz,
25715        len: mp_limb_signed_t,
25716        c: *mut fmpz,
25717    );
25718}
25719extern "C" {
25720    pub fn _fmpq_poly_scalar_div_fmpq(
25721        rpoly: *mut fmpz,
25722        rden: *mut fmpz,
25723        poly: *const fmpz,
25724        den: *mut fmpz,
25725        len: mp_limb_signed_t,
25726        r: *mut fmpz,
25727        s: *mut fmpz,
25728    );
25729}
25730extern "C" {
25731    pub fn fmpq_poly_scalar_div_si(
25732        rop: *mut fmpq_poly_struct,
25733        op: *mut fmpq_poly_struct,
25734        c: mp_limb_signed_t,
25735    );
25736}
25737extern "C" {
25738    pub fn fmpq_poly_scalar_div_ui(
25739        rop: *mut fmpq_poly_struct,
25740        op: *mut fmpq_poly_struct,
25741        c: mp_limb_t,
25742    );
25743}
25744extern "C" {
25745    pub fn fmpq_poly_scalar_div_fmpz(
25746        rop: *mut fmpq_poly_struct,
25747        op: *mut fmpq_poly_struct,
25748        c: *mut fmpz,
25749    );
25750}
25751extern "C" {
25752    pub fn fmpq_poly_scalar_div_fmpq(
25753        rop: *mut fmpq_poly_struct,
25754        op: *mut fmpq_poly_struct,
25755        c: *mut fmpq,
25756    );
25757}
25758extern "C" {
25759    pub fn fmpq_poly_scalar_div_mpz(
25760        rop: *mut fmpq_poly_struct,
25761        op: *mut fmpq_poly_struct,
25762        c: *mut __mpz_struct,
25763    );
25764}
25765extern "C" {
25766    pub fn fmpq_poly_scalar_div_mpq(
25767        rop: *mut fmpq_poly_struct,
25768        op: *mut fmpq_poly_struct,
25769        c: *mut __mpq_struct,
25770    );
25771}
25772extern "C" {
25773    pub fn _fmpq_poly_mul(
25774        rpoly: *mut fmpz,
25775        rden: *mut fmpz,
25776        poly1: *const fmpz,
25777        den1: *mut fmpz,
25778        len1: mp_limb_signed_t,
25779        poly2: *const fmpz,
25780        den2: *mut fmpz,
25781        len2: mp_limb_signed_t,
25782    );
25783}
25784extern "C" {
25785    pub fn fmpq_poly_mul(
25786        res: *mut fmpq_poly_struct,
25787        poly1: *mut fmpq_poly_struct,
25788        poly2: *mut fmpq_poly_struct,
25789    );
25790}
25791extern "C" {
25792    pub fn _fmpq_poly_mullow(
25793        rpoly: *mut fmpz,
25794        rden: *mut fmpz,
25795        poly1: *const fmpz,
25796        den1: *mut fmpz,
25797        len1: mp_limb_signed_t,
25798        poly2: *const fmpz,
25799        den2: *mut fmpz,
25800        len2: mp_limb_signed_t,
25801        n: mp_limb_signed_t,
25802    );
25803}
25804extern "C" {
25805    pub fn fmpq_poly_mullow(
25806        res: *mut fmpq_poly_struct,
25807        poly1: *mut fmpq_poly_struct,
25808        poly2: *mut fmpq_poly_struct,
25809        n: mp_limb_signed_t,
25810    );
25811}
25812extern "C" {
25813    pub fn fmpq_poly_addmul(
25814        rop: *mut fmpq_poly_struct,
25815        op1: *mut fmpq_poly_struct,
25816        op2: *mut fmpq_poly_struct,
25817    );
25818}
25819extern "C" {
25820    pub fn fmpq_poly_submul(
25821        rop: *mut fmpq_poly_struct,
25822        op1: *mut fmpq_poly_struct,
25823        op2: *mut fmpq_poly_struct,
25824    );
25825}
25826extern "C" {
25827    pub fn _fmpq_poly_pow(
25828        rpoly: *mut fmpz,
25829        rden: *mut fmpz,
25830        poly: *const fmpz,
25831        den: *mut fmpz,
25832        len: mp_limb_signed_t,
25833        e: mp_limb_t,
25834    );
25835}
25836extern "C" {
25837    pub fn fmpq_poly_pow(rpoly: *mut fmpq_poly_struct, poly: *mut fmpq_poly_struct, e: mp_limb_t);
25838}
25839extern "C" {
25840    pub fn _fmpq_poly_pow_trunc(
25841        res: *mut fmpz,
25842        resden: *mut fmpz,
25843        f: *const fmpz,
25844        fden: *mut fmpz,
25845        flen: mp_limb_signed_t,
25846        exp: mp_limb_t,
25847        len: mp_limb_signed_t,
25848    );
25849}
25850extern "C" {
25851    pub fn fmpq_poly_pow_trunc(
25852        res: *mut fmpq_poly_struct,
25853        poly: *mut fmpq_poly_struct,
25854        exp: mp_limb_t,
25855        len: mp_limb_signed_t,
25856    );
25857}
25858extern "C" {
25859    pub fn fmpq_poly_shift_left(
25860        res: *mut fmpq_poly_struct,
25861        poly: *mut fmpq_poly_struct,
25862        n: mp_limb_signed_t,
25863    );
25864}
25865extern "C" {
25866    pub fn fmpq_poly_shift_right(
25867        res: *mut fmpq_poly_struct,
25868        poly: *mut fmpq_poly_struct,
25869        n: mp_limb_signed_t,
25870    );
25871}
25872extern "C" {
25873    pub fn _fmpq_poly_divrem(
25874        Q: *mut fmpz,
25875        q: *mut fmpz,
25876        R: *mut fmpz,
25877        r: *mut fmpz,
25878        A: *const fmpz,
25879        a: *mut fmpz,
25880        lenA: mp_limb_signed_t,
25881        B: *const fmpz,
25882        b: *mut fmpz,
25883        lenB: mp_limb_signed_t,
25884        inv: *mut fmpz_preinvn_struct,
25885    );
25886}
25887extern "C" {
25888    pub fn fmpq_poly_divrem(
25889        Q: *mut fmpq_poly_struct,
25890        R: *mut fmpq_poly_struct,
25891        poly1: *mut fmpq_poly_struct,
25892        poly2: *mut fmpq_poly_struct,
25893    );
25894}
25895extern "C" {
25896    pub fn _fmpq_poly_div(
25897        Q: *mut fmpz,
25898        q: *mut fmpz,
25899        A: *const fmpz,
25900        a: *mut fmpz,
25901        lenA: mp_limb_signed_t,
25902        B: *const fmpz,
25903        b: *mut fmpz,
25904        lenB: mp_limb_signed_t,
25905        inv: *mut fmpz_preinvn_struct,
25906    );
25907}
25908extern "C" {
25909    pub fn fmpq_poly_div(
25910        Q: *mut fmpq_poly_struct,
25911        poly1: *mut fmpq_poly_struct,
25912        poly2: *mut fmpq_poly_struct,
25913    );
25914}
25915extern "C" {
25916    pub fn _fmpq_poly_rem(
25917        R: *mut fmpz,
25918        r: *mut fmpz,
25919        A: *const fmpz,
25920        a: *mut fmpz,
25921        lenA: mp_limb_signed_t,
25922        B: *const fmpz,
25923        b: *mut fmpz,
25924        lenB: mp_limb_signed_t,
25925        inv: *mut fmpz_preinvn_struct,
25926    );
25927}
25928extern "C" {
25929    pub fn fmpq_poly_rem(
25930        R: *mut fmpq_poly_struct,
25931        poly1: *mut fmpq_poly_struct,
25932        poly2: *mut fmpq_poly_struct,
25933    );
25934}
25935extern "C" {
25936    pub fn _fmpq_poly_powers_precompute(
25937        B: *const fmpz,
25938        denB: *mut fmpz,
25939        len: mp_limb_signed_t,
25940    ) -> *mut fmpq_poly_struct;
25941}
25942extern "C" {
25943    pub fn fmpq_poly_powers_precompute(
25944        pinv: *mut fmpq_poly_powers_precomp_struct,
25945        poly: *mut fmpq_poly_struct,
25946    );
25947}
25948extern "C" {
25949    pub fn _fmpq_poly_powers_clear(powers: *mut fmpq_poly_struct, len: mp_limb_signed_t);
25950}
25951extern "C" {
25952    pub fn fmpq_poly_powers_clear(pinv: *mut fmpq_poly_powers_precomp_struct);
25953}
25954extern "C" {
25955    pub fn _fmpq_poly_rem_powers_precomp(
25956        A: *mut fmpz,
25957        denA: *mut fmpz,
25958        m: mp_limb_signed_t,
25959        B: *const fmpz,
25960        denB: *mut fmpz,
25961        n: mp_limb_signed_t,
25962        powers: *mut fmpq_poly_struct,
25963    );
25964}
25965extern "C" {
25966    pub fn fmpq_poly_rem_powers_precomp(
25967        R: *mut fmpq_poly_struct,
25968        A: *mut fmpq_poly_struct,
25969        B: *mut fmpq_poly_struct,
25970        B_inv: *mut fmpq_poly_powers_precomp_struct,
25971    );
25972}
25973extern "C" {
25974    pub fn _fmpq_poly_divides(
25975        qpoly: *mut fmpz,
25976        qden: *mut fmpz,
25977        poly1: *const fmpz,
25978        den1: *mut fmpz,
25979        len1: mp_limb_signed_t,
25980        poly2: *const fmpz,
25981        den2: *mut fmpz,
25982        len2: mp_limb_signed_t,
25983    ) -> ::std::os::raw::c_int;
25984}
25985extern "C" {
25986    pub fn fmpq_poly_divides(
25987        q: *mut fmpq_poly_struct,
25988        poly1: *mut fmpq_poly_struct,
25989        poly2: *mut fmpq_poly_struct,
25990    ) -> ::std::os::raw::c_int;
25991}
25992extern "C" {
25993    pub fn fmpq_poly_remove(
25994        q: *mut fmpq_poly_struct,
25995        poly1: *mut fmpq_poly_struct,
25996        poly2: *mut fmpq_poly_struct,
25997    ) -> mp_limb_signed_t;
25998}
25999extern "C" {
26000    pub fn _fmpq_poly_inv_series_newton(
26001        Qinv: *mut fmpz,
26002        Qinvden: *mut fmpz,
26003        Q: *const fmpz,
26004        Qden: *mut fmpz,
26005        Qlen: mp_limb_signed_t,
26006        n: mp_limb_signed_t,
26007    );
26008}
26009extern "C" {
26010    pub fn fmpq_poly_inv_series_newton(
26011        Qinv: *mut fmpq_poly_struct,
26012        Q: *mut fmpq_poly_struct,
26013        n: mp_limb_signed_t,
26014    );
26015}
26016extern "C" {
26017    pub fn _fmpq_poly_inv_series(
26018        Qinv: *mut fmpz,
26019        Qinvden: *mut fmpz,
26020        Q: *const fmpz,
26021        Qden: *mut fmpz,
26022        Qlen: mp_limb_signed_t,
26023        n: mp_limb_signed_t,
26024    );
26025}
26026extern "C" {
26027    pub fn fmpq_poly_inv_series(
26028        Qinv: *mut fmpq_poly_struct,
26029        Q: *mut fmpq_poly_struct,
26030        n: mp_limb_signed_t,
26031    );
26032}
26033extern "C" {
26034    pub fn _fmpq_poly_div_series(
26035        Q: *mut fmpz,
26036        denQ: *mut fmpz,
26037        A: *const fmpz,
26038        denA: *mut fmpz,
26039        lenA: mp_limb_signed_t,
26040        B: *const fmpz,
26041        denB: *mut fmpz,
26042        lenB: mp_limb_signed_t,
26043        n: mp_limb_signed_t,
26044    );
26045}
26046extern "C" {
26047    pub fn fmpq_poly_div_series(
26048        Q: *mut fmpq_poly_struct,
26049        A: *mut fmpq_poly_struct,
26050        B: *mut fmpq_poly_struct,
26051        n: mp_limb_signed_t,
26052    );
26053}
26054extern "C" {
26055    pub fn _fmpq_poly_gcd(
26056        G: *mut fmpz,
26057        denG: *mut fmpz,
26058        A: *const fmpz,
26059        lenA: mp_limb_signed_t,
26060        B: *const fmpz,
26061        lenB: mp_limb_signed_t,
26062    );
26063}
26064extern "C" {
26065    pub fn fmpq_poly_gcd(
26066        G: *mut fmpq_poly_struct,
26067        A: *mut fmpq_poly_struct,
26068        B: *mut fmpq_poly_struct,
26069    );
26070}
26071extern "C" {
26072    pub fn _fmpq_poly_xgcd(
26073        G: *mut fmpz,
26074        denG: *mut fmpz,
26075        S: *mut fmpz,
26076        denS: *mut fmpz,
26077        T: *mut fmpz,
26078        denT: *mut fmpz,
26079        A: *const fmpz,
26080        denA: *mut fmpz,
26081        lenA: mp_limb_signed_t,
26082        B: *const fmpz,
26083        denB: *mut fmpz,
26084        lenB: mp_limb_signed_t,
26085    );
26086}
26087extern "C" {
26088    pub fn fmpq_poly_xgcd(
26089        G: *mut fmpq_poly_struct,
26090        S: *mut fmpq_poly_struct,
26091        T: *mut fmpq_poly_struct,
26092        A: *mut fmpq_poly_struct,
26093        B: *mut fmpq_poly_struct,
26094    );
26095}
26096extern "C" {
26097    pub fn _fmpq_poly_lcm(
26098        G: *mut fmpz,
26099        denG: *mut fmpz,
26100        A: *const fmpz,
26101        lenA: mp_limb_signed_t,
26102        B: *const fmpz,
26103        lenB: mp_limb_signed_t,
26104    );
26105}
26106extern "C" {
26107    pub fn fmpq_poly_lcm(
26108        L: *mut fmpq_poly_struct,
26109        A: *mut fmpq_poly_struct,
26110        B: *mut fmpq_poly_struct,
26111    );
26112}
26113extern "C" {
26114    pub fn _fmpq_poly_resultant(
26115        rnum: *mut fmpz,
26116        rden: *mut fmpz,
26117        poly1: *const fmpz,
26118        den1: *mut fmpz,
26119        len1: mp_limb_signed_t,
26120        poly2: *const fmpz,
26121        den2: *mut fmpz,
26122        len2: mp_limb_signed_t,
26123    );
26124}
26125extern "C" {
26126    pub fn fmpq_poly_resultant(r: *mut fmpq, f: *mut fmpq_poly_struct, g: *mut fmpq_poly_struct);
26127}
26128extern "C" {
26129    pub fn _fmpq_poly_resultant_div(
26130        rnum: *mut fmpz,
26131        rden: *mut fmpz,
26132        poly1: *const fmpz,
26133        den1: *mut fmpz,
26134        len1: mp_limb_signed_t,
26135        poly2: *const fmpz,
26136        den2: *mut fmpz,
26137        len2: mp_limb_signed_t,
26138        divisor: *mut fmpz,
26139        nbits: mp_limb_signed_t,
26140    );
26141}
26142extern "C" {
26143    pub fn fmpq_poly_resultant_div(
26144        r: *mut fmpq,
26145        f: *mut fmpq_poly_struct,
26146        g: *mut fmpq_poly_struct,
26147        divisor: *mut fmpz,
26148        nbits: mp_limb_signed_t,
26149    );
26150}
26151extern "C" {
26152    pub fn _fmpq_poly_derivative(
26153        rpoly: *mut fmpz,
26154        rden: *mut fmpz,
26155        poly: *const fmpz,
26156        den: *mut fmpz,
26157        len: mp_limb_signed_t,
26158    );
26159}
26160extern "C" {
26161    pub fn fmpq_poly_derivative(res: *mut fmpq_poly_struct, poly: *mut fmpq_poly_struct);
26162}
26163extern "C" {
26164    pub fn _fmpq_poly_integral(
26165        rpoly: *mut fmpz,
26166        rden: *mut fmpz,
26167        poly: *const fmpz,
26168        den: *mut fmpz,
26169        len: mp_limb_signed_t,
26170    );
26171}
26172extern "C" {
26173    pub fn fmpq_poly_integral(res: *mut fmpq_poly_struct, poly: *mut fmpq_poly_struct);
26174}
26175extern "C" {
26176    pub fn _fmpq_poly_invsqrt_series(
26177        rpoly: *mut fmpz,
26178        rden: *mut fmpz,
26179        poly: *const fmpz,
26180        den: *mut fmpz,
26181        len: mp_limb_signed_t,
26182        n: mp_limb_signed_t,
26183    );
26184}
26185extern "C" {
26186    pub fn fmpq_poly_invsqrt_series(
26187        res: *mut fmpq_poly_struct,
26188        poly: *mut fmpq_poly_struct,
26189        n: mp_limb_signed_t,
26190    );
26191}
26192extern "C" {
26193    pub fn _fmpq_poly_sqrt_series(
26194        rpoly: *mut fmpz,
26195        rden: *mut fmpz,
26196        poly: *const fmpz,
26197        den: *mut fmpz,
26198        len: mp_limb_signed_t,
26199        n: mp_limb_signed_t,
26200    );
26201}
26202extern "C" {
26203    pub fn fmpq_poly_sqrt_series(
26204        res: *mut fmpq_poly_struct,
26205        poly: *mut fmpq_poly_struct,
26206        n: mp_limb_signed_t,
26207    );
26208}
26209extern "C" {
26210    pub fn _fmpq_poly_power_sums(
26211        res: *mut fmpz,
26212        rden: *mut fmpz,
26213        poly: *const fmpz,
26214        len: mp_limb_signed_t,
26215        n: mp_limb_signed_t,
26216    );
26217}
26218extern "C" {
26219    pub fn fmpq_poly_power_sums(
26220        res: *mut fmpq_poly_struct,
26221        poly: *mut fmpq_poly_struct,
26222        n: mp_limb_signed_t,
26223    );
26224}
26225extern "C" {
26226    pub fn _fmpq_poly_power_sums_to_poly(
26227        res: *mut fmpz,
26228        poly: *const fmpz,
26229        den: *mut fmpz,
26230        len: mp_limb_signed_t,
26231    );
26232}
26233extern "C" {
26234    pub fn fmpq_poly_power_sums_to_fmpz_poly(res: *mut fmpz_poly_struct, Q: *mut fmpq_poly_struct);
26235}
26236extern "C" {
26237    pub fn fmpq_poly_power_sums_to_poly(res: *mut fmpq_poly_struct, Q: *mut fmpq_poly_struct);
26238}
26239extern "C" {
26240    pub fn _fmpq_poly_log_series(
26241        g: *mut fmpz,
26242        gden: *mut fmpz,
26243        f: *const fmpz,
26244        fden: *mut fmpz,
26245        flen: mp_limb_signed_t,
26246        n: mp_limb_signed_t,
26247    );
26248}
26249extern "C" {
26250    pub fn fmpq_poly_log_series(
26251        res: *mut fmpq_poly_struct,
26252        f: *mut fmpq_poly_struct,
26253        n: mp_limb_signed_t,
26254    );
26255}
26256extern "C" {
26257    pub fn _fmpq_poly_exp_series(
26258        g: *mut fmpz,
26259        gden: *mut fmpz,
26260        h: *const fmpz,
26261        hden: *mut fmpz,
26262        hlen: mp_limb_signed_t,
26263        n: mp_limb_signed_t,
26264    );
26265}
26266extern "C" {
26267    pub fn fmpq_poly_exp_series(
26268        res: *mut fmpq_poly_struct,
26269        poly: *mut fmpq_poly_struct,
26270        n: mp_limb_signed_t,
26271    );
26272}
26273extern "C" {
26274    pub fn _fmpq_poly_atan_series(
26275        g: *mut fmpz,
26276        gden: *mut fmpz,
26277        h: *const fmpz,
26278        hden: *mut fmpz,
26279        hlen: mp_limb_signed_t,
26280        n: mp_limb_signed_t,
26281    );
26282}
26283extern "C" {
26284    pub fn fmpq_poly_atan_series(
26285        res: *mut fmpq_poly_struct,
26286        poly: *mut fmpq_poly_struct,
26287        n: mp_limb_signed_t,
26288    );
26289}
26290extern "C" {
26291    pub fn _fmpq_poly_atanh_series(
26292        g: *mut fmpz,
26293        gden: *mut fmpz,
26294        h: *const fmpz,
26295        hden: *mut fmpz,
26296        hlen: mp_limb_signed_t,
26297        n: mp_limb_signed_t,
26298    );
26299}
26300extern "C" {
26301    pub fn fmpq_poly_atanh_series(
26302        res: *mut fmpq_poly_struct,
26303        poly: *mut fmpq_poly_struct,
26304        n: mp_limb_signed_t,
26305    );
26306}
26307extern "C" {
26308    pub fn _fmpq_poly_asin_series(
26309        g: *mut fmpz,
26310        gden: *mut fmpz,
26311        h: *const fmpz,
26312        hden: *mut fmpz,
26313        hlen: mp_limb_signed_t,
26314        n: mp_limb_signed_t,
26315    );
26316}
26317extern "C" {
26318    pub fn fmpq_poly_asin_series(
26319        res: *mut fmpq_poly_struct,
26320        poly: *mut fmpq_poly_struct,
26321        n: mp_limb_signed_t,
26322    );
26323}
26324extern "C" {
26325    pub fn _fmpq_poly_asinh_series(
26326        g: *mut fmpz,
26327        gden: *mut fmpz,
26328        h: *const fmpz,
26329        hden: *mut fmpz,
26330        hlen: mp_limb_signed_t,
26331        n: mp_limb_signed_t,
26332    );
26333}
26334extern "C" {
26335    pub fn fmpq_poly_asinh_series(
26336        res: *mut fmpq_poly_struct,
26337        poly: *mut fmpq_poly_struct,
26338        n: mp_limb_signed_t,
26339    );
26340}
26341extern "C" {
26342    pub fn _fmpq_poly_tan_series(
26343        g: *mut fmpz,
26344        gden: *mut fmpz,
26345        h: *const fmpz,
26346        hden: *mut fmpz,
26347        hlen: mp_limb_signed_t,
26348        n: mp_limb_signed_t,
26349    );
26350}
26351extern "C" {
26352    pub fn fmpq_poly_tan_series(
26353        res: *mut fmpq_poly_struct,
26354        poly: *mut fmpq_poly_struct,
26355        n: mp_limb_signed_t,
26356    );
26357}
26358extern "C" {
26359    pub fn _fmpq_poly_sin_series(
26360        g: *mut fmpz,
26361        gden: *mut fmpz,
26362        h: *const fmpz,
26363        hden: *mut fmpz,
26364        hlen: mp_limb_signed_t,
26365        n: mp_limb_signed_t,
26366    );
26367}
26368extern "C" {
26369    pub fn fmpq_poly_sin_series(
26370        res: *mut fmpq_poly_struct,
26371        poly: *mut fmpq_poly_struct,
26372        n: mp_limb_signed_t,
26373    );
26374}
26375extern "C" {
26376    pub fn _fmpq_poly_cos_series(
26377        g: *mut fmpz,
26378        gden: *mut fmpz,
26379        h: *const fmpz,
26380        hden: *mut fmpz,
26381        hlen: mp_limb_signed_t,
26382        n: mp_limb_signed_t,
26383    );
26384}
26385extern "C" {
26386    pub fn fmpq_poly_cos_series(
26387        res: *mut fmpq_poly_struct,
26388        poly: *mut fmpq_poly_struct,
26389        n: mp_limb_signed_t,
26390    );
26391}
26392extern "C" {
26393    pub fn _fmpq_poly_sin_cos_series(
26394        s: *mut fmpz,
26395        sden: *mut fmpz,
26396        c: *mut fmpz,
26397        cden: *mut fmpz,
26398        h: *const fmpz,
26399        hden: *mut fmpz,
26400        hlen: mp_limb_signed_t,
26401        n: mp_limb_signed_t,
26402    );
26403}
26404extern "C" {
26405    pub fn fmpq_poly_sin_cos_series(
26406        res1: *mut fmpq_poly_struct,
26407        res2: *mut fmpq_poly_struct,
26408        poly: *mut fmpq_poly_struct,
26409        n: mp_limb_signed_t,
26410    );
26411}
26412extern "C" {
26413    pub fn _fmpq_poly_sinh_series(
26414        g: *mut fmpz,
26415        gden: *mut fmpz,
26416        h: *const fmpz,
26417        hden: *mut fmpz,
26418        hlen: mp_limb_signed_t,
26419        n: mp_limb_signed_t,
26420    );
26421}
26422extern "C" {
26423    pub fn fmpq_poly_sinh_series(
26424        res: *mut fmpq_poly_struct,
26425        poly: *mut fmpq_poly_struct,
26426        n: mp_limb_signed_t,
26427    );
26428}
26429extern "C" {
26430    pub fn _fmpq_poly_cosh_series(
26431        g: *mut fmpz,
26432        gden: *mut fmpz,
26433        h: *const fmpz,
26434        hden: *mut fmpz,
26435        hlen: mp_limb_signed_t,
26436        n: mp_limb_signed_t,
26437    );
26438}
26439extern "C" {
26440    pub fn fmpq_poly_cosh_series(
26441        res: *mut fmpq_poly_struct,
26442        poly: *mut fmpq_poly_struct,
26443        n: mp_limb_signed_t,
26444    );
26445}
26446extern "C" {
26447    pub fn _fmpq_poly_tanh_series(
26448        g: *mut fmpz,
26449        gden: *mut fmpz,
26450        h: *const fmpz,
26451        hden: *mut fmpz,
26452        hlen: mp_limb_signed_t,
26453        n: mp_limb_signed_t,
26454    );
26455}
26456extern "C" {
26457    pub fn fmpq_poly_tanh_series(
26458        res: *mut fmpq_poly_struct,
26459        poly: *mut fmpq_poly_struct,
26460        n: mp_limb_signed_t,
26461    );
26462}
26463extern "C" {
26464    pub fn _fmpq_poly_legendre_p(coeffs: *mut fmpz, den: *mut fmpz, n: mp_limb_t);
26465}
26466extern "C" {
26467    pub fn fmpq_poly_legendre_p(poly: *mut fmpq_poly_struct, n: mp_limb_t);
26468}
26469extern "C" {
26470    pub fn _fmpq_poly_laguerre_l(coeffs: *mut fmpz, den: *mut fmpz, n: mp_limb_t);
26471}
26472extern "C" {
26473    pub fn fmpq_poly_laguerre_l(poly: *mut fmpq_poly_struct, n: mp_limb_t);
26474}
26475extern "C" {
26476    pub fn _fmpq_poly_gegenbauer_c(coeffs: *mut fmpz, den: *mut fmpz, n: mp_limb_t, a: *mut fmpq);
26477}
26478extern "C" {
26479    pub fn fmpq_poly_gegenbauer_c(poly: *mut fmpq_poly_struct, n: mp_limb_t, a: *mut fmpq);
26480}
26481extern "C" {
26482    pub fn _fmpq_poly_evaluate_fmpz(
26483        rnum: *mut fmpz,
26484        rden: *mut fmpz,
26485        poly: *const fmpz,
26486        den: *mut fmpz,
26487        len: mp_limb_signed_t,
26488        a: *mut fmpz,
26489    );
26490}
26491extern "C" {
26492    pub fn fmpq_poly_evaluate_fmpz(res: *mut fmpq, poly: *mut fmpq_poly_struct, a: *mut fmpz);
26493}
26494extern "C" {
26495    pub fn _fmpq_poly_evaluate_fmpq(
26496        rnum: *mut fmpz,
26497        rden: *mut fmpz,
26498        poly: *const fmpz,
26499        den: *mut fmpz,
26500        len: mp_limb_signed_t,
26501        anum: *mut fmpz,
26502        aden: *mut fmpz,
26503    );
26504}
26505extern "C" {
26506    pub fn fmpq_poly_evaluate_fmpq(res: *mut fmpq, poly: *mut fmpq_poly_struct, a: *mut fmpq);
26507}
26508extern "C" {
26509    pub fn fmpq_poly_evaluate_mpz(
26510        res: *mut __mpq_struct,
26511        poly: *mut fmpq_poly_struct,
26512        a: *mut __mpz_struct,
26513    );
26514}
26515extern "C" {
26516    pub fn fmpq_poly_evaluate_mpq(
26517        res: *mut __mpq_struct,
26518        poly: *mut fmpq_poly_struct,
26519        a: *mut __mpq_struct,
26520    );
26521}
26522extern "C" {
26523    pub fn _fmpq_poly_interpolate_fmpz_vec(
26524        poly: *mut fmpz,
26525        den: *mut fmpz,
26526        xs: *const fmpz,
26527        ys: *const fmpz,
26528        n: mp_limb_signed_t,
26529    );
26530}
26531extern "C" {
26532    pub fn fmpq_poly_interpolate_fmpz_vec(
26533        poly: *mut fmpq_poly_struct,
26534        xs: *const fmpz,
26535        ys: *const fmpz,
26536        n: mp_limb_signed_t,
26537    );
26538}
26539extern "C" {
26540    pub fn _fmpq_poly_compose(
26541        res: *mut fmpz,
26542        den: *mut fmpz,
26543        poly1: *const fmpz,
26544        den1: *mut fmpz,
26545        len1: mp_limb_signed_t,
26546        poly2: *const fmpz,
26547        den2: *mut fmpz,
26548        len2: mp_limb_signed_t,
26549    );
26550}
26551extern "C" {
26552    pub fn fmpq_poly_compose(
26553        res: *mut fmpq_poly_struct,
26554        poly1: *mut fmpq_poly_struct,
26555        poly2: *mut fmpq_poly_struct,
26556    );
26557}
26558extern "C" {
26559    pub fn _fmpq_poly_rescale(
26560        res: *mut fmpz,
26561        denr: *mut fmpz,
26562        poly: *const fmpz,
26563        den: *mut fmpz,
26564        len: mp_limb_signed_t,
26565        xnum: *mut fmpz,
26566        xden: *mut fmpz,
26567    );
26568}
26569extern "C" {
26570    pub fn fmpq_poly_rescale(res: *mut fmpq_poly_struct, poly: *mut fmpq_poly_struct, x: *mut fmpq);
26571}
26572extern "C" {
26573    pub fn _fmpq_poly_compose_series_horner(
26574        res: *mut fmpz,
26575        den: *mut fmpz,
26576        poly1: *const fmpz,
26577        den1: *mut fmpz,
26578        len1: mp_limb_signed_t,
26579        poly2: *const fmpz,
26580        den2: *mut fmpz,
26581        len2: mp_limb_signed_t,
26582        n: mp_limb_signed_t,
26583    );
26584}
26585extern "C" {
26586    pub fn fmpq_poly_compose_series_horner(
26587        res: *mut fmpq_poly_struct,
26588        poly1: *mut fmpq_poly_struct,
26589        poly2: *mut fmpq_poly_struct,
26590        n: mp_limb_signed_t,
26591    );
26592}
26593extern "C" {
26594    pub fn _fmpq_poly_compose_series_brent_kung(
26595        res: *mut fmpz,
26596        den: *mut fmpz,
26597        poly1: *const fmpz,
26598        den1: *mut fmpz,
26599        len1: mp_limb_signed_t,
26600        poly2: *const fmpz,
26601        den2: *mut fmpz,
26602        len2: mp_limb_signed_t,
26603        n: mp_limb_signed_t,
26604    );
26605}
26606extern "C" {
26607    pub fn fmpq_poly_compose_series_brent_kung(
26608        res: *mut fmpq_poly_struct,
26609        poly1: *mut fmpq_poly_struct,
26610        poly2: *mut fmpq_poly_struct,
26611        n: mp_limb_signed_t,
26612    );
26613}
26614extern "C" {
26615    pub fn _fmpq_poly_compose_series(
26616        res: *mut fmpz,
26617        den: *mut fmpz,
26618        poly1: *const fmpz,
26619        den1: *mut fmpz,
26620        len1: mp_limb_signed_t,
26621        poly2: *const fmpz,
26622        den2: *mut fmpz,
26623        len2: mp_limb_signed_t,
26624        n: mp_limb_signed_t,
26625    );
26626}
26627extern "C" {
26628    pub fn fmpq_poly_compose_series(
26629        res: *mut fmpq_poly_struct,
26630        poly1: *mut fmpq_poly_struct,
26631        poly2: *mut fmpq_poly_struct,
26632        n: mp_limb_signed_t,
26633    );
26634}
26635extern "C" {
26636    pub fn _fmpq_poly_revert_series_lagrange(
26637        res: *mut fmpz,
26638        den: *mut fmpz,
26639        poly1: *const fmpz,
26640        den1: *mut fmpz,
26641        len1: mp_limb_signed_t,
26642        n: mp_limb_signed_t,
26643    );
26644}
26645extern "C" {
26646    pub fn fmpq_poly_revert_series_lagrange(
26647        res: *mut fmpq_poly_struct,
26648        poly: *mut fmpq_poly_struct,
26649        n: mp_limb_signed_t,
26650    );
26651}
26652extern "C" {
26653    pub fn _fmpq_poly_revert_series_lagrange_fast(
26654        res: *mut fmpz,
26655        den: *mut fmpz,
26656        poly1: *const fmpz,
26657        den1: *mut fmpz,
26658        len1: mp_limb_signed_t,
26659        n: mp_limb_signed_t,
26660    );
26661}
26662extern "C" {
26663    pub fn fmpq_poly_revert_series_lagrange_fast(
26664        res: *mut fmpq_poly_struct,
26665        poly: *mut fmpq_poly_struct,
26666        n: mp_limb_signed_t,
26667    );
26668}
26669extern "C" {
26670    pub fn _fmpq_poly_revert_series_newton(
26671        res: *mut fmpz,
26672        den: *mut fmpz,
26673        poly1: *const fmpz,
26674        den1: *mut fmpz,
26675        len1: mp_limb_signed_t,
26676        n: mp_limb_signed_t,
26677    );
26678}
26679extern "C" {
26680    pub fn fmpq_poly_revert_series_newton(
26681        res: *mut fmpq_poly_struct,
26682        poly: *mut fmpq_poly_struct,
26683        n: mp_limb_signed_t,
26684    );
26685}
26686extern "C" {
26687    pub fn _fmpq_poly_revert_series(
26688        res: *mut fmpz,
26689        den: *mut fmpz,
26690        poly1: *const fmpz,
26691        den1: *mut fmpz,
26692        len1: mp_limb_signed_t,
26693        n: mp_limb_signed_t,
26694    );
26695}
26696extern "C" {
26697    pub fn fmpq_poly_revert_series(
26698        res: *mut fmpq_poly_struct,
26699        poly: *mut fmpq_poly_struct,
26700        n: mp_limb_signed_t,
26701    );
26702}
26703extern "C" {
26704    pub fn _fmpq_poly_content(
26705        res: *mut fmpq,
26706        poly: *const fmpz,
26707        den: *mut fmpz,
26708        len: mp_limb_signed_t,
26709    );
26710}
26711extern "C" {
26712    pub fn fmpq_poly_content(res: *mut fmpq, poly: *mut fmpq_poly_struct);
26713}
26714extern "C" {
26715    pub fn _fmpq_poly_primitive_part(
26716        rpoly: *mut fmpz,
26717        rden: *mut fmpz,
26718        poly: *const fmpz,
26719        den: *mut fmpz,
26720        len: mp_limb_signed_t,
26721    );
26722}
26723extern "C" {
26724    pub fn fmpq_poly_primitive_part(res: *mut fmpq_poly_struct, poly: *mut fmpq_poly_struct);
26725}
26726extern "C" {
26727    pub fn _fmpq_poly_is_monic(
26728        poly: *const fmpz,
26729        den: *mut fmpz,
26730        len: mp_limb_signed_t,
26731    ) -> ::std::os::raw::c_int;
26732}
26733extern "C" {
26734    pub fn fmpq_poly_is_monic(poly: *mut fmpq_poly_struct) -> ::std::os::raw::c_int;
26735}
26736extern "C" {
26737    pub fn _fmpq_poly_make_monic(
26738        rpoly: *mut fmpz,
26739        rden: *mut fmpz,
26740        poly: *const fmpz,
26741        den: *mut fmpz,
26742        len: mp_limb_signed_t,
26743    );
26744}
26745extern "C" {
26746    pub fn fmpq_poly_make_monic(res: *mut fmpq_poly_struct, poly: *mut fmpq_poly_struct);
26747}
26748extern "C" {
26749    pub fn fmpq_poly_is_squarefree(poly: *mut fmpq_poly_struct) -> ::std::os::raw::c_int;
26750}
26751extern "C" {
26752    pub fn fmpq_poly_debug(poly: *mut fmpq_poly_struct) -> ::std::os::raw::c_int;
26753}
26754extern "C" {
26755    pub fn _fmpq_poly_fprint(
26756        file: *mut FILE,
26757        poly: *const fmpz,
26758        den: *mut fmpz,
26759        len: mp_limb_signed_t,
26760    ) -> ::std::os::raw::c_int;
26761}
26762extern "C" {
26763    pub fn fmpq_poly_fprint(file: *mut FILE, poly: *mut fmpq_poly_struct) -> ::std::os::raw::c_int;
26764}
26765extern "C" {
26766    pub fn _fmpq_poly_fprint_pretty(
26767        file: *mut FILE,
26768        poly: *const fmpz,
26769        den: *mut fmpz,
26770        len: mp_limb_signed_t,
26771        x: *const ::std::os::raw::c_char,
26772    ) -> ::std::os::raw::c_int;
26773}
26774extern "C" {
26775    pub fn fmpq_poly_fprint_pretty(
26776        file: *mut FILE,
26777        poly: *mut fmpq_poly_struct,
26778        var: *const ::std::os::raw::c_char,
26779    ) -> ::std::os::raw::c_int;
26780}
26781extern "C" {
26782    pub fn _fmpq_poly_print(
26783        poly: *const fmpz,
26784        den: *mut fmpz,
26785        len: mp_limb_signed_t,
26786    ) -> ::std::os::raw::c_int;
26787}
26788extern "C" {
26789    pub fn fmpq_poly_print(poly: *mut fmpq_poly_struct) -> ::std::os::raw::c_int;
26790}
26791extern "C" {
26792    pub fn _fmpq_poly_print_pretty(
26793        poly: *const fmpz,
26794        den: *mut fmpz,
26795        len: mp_limb_signed_t,
26796        x: *const ::std::os::raw::c_char,
26797    ) -> ::std::os::raw::c_int;
26798}
26799extern "C" {
26800    pub fn fmpq_poly_print_pretty(
26801        poly: *mut fmpq_poly_struct,
26802        var: *const ::std::os::raw::c_char,
26803    ) -> ::std::os::raw::c_int;
26804}
26805extern "C" {
26806    pub fn fmpq_poly_fread(file: *mut FILE, poly: *mut fmpq_poly_struct) -> ::std::os::raw::c_int;
26807}
26808extern "C" {
26809    pub fn fmpq_poly_read(poly: *mut fmpq_poly_struct) -> ::std::os::raw::c_int;
26810}
26811#[repr(C)]
26812#[derive(Debug, Copy, Clone)]
26813pub struct fmpq_mat_struct {
26814    pub entries: *mut fmpq,
26815    pub r: mp_limb_signed_t,
26816    pub c: mp_limb_signed_t,
26817    pub rows: *mut *mut fmpq,
26818}
26819#[test]
26820fn bindgen_test_layout_fmpq_mat_struct() {
26821    assert_eq!(
26822        ::std::mem::size_of::<fmpq_mat_struct>(),
26823        32usize,
26824        concat!("Size of: ", stringify!(fmpq_mat_struct))
26825    );
26826    assert_eq!(
26827        ::std::mem::align_of::<fmpq_mat_struct>(),
26828        8usize,
26829        concat!("Alignment of ", stringify!(fmpq_mat_struct))
26830    );
26831    assert_eq!(
26832        unsafe { &(*(::std::ptr::null::<fmpq_mat_struct>())).entries as *const _ as usize },
26833        0usize,
26834        concat!(
26835            "Offset of field: ",
26836            stringify!(fmpq_mat_struct),
26837            "::",
26838            stringify!(entries)
26839        )
26840    );
26841    assert_eq!(
26842        unsafe { &(*(::std::ptr::null::<fmpq_mat_struct>())).r as *const _ as usize },
26843        8usize,
26844        concat!(
26845            "Offset of field: ",
26846            stringify!(fmpq_mat_struct),
26847            "::",
26848            stringify!(r)
26849        )
26850    );
26851    assert_eq!(
26852        unsafe { &(*(::std::ptr::null::<fmpq_mat_struct>())).c as *const _ as usize },
26853        16usize,
26854        concat!(
26855            "Offset of field: ",
26856            stringify!(fmpq_mat_struct),
26857            "::",
26858            stringify!(c)
26859        )
26860    );
26861    assert_eq!(
26862        unsafe { &(*(::std::ptr::null::<fmpq_mat_struct>())).rows as *const _ as usize },
26863        24usize,
26864        concat!(
26865            "Offset of field: ",
26866            stringify!(fmpq_mat_struct),
26867            "::",
26868            stringify!(rows)
26869        )
26870    );
26871}
26872pub type fmpq_mat_t = [fmpq_mat_struct; 1usize];
26873extern "C" {
26874    pub fn fmpq_mat_init(mat: *mut fmpq_mat_struct, rows: mp_limb_signed_t, cols: mp_limb_signed_t);
26875}
26876extern "C" {
26877    pub fn fmpq_mat_init_set(mat1: *mut fmpq_mat_struct, mat2: *mut fmpq_mat_struct);
26878}
26879extern "C" {
26880    pub fn fmpq_mat_clear(mat: *mut fmpq_mat_struct);
26881}
26882extern "C" {
26883    pub fn fmpq_mat_swap(mat1: *mut fmpq_mat_struct, mat2: *mut fmpq_mat_struct);
26884}
26885extern "C" {
26886    pub fn fmpq_mat_window_init(
26887        window: *mut fmpq_mat_struct,
26888        mat: *mut fmpq_mat_struct,
26889        r1: mp_limb_signed_t,
26890        c1: mp_limb_signed_t,
26891        r2: mp_limb_signed_t,
26892        c2: mp_limb_signed_t,
26893    );
26894}
26895extern "C" {
26896    pub fn fmpq_mat_window_clear(window: *mut fmpq_mat_struct);
26897}
26898extern "C" {
26899    pub fn fmpq_mat_concat_horizontal(
26900        res: *mut fmpq_mat_struct,
26901        mat1: *mut fmpq_mat_struct,
26902        mat2: *mut fmpq_mat_struct,
26903    );
26904}
26905extern "C" {
26906    pub fn fmpq_mat_concat_vertical(
26907        res: *mut fmpq_mat_struct,
26908        mat1: *mut fmpq_mat_struct,
26909        mat2: *mut fmpq_mat_struct,
26910    );
26911}
26912extern "C" {
26913    pub fn fmpq_mat_print(mat: *mut fmpq_mat_struct);
26914}
26915extern "C" {
26916    pub fn fmpq_mat_randbits(mat: *mut fmpq_mat_struct, state: *mut flint_rand_s, bits: mp_limb_t);
26917}
26918extern "C" {
26919    pub fn fmpq_mat_randtest(mat: *mut fmpq_mat_struct, state: *mut flint_rand_s, bits: mp_limb_t);
26920}
26921extern "C" {
26922    pub fn fmpq_mat_hilbert_matrix(mat: *mut fmpq_mat_struct);
26923}
26924extern "C" {
26925    pub fn fmpq_mat_set(dest: *mut fmpq_mat_struct, src: *mut fmpq_mat_struct);
26926}
26927extern "C" {
26928    pub fn fmpq_mat_zero(mat: *mut fmpq_mat_struct);
26929}
26930extern "C" {
26931    pub fn fmpq_mat_one(mat: *mut fmpq_mat_struct);
26932}
26933extern "C" {
26934    pub fn fmpq_mat_transpose(rop: *mut fmpq_mat_struct, op: *mut fmpq_mat_struct);
26935}
26936extern "C" {
26937    pub fn fmpq_mat_add(
26938        mat: *mut fmpq_mat_struct,
26939        mat1: *mut fmpq_mat_struct,
26940        mat2: *mut fmpq_mat_struct,
26941    );
26942}
26943extern "C" {
26944    pub fn fmpq_mat_sub(
26945        mat: *mut fmpq_mat_struct,
26946        mat1: *mut fmpq_mat_struct,
26947        mat2: *mut fmpq_mat_struct,
26948    );
26949}
26950extern "C" {
26951    pub fn fmpq_mat_neg(rop: *mut fmpq_mat_struct, op: *mut fmpq_mat_struct);
26952}
26953extern "C" {
26954    pub fn fmpq_mat_scalar_mul_fmpq(
26955        rop: *mut fmpq_mat_struct,
26956        op: *mut fmpq_mat_struct,
26957        x: *mut fmpq,
26958    );
26959}
26960extern "C" {
26961    pub fn fmpq_mat_scalar_mul_fmpz(
26962        rop: *mut fmpq_mat_struct,
26963        op: *mut fmpq_mat_struct,
26964        x: *mut fmpz,
26965    );
26966}
26967extern "C" {
26968    pub fn fmpq_mat_scalar_div_fmpz(
26969        rop: *mut fmpq_mat_struct,
26970        op: *mut fmpq_mat_struct,
26971        x: *mut fmpz,
26972    );
26973}
26974extern "C" {
26975    pub fn fmpq_mat_equal(
26976        mat1: *mut fmpq_mat_struct,
26977        mat2: *mut fmpq_mat_struct,
26978    ) -> ::std::os::raw::c_int;
26979}
26980extern "C" {
26981    pub fn fmpq_mat_is_integral(mat: *mut fmpq_mat_struct) -> ::std::os::raw::c_int;
26982}
26983extern "C" {
26984    pub fn fmpq_mat_is_zero(mat: *mut fmpq_mat_struct) -> ::std::os::raw::c_int;
26985}
26986extern "C" {
26987    pub fn fmpq_mat_is_one(mat: *mut fmpq_mat_struct) -> ::std::os::raw::c_int;
26988}
26989extern "C" {
26990    pub fn fmpq_mat_get_fmpz_mat(
26991        dest: *mut fmpz_mat_struct,
26992        mat: *mut fmpq_mat_struct,
26993    ) -> ::std::os::raw::c_int;
26994}
26995extern "C" {
26996    pub fn fmpq_mat_get_fmpz_mat_entrywise(
26997        num: *mut fmpz_mat_struct,
26998        den: *mut fmpz_mat_struct,
26999        mat: *mut fmpq_mat_struct,
27000    );
27001}
27002extern "C" {
27003    pub fn fmpq_mat_get_fmpz_mat_matwise(
27004        num: *mut fmpz_mat_struct,
27005        den: *mut fmpz,
27006        mat: *mut fmpq_mat_struct,
27007    );
27008}
27009extern "C" {
27010    pub fn fmpq_mat_get_fmpz_mat_rowwise(
27011        num: *mut fmpz_mat_struct,
27012        den: *mut fmpz,
27013        mat: *mut fmpq_mat_struct,
27014    );
27015}
27016extern "C" {
27017    pub fn fmpq_mat_get_fmpz_mat_colwise(
27018        num: *mut fmpz_mat_struct,
27019        den: *mut fmpz,
27020        mat: *mut fmpq_mat_struct,
27021    );
27022}
27023extern "C" {
27024    pub fn fmpq_mat_get_fmpz_mat_rowwise_2(
27025        num: *mut fmpz_mat_struct,
27026        num2: *mut fmpz_mat_struct,
27027        den: *mut fmpz,
27028        mat: *mut fmpq_mat_struct,
27029        mat2: *mut fmpq_mat_struct,
27030    );
27031}
27032extern "C" {
27033    pub fn fmpq_mat_get_fmpz_mat_mod_fmpz(
27034        dest: *mut fmpz_mat_struct,
27035        mat: *mut fmpq_mat_struct,
27036        mod_: *mut fmpz,
27037    );
27038}
27039extern "C" {
27040    pub fn fmpq_mat_set_fmpz_mat(dest: *mut fmpq_mat_struct, src: *mut fmpz_mat_struct);
27041}
27042extern "C" {
27043    pub fn fmpq_mat_set_fmpz_mat_div_fmpz(
27044        X: *mut fmpq_mat_struct,
27045        Xmod: *mut fmpz_mat_struct,
27046        div: *mut fmpz,
27047    );
27048}
27049extern "C" {
27050    pub fn fmpq_mat_set_fmpz_mat_mod_fmpz(
27051        X: *mut fmpq_mat_struct,
27052        Xmod: *mut fmpz_mat_struct,
27053        mod_: *mut fmpz,
27054    ) -> ::std::os::raw::c_int;
27055}
27056extern "C" {
27057    pub fn fmpq_mat_mul_direct(
27058        C: *mut fmpq_mat_struct,
27059        A: *mut fmpq_mat_struct,
27060        B: *mut fmpq_mat_struct,
27061    );
27062}
27063extern "C" {
27064    pub fn fmpq_mat_mul_cleared(
27065        C: *mut fmpq_mat_struct,
27066        A: *mut fmpq_mat_struct,
27067        B: *mut fmpq_mat_struct,
27068    );
27069}
27070extern "C" {
27071    pub fn fmpq_mat_mul(C: *mut fmpq_mat_struct, A: *mut fmpq_mat_struct, B: *mut fmpq_mat_struct);
27072}
27073extern "C" {
27074    pub fn fmpq_mat_mul_fmpz_mat(
27075        C: *mut fmpq_mat_struct,
27076        A: *mut fmpq_mat_struct,
27077        B: *mut fmpz_mat_struct,
27078    );
27079}
27080extern "C" {
27081    pub fn fmpq_mat_mul_r_fmpz_mat(
27082        C: *mut fmpq_mat_struct,
27083        A: *mut fmpz_mat_struct,
27084        B: *mut fmpq_mat_struct,
27085    );
27086}
27087extern "C" {
27088    pub fn fmpq_mat_kronecker_product(
27089        C: *mut fmpq_mat_struct,
27090        A: *mut fmpq_mat_struct,
27091        B: *mut fmpq_mat_struct,
27092    );
27093}
27094extern "C" {
27095    pub fn fmpq_mat_trace(trace: *mut fmpq, mat: *mut fmpq_mat_struct);
27096}
27097extern "C" {
27098    pub fn fmpq_mat_det(det: *mut fmpq, mat: *mut fmpq_mat_struct);
27099}
27100extern "C" {
27101    pub fn fmpq_mat_solve_fmpz_mat_fraction_free(
27102        X: *mut fmpq_mat_struct,
27103        A: *mut fmpz_mat_struct,
27104        B: *mut fmpz_mat_struct,
27105    ) -> ::std::os::raw::c_int;
27106}
27107extern "C" {
27108    pub fn fmpq_mat_solve_fraction_free(
27109        X: *mut fmpq_mat_struct,
27110        A: *mut fmpq_mat_struct,
27111        B: *mut fmpq_mat_struct,
27112    ) -> ::std::os::raw::c_int;
27113}
27114extern "C" {
27115    pub fn fmpq_mat_solve_fmpz_mat_dixon(
27116        X: *mut fmpq_mat_struct,
27117        A: *mut fmpz_mat_struct,
27118        B: *mut fmpz_mat_struct,
27119    ) -> ::std::os::raw::c_int;
27120}
27121extern "C" {
27122    pub fn fmpq_mat_solve_dixon(
27123        X: *mut fmpq_mat_struct,
27124        A: *mut fmpq_mat_struct,
27125        B: *mut fmpq_mat_struct,
27126    ) -> ::std::os::raw::c_int;
27127}
27128extern "C" {
27129    pub fn fmpq_mat_solve_fmpz_mat_multi_mod(
27130        X: *mut fmpq_mat_struct,
27131        A: *mut fmpz_mat_struct,
27132        B: *mut fmpz_mat_struct,
27133    ) -> ::std::os::raw::c_int;
27134}
27135extern "C" {
27136    pub fn fmpq_mat_solve_multi_mod(
27137        X: *mut fmpq_mat_struct,
27138        A: *mut fmpq_mat_struct,
27139        B: *mut fmpq_mat_struct,
27140    ) -> ::std::os::raw::c_int;
27141}
27142extern "C" {
27143    pub fn fmpq_mat_solve_fmpz_mat(
27144        X: *mut fmpq_mat_struct,
27145        A: *mut fmpz_mat_struct,
27146        B: *mut fmpz_mat_struct,
27147    ) -> ::std::os::raw::c_int;
27148}
27149extern "C" {
27150    pub fn fmpq_mat_solve(
27151        X: *mut fmpq_mat_struct,
27152        A: *mut fmpq_mat_struct,
27153        B: *mut fmpq_mat_struct,
27154    ) -> ::std::os::raw::c_int;
27155}
27156extern "C" {
27157    pub fn fmpq_mat_inv(B: *mut fmpq_mat_struct, A: *mut fmpq_mat_struct) -> ::std::os::raw::c_int;
27158}
27159extern "C" {
27160    pub fn fmpq_mat_pivot(
27161        perm: *mut mp_limb_signed_t,
27162        mat: *mut fmpq_mat_struct,
27163        r: mp_limb_signed_t,
27164        c: mp_limb_signed_t,
27165    ) -> ::std::os::raw::c_int;
27166}
27167extern "C" {
27168    pub fn fmpq_mat_rref_classical(
27169        B: *mut fmpq_mat_struct,
27170        A: *mut fmpq_mat_struct,
27171    ) -> mp_limb_signed_t;
27172}
27173extern "C" {
27174    pub fn fmpq_mat_rref_fraction_free(
27175        B: *mut fmpq_mat_struct,
27176        A: *mut fmpq_mat_struct,
27177    ) -> mp_limb_signed_t;
27178}
27179extern "C" {
27180    pub fn fmpq_mat_rref(B: *mut fmpq_mat_struct, A: *mut fmpq_mat_struct) -> mp_limb_signed_t;
27181}
27182extern "C" {
27183    pub fn fmpq_mat_gso(B: *mut fmpq_mat_struct, A: *mut fmpq_mat_struct);
27184}
27185extern "C" {
27186    pub fn fmpq_mat_similarity(A: *mut fmpq_mat_struct, r: mp_limb_signed_t, d: *mut fmpq);
27187}
27188extern "C" {
27189    pub fn _fmpq_mat_charpoly(coeffs: *mut fmpz, den: *mut fmpz, mat: *mut fmpq_mat_struct);
27190}
27191extern "C" {
27192    pub fn fmpq_mat_charpoly(pol: *mut fmpq_poly_struct, mat: *mut fmpq_mat_struct);
27193}
27194extern "C" {
27195    pub fn _fmpq_mat_minpoly(
27196        coeffs: *mut fmpz,
27197        den: *mut fmpz,
27198        mat: *mut fmpq_mat_struct,
27199    ) -> mp_limb_signed_t;
27200}
27201extern "C" {
27202    pub fn fmpq_mat_minpoly(pol: *mut fmpq_poly_struct, mat: *mut fmpq_mat_struct);
27203}
27204#[repr(C)]
27205#[derive(Debug, Copy, Clone)]
27206pub struct fmpz_mod_mat_struct {
27207    pub mat: fmpz_mat_t,
27208    pub mod_: fmpz_t,
27209}
27210#[test]
27211fn bindgen_test_layout_fmpz_mod_mat_struct() {
27212    assert_eq!(
27213        ::std::mem::size_of::<fmpz_mod_mat_struct>(),
27214        40usize,
27215        concat!("Size of: ", stringify!(fmpz_mod_mat_struct))
27216    );
27217    assert_eq!(
27218        ::std::mem::align_of::<fmpz_mod_mat_struct>(),
27219        8usize,
27220        concat!("Alignment of ", stringify!(fmpz_mod_mat_struct))
27221    );
27222    assert_eq!(
27223        unsafe { &(*(::std::ptr::null::<fmpz_mod_mat_struct>())).mat as *const _ as usize },
27224        0usize,
27225        concat!(
27226            "Offset of field: ",
27227            stringify!(fmpz_mod_mat_struct),
27228            "::",
27229            stringify!(mat)
27230        )
27231    );
27232    assert_eq!(
27233        unsafe { &(*(::std::ptr::null::<fmpz_mod_mat_struct>())).mod_ as *const _ as usize },
27234        32usize,
27235        concat!(
27236            "Offset of field: ",
27237            stringify!(fmpz_mod_mat_struct),
27238            "::",
27239            stringify!(mod_)
27240        )
27241    );
27242}
27243pub type fmpz_mod_mat_t = [fmpz_mod_mat_struct; 1usize];
27244extern "C" {
27245    pub fn fmpz_mod_mat_init(
27246        mat: *mut fmpz_mod_mat_struct,
27247        rows: mp_limb_signed_t,
27248        cols: mp_limb_signed_t,
27249        n: *mut fmpz,
27250    );
27251}
27252extern "C" {
27253    pub fn fmpz_mod_mat_init_set(mat: *mut fmpz_mod_mat_struct, src: *mut fmpz_mod_mat_struct);
27254}
27255extern "C" {
27256    pub fn fmpz_mod_mat_clear(mat: *mut fmpz_mod_mat_struct);
27257}
27258extern "C" {
27259    pub fn fmpz_mod_mat_randtest(mat: *mut fmpz_mod_mat_struct, state: *mut flint_rand_s);
27260}
27261extern "C" {
27262    pub fn fmpz_mod_mat_window_init(
27263        window: *mut fmpz_mod_mat_struct,
27264        mat: *mut fmpz_mod_mat_struct,
27265        r1: mp_limb_signed_t,
27266        c1: mp_limb_signed_t,
27267        r2: mp_limb_signed_t,
27268        c2: mp_limb_signed_t,
27269    );
27270}
27271extern "C" {
27272    pub fn fmpz_mod_mat_window_clear(window: *mut fmpz_mod_mat_struct);
27273}
27274extern "C" {
27275    pub fn fmpz_mod_mat_add(
27276        C: *mut fmpz_mod_mat_struct,
27277        A: *mut fmpz_mod_mat_struct,
27278        B: *mut fmpz_mod_mat_struct,
27279    );
27280}
27281extern "C" {
27282    pub fn fmpz_mod_mat_sub(
27283        C: *mut fmpz_mod_mat_struct,
27284        A: *mut fmpz_mod_mat_struct,
27285        B: *mut fmpz_mod_mat_struct,
27286    );
27287}
27288extern "C" {
27289    pub fn fmpz_mod_mat_neg(B: *mut fmpz_mod_mat_struct, A: *mut fmpz_mod_mat_struct);
27290}
27291extern "C" {
27292    pub fn fmpz_mod_mat_scalar_mul_si(
27293        B: *mut fmpz_mod_mat_struct,
27294        A: *mut fmpz_mod_mat_struct,
27295        c: mp_limb_signed_t,
27296    );
27297}
27298extern "C" {
27299    pub fn fmpz_mod_mat_scalar_mul_ui(
27300        B: *mut fmpz_mod_mat_struct,
27301        A: *mut fmpz_mod_mat_struct,
27302        c: mp_limb_t,
27303    );
27304}
27305extern "C" {
27306    pub fn fmpz_mod_mat_scalar_mul_fmpz(
27307        B: *mut fmpz_mod_mat_struct,
27308        A: *mut fmpz_mod_mat_struct,
27309        c: *mut fmpz,
27310    );
27311}
27312extern "C" {
27313    pub fn fmpz_mod_mat_mul(
27314        C: *mut fmpz_mod_mat_struct,
27315        A: *mut fmpz_mod_mat_struct,
27316        B: *mut fmpz_mod_mat_struct,
27317    );
27318}
27319extern "C" {
27320    pub fn _fmpz_mod_mat_mul_classical_threaded_pool_op(
27321        D: *mut fmpz_mod_mat_struct,
27322        C: *mut fmpz_mod_mat_struct,
27323        A: *mut fmpz_mod_mat_struct,
27324        B: *mut fmpz_mod_mat_struct,
27325        op: ::std::os::raw::c_int,
27326        threads: *mut thread_pool_handle,
27327        num_threads: mp_limb_signed_t,
27328    );
27329}
27330extern "C" {
27331    pub fn fmpz_mod_mat_mul_classical_threaded(
27332        C: *mut fmpz_mod_mat_struct,
27333        A: *mut fmpz_mod_mat_struct,
27334        B: *mut fmpz_mod_mat_struct,
27335    );
27336}
27337extern "C" {
27338    pub fn fmpz_mod_mat_sqr(B: *mut fmpz_mod_mat_struct, A: *mut fmpz_mod_mat_struct);
27339}
27340extern "C" {
27341    pub fn fmpz_mod_mat_trace(trace: *mut fmpz, mat: *mut fmpz_mod_mat_struct);
27342}
27343extern "C" {
27344    pub fn fmpz_mod_mat_rref(
27345        perm: *mut mp_limb_signed_t,
27346        mat: *mut fmpz_mod_mat_struct,
27347    ) -> mp_limb_signed_t;
27348}
27349extern "C" {
27350    pub fn fmpz_mod_mat_howell_form(mat: *mut fmpz_mod_mat_struct) -> mp_limb_signed_t;
27351}
27352extern "C" {
27353    pub fn fmpz_mod_mat_strong_echelon_form(mat: *mut fmpz_mod_mat_struct);
27354}
27355extern "C" {
27356    pub fn fmpz_mod_mat_get_entry(
27357        x: *mut fmpz,
27358        mat: *mut fmpz_mod_mat_struct,
27359        i: mp_limb_signed_t,
27360        j: mp_limb_signed_t,
27361    );
27362}
27363#[repr(C)]
27364#[derive(Debug, Copy, Clone)]
27365pub struct fmpz_mod_poly_struct {
27366    pub coeffs: *mut fmpz,
27367    pub alloc: mp_limb_signed_t,
27368    pub length: mp_limb_signed_t,
27369    pub p: fmpz,
27370}
27371#[test]
27372fn bindgen_test_layout_fmpz_mod_poly_struct() {
27373    assert_eq!(
27374        ::std::mem::size_of::<fmpz_mod_poly_struct>(),
27375        32usize,
27376        concat!("Size of: ", stringify!(fmpz_mod_poly_struct))
27377    );
27378    assert_eq!(
27379        ::std::mem::align_of::<fmpz_mod_poly_struct>(),
27380        8usize,
27381        concat!("Alignment of ", stringify!(fmpz_mod_poly_struct))
27382    );
27383    assert_eq!(
27384        unsafe { &(*(::std::ptr::null::<fmpz_mod_poly_struct>())).coeffs as *const _ as usize },
27385        0usize,
27386        concat!(
27387            "Offset of field: ",
27388            stringify!(fmpz_mod_poly_struct),
27389            "::",
27390            stringify!(coeffs)
27391        )
27392    );
27393    assert_eq!(
27394        unsafe { &(*(::std::ptr::null::<fmpz_mod_poly_struct>())).alloc as *const _ as usize },
27395        8usize,
27396        concat!(
27397            "Offset of field: ",
27398            stringify!(fmpz_mod_poly_struct),
27399            "::",
27400            stringify!(alloc)
27401        )
27402    );
27403    assert_eq!(
27404        unsafe { &(*(::std::ptr::null::<fmpz_mod_poly_struct>())).length as *const _ as usize },
27405        16usize,
27406        concat!(
27407            "Offset of field: ",
27408            stringify!(fmpz_mod_poly_struct),
27409            "::",
27410            stringify!(length)
27411        )
27412    );
27413    assert_eq!(
27414        unsafe { &(*(::std::ptr::null::<fmpz_mod_poly_struct>())).p as *const _ as usize },
27415        24usize,
27416        concat!(
27417            "Offset of field: ",
27418            stringify!(fmpz_mod_poly_struct),
27419            "::",
27420            stringify!(p)
27421        )
27422    );
27423}
27424pub type fmpz_mod_poly_t = [fmpz_mod_poly_struct; 1usize];
27425#[repr(C)]
27426#[derive(Debug, Copy, Clone)]
27427pub struct fmpz_mod_poly_res_struct {
27428    pub res: fmpz_t,
27429    pub lc: fmpz_t,
27430    pub len0: mp_limb_signed_t,
27431    pub len1: mp_limb_signed_t,
27432    pub off: mp_limb_signed_t,
27433}
27434#[test]
27435fn bindgen_test_layout_fmpz_mod_poly_res_struct() {
27436    assert_eq!(
27437        ::std::mem::size_of::<fmpz_mod_poly_res_struct>(),
27438        40usize,
27439        concat!("Size of: ", stringify!(fmpz_mod_poly_res_struct))
27440    );
27441    assert_eq!(
27442        ::std::mem::align_of::<fmpz_mod_poly_res_struct>(),
27443        8usize,
27444        concat!("Alignment of ", stringify!(fmpz_mod_poly_res_struct))
27445    );
27446    assert_eq!(
27447        unsafe { &(*(::std::ptr::null::<fmpz_mod_poly_res_struct>())).res as *const _ as usize },
27448        0usize,
27449        concat!(
27450            "Offset of field: ",
27451            stringify!(fmpz_mod_poly_res_struct),
27452            "::",
27453            stringify!(res)
27454        )
27455    );
27456    assert_eq!(
27457        unsafe { &(*(::std::ptr::null::<fmpz_mod_poly_res_struct>())).lc as *const _ as usize },
27458        8usize,
27459        concat!(
27460            "Offset of field: ",
27461            stringify!(fmpz_mod_poly_res_struct),
27462            "::",
27463            stringify!(lc)
27464        )
27465    );
27466    assert_eq!(
27467        unsafe { &(*(::std::ptr::null::<fmpz_mod_poly_res_struct>())).len0 as *const _ as usize },
27468        16usize,
27469        concat!(
27470            "Offset of field: ",
27471            stringify!(fmpz_mod_poly_res_struct),
27472            "::",
27473            stringify!(len0)
27474        )
27475    );
27476    assert_eq!(
27477        unsafe { &(*(::std::ptr::null::<fmpz_mod_poly_res_struct>())).len1 as *const _ as usize },
27478        24usize,
27479        concat!(
27480            "Offset of field: ",
27481            stringify!(fmpz_mod_poly_res_struct),
27482            "::",
27483            stringify!(len1)
27484        )
27485    );
27486    assert_eq!(
27487        unsafe { &(*(::std::ptr::null::<fmpz_mod_poly_res_struct>())).off as *const _ as usize },
27488        32usize,
27489        concat!(
27490            "Offset of field: ",
27491            stringify!(fmpz_mod_poly_res_struct),
27492            "::",
27493            stringify!(off)
27494        )
27495    );
27496}
27497pub type fmpz_mod_poly_res_t = [fmpz_mod_poly_res_struct; 1usize];
27498#[repr(C)]
27499#[derive(Debug, Copy, Clone)]
27500pub struct fmpz_mod_poly_frobenius_powers_2exp_struct {
27501    pub pow: *mut fmpz_mod_poly_struct,
27502    pub len: mp_limb_signed_t,
27503}
27504#[test]
27505fn bindgen_test_layout_fmpz_mod_poly_frobenius_powers_2exp_struct() {
27506    assert_eq!(
27507        ::std::mem::size_of::<fmpz_mod_poly_frobenius_powers_2exp_struct>(),
27508        16usize,
27509        concat!(
27510            "Size of: ",
27511            stringify!(fmpz_mod_poly_frobenius_powers_2exp_struct)
27512        )
27513    );
27514    assert_eq!(
27515        ::std::mem::align_of::<fmpz_mod_poly_frobenius_powers_2exp_struct>(),
27516        8usize,
27517        concat!(
27518            "Alignment of ",
27519            stringify!(fmpz_mod_poly_frobenius_powers_2exp_struct)
27520        )
27521    );
27522    assert_eq!(
27523        unsafe {
27524            &(*(::std::ptr::null::<fmpz_mod_poly_frobenius_powers_2exp_struct>())).pow as *const _
27525                as usize
27526        },
27527        0usize,
27528        concat!(
27529            "Offset of field: ",
27530            stringify!(fmpz_mod_poly_frobenius_powers_2exp_struct),
27531            "::",
27532            stringify!(pow)
27533        )
27534    );
27535    assert_eq!(
27536        unsafe {
27537            &(*(::std::ptr::null::<fmpz_mod_poly_frobenius_powers_2exp_struct>())).len as *const _
27538                as usize
27539        },
27540        8usize,
27541        concat!(
27542            "Offset of field: ",
27543            stringify!(fmpz_mod_poly_frobenius_powers_2exp_struct),
27544            "::",
27545            stringify!(len)
27546        )
27547    );
27548}
27549pub type fmpz_mod_poly_frobenius_powers_2exp_t =
27550    [fmpz_mod_poly_frobenius_powers_2exp_struct; 1usize];
27551#[repr(C)]
27552#[derive(Debug, Copy, Clone)]
27553pub struct fmpz_mod_poly_frobenius_powers_struct {
27554    pub pow: *mut fmpz_mod_poly_struct,
27555    pub len: mp_limb_signed_t,
27556}
27557#[test]
27558fn bindgen_test_layout_fmpz_mod_poly_frobenius_powers_struct() {
27559    assert_eq!(
27560        ::std::mem::size_of::<fmpz_mod_poly_frobenius_powers_struct>(),
27561        16usize,
27562        concat!(
27563            "Size of: ",
27564            stringify!(fmpz_mod_poly_frobenius_powers_struct)
27565        )
27566    );
27567    assert_eq!(
27568        ::std::mem::align_of::<fmpz_mod_poly_frobenius_powers_struct>(),
27569        8usize,
27570        concat!(
27571            "Alignment of ",
27572            stringify!(fmpz_mod_poly_frobenius_powers_struct)
27573        )
27574    );
27575    assert_eq!(
27576        unsafe {
27577            &(*(::std::ptr::null::<fmpz_mod_poly_frobenius_powers_struct>())).pow as *const _
27578                as usize
27579        },
27580        0usize,
27581        concat!(
27582            "Offset of field: ",
27583            stringify!(fmpz_mod_poly_frobenius_powers_struct),
27584            "::",
27585            stringify!(pow)
27586        )
27587    );
27588    assert_eq!(
27589        unsafe {
27590            &(*(::std::ptr::null::<fmpz_mod_poly_frobenius_powers_struct>())).len as *const _
27591                as usize
27592        },
27593        8usize,
27594        concat!(
27595            "Offset of field: ",
27596            stringify!(fmpz_mod_poly_frobenius_powers_struct),
27597            "::",
27598            stringify!(len)
27599        )
27600    );
27601}
27602pub type fmpz_mod_poly_frobenius_powers_t = [fmpz_mod_poly_frobenius_powers_struct; 1usize];
27603#[repr(C)]
27604#[derive(Debug, Copy, Clone)]
27605pub struct fmpz_mod_poly_matrix_precompute_arg_t {
27606    pub A: *mut fmpz_mat_struct,
27607    pub poly1: *mut fmpz_mod_poly_struct,
27608    pub poly2: *mut fmpz_mod_poly_struct,
27609    pub poly2inv: *mut fmpz_mod_poly_struct,
27610}
27611#[test]
27612fn bindgen_test_layout_fmpz_mod_poly_matrix_precompute_arg_t() {
27613    assert_eq!(
27614        ::std::mem::size_of::<fmpz_mod_poly_matrix_precompute_arg_t>(),
27615        32usize,
27616        concat!(
27617            "Size of: ",
27618            stringify!(fmpz_mod_poly_matrix_precompute_arg_t)
27619        )
27620    );
27621    assert_eq!(
27622        ::std::mem::align_of::<fmpz_mod_poly_matrix_precompute_arg_t>(),
27623        8usize,
27624        concat!(
27625            "Alignment of ",
27626            stringify!(fmpz_mod_poly_matrix_precompute_arg_t)
27627        )
27628    );
27629    assert_eq!(
27630        unsafe {
27631            &(*(::std::ptr::null::<fmpz_mod_poly_matrix_precompute_arg_t>())).A as *const _ as usize
27632        },
27633        0usize,
27634        concat!(
27635            "Offset of field: ",
27636            stringify!(fmpz_mod_poly_matrix_precompute_arg_t),
27637            "::",
27638            stringify!(A)
27639        )
27640    );
27641    assert_eq!(
27642        unsafe {
27643            &(*(::std::ptr::null::<fmpz_mod_poly_matrix_precompute_arg_t>())).poly1 as *const _
27644                as usize
27645        },
27646        8usize,
27647        concat!(
27648            "Offset of field: ",
27649            stringify!(fmpz_mod_poly_matrix_precompute_arg_t),
27650            "::",
27651            stringify!(poly1)
27652        )
27653    );
27654    assert_eq!(
27655        unsafe {
27656            &(*(::std::ptr::null::<fmpz_mod_poly_matrix_precompute_arg_t>())).poly2 as *const _
27657                as usize
27658        },
27659        16usize,
27660        concat!(
27661            "Offset of field: ",
27662            stringify!(fmpz_mod_poly_matrix_precompute_arg_t),
27663            "::",
27664            stringify!(poly2)
27665        )
27666    );
27667    assert_eq!(
27668        unsafe {
27669            &(*(::std::ptr::null::<fmpz_mod_poly_matrix_precompute_arg_t>())).poly2inv as *const _
27670                as usize
27671        },
27672        24usize,
27673        concat!(
27674            "Offset of field: ",
27675            stringify!(fmpz_mod_poly_matrix_precompute_arg_t),
27676            "::",
27677            stringify!(poly2inv)
27678        )
27679    );
27680}
27681#[repr(C)]
27682#[derive(Debug, Copy, Clone)]
27683pub struct fmpz_mod_poly_compose_mod_precomp_preinv_arg_t {
27684    pub A: *mut fmpz_mat_struct,
27685    pub res: *mut fmpz_mod_poly_struct,
27686    pub poly1: *mut fmpz_mod_poly_struct,
27687    pub poly3: *mut fmpz_mod_poly_struct,
27688    pub poly3inv: *mut fmpz_mod_poly_struct,
27689}
27690#[test]
27691fn bindgen_test_layout_fmpz_mod_poly_compose_mod_precomp_preinv_arg_t() {
27692    assert_eq!(
27693        ::std::mem::size_of::<fmpz_mod_poly_compose_mod_precomp_preinv_arg_t>(),
27694        40usize,
27695        concat!(
27696            "Size of: ",
27697            stringify!(fmpz_mod_poly_compose_mod_precomp_preinv_arg_t)
27698        )
27699    );
27700    assert_eq!(
27701        ::std::mem::align_of::<fmpz_mod_poly_compose_mod_precomp_preinv_arg_t>(),
27702        8usize,
27703        concat!(
27704            "Alignment of ",
27705            stringify!(fmpz_mod_poly_compose_mod_precomp_preinv_arg_t)
27706        )
27707    );
27708    assert_eq!(
27709        unsafe {
27710            &(*(::std::ptr::null::<fmpz_mod_poly_compose_mod_precomp_preinv_arg_t>())).A as *const _
27711                as usize
27712        },
27713        0usize,
27714        concat!(
27715            "Offset of field: ",
27716            stringify!(fmpz_mod_poly_compose_mod_precomp_preinv_arg_t),
27717            "::",
27718            stringify!(A)
27719        )
27720    );
27721    assert_eq!(
27722        unsafe {
27723            &(*(::std::ptr::null::<fmpz_mod_poly_compose_mod_precomp_preinv_arg_t>())).res
27724                as *const _ as usize
27725        },
27726        8usize,
27727        concat!(
27728            "Offset of field: ",
27729            stringify!(fmpz_mod_poly_compose_mod_precomp_preinv_arg_t),
27730            "::",
27731            stringify!(res)
27732        )
27733    );
27734    assert_eq!(
27735        unsafe {
27736            &(*(::std::ptr::null::<fmpz_mod_poly_compose_mod_precomp_preinv_arg_t>())).poly1
27737                as *const _ as usize
27738        },
27739        16usize,
27740        concat!(
27741            "Offset of field: ",
27742            stringify!(fmpz_mod_poly_compose_mod_precomp_preinv_arg_t),
27743            "::",
27744            stringify!(poly1)
27745        )
27746    );
27747    assert_eq!(
27748        unsafe {
27749            &(*(::std::ptr::null::<fmpz_mod_poly_compose_mod_precomp_preinv_arg_t>())).poly3
27750                as *const _ as usize
27751        },
27752        24usize,
27753        concat!(
27754            "Offset of field: ",
27755            stringify!(fmpz_mod_poly_compose_mod_precomp_preinv_arg_t),
27756            "::",
27757            stringify!(poly3)
27758        )
27759    );
27760    assert_eq!(
27761        unsafe {
27762            &(*(::std::ptr::null::<fmpz_mod_poly_compose_mod_precomp_preinv_arg_t>())).poly3inv
27763                as *const _ as usize
27764        },
27765        32usize,
27766        concat!(
27767            "Offset of field: ",
27768            stringify!(fmpz_mod_poly_compose_mod_precomp_preinv_arg_t),
27769            "::",
27770            stringify!(poly3inv)
27771        )
27772    );
27773}
27774extern "C" {
27775    pub fn fmpz_mod_poly_init(poly: *mut fmpz_mod_poly_struct, p: *mut fmpz);
27776}
27777extern "C" {
27778    pub fn fmpz_mod_poly_init2(
27779        poly: *mut fmpz_mod_poly_struct,
27780        p: *mut fmpz,
27781        alloc: mp_limb_signed_t,
27782    );
27783}
27784extern "C" {
27785    pub fn fmpz_mod_poly_clear(poly: *mut fmpz_mod_poly_struct);
27786}
27787extern "C" {
27788    pub fn fmpz_mod_poly_realloc(poly: *mut fmpz_mod_poly_struct, alloc: mp_limb_signed_t);
27789}
27790extern "C" {
27791    pub fn fmpz_mod_poly_fit_length(poly: *mut fmpz_mod_poly_struct, len: mp_limb_signed_t);
27792}
27793extern "C" {
27794    pub fn _fmpz_mod_poly_normalise(poly: *mut fmpz_mod_poly_struct);
27795}
27796extern "C" {
27797    pub fn fmpz_mod_poly_set_trunc(
27798        res: *mut fmpz_mod_poly_struct,
27799        poly: *mut fmpz_mod_poly_struct,
27800        n: mp_limb_signed_t,
27801    );
27802}
27803extern "C" {
27804    pub fn fmpz_mod_poly_randtest(
27805        f: *mut fmpz_mod_poly_struct,
27806        state: *mut flint_rand_s,
27807        len: mp_limb_signed_t,
27808    );
27809}
27810extern "C" {
27811    pub fn fmpz_mod_poly_randtest_irreducible(
27812        f: *mut fmpz_mod_poly_struct,
27813        state: *mut flint_rand_s,
27814        len: mp_limb_signed_t,
27815    );
27816}
27817extern "C" {
27818    pub fn fmpz_mod_poly_randtest_not_zero(
27819        f: *mut fmpz_mod_poly_struct,
27820        state: *mut flint_rand_s,
27821        len: mp_limb_signed_t,
27822    );
27823}
27824extern "C" {
27825    pub fn fmpz_mod_poly_randtest_monic(
27826        f: *mut fmpz_mod_poly_struct,
27827        state: *mut flint_rand_s,
27828        len: mp_limb_signed_t,
27829    );
27830}
27831extern "C" {
27832    pub fn fmpz_mod_poly_randtest_monic_irreducible(
27833        f: *mut fmpz_mod_poly_struct,
27834        state: *mut flint_rand_s,
27835        len: mp_limb_signed_t,
27836    );
27837}
27838extern "C" {
27839    pub fn fmpz_mod_poly_randtest_monic_primitive(
27840        f: *mut fmpz_mod_poly_struct,
27841        state: *mut flint_rand_s,
27842        len: mp_limb_signed_t,
27843    );
27844}
27845extern "C" {
27846    pub fn fmpz_mod_poly_randtest_trinomial(
27847        f: *mut fmpz_mod_poly_struct,
27848        state: *mut flint_rand_s,
27849        len: mp_limb_signed_t,
27850    );
27851}
27852extern "C" {
27853    pub fn fmpz_mod_poly_randtest_trinomial_irreducible(
27854        f: *mut fmpz_mod_poly_struct,
27855        state: *mut flint_rand_s,
27856        len: mp_limb_signed_t,
27857        max_attempts: mp_limb_signed_t,
27858    ) -> ::std::os::raw::c_int;
27859}
27860extern "C" {
27861    pub fn fmpz_mod_poly_randtest_pentomial(
27862        f: *mut fmpz_mod_poly_struct,
27863        state: *mut flint_rand_s,
27864        len: mp_limb_signed_t,
27865    );
27866}
27867extern "C" {
27868    pub fn fmpz_mod_poly_randtest_pentomial_irreducible(
27869        f: *mut fmpz_mod_poly_struct,
27870        state: *mut flint_rand_s,
27871        len: mp_limb_signed_t,
27872        max_attempts: mp_limb_signed_t,
27873    ) -> ::std::os::raw::c_int;
27874}
27875extern "C" {
27876    pub fn fmpz_mod_poly_randtest_sparse_irreducible(
27877        poly: *mut fmpz_mod_poly_struct,
27878        state: *mut flint_rand_s,
27879        len: mp_limb_signed_t,
27880    );
27881}
27882extern "C" {
27883    pub fn fmpz_mod_poly_set(poly1: *mut fmpz_mod_poly_struct, poly2: *mut fmpz_mod_poly_struct);
27884}
27885extern "C" {
27886    pub fn fmpz_mod_poly_swap(poly1: *mut fmpz_mod_poly_struct, poly2: *mut fmpz_mod_poly_struct);
27887}
27888extern "C" {
27889    pub fn _fmpz_mod_poly_reverse(
27890        res: *mut fmpz,
27891        poly: *const fmpz,
27892        len: mp_limb_signed_t,
27893        n: mp_limb_signed_t,
27894    );
27895}
27896extern "C" {
27897    pub fn fmpz_mod_poly_reverse(
27898        res: *mut fmpz_mod_poly_struct,
27899        poly: *mut fmpz_mod_poly_struct,
27900        n: mp_limb_signed_t,
27901    );
27902}
27903extern "C" {
27904    pub fn fmpz_mod_poly_zero_coeffs(
27905        poly: *mut fmpz_mod_poly_struct,
27906        i: mp_limb_signed_t,
27907        j: mp_limb_signed_t,
27908    );
27909}
27910extern "C" {
27911    pub fn fmpz_mod_poly_set_fmpz(poly: *mut fmpz_mod_poly_struct, c: *mut fmpz);
27912}
27913extern "C" {
27914    pub fn fmpz_mod_poly_set_fmpz_poly(f: *mut fmpz_mod_poly_struct, g: *mut fmpz_poly_struct);
27915}
27916extern "C" {
27917    pub fn fmpz_mod_poly_get_fmpz_poly(f: *mut fmpz_poly_struct, g: *mut fmpz_mod_poly_struct);
27918}
27919extern "C" {
27920    pub fn fmpz_mod_poly_set_coeff_fmpz(
27921        poly: *mut fmpz_mod_poly_struct,
27922        n: mp_limb_signed_t,
27923        x: *mut fmpz,
27924    );
27925}
27926extern "C" {
27927    pub fn fmpz_mod_poly_set_coeff_ui(
27928        poly: *mut fmpz_mod_poly_struct,
27929        n: mp_limb_signed_t,
27930        x: mp_limb_t,
27931    );
27932}
27933extern "C" {
27934    pub fn fmpz_mod_poly_set_coeff_si(
27935        poly: *mut fmpz_mod_poly_struct,
27936        n: mp_limb_signed_t,
27937        x: mp_limb_signed_t,
27938    );
27939}
27940extern "C" {
27941    pub fn _fmpz_mod_poly_shift_left(
27942        res: *mut fmpz,
27943        poly: *const fmpz,
27944        len: mp_limb_signed_t,
27945        n: mp_limb_signed_t,
27946    );
27947}
27948extern "C" {
27949    pub fn fmpz_mod_poly_shift_left(
27950        f: *mut fmpz_mod_poly_struct,
27951        g: *mut fmpz_mod_poly_struct,
27952        n: mp_limb_signed_t,
27953    );
27954}
27955extern "C" {
27956    pub fn _fmpz_mod_poly_shift_right(
27957        res: *mut fmpz,
27958        poly: *const fmpz,
27959        len: mp_limb_signed_t,
27960        n: mp_limb_signed_t,
27961    );
27962}
27963extern "C" {
27964    pub fn fmpz_mod_poly_shift_right(
27965        f: *mut fmpz_mod_poly_struct,
27966        g: *mut fmpz_mod_poly_struct,
27967        n: mp_limb_signed_t,
27968    );
27969}
27970extern "C" {
27971    pub fn _fmpz_mod_poly_add(
27972        res: *mut fmpz,
27973        poly1: *const fmpz,
27974        len1: mp_limb_signed_t,
27975        poly2: *const fmpz,
27976        len2: mp_limb_signed_t,
27977        p: *mut fmpz,
27978    );
27979}
27980extern "C" {
27981    pub fn fmpz_mod_poly_add(
27982        res: *mut fmpz_mod_poly_struct,
27983        poly1: *mut fmpz_mod_poly_struct,
27984        poly2: *mut fmpz_mod_poly_struct,
27985    );
27986}
27987extern "C" {
27988    pub fn _fmpz_mod_poly_sub(
27989        res: *mut fmpz,
27990        poly1: *const fmpz,
27991        len1: mp_limb_signed_t,
27992        poly2: *const fmpz,
27993        len2: mp_limb_signed_t,
27994        p: *mut fmpz,
27995    );
27996}
27997extern "C" {
27998    pub fn fmpz_mod_poly_add_series(
27999        res: *mut fmpz_mod_poly_struct,
28000        poly1: *mut fmpz_mod_poly_struct,
28001        poly2: *mut fmpz_mod_poly_struct,
28002        n: mp_limb_signed_t,
28003    );
28004}
28005extern "C" {
28006    pub fn fmpz_mod_poly_sub(
28007        res: *mut fmpz_mod_poly_struct,
28008        poly1: *mut fmpz_mod_poly_struct,
28009        poly2: *mut fmpz_mod_poly_struct,
28010    );
28011}
28012extern "C" {
28013    pub fn _fmpz_mod_poly_neg(
28014        res: *mut fmpz,
28015        poly: *const fmpz,
28016        len: mp_limb_signed_t,
28017        p: *mut fmpz,
28018    );
28019}
28020extern "C" {
28021    pub fn fmpz_mod_poly_sub_series(
28022        res: *mut fmpz_mod_poly_struct,
28023        poly1: *mut fmpz_mod_poly_struct,
28024        poly2: *mut fmpz_mod_poly_struct,
28025        n: mp_limb_signed_t,
28026    );
28027}
28028extern "C" {
28029    pub fn fmpz_mod_poly_neg(res: *mut fmpz_mod_poly_struct, poly: *mut fmpz_mod_poly_struct);
28030}
28031extern "C" {
28032    pub fn _fmpz_mod_poly_scalar_mul_fmpz(
28033        res: *mut fmpz,
28034        poly: *const fmpz,
28035        len: mp_limb_signed_t,
28036        x: *mut fmpz,
28037        p: *mut fmpz,
28038    );
28039}
28040extern "C" {
28041    pub fn fmpz_mod_poly_scalar_mul_fmpz(
28042        res: *mut fmpz_mod_poly_struct,
28043        poly: *mut fmpz_mod_poly_struct,
28044        x: *mut fmpz,
28045    );
28046}
28047extern "C" {
28048    pub fn _fmpz_mod_poly_scalar_mul_ui(
28049        res: *mut fmpz,
28050        poly: *const fmpz,
28051        len: mp_limb_signed_t,
28052        x: mp_limb_t,
28053        p: *mut fmpz,
28054    );
28055}
28056extern "C" {
28057    pub fn fmpz_mod_poly_scalar_mul_ui(
28058        res: *mut fmpz_mod_poly_struct,
28059        poly: *mut fmpz_mod_poly_struct,
28060        x: mp_limb_t,
28061    );
28062}
28063extern "C" {
28064    pub fn _fmpz_mod_poly_scalar_div_fmpz(
28065        res: *mut fmpz,
28066        poly: *const fmpz,
28067        len: mp_limb_signed_t,
28068        x: *mut fmpz,
28069        p: *mut fmpz,
28070    );
28071}
28072extern "C" {
28073    pub fn fmpz_mod_poly_scalar_div_fmpz(
28074        res: *mut fmpz_mod_poly_struct,
28075        poly: *mut fmpz_mod_poly_struct,
28076        x: *mut fmpz,
28077    );
28078}
28079extern "C" {
28080    pub fn _fmpz_mod_poly_mul(
28081        res: *mut fmpz,
28082        poly1: *const fmpz,
28083        len1: mp_limb_signed_t,
28084        poly2: *const fmpz,
28085        len2: mp_limb_signed_t,
28086        p: *mut fmpz,
28087    );
28088}
28089extern "C" {
28090    pub fn fmpz_mod_poly_mul(
28091        res: *mut fmpz_mod_poly_struct,
28092        poly1: *mut fmpz_mod_poly_struct,
28093        poly2: *mut fmpz_mod_poly_struct,
28094    );
28095}
28096extern "C" {
28097    pub fn _fmpz_mod_poly_mullow(
28098        res: *mut fmpz,
28099        poly1: *const fmpz,
28100        len1: mp_limb_signed_t,
28101        poly2: *const fmpz,
28102        len2: mp_limb_signed_t,
28103        p: *mut fmpz,
28104        n: mp_limb_signed_t,
28105    );
28106}
28107extern "C" {
28108    pub fn fmpz_mod_poly_mullow(
28109        res: *mut fmpz_mod_poly_struct,
28110        poly1: *mut fmpz_mod_poly_struct,
28111        poly2: *mut fmpz_mod_poly_struct,
28112        n: mp_limb_signed_t,
28113    );
28114}
28115extern "C" {
28116    pub fn _fmpz_mod_poly_sqr(
28117        res: *mut fmpz,
28118        poly: *const fmpz,
28119        len: mp_limb_signed_t,
28120        p: *mut fmpz,
28121    );
28122}
28123extern "C" {
28124    pub fn fmpz_mod_poly_sqr(res: *mut fmpz_mod_poly_struct, poly: *mut fmpz_mod_poly_struct);
28125}
28126extern "C" {
28127    pub fn _fmpz_mod_poly_mulmod(
28128        res: *mut fmpz,
28129        poly1: *const fmpz,
28130        len1: mp_limb_signed_t,
28131        poly2: *const fmpz,
28132        len2: mp_limb_signed_t,
28133        f: *const fmpz,
28134        lenf: mp_limb_signed_t,
28135        p: *mut fmpz,
28136    );
28137}
28138extern "C" {
28139    pub fn fmpz_mod_poly_mulmod(
28140        res: *mut fmpz_mod_poly_struct,
28141        poly1: *mut fmpz_mod_poly_struct,
28142        poly2: *mut fmpz_mod_poly_struct,
28143        f: *mut fmpz_mod_poly_struct,
28144    );
28145}
28146extern "C" {
28147    pub fn _fmpz_mod_poly_mulmod_preinv(
28148        res: *mut fmpz,
28149        poly1: *const fmpz,
28150        len1: mp_limb_signed_t,
28151        poly2: *const fmpz,
28152        len2: mp_limb_signed_t,
28153        f: *const fmpz,
28154        lenf: mp_limb_signed_t,
28155        finv: *const fmpz,
28156        lenfinv: mp_limb_signed_t,
28157        p: *mut fmpz,
28158    );
28159}
28160extern "C" {
28161    pub fn fmpz_mod_poly_mulmod_preinv(
28162        res: *mut fmpz_mod_poly_struct,
28163        poly1: *mut fmpz_mod_poly_struct,
28164        poly2: *mut fmpz_mod_poly_struct,
28165        f: *mut fmpz_mod_poly_struct,
28166        finv: *mut fmpz_mod_poly_struct,
28167    );
28168}
28169extern "C" {
28170    pub fn _fmpz_mod_poly_pow(
28171        rop: *mut fmpz,
28172        op: *const fmpz,
28173        len: mp_limb_signed_t,
28174        e: mp_limb_t,
28175        p: *mut fmpz,
28176    );
28177}
28178extern "C" {
28179    pub fn fmpz_mod_poly_pow(
28180        rop: *mut fmpz_mod_poly_struct,
28181        op: *mut fmpz_mod_poly_struct,
28182        e: mp_limb_t,
28183    );
28184}
28185extern "C" {
28186    pub fn _fmpz_mod_poly_pow_trunc(
28187        res: *mut fmpz,
28188        poly: *const fmpz,
28189        e: mp_limb_t,
28190        trunc: mp_limb_signed_t,
28191        p: *mut fmpz,
28192    );
28193}
28194extern "C" {
28195    pub fn fmpz_mod_poly_pow_trunc(
28196        res: *mut fmpz_mod_poly_struct,
28197        poly: *mut fmpz_mod_poly_struct,
28198        e: mp_limb_t,
28199        trunc: mp_limb_signed_t,
28200    );
28201}
28202extern "C" {
28203    pub fn _fmpz_mod_poly_pow_trunc_binexp(
28204        res: *mut fmpz,
28205        poly: *const fmpz,
28206        e: mp_limb_t,
28207        trunc: mp_limb_signed_t,
28208        p: *mut fmpz,
28209    );
28210}
28211extern "C" {
28212    pub fn fmpz_mod_poly_pow_trunc_binexp(
28213        res: *mut fmpz_mod_poly_struct,
28214        poly: *mut fmpz_mod_poly_struct,
28215        e: mp_limb_t,
28216        trunc: mp_limb_signed_t,
28217    );
28218}
28219extern "C" {
28220    pub fn _fmpz_mod_poly_powmod_ui_binexp(
28221        res: *mut fmpz,
28222        poly: *const fmpz,
28223        e: mp_limb_t,
28224        f: *const fmpz,
28225        lenf: mp_limb_signed_t,
28226        p: *mut fmpz,
28227    );
28228}
28229extern "C" {
28230    pub fn fmpz_mod_poly_powmod_ui_binexp(
28231        res: *mut fmpz_mod_poly_struct,
28232        poly: *mut fmpz_mod_poly_struct,
28233        e: mp_limb_t,
28234        f: *mut fmpz_mod_poly_struct,
28235    );
28236}
28237extern "C" {
28238    pub fn _fmpz_mod_poly_powmod_ui_binexp_preinv(
28239        res: *mut fmpz,
28240        poly: *const fmpz,
28241        e: mp_limb_t,
28242        f: *const fmpz,
28243        lenf: mp_limb_signed_t,
28244        finv: *const fmpz,
28245        lenfinv: mp_limb_signed_t,
28246        p: *mut fmpz,
28247    );
28248}
28249extern "C" {
28250    pub fn fmpz_mod_poly_powmod_ui_binexp_preinv(
28251        res: *mut fmpz_mod_poly_struct,
28252        poly: *mut fmpz_mod_poly_struct,
28253        e: mp_limb_t,
28254        f: *mut fmpz_mod_poly_struct,
28255        finv: *mut fmpz_mod_poly_struct,
28256    );
28257}
28258extern "C" {
28259    pub fn _fmpz_mod_poly_powmod_fmpz_binexp(
28260        res: *mut fmpz,
28261        poly: *const fmpz,
28262        e: *mut fmpz,
28263        f: *const fmpz,
28264        lenf: mp_limb_signed_t,
28265        p: *mut fmpz,
28266    );
28267}
28268extern "C" {
28269    pub fn fmpz_mod_poly_powmod_fmpz_binexp(
28270        res: *mut fmpz_mod_poly_struct,
28271        poly: *mut fmpz_mod_poly_struct,
28272        e: *mut fmpz,
28273        f: *mut fmpz_mod_poly_struct,
28274    );
28275}
28276extern "C" {
28277    pub fn _fmpz_mod_poly_powmod_fmpz_binexp_preinv(
28278        res: *mut fmpz,
28279        poly: *const fmpz,
28280        e: *mut fmpz,
28281        f: *const fmpz,
28282        lenf: mp_limb_signed_t,
28283        finv: *const fmpz,
28284        lenfinv: mp_limb_signed_t,
28285        p: *mut fmpz,
28286    );
28287}
28288extern "C" {
28289    pub fn fmpz_mod_poly_powmod_fmpz_binexp_preinv(
28290        res: *mut fmpz_mod_poly_struct,
28291        poly: *mut fmpz_mod_poly_struct,
28292        e: *mut fmpz,
28293        f: *mut fmpz_mod_poly_struct,
28294        finv: *mut fmpz_mod_poly_struct,
28295    );
28296}
28297extern "C" {
28298    pub fn _fmpz_mod_poly_powmod_x_fmpz_preinv(
28299        res: *mut fmpz,
28300        e: *mut fmpz,
28301        f: *const fmpz,
28302        lenf: mp_limb_signed_t,
28303        finv: *const fmpz,
28304        lenfinv: mp_limb_signed_t,
28305        p: *mut fmpz,
28306    );
28307}
28308extern "C" {
28309    pub fn fmpz_mod_poly_powmod_x_fmpz_preinv(
28310        res: *mut fmpz_mod_poly_struct,
28311        e: *mut fmpz,
28312        f: *mut fmpz_mod_poly_struct,
28313        finv: *mut fmpz_mod_poly_struct,
28314    );
28315}
28316extern "C" {
28317    pub fn _fmpz_mod_poly_powers_mod_preinv_naive(
28318        res: *mut *mut fmpz,
28319        f: *const fmpz,
28320        flen: mp_limb_signed_t,
28321        n: mp_limb_signed_t,
28322        g: *const fmpz,
28323        glen: mp_limb_signed_t,
28324        ginv: *const fmpz,
28325        ginvlen: mp_limb_signed_t,
28326        p: *mut fmpz,
28327    );
28328}
28329extern "C" {
28330    pub fn fmpz_mod_poly_powers_mod_naive(
28331        res: *mut fmpz_mod_poly_struct,
28332        f: *mut fmpz_mod_poly_struct,
28333        n: mp_limb_signed_t,
28334        g: *mut fmpz_mod_poly_struct,
28335    );
28336}
28337extern "C" {
28338    pub fn _fmpz_mod_poly_powers_mod_preinv_threaded_pool(
28339        res: *mut *mut fmpz,
28340        f: *const fmpz,
28341        flen: mp_limb_signed_t,
28342        n: mp_limb_signed_t,
28343        g: *const fmpz,
28344        glen: mp_limb_signed_t,
28345        ginv: *const fmpz,
28346        ginvlen: mp_limb_signed_t,
28347        p: *mut fmpz,
28348        threads: *mut thread_pool_handle,
28349        num_threads: mp_limb_signed_t,
28350    );
28351}
28352extern "C" {
28353    pub fn fmpz_mod_poly_powers_mod_bsgs(
28354        res: *mut fmpz_mod_poly_struct,
28355        f: *mut fmpz_mod_poly_struct,
28356        n: mp_limb_signed_t,
28357        g: *mut fmpz_mod_poly_struct,
28358    );
28359}
28360extern "C" {
28361    pub fn fmpz_mod_poly_frobenius_powers_2exp_precomp(
28362        pow: *mut fmpz_mod_poly_frobenius_powers_2exp_struct,
28363        f: *mut fmpz_mod_poly_struct,
28364        finv: *mut fmpz_mod_poly_struct,
28365        m: mp_limb_t,
28366    );
28367}
28368extern "C" {
28369    pub fn fmpz_mod_poly_frobenius_powers_2exp_clear(
28370        pow: *mut fmpz_mod_poly_frobenius_powers_2exp_struct,
28371    );
28372}
28373extern "C" {
28374    pub fn fmpz_mod_poly_frobenius_power(
28375        res: *mut fmpz_mod_poly_struct,
28376        pow: *mut fmpz_mod_poly_frobenius_powers_2exp_struct,
28377        f: *mut fmpz_mod_poly_struct,
28378        m: mp_limb_t,
28379    );
28380}
28381extern "C" {
28382    pub fn fmpz_mod_poly_frobenius_powers_precomp(
28383        pow: *mut fmpz_mod_poly_frobenius_powers_struct,
28384        f: *mut fmpz_mod_poly_struct,
28385        finv: *mut fmpz_mod_poly_struct,
28386        m: mp_limb_t,
28387    );
28388}
28389extern "C" {
28390    pub fn fmpz_mod_poly_frobenius_powers_clear(pow: *mut fmpz_mod_poly_frobenius_powers_struct);
28391}
28392extern "C" {
28393    pub fn _fmpz_mod_poly_divrem_basecase(
28394        Q: *mut fmpz,
28395        R: *mut fmpz,
28396        A: *const fmpz,
28397        lenA: mp_limb_signed_t,
28398        B: *const fmpz,
28399        lenB: mp_limb_signed_t,
28400        invB: *mut fmpz,
28401        p: *mut fmpz,
28402    );
28403}
28404extern "C" {
28405    pub fn fmpz_mod_poly_divrem_basecase(
28406        Q: *mut fmpz_mod_poly_struct,
28407        R: *mut fmpz_mod_poly_struct,
28408        A: *mut fmpz_mod_poly_struct,
28409        B: *mut fmpz_mod_poly_struct,
28410    );
28411}
28412extern "C" {
28413    pub fn _fmpz_mod_poly_div_basecase(
28414        Q: *mut fmpz,
28415        R: *mut fmpz,
28416        A: *const fmpz,
28417        lenA: mp_limb_signed_t,
28418        B: *const fmpz,
28419        lenB: mp_limb_signed_t,
28420        invB: *mut fmpz,
28421        p: *mut fmpz,
28422    );
28423}
28424extern "C" {
28425    pub fn fmpz_mod_poly_div_basecase(
28426        Q: *mut fmpz_mod_poly_struct,
28427        A: *mut fmpz_mod_poly_struct,
28428        B: *mut fmpz_mod_poly_struct,
28429    );
28430}
28431extern "C" {
28432    pub fn _fmpz_mod_poly_div_newton_n_preinv(
28433        Q: *mut fmpz,
28434        A: *const fmpz,
28435        lenA: mp_limb_signed_t,
28436        B: *const fmpz,
28437        lenB: mp_limb_signed_t,
28438        Binv: *const fmpz,
28439        lenBinv: mp_limb_signed_t,
28440        mod_: *mut fmpz,
28441    );
28442}
28443extern "C" {
28444    pub fn fmpz_mod_poly_div_newton_n_preinv(
28445        Q: *mut fmpz_mod_poly_struct,
28446        A: *mut fmpz_mod_poly_struct,
28447        B: *mut fmpz_mod_poly_struct,
28448        Binv: *mut fmpz_mod_poly_struct,
28449    );
28450}
28451extern "C" {
28452    pub fn _fmpz_mod_poly_divrem_newton_n_preinv(
28453        Q: *mut fmpz,
28454        R: *mut fmpz,
28455        A: *const fmpz,
28456        lenA: mp_limb_signed_t,
28457        B: *const fmpz,
28458        lenB: mp_limb_signed_t,
28459        Binv: *const fmpz,
28460        lenBinv: mp_limb_signed_t,
28461        mod_: *mut fmpz,
28462    );
28463}
28464extern "C" {
28465    pub fn fmpz_mod_poly_divrem_newton_n_preinv(
28466        Q: *mut fmpz_mod_poly_struct,
28467        R: *mut fmpz_mod_poly_struct,
28468        A: *mut fmpz_mod_poly_struct,
28469        B: *mut fmpz_mod_poly_struct,
28470        Binv: *mut fmpz_mod_poly_struct,
28471    );
28472}
28473extern "C" {
28474    pub fn fmpz_mod_poly_remove(
28475        f: *mut fmpz_mod_poly_struct,
28476        p: *mut fmpz_mod_poly_struct,
28477    ) -> mp_limb_t;
28478}
28479extern "C" {
28480    pub fn _fmpz_mod_poly_rem_basecase(
28481        R: *mut fmpz,
28482        A: *const fmpz,
28483        lenA: mp_limb_signed_t,
28484        B: *const fmpz,
28485        lenB: mp_limb_signed_t,
28486        invB: *mut fmpz,
28487        p: *mut fmpz,
28488    );
28489}
28490extern "C" {
28491    pub fn fmpz_mod_poly_rem_basecase(
28492        R: *mut fmpz_mod_poly_struct,
28493        A: *mut fmpz_mod_poly_struct,
28494        B: *mut fmpz_mod_poly_struct,
28495    );
28496}
28497extern "C" {
28498    pub fn _fmpz_mod_poly_divrem_divconquer_recursive(
28499        Q: *mut fmpz,
28500        BQ: *mut fmpz,
28501        W: *mut fmpz,
28502        A: *const fmpz,
28503        B: *const fmpz,
28504        lenB: mp_limb_signed_t,
28505        invB: *mut fmpz,
28506        p: *mut fmpz,
28507    );
28508}
28509extern "C" {
28510    pub fn _fmpz_mod_poly_divrem_divconquer(
28511        Q: *mut fmpz,
28512        R: *mut fmpz,
28513        A: *const fmpz,
28514        lenA: mp_limb_signed_t,
28515        B: *const fmpz,
28516        lenB: mp_limb_signed_t,
28517        invB: *mut fmpz,
28518        p: *mut fmpz,
28519    );
28520}
28521extern "C" {
28522    pub fn fmpz_mod_poly_divrem_divconquer(
28523        Q: *mut fmpz_mod_poly_struct,
28524        R: *mut fmpz_mod_poly_struct,
28525        A: *mut fmpz_mod_poly_struct,
28526        B: *mut fmpz_mod_poly_struct,
28527    );
28528}
28529extern "C" {
28530    pub fn _fmpz_mod_poly_divrem_f(
28531        f: *mut fmpz,
28532        Q: *mut fmpz,
28533        R: *mut fmpz,
28534        A: *const fmpz,
28535        lenA: mp_limb_signed_t,
28536        B: *const fmpz,
28537        lenB: mp_limb_signed_t,
28538        p: *mut fmpz,
28539    );
28540}
28541extern "C" {
28542    pub fn fmpz_mod_poly_divrem_f(
28543        f: *mut fmpz,
28544        Q: *mut fmpz_mod_poly_struct,
28545        R: *mut fmpz_mod_poly_struct,
28546        A: *mut fmpz_mod_poly_struct,
28547        B: *mut fmpz_mod_poly_struct,
28548    );
28549}
28550extern "C" {
28551    pub fn _fmpz_mod_poly_inv_series_newton(
28552        Qinv: *mut fmpz,
28553        Q: *const fmpz,
28554        n: mp_limb_signed_t,
28555        cinv: *mut fmpz,
28556        p: *mut fmpz,
28557    );
28558}
28559extern "C" {
28560    pub fn fmpz_mod_poly_inv_series_newton(
28561        Qinv: *mut fmpz_mod_poly_struct,
28562        Q: *mut fmpz_mod_poly_struct,
28563        n: mp_limb_signed_t,
28564    );
28565}
28566extern "C" {
28567    pub fn fmpz_mod_poly_inv_series_newton_f(
28568        f: *mut fmpz,
28569        Qinv: *mut fmpz_mod_poly_struct,
28570        Q: *mut fmpz_mod_poly_struct,
28571        n: mp_limb_signed_t,
28572    );
28573}
28574extern "C" {
28575    pub fn _fmpz_mod_poly_div_series(
28576        Q: *mut fmpz,
28577        A: *const fmpz,
28578        Alen: mp_limb_signed_t,
28579        B: *const fmpz,
28580        Blen: mp_limb_signed_t,
28581        p: *mut fmpz,
28582        n: mp_limb_signed_t,
28583    );
28584}
28585extern "C" {
28586    pub fn fmpz_mod_poly_div_series(
28587        Q: *mut fmpz_mod_poly_struct,
28588        A: *mut fmpz_mod_poly_struct,
28589        B: *mut fmpz_mod_poly_struct,
28590        n: mp_limb_signed_t,
28591    );
28592}
28593extern "C" {
28594    pub fn fmpz_mod_poly_make_monic(
28595        res: *mut fmpz_mod_poly_struct,
28596        poly: *mut fmpz_mod_poly_struct,
28597    );
28598}
28599extern "C" {
28600    pub fn fmpz_mod_poly_make_monic_f(
28601        f: *mut fmpz,
28602        res: *mut fmpz_mod_poly_struct,
28603        poly: *mut fmpz_mod_poly_struct,
28604    );
28605}
28606extern "C" {
28607    pub fn _fmpz_mod_poly_gcd_euclidean(
28608        G: *mut fmpz,
28609        A: *const fmpz,
28610        lenA: mp_limb_signed_t,
28611        B: *const fmpz,
28612        lenB: mp_limb_signed_t,
28613        invB: *mut fmpz,
28614        p: *mut fmpz,
28615    ) -> mp_limb_signed_t;
28616}
28617extern "C" {
28618    pub fn fmpz_mod_poly_gcd_euclidean(
28619        G: *mut fmpz_mod_poly_struct,
28620        A: *mut fmpz_mod_poly_struct,
28621        B: *mut fmpz_mod_poly_struct,
28622    );
28623}
28624extern "C" {
28625    pub fn _fmpz_mod_poly_gcd_euclidean_f(
28626        f: *mut fmpz,
28627        G: *mut fmpz,
28628        A: *const fmpz,
28629        lenA: mp_limb_signed_t,
28630        B: *const fmpz,
28631        lenB: mp_limb_signed_t,
28632        p: *mut fmpz,
28633    ) -> mp_limb_signed_t;
28634}
28635extern "C" {
28636    pub fn fmpz_mod_poly_gcd_euclidean_f(
28637        f: *mut fmpz,
28638        G: *mut fmpz_mod_poly_struct,
28639        A: *mut fmpz_mod_poly_struct,
28640        B: *mut fmpz_mod_poly_struct,
28641    );
28642}
28643extern "C" {
28644    pub fn _fmpz_mod_poly_hgcd_recursive(
28645        M: *mut *mut fmpz,
28646        lenM: *mut mp_limb_signed_t,
28647        A: *mut fmpz,
28648        lenA: *mut mp_limb_signed_t,
28649        B: *mut fmpz,
28650        lenB: *mut mp_limb_signed_t,
28651        a: *const fmpz,
28652        lena: mp_limb_signed_t,
28653        b: *const fmpz,
28654        lenb: mp_limb_signed_t,
28655        P: *mut fmpz,
28656        mod_: *mut fmpz,
28657        flag: ::std::os::raw::c_int,
28658        res: *mut fmpz_mod_poly_res_struct,
28659    ) -> mp_limb_signed_t;
28660}
28661extern "C" {
28662    pub fn _fmpz_mod_poly_hgcd(
28663        M: *mut *mut fmpz,
28664        lenM: *mut mp_limb_signed_t,
28665        A: *mut fmpz,
28666        lenA: *mut mp_limb_signed_t,
28667        B: *mut fmpz,
28668        lenB: *mut mp_limb_signed_t,
28669        a: *const fmpz,
28670        lena: mp_limb_signed_t,
28671        b: *const fmpz,
28672        lenb: mp_limb_signed_t,
28673        mod_: *mut fmpz,
28674    ) -> mp_limb_signed_t;
28675}
28676extern "C" {
28677    pub fn _fmpz_mod_poly_gcd_hgcd(
28678        G: *mut fmpz,
28679        A: *const fmpz,
28680        lenA: mp_limb_signed_t,
28681        B: *const fmpz,
28682        lenB: mp_limb_signed_t,
28683        mod_: *mut fmpz,
28684    ) -> mp_limb_signed_t;
28685}
28686extern "C" {
28687    pub fn fmpz_mod_poly_gcd_hgcd(
28688        G: *mut fmpz_mod_poly_struct,
28689        A: *mut fmpz_mod_poly_struct,
28690        B: *mut fmpz_mod_poly_struct,
28691    );
28692}
28693extern "C" {
28694    pub fn _fmpz_mod_poly_xgcd_euclidean(
28695        G: *mut fmpz,
28696        S: *mut fmpz,
28697        T: *mut fmpz,
28698        A: *const fmpz,
28699        lenA: mp_limb_signed_t,
28700        B: *const fmpz,
28701        lenB: mp_limb_signed_t,
28702        invB: *mut fmpz,
28703        p: *mut fmpz,
28704    ) -> mp_limb_signed_t;
28705}
28706extern "C" {
28707    pub fn _fmpz_mod_poly_xgcd_euclidean_f(
28708        f: *mut fmpz,
28709        G: *mut fmpz,
28710        S: *mut fmpz,
28711        T: *mut fmpz,
28712        A: *const fmpz,
28713        lenA: mp_limb_signed_t,
28714        B: *const fmpz,
28715        lenB: mp_limb_signed_t,
28716        invB: *mut fmpz,
28717        p: *mut fmpz,
28718    ) -> mp_limb_signed_t;
28719}
28720extern "C" {
28721    pub fn fmpz_mod_poly_xgcd_euclidean(
28722        G: *mut fmpz_mod_poly_struct,
28723        S: *mut fmpz_mod_poly_struct,
28724        T: *mut fmpz_mod_poly_struct,
28725        A: *mut fmpz_mod_poly_struct,
28726        B: *mut fmpz_mod_poly_struct,
28727    );
28728}
28729extern "C" {
28730    pub fn fmpz_mod_poly_xgcd_euclidean_f(
28731        f: *mut fmpz,
28732        G: *mut fmpz_mod_poly_struct,
28733        S: *mut fmpz_mod_poly_struct,
28734        T: *mut fmpz_mod_poly_struct,
28735        A: *mut fmpz_mod_poly_struct,
28736        B: *mut fmpz_mod_poly_struct,
28737    );
28738}
28739extern "C" {
28740    pub fn _fmpz_mod_poly_xgcd_hgcd(
28741        G: *mut fmpz,
28742        S: *mut fmpz,
28743        T: *mut fmpz,
28744        A: *const fmpz,
28745        lenA: mp_limb_signed_t,
28746        B: *const fmpz,
28747        lenB: mp_limb_signed_t,
28748        mod_: *mut fmpz,
28749    ) -> mp_limb_signed_t;
28750}
28751extern "C" {
28752    pub fn fmpz_mod_poly_xgcd_hgcd(
28753        G: *mut fmpz_mod_poly_struct,
28754        S: *mut fmpz_mod_poly_struct,
28755        T: *mut fmpz_mod_poly_struct,
28756        A: *mut fmpz_mod_poly_struct,
28757        B: *mut fmpz_mod_poly_struct,
28758    );
28759}
28760extern "C" {
28761    pub fn _fmpz_mod_poly_gcdinv_euclidean_f(
28762        f: *mut fmpz,
28763        G: *mut fmpz,
28764        S: *mut fmpz,
28765        A: *const fmpz,
28766        lenA: mp_limb_signed_t,
28767        B: *const fmpz,
28768        lenB: mp_limb_signed_t,
28769        invA: *mut fmpz,
28770        p: *mut fmpz,
28771    ) -> mp_limb_signed_t;
28772}
28773extern "C" {
28774    pub fn fmpz_mod_poly_gcdinv_euclidean_f(
28775        f: *mut fmpz,
28776        G: *mut fmpz_mod_poly_struct,
28777        S: *mut fmpz_mod_poly_struct,
28778        A: *mut fmpz_mod_poly_struct,
28779        B: *mut fmpz_mod_poly_struct,
28780    );
28781}
28782extern "C" {
28783    pub fn _fmpz_mod_poly_gcdinv_euclidean(
28784        G: *mut fmpz,
28785        S: *mut fmpz,
28786        A: *const fmpz,
28787        lenA: mp_limb_signed_t,
28788        B: *const fmpz,
28789        lenB: mp_limb_signed_t,
28790        invA: *mut fmpz,
28791        p: *mut fmpz,
28792    ) -> mp_limb_signed_t;
28793}
28794extern "C" {
28795    pub fn fmpz_mod_poly_gcdinv_euclidean(
28796        G: *mut fmpz_mod_poly_struct,
28797        S: *mut fmpz_mod_poly_struct,
28798        A: *mut fmpz_mod_poly_struct,
28799        B: *mut fmpz_mod_poly_struct,
28800    );
28801}
28802extern "C" {
28803    pub fn _fmpz_mod_poly_gcdinv(
28804        G: *mut fmpz,
28805        S: *mut fmpz,
28806        A: *const fmpz,
28807        lenA: mp_limb_signed_t,
28808        B: *const fmpz,
28809        lenB: mp_limb_signed_t,
28810        p: *mut fmpz,
28811    ) -> mp_limb_signed_t;
28812}
28813extern "C" {
28814    pub fn fmpz_mod_poly_gcdinv(
28815        G: *mut fmpz_mod_poly_struct,
28816        S: *mut fmpz_mod_poly_struct,
28817        A: *mut fmpz_mod_poly_struct,
28818        B: *mut fmpz_mod_poly_struct,
28819    );
28820}
28821extern "C" {
28822    pub fn _fmpz_mod_poly_gcdinv_f(
28823        f: *mut fmpz,
28824        G: *mut fmpz,
28825        S: *mut fmpz,
28826        A: *const fmpz,
28827        lenA: mp_limb_signed_t,
28828        B: *const fmpz,
28829        lenB: mp_limb_signed_t,
28830        p: *mut fmpz,
28831    ) -> mp_limb_signed_t;
28832}
28833extern "C" {
28834    pub fn fmpz_mod_poly_gcdinv_f(
28835        f: *mut fmpz,
28836        G: *mut fmpz_mod_poly_struct,
28837        S: *mut fmpz_mod_poly_struct,
28838        A: *mut fmpz_mod_poly_struct,
28839        B: *mut fmpz_mod_poly_struct,
28840    );
28841}
28842extern "C" {
28843    pub fn _fmpz_mod_poly_invmod(
28844        A: *mut fmpz,
28845        B: *const fmpz,
28846        lenB: mp_limb_signed_t,
28847        P: *const fmpz,
28848        lenP: mp_limb_signed_t,
28849        p: *mut fmpz,
28850    ) -> ::std::os::raw::c_int;
28851}
28852extern "C" {
28853    pub fn _fmpz_mod_poly_invmod_f(
28854        f: *mut fmpz,
28855        A: *mut fmpz,
28856        B: *const fmpz,
28857        lenB: mp_limb_signed_t,
28858        P: *const fmpz,
28859        lenP: mp_limb_signed_t,
28860        p: *mut fmpz,
28861    ) -> ::std::os::raw::c_int;
28862}
28863extern "C" {
28864    pub fn fmpz_mod_poly_invmod(
28865        A: *mut fmpz_mod_poly_struct,
28866        B: *mut fmpz_mod_poly_struct,
28867        P: *mut fmpz_mod_poly_struct,
28868    ) -> ::std::os::raw::c_int;
28869}
28870extern "C" {
28871    pub fn fmpz_mod_poly_invmod_f(
28872        f: *mut fmpz,
28873        A: *mut fmpz_mod_poly_struct,
28874        B: *mut fmpz_mod_poly_struct,
28875        P: *mut fmpz_mod_poly_struct,
28876    ) -> ::std::os::raw::c_int;
28877}
28878extern "C" {
28879    pub fn _fmpz_mod_poly_minpoly_bm(
28880        poly: *mut fmpz,
28881        seq: *const fmpz,
28882        len: mp_limb_signed_t,
28883        p: *mut fmpz,
28884    ) -> mp_limb_signed_t;
28885}
28886extern "C" {
28887    pub fn _fmpz_mod_poly_minpoly_hgcd(
28888        poly: *mut fmpz,
28889        seq: *const fmpz,
28890        len: mp_limb_signed_t,
28891        p: *mut fmpz,
28892    ) -> mp_limb_signed_t;
28893}
28894extern "C" {
28895    pub fn _fmpz_mod_poly_resultant_euclidean(
28896        res: *mut fmpz,
28897        poly1: *const fmpz,
28898        len1: mp_limb_signed_t,
28899        poly2: *const fmpz,
28900        len2: mp_limb_signed_t,
28901        mod_: *mut fmpz,
28902    );
28903}
28904extern "C" {
28905    pub fn fmpz_mod_poly_resultant_euclidean(
28906        r: *mut fmpz,
28907        f: *mut fmpz_mod_poly_struct,
28908        g: *mut fmpz_mod_poly_struct,
28909    );
28910}
28911extern "C" {
28912    pub fn _fmpz_mod_poly_resultant_hgcd(
28913        res: *mut fmpz,
28914        A: *const fmpz,
28915        lenA: mp_limb_signed_t,
28916        B: *const fmpz,
28917        lenB: mp_limb_signed_t,
28918        mod_: *mut fmpz,
28919    );
28920}
28921extern "C" {
28922    pub fn fmpz_mod_poly_resultant_hgcd(
28923        res: *mut fmpz,
28924        A: *mut fmpz_mod_poly_struct,
28925        B: *mut fmpz_mod_poly_struct,
28926    );
28927}
28928extern "C" {
28929    pub fn _fmpz_mod_poly_discriminant(
28930        d: *mut fmpz,
28931        poly: *const fmpz,
28932        len: mp_limb_signed_t,
28933        mod_: *mut fmpz,
28934    );
28935}
28936extern "C" {
28937    pub fn fmpz_mod_poly_discriminant(d: *mut fmpz, f: *mut fmpz_mod_poly_struct);
28938}
28939extern "C" {
28940    pub fn _fmpz_mod_poly_derivative(
28941        res: *mut fmpz,
28942        poly: *const fmpz,
28943        len: mp_limb_signed_t,
28944        p: *mut fmpz,
28945    );
28946}
28947extern "C" {
28948    pub fn fmpz_mod_poly_derivative(
28949        res: *mut fmpz_mod_poly_struct,
28950        poly: *mut fmpz_mod_poly_struct,
28951    );
28952}
28953extern "C" {
28954    pub fn _fmpz_mod_poly_evaluate_fmpz(
28955        res: *mut fmpz,
28956        poly: *const fmpz,
28957        len: mp_limb_signed_t,
28958        a: *mut fmpz,
28959        p: *mut fmpz,
28960    );
28961}
28962extern "C" {
28963    pub fn fmpz_mod_poly_evaluate_fmpz(
28964        res: *mut fmpz,
28965        poly: *mut fmpz_mod_poly_struct,
28966        a: *mut fmpz,
28967    );
28968}
28969extern "C" {
28970    pub fn _fmpz_mod_poly_tree_alloc(len: mp_limb_signed_t) -> *mut *mut fmpz_poly_struct;
28971}
28972extern "C" {
28973    pub fn _fmpz_mod_poly_tree_free(tree: *mut *mut fmpz_poly_struct, len: mp_limb_signed_t);
28974}
28975extern "C" {
28976    pub fn _fmpz_mod_poly_tree_build(
28977        tree: *mut *mut fmpz_poly_struct,
28978        roots: *const fmpz,
28979        len: mp_limb_signed_t,
28980        mod_: *mut fmpz,
28981    );
28982}
28983extern "C" {
28984    pub fn _fmpz_mod_poly_evaluate_fmpz_vec_iter(
28985        ys: *mut fmpz,
28986        coeffs: *const fmpz,
28987        len: mp_limb_signed_t,
28988        xs: *const fmpz,
28989        n: mp_limb_signed_t,
28990        mod_: *mut fmpz,
28991    );
28992}
28993extern "C" {
28994    pub fn fmpz_mod_poly_evaluate_fmpz_vec_iter(
28995        ys: *mut fmpz,
28996        poly: *mut fmpz_mod_poly_struct,
28997        xs: *const fmpz,
28998        n: mp_limb_signed_t,
28999    );
29000}
29001extern "C" {
29002    pub fn _fmpz_mod_poly_evaluate_fmpz_vec_fast_precomp(
29003        vs: *mut fmpz,
29004        poly: *const fmpz,
29005        plen: mp_limb_signed_t,
29006        tree: *const *mut fmpz_poly_struct,
29007        len: mp_limb_signed_t,
29008        mod_: *mut fmpz,
29009    );
29010}
29011extern "C" {
29012    pub fn _fmpz_mod_poly_evaluate_fmpz_vec_fast(
29013        ys: *mut fmpz,
29014        poly: *const fmpz,
29015        plen: mp_limb_signed_t,
29016        xs: *const fmpz,
29017        n: mp_limb_signed_t,
29018        mod_: *mut fmpz,
29019    );
29020}
29021extern "C" {
29022    pub fn fmpz_mod_poly_evaluate_fmpz_vec_fast(
29023        ys: *mut fmpz,
29024        poly: *mut fmpz_mod_poly_struct,
29025        xs: *const fmpz,
29026        n: mp_limb_signed_t,
29027    );
29028}
29029extern "C" {
29030    pub fn _fmpz_mod_poly_evaluate_fmpz_vec(
29031        ys: *mut fmpz,
29032        coeffs: *const fmpz,
29033        len: mp_limb_signed_t,
29034        xs: *const fmpz,
29035        n: mp_limb_signed_t,
29036        mod_: *mut fmpz,
29037    );
29038}
29039extern "C" {
29040    pub fn fmpz_mod_poly_evaluate_fmpz_vec(
29041        ys: *mut fmpz,
29042        poly: *mut fmpz_mod_poly_struct,
29043        xs: *const fmpz,
29044        n: mp_limb_signed_t,
29045    );
29046}
29047extern "C" {
29048    pub fn _fmpz_mod_poly_compose_horner(
29049        res: *mut fmpz,
29050        poly1: *const fmpz,
29051        len1: mp_limb_signed_t,
29052        poly2: *const fmpz,
29053        len2: mp_limb_signed_t,
29054        p: *mut fmpz,
29055    );
29056}
29057extern "C" {
29058    pub fn fmpz_mod_poly_compose_horner(
29059        res: *mut fmpz_mod_poly_struct,
29060        poly1: *mut fmpz_mod_poly_struct,
29061        poly2: *mut fmpz_mod_poly_struct,
29062    );
29063}
29064extern "C" {
29065    pub fn _fmpz_mod_poly_compose_divconquer(
29066        res: *mut fmpz,
29067        poly1: *const fmpz,
29068        len1: mp_limb_signed_t,
29069        poly2: *const fmpz,
29070        len2: mp_limb_signed_t,
29071        p: *mut fmpz,
29072    );
29073}
29074extern "C" {
29075    pub fn fmpz_mod_poly_compose_divconquer(
29076        res: *mut fmpz_mod_poly_struct,
29077        poly1: *mut fmpz_mod_poly_struct,
29078        poly2: *mut fmpz_mod_poly_struct,
29079    );
29080}
29081extern "C" {
29082    pub fn _fmpz_mod_poly_compose_mod(
29083        res: *mut fmpz,
29084        f: *const fmpz,
29085        lenf: mp_limb_signed_t,
29086        g: *const fmpz,
29087        h: *const fmpz,
29088        lenh: mp_limb_signed_t,
29089        p: *mut fmpz,
29090    );
29091}
29092extern "C" {
29093    pub fn fmpz_mod_poly_compose_mod(
29094        res: *mut fmpz_mod_poly_struct,
29095        poly1: *mut fmpz_mod_poly_struct,
29096        poly2: *mut fmpz_mod_poly_struct,
29097        poly3: *mut fmpz_mod_poly_struct,
29098    );
29099}
29100extern "C" {
29101    pub fn _fmpz_mod_poly_compose_mod_brent_kung(
29102        res: *mut fmpz,
29103        poly1: *const fmpz,
29104        len1: mp_limb_signed_t,
29105        poly2: *const fmpz,
29106        poly3: *const fmpz,
29107        len3: mp_limb_signed_t,
29108        p: *mut fmpz,
29109    );
29110}
29111extern "C" {
29112    pub fn fmpz_mod_poly_compose_mod_brent_kung(
29113        res: *mut fmpz_mod_poly_struct,
29114        poly1: *mut fmpz_mod_poly_struct,
29115        poly2: *mut fmpz_mod_poly_struct,
29116        poly3: *mut fmpz_mod_poly_struct,
29117    );
29118}
29119extern "C" {
29120    pub fn _fmpz_mod_poly_reduce_matrix_mod_poly(
29121        A: *mut fmpz_mat_struct,
29122        B: *mut fmpz_mat_struct,
29123        f: *mut fmpz_mod_poly_struct,
29124    );
29125}
29126extern "C" {
29127    pub fn _fmpz_mod_poly_precompute_matrix(
29128        A: *mut fmpz_mat_struct,
29129        poly1: *const fmpz,
29130        poly2: *const fmpz,
29131        len2: mp_limb_signed_t,
29132        poly2inv: *const fmpz,
29133        len2inv: mp_limb_signed_t,
29134        p: *mut fmpz,
29135    );
29136}
29137extern "C" {
29138    pub fn _fmpz_mod_poly_precompute_matrix_worker(arg_ptr: *mut ::std::os::raw::c_void);
29139}
29140extern "C" {
29141    pub fn fmpz_mod_poly_precompute_matrix(
29142        A: *mut fmpz_mat_struct,
29143        poly1: *mut fmpz_mod_poly_struct,
29144        poly2: *mut fmpz_mod_poly_struct,
29145        poly2inv: *mut fmpz_mod_poly_struct,
29146    );
29147}
29148extern "C" {
29149    pub fn _fmpz_mod_poly_compose_mod_brent_kung_precomp_preinv(
29150        res: *mut fmpz,
29151        poly1: *const fmpz,
29152        len1: mp_limb_signed_t,
29153        A: *mut fmpz_mat_struct,
29154        poly3: *const fmpz,
29155        len3: mp_limb_signed_t,
29156        poly3inv: *const fmpz,
29157        len3inv: mp_limb_signed_t,
29158        p: *mut fmpz,
29159    );
29160}
29161extern "C" {
29162    pub fn _fmpz_mod_poly_compose_mod_brent_kung_precomp_preinv_worker(
29163        arg_ptr: *mut ::std::os::raw::c_void,
29164    );
29165}
29166extern "C" {
29167    pub fn fmpz_mod_poly_compose_mod_brent_kung_precomp_preinv(
29168        res: *mut fmpz_mod_poly_struct,
29169        poly1: *mut fmpz_mod_poly_struct,
29170        A: *mut fmpz_mat_struct,
29171        poly3: *mut fmpz_mod_poly_struct,
29172        poly3inv: *mut fmpz_mod_poly_struct,
29173    );
29174}
29175extern "C" {
29176    pub fn _fmpz_mod_poly_compose_mod_brent_kung_preinv(
29177        res: *mut fmpz,
29178        poly1: *const fmpz,
29179        len1: mp_limb_signed_t,
29180        poly2: *const fmpz,
29181        poly3: *const fmpz,
29182        len3: mp_limb_signed_t,
29183        poly3inv: *const fmpz,
29184        len3inv: mp_limb_signed_t,
29185        p: *mut fmpz,
29186    );
29187}
29188extern "C" {
29189    pub fn fmpz_mod_poly_compose_mod_brent_kung_preinv(
29190        res: *mut fmpz_mod_poly_struct,
29191        poly1: *mut fmpz_mod_poly_struct,
29192        poly2: *mut fmpz_mod_poly_struct,
29193        poly3: *mut fmpz_mod_poly_struct,
29194        poly3inv: *mut fmpz_mod_poly_struct,
29195    );
29196}
29197extern "C" {
29198    pub fn _fmpz_mod_poly_compose_mod_horner(
29199        res: *mut fmpz,
29200        f: *const fmpz,
29201        lenf: mp_limb_signed_t,
29202        g: *const fmpz,
29203        h: *const fmpz,
29204        lenh: mp_limb_signed_t,
29205        p: *mut fmpz,
29206    );
29207}
29208extern "C" {
29209    pub fn fmpz_mod_poly_compose_mod_horner(
29210        res: *mut fmpz_mod_poly_struct,
29211        poly1: *mut fmpz_mod_poly_struct,
29212        poly2: *mut fmpz_mod_poly_struct,
29213        poly3: *mut fmpz_mod_poly_struct,
29214    );
29215}
29216extern "C" {
29217    pub fn _fmpz_mod_poly_compose_mod_brent_kung_vec_preinv(
29218        res: *mut fmpz_mod_poly_struct,
29219        polys: *const fmpz_mod_poly_struct,
29220        len1: mp_limb_signed_t,
29221        l: mp_limb_signed_t,
29222        g: *const fmpz,
29223        glen: mp_limb_signed_t,
29224        poly: *const fmpz,
29225        len: mp_limb_signed_t,
29226        polyinv: *const fmpz,
29227        leninv: mp_limb_signed_t,
29228        p: *mut fmpz,
29229    );
29230}
29231extern "C" {
29232    pub fn fmpz_mod_poly_compose_mod_brent_kung_vec_preinv(
29233        res: *mut fmpz_mod_poly_struct,
29234        polys: *const fmpz_mod_poly_struct,
29235        len1: mp_limb_signed_t,
29236        n: mp_limb_signed_t,
29237        g: *mut fmpz_mod_poly_struct,
29238        poly: *mut fmpz_mod_poly_struct,
29239        polyinv: *mut fmpz_mod_poly_struct,
29240    );
29241}
29242extern "C" {
29243    pub fn _fmpz_mod_poly_compose_mod_brent_kung_vec_preinv_threaded_pool(
29244        res: *mut fmpz_mod_poly_struct,
29245        polys: *const fmpz_mod_poly_struct,
29246        lenpolys: mp_limb_signed_t,
29247        l: mp_limb_signed_t,
29248        g: *const fmpz,
29249        glen: mp_limb_signed_t,
29250        poly: *const fmpz,
29251        len: mp_limb_signed_t,
29252        polyinv: *const fmpz,
29253        leninv: mp_limb_signed_t,
29254        p: *mut fmpz,
29255        threads: *mut thread_pool_handle,
29256        num_threads: mp_limb_signed_t,
29257    );
29258}
29259extern "C" {
29260    pub fn fmpz_mod_poly_compose_mod_brent_kung_vec_preinv_threaded_pool(
29261        res: *mut fmpz_mod_poly_struct,
29262        polys: *const fmpz_mod_poly_struct,
29263        len1: mp_limb_signed_t,
29264        n: mp_limb_signed_t,
29265        g: *mut fmpz_mod_poly_struct,
29266        poly: *mut fmpz_mod_poly_struct,
29267        polyinv: *mut fmpz_mod_poly_struct,
29268        threads: *mut thread_pool_handle,
29269        num_threads: mp_limb_signed_t,
29270    );
29271}
29272extern "C" {
29273    pub fn fmpz_mod_poly_compose_mod_brent_kung_vec_preinv_threaded(
29274        res: *mut fmpz_mod_poly_struct,
29275        polys: *const fmpz_mod_poly_struct,
29276        len1: mp_limb_signed_t,
29277        n: mp_limb_signed_t,
29278        g: *mut fmpz_mod_poly_struct,
29279        poly: *mut fmpz_mod_poly_struct,
29280        polyinv: *mut fmpz_mod_poly_struct,
29281    );
29282}
29283#[repr(C)]
29284#[derive(Debug, Copy, Clone)]
29285pub struct fmpz_mod_poly_radix_struct {
29286    pub V: *mut fmpz,
29287    pub W: *mut fmpz,
29288    pub Rpow: *mut *mut fmpz,
29289    pub Rinv: *mut *mut fmpz,
29290    pub degR: mp_limb_signed_t,
29291    pub k: mp_limb_signed_t,
29292    pub invL: fmpz,
29293}
29294#[test]
29295fn bindgen_test_layout_fmpz_mod_poly_radix_struct() {
29296    assert_eq!(
29297        ::std::mem::size_of::<fmpz_mod_poly_radix_struct>(),
29298        56usize,
29299        concat!("Size of: ", stringify!(fmpz_mod_poly_radix_struct))
29300    );
29301    assert_eq!(
29302        ::std::mem::align_of::<fmpz_mod_poly_radix_struct>(),
29303        8usize,
29304        concat!("Alignment of ", stringify!(fmpz_mod_poly_radix_struct))
29305    );
29306    assert_eq!(
29307        unsafe { &(*(::std::ptr::null::<fmpz_mod_poly_radix_struct>())).V as *const _ as usize },
29308        0usize,
29309        concat!(
29310            "Offset of field: ",
29311            stringify!(fmpz_mod_poly_radix_struct),
29312            "::",
29313            stringify!(V)
29314        )
29315    );
29316    assert_eq!(
29317        unsafe { &(*(::std::ptr::null::<fmpz_mod_poly_radix_struct>())).W as *const _ as usize },
29318        8usize,
29319        concat!(
29320            "Offset of field: ",
29321            stringify!(fmpz_mod_poly_radix_struct),
29322            "::",
29323            stringify!(W)
29324        )
29325    );
29326    assert_eq!(
29327        unsafe { &(*(::std::ptr::null::<fmpz_mod_poly_radix_struct>())).Rpow as *const _ as usize },
29328        16usize,
29329        concat!(
29330            "Offset of field: ",
29331            stringify!(fmpz_mod_poly_radix_struct),
29332            "::",
29333            stringify!(Rpow)
29334        )
29335    );
29336    assert_eq!(
29337        unsafe { &(*(::std::ptr::null::<fmpz_mod_poly_radix_struct>())).Rinv as *const _ as usize },
29338        24usize,
29339        concat!(
29340            "Offset of field: ",
29341            stringify!(fmpz_mod_poly_radix_struct),
29342            "::",
29343            stringify!(Rinv)
29344        )
29345    );
29346    assert_eq!(
29347        unsafe { &(*(::std::ptr::null::<fmpz_mod_poly_radix_struct>())).degR as *const _ as usize },
29348        32usize,
29349        concat!(
29350            "Offset of field: ",
29351            stringify!(fmpz_mod_poly_radix_struct),
29352            "::",
29353            stringify!(degR)
29354        )
29355    );
29356    assert_eq!(
29357        unsafe { &(*(::std::ptr::null::<fmpz_mod_poly_radix_struct>())).k as *const _ as usize },
29358        40usize,
29359        concat!(
29360            "Offset of field: ",
29361            stringify!(fmpz_mod_poly_radix_struct),
29362            "::",
29363            stringify!(k)
29364        )
29365    );
29366    assert_eq!(
29367        unsafe { &(*(::std::ptr::null::<fmpz_mod_poly_radix_struct>())).invL as *const _ as usize },
29368        48usize,
29369        concat!(
29370            "Offset of field: ",
29371            stringify!(fmpz_mod_poly_radix_struct),
29372            "::",
29373            stringify!(invL)
29374        )
29375    );
29376}
29377pub type fmpz_mod_poly_radix_t = [fmpz_mod_poly_radix_struct; 1usize];
29378extern "C" {
29379    pub fn _fmpz_mod_poly_radix_init(
29380        Rpow: *mut *mut fmpz,
29381        Rinv: *mut *mut fmpz,
29382        R: *const fmpz,
29383        lenR: mp_limb_signed_t,
29384        k: mp_limb_signed_t,
29385        invL: *mut fmpz,
29386        p: *mut fmpz,
29387    );
29388}
29389extern "C" {
29390    pub fn fmpz_mod_poly_radix_init(
29391        D: *mut fmpz_mod_poly_radix_struct,
29392        R: *mut fmpz_mod_poly_struct,
29393        degF: mp_limb_signed_t,
29394    );
29395}
29396extern "C" {
29397    pub fn fmpz_mod_poly_radix_clear(D: *mut fmpz_mod_poly_radix_struct);
29398}
29399extern "C" {
29400    pub fn _fmpz_mod_poly_radix(
29401        B: *mut *mut fmpz,
29402        F: *const fmpz,
29403        Rpow: *mut *mut fmpz,
29404        Rinv: *mut *mut fmpz,
29405        degR: mp_limb_signed_t,
29406        k: mp_limb_signed_t,
29407        i: mp_limb_signed_t,
29408        W: *mut fmpz,
29409        p: *mut fmpz,
29410    );
29411}
29412extern "C" {
29413    pub fn fmpz_mod_poly_radix(
29414        B: *mut *mut fmpz_mod_poly_struct,
29415        F: *mut fmpz_mod_poly_struct,
29416        D: *mut fmpz_mod_poly_radix_struct,
29417    );
29418}
29419extern "C" {
29420    pub fn _fmpz_mod_poly_fprint(
29421        file: *mut FILE,
29422        poly: *const fmpz,
29423        len: mp_limb_signed_t,
29424        p: *mut fmpz,
29425    ) -> ::std::os::raw::c_int;
29426}
29427extern "C" {
29428    pub fn fmpz_mod_poly_fprint(
29429        file: *mut FILE,
29430        poly: *mut fmpz_mod_poly_struct,
29431    ) -> ::std::os::raw::c_int;
29432}
29433extern "C" {
29434    pub fn fmpz_mod_poly_fread(
29435        file: *mut FILE,
29436        poly: *mut fmpz_mod_poly_struct,
29437    ) -> ::std::os::raw::c_int;
29438}
29439extern "C" {
29440    pub fn _fmpz_mod_poly_product_roots_fmpz_vec(
29441        poly: *mut fmpz,
29442        xs: *const fmpz,
29443        n: mp_limb_signed_t,
29444        mod_: *mut fmpz,
29445    );
29446}
29447extern "C" {
29448    pub fn fmpz_mod_poly_product_roots_fmpz_vec(
29449        poly: *mut fmpz_poly_struct,
29450        xs: *const fmpz,
29451        n: mp_limb_signed_t,
29452        mod_: *mut fmpz,
29453    );
29454}
29455extern "C" {
29456    pub fn fmpz_mod_poly_find_distinct_nonzero_roots(
29457        roots: *mut fmpz,
29458        P: *mut fmpz_mod_poly_struct,
29459    ) -> ::std::os::raw::c_int;
29460}
29461extern "C" {
29462    pub fn _fmpz_mod_poly_split_rabin(
29463        a: *mut fmpz_mod_poly_struct,
29464        b: *mut fmpz_mod_poly_struct,
29465        f: *mut fmpz_mod_poly_struct,
29466        halfp: *mut fmpz,
29467        t: *mut fmpz_mod_poly_struct,
29468        t2: *mut fmpz_mod_poly_struct,
29469        randstate: *mut flint_rand_s,
29470    );
29471}
29472#[repr(C)]
29473#[derive(Debug, Copy, Clone)]
29474pub struct fmpz_mod_berlekamp_massey_struct {
29475    pub npoints: mp_limb_signed_t,
29476    pub R0: fmpz_mod_poly_t,
29477    pub R1: fmpz_mod_poly_t,
29478    pub V0: fmpz_mod_poly_t,
29479    pub V1: fmpz_mod_poly_t,
29480    pub qt: fmpz_mod_poly_t,
29481    pub rt: fmpz_mod_poly_t,
29482    pub points: fmpz_mod_poly_t,
29483}
29484#[test]
29485fn bindgen_test_layout_fmpz_mod_berlekamp_massey_struct() {
29486    assert_eq!(
29487        ::std::mem::size_of::<fmpz_mod_berlekamp_massey_struct>(),
29488        232usize,
29489        concat!("Size of: ", stringify!(fmpz_mod_berlekamp_massey_struct))
29490    );
29491    assert_eq!(
29492        ::std::mem::align_of::<fmpz_mod_berlekamp_massey_struct>(),
29493        8usize,
29494        concat!(
29495            "Alignment of ",
29496            stringify!(fmpz_mod_berlekamp_massey_struct)
29497        )
29498    );
29499    assert_eq!(
29500        unsafe {
29501            &(*(::std::ptr::null::<fmpz_mod_berlekamp_massey_struct>())).npoints as *const _
29502                as usize
29503        },
29504        0usize,
29505        concat!(
29506            "Offset of field: ",
29507            stringify!(fmpz_mod_berlekamp_massey_struct),
29508            "::",
29509            stringify!(npoints)
29510        )
29511    );
29512    assert_eq!(
29513        unsafe {
29514            &(*(::std::ptr::null::<fmpz_mod_berlekamp_massey_struct>())).R0 as *const _ as usize
29515        },
29516        8usize,
29517        concat!(
29518            "Offset of field: ",
29519            stringify!(fmpz_mod_berlekamp_massey_struct),
29520            "::",
29521            stringify!(R0)
29522        )
29523    );
29524    assert_eq!(
29525        unsafe {
29526            &(*(::std::ptr::null::<fmpz_mod_berlekamp_massey_struct>())).R1 as *const _ as usize
29527        },
29528        40usize,
29529        concat!(
29530            "Offset of field: ",
29531            stringify!(fmpz_mod_berlekamp_massey_struct),
29532            "::",
29533            stringify!(R1)
29534        )
29535    );
29536    assert_eq!(
29537        unsafe {
29538            &(*(::std::ptr::null::<fmpz_mod_berlekamp_massey_struct>())).V0 as *const _ as usize
29539        },
29540        72usize,
29541        concat!(
29542            "Offset of field: ",
29543            stringify!(fmpz_mod_berlekamp_massey_struct),
29544            "::",
29545            stringify!(V0)
29546        )
29547    );
29548    assert_eq!(
29549        unsafe {
29550            &(*(::std::ptr::null::<fmpz_mod_berlekamp_massey_struct>())).V1 as *const _ as usize
29551        },
29552        104usize,
29553        concat!(
29554            "Offset of field: ",
29555            stringify!(fmpz_mod_berlekamp_massey_struct),
29556            "::",
29557            stringify!(V1)
29558        )
29559    );
29560    assert_eq!(
29561        unsafe {
29562            &(*(::std::ptr::null::<fmpz_mod_berlekamp_massey_struct>())).qt as *const _ as usize
29563        },
29564        136usize,
29565        concat!(
29566            "Offset of field: ",
29567            stringify!(fmpz_mod_berlekamp_massey_struct),
29568            "::",
29569            stringify!(qt)
29570        )
29571    );
29572    assert_eq!(
29573        unsafe {
29574            &(*(::std::ptr::null::<fmpz_mod_berlekamp_massey_struct>())).rt as *const _ as usize
29575        },
29576        168usize,
29577        concat!(
29578            "Offset of field: ",
29579            stringify!(fmpz_mod_berlekamp_massey_struct),
29580            "::",
29581            stringify!(rt)
29582        )
29583    );
29584    assert_eq!(
29585        unsafe {
29586            &(*(::std::ptr::null::<fmpz_mod_berlekamp_massey_struct>())).points as *const _ as usize
29587        },
29588        200usize,
29589        concat!(
29590            "Offset of field: ",
29591            stringify!(fmpz_mod_berlekamp_massey_struct),
29592            "::",
29593            stringify!(points)
29594        )
29595    );
29596}
29597pub type fmpz_mod_berlekamp_massey_t = [fmpz_mod_berlekamp_massey_struct; 1usize];
29598extern "C" {
29599    pub fn fmpz_mod_berlekamp_massey_init(B: *mut fmpz_mod_berlekamp_massey_struct, p: *mut fmpz);
29600}
29601extern "C" {
29602    pub fn fmpz_mod_berlekamp_massey_init_ui(
29603        B: *mut fmpz_mod_berlekamp_massey_struct,
29604        p: mp_limb_t,
29605    );
29606}
29607extern "C" {
29608    pub fn fmpz_mod_berlekamp_massey_start_over(B: *mut fmpz_mod_berlekamp_massey_struct);
29609}
29610extern "C" {
29611    pub fn fmpz_mod_berlekamp_massey_clear(B: *mut fmpz_mod_berlekamp_massey_struct);
29612}
29613extern "C" {
29614    pub fn fmpz_mod_berlekamp_massey_set_prime(
29615        B: *mut fmpz_mod_berlekamp_massey_struct,
29616        p: *mut fmpz,
29617    );
29618}
29619extern "C" {
29620    pub fn fmpz_mod_berlekamp_massey_print(B: *mut fmpz_mod_berlekamp_massey_struct);
29621}
29622extern "C" {
29623    pub fn fmpz_mod_berlekamp_massey_add_points(
29624        B: *mut fmpz_mod_berlekamp_massey_struct,
29625        a: *const fmpz,
29626        count: mp_limb_signed_t,
29627    );
29628}
29629extern "C" {
29630    pub fn fmpz_mod_berlekamp_massey_add_zeros(
29631        B: *mut fmpz_mod_berlekamp_massey_struct,
29632        count: mp_limb_signed_t,
29633    );
29634}
29635extern "C" {
29636    pub fn fmpz_mod_berlekamp_massey_add_point(
29637        B: *mut fmpz_mod_berlekamp_massey_struct,
29638        a: *mut fmpz,
29639    );
29640}
29641extern "C" {
29642    pub fn fmpz_mod_berlekamp_massey_add_point_ui(
29643        B: *mut fmpz_mod_berlekamp_massey_struct,
29644        a: mp_limb_t,
29645    );
29646}
29647extern "C" {
29648    pub fn fmpz_mod_berlekamp_massey_reduce(
29649        B: *mut fmpz_mod_berlekamp_massey_struct,
29650    ) -> ::std::os::raw::c_int;
29651}
29652extern "C" {
29653    pub fn fmpz_mod_poly_add_si(
29654        res: *mut fmpz_mod_poly_struct,
29655        poly: *mut fmpz_mod_poly_struct,
29656        c: mp_limb_signed_t,
29657    );
29658}
29659extern "C" {
29660    pub fn fmpz_mod_poly_sub_si(
29661        res: *mut fmpz_mod_poly_struct,
29662        poly: *mut fmpz_mod_poly_struct,
29663        c: mp_limb_signed_t,
29664    );
29665}
29666extern "C" {
29667    pub fn fmpz_mod_poly_si_sub(
29668        res: *mut fmpz_mod_poly_struct,
29669        c: mp_limb_signed_t,
29670        poly: *mut fmpz_mod_poly_struct,
29671    );
29672}
29673extern "C" {
29674    pub fn fmpz_mod_poly_add_fmpz(
29675        res: *mut fmpz_mod_poly_struct,
29676        poly: *mut fmpz_mod_poly_struct,
29677        c: *mut fmpz,
29678    );
29679}
29680extern "C" {
29681    pub fn fmpz_mod_poly_sub_fmpz(
29682        res: *mut fmpz_mod_poly_struct,
29683        poly: *mut fmpz_mod_poly_struct,
29684        c: *mut fmpz,
29685    );
29686}
29687extern "C" {
29688    pub fn fmpz_mod_poly_fmpz_sub(
29689        res: *mut fmpz_mod_poly_struct,
29690        c: *mut fmpz,
29691        poly: *mut fmpz_mod_poly_struct,
29692    );
29693}
29694#[repr(C)]
29695#[derive(Debug, Copy, Clone)]
29696pub struct fmpz_mod_poly_factor_struct {
29697    pub poly: *mut fmpz_mod_poly_struct,
29698    pub exp: *mut mp_limb_signed_t,
29699    pub num: mp_limb_signed_t,
29700    pub alloc: mp_limb_signed_t,
29701}
29702#[test]
29703fn bindgen_test_layout_fmpz_mod_poly_factor_struct() {
29704    assert_eq!(
29705        ::std::mem::size_of::<fmpz_mod_poly_factor_struct>(),
29706        32usize,
29707        concat!("Size of: ", stringify!(fmpz_mod_poly_factor_struct))
29708    );
29709    assert_eq!(
29710        ::std::mem::align_of::<fmpz_mod_poly_factor_struct>(),
29711        8usize,
29712        concat!("Alignment of ", stringify!(fmpz_mod_poly_factor_struct))
29713    );
29714    assert_eq!(
29715        unsafe {
29716            &(*(::std::ptr::null::<fmpz_mod_poly_factor_struct>())).poly as *const _ as usize
29717        },
29718        0usize,
29719        concat!(
29720            "Offset of field: ",
29721            stringify!(fmpz_mod_poly_factor_struct),
29722            "::",
29723            stringify!(poly)
29724        )
29725    );
29726    assert_eq!(
29727        unsafe { &(*(::std::ptr::null::<fmpz_mod_poly_factor_struct>())).exp as *const _ as usize },
29728        8usize,
29729        concat!(
29730            "Offset of field: ",
29731            stringify!(fmpz_mod_poly_factor_struct),
29732            "::",
29733            stringify!(exp)
29734        )
29735    );
29736    assert_eq!(
29737        unsafe { &(*(::std::ptr::null::<fmpz_mod_poly_factor_struct>())).num as *const _ as usize },
29738        16usize,
29739        concat!(
29740            "Offset of field: ",
29741            stringify!(fmpz_mod_poly_factor_struct),
29742            "::",
29743            stringify!(num)
29744        )
29745    );
29746    assert_eq!(
29747        unsafe {
29748            &(*(::std::ptr::null::<fmpz_mod_poly_factor_struct>())).alloc as *const _ as usize
29749        },
29750        24usize,
29751        concat!(
29752            "Offset of field: ",
29753            stringify!(fmpz_mod_poly_factor_struct),
29754            "::",
29755            stringify!(alloc)
29756        )
29757    );
29758}
29759pub type fmpz_mod_poly_factor_t = [fmpz_mod_poly_factor_struct; 1usize];
29760extern "C" {
29761    pub fn fmpz_mod_poly_factor_init(fac: *mut fmpz_mod_poly_factor_struct);
29762}
29763#[repr(C)]
29764#[derive(Debug, Copy, Clone)]
29765pub struct fmpz_mod_poly_interval_poly_arg_t {
29766    pub baby: *mut fmpz_mod_poly_struct,
29767    pub res: *mut fmpz_mod_poly_struct,
29768    pub H: *mut fmpz_mod_poly_struct,
29769    pub v: *mut fmpz_mod_poly_struct,
29770    pub vinv: *mut fmpz_mod_poly_struct,
29771    pub tmp: *mut fmpz,
29772    pub m: mp_limb_signed_t,
29773}
29774#[test]
29775fn bindgen_test_layout_fmpz_mod_poly_interval_poly_arg_t() {
29776    assert_eq!(
29777        ::std::mem::size_of::<fmpz_mod_poly_interval_poly_arg_t>(),
29778        56usize,
29779        concat!("Size of: ", stringify!(fmpz_mod_poly_interval_poly_arg_t))
29780    );
29781    assert_eq!(
29782        ::std::mem::align_of::<fmpz_mod_poly_interval_poly_arg_t>(),
29783        8usize,
29784        concat!(
29785            "Alignment of ",
29786            stringify!(fmpz_mod_poly_interval_poly_arg_t)
29787        )
29788    );
29789    assert_eq!(
29790        unsafe {
29791            &(*(::std::ptr::null::<fmpz_mod_poly_interval_poly_arg_t>())).baby as *const _ as usize
29792        },
29793        0usize,
29794        concat!(
29795            "Offset of field: ",
29796            stringify!(fmpz_mod_poly_interval_poly_arg_t),
29797            "::",
29798            stringify!(baby)
29799        )
29800    );
29801    assert_eq!(
29802        unsafe {
29803            &(*(::std::ptr::null::<fmpz_mod_poly_interval_poly_arg_t>())).res as *const _ as usize
29804        },
29805        8usize,
29806        concat!(
29807            "Offset of field: ",
29808            stringify!(fmpz_mod_poly_interval_poly_arg_t),
29809            "::",
29810            stringify!(res)
29811        )
29812    );
29813    assert_eq!(
29814        unsafe {
29815            &(*(::std::ptr::null::<fmpz_mod_poly_interval_poly_arg_t>())).H as *const _ as usize
29816        },
29817        16usize,
29818        concat!(
29819            "Offset of field: ",
29820            stringify!(fmpz_mod_poly_interval_poly_arg_t),
29821            "::",
29822            stringify!(H)
29823        )
29824    );
29825    assert_eq!(
29826        unsafe {
29827            &(*(::std::ptr::null::<fmpz_mod_poly_interval_poly_arg_t>())).v as *const _ as usize
29828        },
29829        24usize,
29830        concat!(
29831            "Offset of field: ",
29832            stringify!(fmpz_mod_poly_interval_poly_arg_t),
29833            "::",
29834            stringify!(v)
29835        )
29836    );
29837    assert_eq!(
29838        unsafe {
29839            &(*(::std::ptr::null::<fmpz_mod_poly_interval_poly_arg_t>())).vinv as *const _ as usize
29840        },
29841        32usize,
29842        concat!(
29843            "Offset of field: ",
29844            stringify!(fmpz_mod_poly_interval_poly_arg_t),
29845            "::",
29846            stringify!(vinv)
29847        )
29848    );
29849    assert_eq!(
29850        unsafe {
29851            &(*(::std::ptr::null::<fmpz_mod_poly_interval_poly_arg_t>())).tmp as *const _ as usize
29852        },
29853        40usize,
29854        concat!(
29855            "Offset of field: ",
29856            stringify!(fmpz_mod_poly_interval_poly_arg_t),
29857            "::",
29858            stringify!(tmp)
29859        )
29860    );
29861    assert_eq!(
29862        unsafe {
29863            &(*(::std::ptr::null::<fmpz_mod_poly_interval_poly_arg_t>())).m as *const _ as usize
29864        },
29865        48usize,
29866        concat!(
29867            "Offset of field: ",
29868            stringify!(fmpz_mod_poly_interval_poly_arg_t),
29869            "::",
29870            stringify!(m)
29871        )
29872    );
29873}
29874extern "C" {
29875    pub fn fmpz_mod_poly_factor_clear(fac: *mut fmpz_mod_poly_factor_struct);
29876}
29877extern "C" {
29878    pub fn fmpz_mod_poly_factor_realloc(
29879        fac: *mut fmpz_mod_poly_factor_struct,
29880        alloc: mp_limb_signed_t,
29881    );
29882}
29883extern "C" {
29884    pub fn fmpz_mod_poly_factor_fit_length(
29885        fac: *mut fmpz_mod_poly_factor_struct,
29886        len: mp_limb_signed_t,
29887    );
29888}
29889extern "C" {
29890    pub fn fmpz_mod_poly_factor_set(
29891        res: *mut fmpz_mod_poly_factor_struct,
29892        fac: *mut fmpz_mod_poly_factor_struct,
29893    );
29894}
29895extern "C" {
29896    pub fn fmpz_mod_poly_factor_insert(
29897        fac: *mut fmpz_mod_poly_factor_struct,
29898        poly: *mut fmpz_mod_poly_struct,
29899        exp: mp_limb_signed_t,
29900    );
29901}
29902extern "C" {
29903    pub fn fmpz_mod_poly_factor_print(fac: *mut fmpz_mod_poly_factor_struct);
29904}
29905extern "C" {
29906    pub fn fmpz_mod_poly_factor_concat(
29907        res: *mut fmpz_mod_poly_factor_struct,
29908        fac: *mut fmpz_mod_poly_factor_struct,
29909    );
29910}
29911extern "C" {
29912    pub fn fmpz_mod_poly_factor_pow(fac: *mut fmpz_mod_poly_factor_struct, exp: mp_limb_signed_t);
29913}
29914extern "C" {
29915    pub fn fmpz_mod_poly_is_irreducible(f: *mut fmpz_mod_poly_struct) -> ::std::os::raw::c_int;
29916}
29917extern "C" {
29918    pub fn fmpz_mod_poly_is_irreducible_ddf(f: *mut fmpz_mod_poly_struct) -> ::std::os::raw::c_int;
29919}
29920extern "C" {
29921    pub fn fmpz_mod_poly_is_irreducible_rabin(
29922        f: *mut fmpz_mod_poly_struct,
29923    ) -> ::std::os::raw::c_int;
29924}
29925extern "C" {
29926    pub fn fmpz_mod_poly_is_irreducible_rabin_f(
29927        fac: *mut fmpz,
29928        f: *mut fmpz_mod_poly_struct,
29929    ) -> ::std::os::raw::c_int;
29930}
29931extern "C" {
29932    pub fn _fmpz_mod_poly_is_squarefree(
29933        f: *const fmpz,
29934        len: mp_limb_signed_t,
29935        p: *mut fmpz,
29936    ) -> ::std::os::raw::c_int;
29937}
29938extern "C" {
29939    pub fn _fmpz_mod_poly_is_squarefree_f(
29940        fac: *mut fmpz,
29941        f: *const fmpz,
29942        len: mp_limb_signed_t,
29943        p: *mut fmpz,
29944    ) -> ::std::os::raw::c_int;
29945}
29946extern "C" {
29947    pub fn fmpz_mod_poly_is_squarefree(f: *mut fmpz_mod_poly_struct) -> ::std::os::raw::c_int;
29948}
29949extern "C" {
29950    pub fn fmpz_mod_poly_is_squarefree_f(
29951        fac: *mut fmpz,
29952        f: *mut fmpz_mod_poly_struct,
29953    ) -> ::std::os::raw::c_int;
29954}
29955extern "C" {
29956    pub fn fmpz_mod_poly_factor_equal_deg_prob(
29957        factor: *mut fmpz_mod_poly_struct,
29958        state: *mut flint_rand_s,
29959        pol: *mut fmpz_mod_poly_struct,
29960        d: mp_limb_signed_t,
29961    ) -> ::std::os::raw::c_int;
29962}
29963extern "C" {
29964    pub fn fmpz_mod_poly_factor_equal_deg(
29965        factors: *mut fmpz_mod_poly_factor_struct,
29966        pol: *mut fmpz_mod_poly_struct,
29967        d: mp_limb_signed_t,
29968    );
29969}
29970extern "C" {
29971    pub fn fmpz_mod_poly_factor_distinct_deg(
29972        res: *mut fmpz_mod_poly_factor_struct,
29973        poly: *mut fmpz_mod_poly_struct,
29974        degs: *const *mut mp_limb_signed_t,
29975    );
29976}
29977extern "C" {
29978    pub fn fmpz_mod_poly_factor_squarefree(
29979        res: *mut fmpz_mod_poly_factor_struct,
29980        f: *mut fmpz_mod_poly_struct,
29981    );
29982}
29983extern "C" {
29984    pub fn fmpz_mod_poly_factor_distinct_deg_threaded(
29985        res: *mut fmpz_mod_poly_factor_struct,
29986        poly: *mut fmpz_mod_poly_struct,
29987        degs: *const *mut mp_limb_signed_t,
29988    );
29989}
29990extern "C" {
29991    pub fn fmpz_mod_poly_factor(
29992        res: *mut fmpz_mod_poly_factor_struct,
29993        f: *mut fmpz_mod_poly_struct,
29994    );
29995}
29996extern "C" {
29997    pub fn fmpz_mod_poly_factor_cantor_zassenhaus(
29998        res: *mut fmpz_mod_poly_factor_struct,
29999        f: *mut fmpz_mod_poly_struct,
30000    );
30001}
30002extern "C" {
30003    pub fn fmpz_mod_poly_factor_kaltofen_shoup(
30004        res: *mut fmpz_mod_poly_factor_struct,
30005        poly: *mut fmpz_mod_poly_struct,
30006    );
30007}
30008extern "C" {
30009    pub fn fmpz_mod_poly_factor_berlekamp(
30010        factors: *mut fmpz_mod_poly_factor_struct,
30011        f: *mut fmpz_mod_poly_struct,
30012    );
30013}
30014extern "C" {
30015    pub fn _fmpz_mod_poly_interval_poly_worker(arg_ptr: *mut ::std::os::raw::c_void);
30016}
30017extern "C" {
30018    pub fn fmpz_mod_poly_roots(
30019        r: *mut fmpz_mod_poly_factor_struct,
30020        f: *mut fmpz_mod_poly_struct,
30021        with_multiplicity: ::std::os::raw::c_int,
30022    );
30023}
30024extern "C" {
30025    pub fn fmpz_mod_poly_roots_factored(
30026        r: *mut fmpz_mod_poly_factor_struct,
30027        f: *mut fmpz_mod_poly_struct,
30028        with_multiplicity: ::std::os::raw::c_int,
30029        n: *mut fmpz_factor_struct,
30030    ) -> ::std::os::raw::c_int;
30031}
30032extern "C" {
30033    pub fn fmpz_mod_poly_factor_get_fmpz_mod_poly(
30034        z: *mut fmpz_mod_poly_struct,
30035        fac: *mut fmpz_mod_poly_factor_struct,
30036        i: mp_limb_signed_t,
30037    );
30038}
30039extern "C" {
30040    pub fn antic_test_multiplier() -> ::std::os::raw::c_long;
30041}
30042#[repr(C)]
30043#[derive(Copy, Clone)]
30044pub struct nf_struct {
30045    pub pol: fmpq_poly_t,
30046    pub pinv: nf_struct__bindgen_ty_1,
30047    pub powers: nf_struct__bindgen_ty_2,
30048    pub traces: fmpq_poly_t,
30049    pub flag: mp_limb_t,
30050}
30051#[repr(C)]
30052#[derive(Copy, Clone)]
30053pub union nf_struct__bindgen_ty_1 {
30054    pub qq: fmpz_preinvn_t,
30055    _bindgen_union_align: [u64; 3usize],
30056}
30057#[test]
30058fn bindgen_test_layout_nf_struct__bindgen_ty_1() {
30059    assert_eq!(
30060        ::std::mem::size_of::<nf_struct__bindgen_ty_1>(),
30061        24usize,
30062        concat!("Size of: ", stringify!(nf_struct__bindgen_ty_1))
30063    );
30064    assert_eq!(
30065        ::std::mem::align_of::<nf_struct__bindgen_ty_1>(),
30066        8usize,
30067        concat!("Alignment of ", stringify!(nf_struct__bindgen_ty_1))
30068    );
30069    assert_eq!(
30070        unsafe { &(*(::std::ptr::null::<nf_struct__bindgen_ty_1>())).qq as *const _ as usize },
30071        0usize,
30072        concat!(
30073            "Offset of field: ",
30074            stringify!(nf_struct__bindgen_ty_1),
30075            "::",
30076            stringify!(qq)
30077        )
30078    );
30079}
30080#[repr(C)]
30081#[derive(Copy, Clone)]
30082pub union nf_struct__bindgen_ty_2 {
30083    pub qq: fmpq_poly_powers_precomp_t,
30084    pub zz: fmpz_poly_powers_precomp_t,
30085    _bindgen_union_align: [u64; 2usize],
30086}
30087#[test]
30088fn bindgen_test_layout_nf_struct__bindgen_ty_2() {
30089    assert_eq!(
30090        ::std::mem::size_of::<nf_struct__bindgen_ty_2>(),
30091        16usize,
30092        concat!("Size of: ", stringify!(nf_struct__bindgen_ty_2))
30093    );
30094    assert_eq!(
30095        ::std::mem::align_of::<nf_struct__bindgen_ty_2>(),
30096        8usize,
30097        concat!("Alignment of ", stringify!(nf_struct__bindgen_ty_2))
30098    );
30099    assert_eq!(
30100        unsafe { &(*(::std::ptr::null::<nf_struct__bindgen_ty_2>())).qq as *const _ as usize },
30101        0usize,
30102        concat!(
30103            "Offset of field: ",
30104            stringify!(nf_struct__bindgen_ty_2),
30105            "::",
30106            stringify!(qq)
30107        )
30108    );
30109    assert_eq!(
30110        unsafe { &(*(::std::ptr::null::<nf_struct__bindgen_ty_2>())).zz as *const _ as usize },
30111        0usize,
30112        concat!(
30113            "Offset of field: ",
30114            stringify!(nf_struct__bindgen_ty_2),
30115            "::",
30116            stringify!(zz)
30117        )
30118    );
30119}
30120#[test]
30121fn bindgen_test_layout_nf_struct() {
30122    assert_eq!(
30123        ::std::mem::size_of::<nf_struct>(),
30124        112usize,
30125        concat!("Size of: ", stringify!(nf_struct))
30126    );
30127    assert_eq!(
30128        ::std::mem::align_of::<nf_struct>(),
30129        8usize,
30130        concat!("Alignment of ", stringify!(nf_struct))
30131    );
30132    assert_eq!(
30133        unsafe { &(*(::std::ptr::null::<nf_struct>())).pol as *const _ as usize },
30134        0usize,
30135        concat!(
30136            "Offset of field: ",
30137            stringify!(nf_struct),
30138            "::",
30139            stringify!(pol)
30140        )
30141    );
30142    assert_eq!(
30143        unsafe { &(*(::std::ptr::null::<nf_struct>())).pinv as *const _ as usize },
30144        32usize,
30145        concat!(
30146            "Offset of field: ",
30147            stringify!(nf_struct),
30148            "::",
30149            stringify!(pinv)
30150        )
30151    );
30152    assert_eq!(
30153        unsafe { &(*(::std::ptr::null::<nf_struct>())).powers as *const _ as usize },
30154        56usize,
30155        concat!(
30156            "Offset of field: ",
30157            stringify!(nf_struct),
30158            "::",
30159            stringify!(powers)
30160        )
30161    );
30162    assert_eq!(
30163        unsafe { &(*(::std::ptr::null::<nf_struct>())).traces as *const _ as usize },
30164        72usize,
30165        concat!(
30166            "Offset of field: ",
30167            stringify!(nf_struct),
30168            "::",
30169            stringify!(traces)
30170        )
30171    );
30172    assert_eq!(
30173        unsafe { &(*(::std::ptr::null::<nf_struct>())).flag as *const _ as usize },
30174        104usize,
30175        concat!(
30176            "Offset of field: ",
30177            stringify!(nf_struct),
30178            "::",
30179            stringify!(flag)
30180        )
30181    );
30182}
30183pub type nf_t = [nf_struct; 1usize];
30184extern "C" {
30185    #[doc = "Initialisation"]
30186    pub fn nf_init(nf: *mut nf_struct, pol: *mut fmpq_poly_struct);
30187}
30188extern "C" {
30189    pub fn nf_clear(nf: *mut nf_struct);
30190}
30191extern "C" {
30192    pub fn nf_print(nf: *mut nf_struct);
30193}
30194#[repr(C)]
30195#[derive(Debug, Copy, Clone)]
30196pub struct lnf_elem_struct {
30197    pub num: fmpz_t,
30198    pub den: fmpz_t,
30199}
30200#[test]
30201fn bindgen_test_layout_lnf_elem_struct() {
30202    assert_eq!(
30203        ::std::mem::size_of::<lnf_elem_struct>(),
30204        16usize,
30205        concat!("Size of: ", stringify!(lnf_elem_struct))
30206    );
30207    assert_eq!(
30208        ::std::mem::align_of::<lnf_elem_struct>(),
30209        8usize,
30210        concat!("Alignment of ", stringify!(lnf_elem_struct))
30211    );
30212    assert_eq!(
30213        unsafe { &(*(::std::ptr::null::<lnf_elem_struct>())).num as *const _ as usize },
30214        0usize,
30215        concat!(
30216            "Offset of field: ",
30217            stringify!(lnf_elem_struct),
30218            "::",
30219            stringify!(num)
30220        )
30221    );
30222    assert_eq!(
30223        unsafe { &(*(::std::ptr::null::<lnf_elem_struct>())).den as *const _ as usize },
30224        8usize,
30225        concat!(
30226            "Offset of field: ",
30227            stringify!(lnf_elem_struct),
30228            "::",
30229            stringify!(den)
30230        )
30231    );
30232}
30233pub type lnf_elem_t = [lnf_elem_struct; 1usize];
30234#[repr(C)]
30235#[derive(Debug, Copy, Clone)]
30236pub struct qnf_elem_struct {
30237    pub num: [fmpz; 3usize],
30238    pub den: fmpz_t,
30239}
30240#[test]
30241fn bindgen_test_layout_qnf_elem_struct() {
30242    assert_eq!(
30243        ::std::mem::size_of::<qnf_elem_struct>(),
30244        32usize,
30245        concat!("Size of: ", stringify!(qnf_elem_struct))
30246    );
30247    assert_eq!(
30248        ::std::mem::align_of::<qnf_elem_struct>(),
30249        8usize,
30250        concat!("Alignment of ", stringify!(qnf_elem_struct))
30251    );
30252    assert_eq!(
30253        unsafe { &(*(::std::ptr::null::<qnf_elem_struct>())).num as *const _ as usize },
30254        0usize,
30255        concat!(
30256            "Offset of field: ",
30257            stringify!(qnf_elem_struct),
30258            "::",
30259            stringify!(num)
30260        )
30261    );
30262    assert_eq!(
30263        unsafe { &(*(::std::ptr::null::<qnf_elem_struct>())).den as *const _ as usize },
30264        24usize,
30265        concat!(
30266            "Offset of field: ",
30267            stringify!(qnf_elem_struct),
30268            "::",
30269            stringify!(den)
30270        )
30271    );
30272}
30273pub type qnf_elem_t = [qnf_elem_struct; 1usize];
30274#[repr(C)]
30275#[derive(Copy, Clone)]
30276pub union nf_elem_struct {
30277    pub elem: fmpq_poly_t,
30278    pub lelem: lnf_elem_t,
30279    pub qelem: qnf_elem_t,
30280    _bindgen_union_align: [u64; 4usize],
30281}
30282#[test]
30283fn bindgen_test_layout_nf_elem_struct() {
30284    assert_eq!(
30285        ::std::mem::size_of::<nf_elem_struct>(),
30286        32usize,
30287        concat!("Size of: ", stringify!(nf_elem_struct))
30288    );
30289    assert_eq!(
30290        ::std::mem::align_of::<nf_elem_struct>(),
30291        8usize,
30292        concat!("Alignment of ", stringify!(nf_elem_struct))
30293    );
30294    assert_eq!(
30295        unsafe { &(*(::std::ptr::null::<nf_elem_struct>())).elem as *const _ as usize },
30296        0usize,
30297        concat!(
30298            "Offset of field: ",
30299            stringify!(nf_elem_struct),
30300            "::",
30301            stringify!(elem)
30302        )
30303    );
30304    assert_eq!(
30305        unsafe { &(*(::std::ptr::null::<nf_elem_struct>())).lelem as *const _ as usize },
30306        0usize,
30307        concat!(
30308            "Offset of field: ",
30309            stringify!(nf_elem_struct),
30310            "::",
30311            stringify!(lelem)
30312        )
30313    );
30314    assert_eq!(
30315        unsafe { &(*(::std::ptr::null::<nf_elem_struct>())).qelem as *const _ as usize },
30316        0usize,
30317        concat!(
30318            "Offset of field: ",
30319            stringify!(nf_elem_struct),
30320            "::",
30321            stringify!(qelem)
30322        )
30323    );
30324}
30325pub type nf_elem_t = [nf_elem_struct; 1usize];
30326extern "C" {
30327    #[doc = "Initialisation"]
30328    pub fn nf_elem_init(a: *mut nf_elem_struct, nf: *mut nf_struct);
30329}
30330extern "C" {
30331    pub fn nf_elem_clear(a: *mut nf_elem_struct, nf: *mut nf_struct);
30332}
30333extern "C" {
30334    pub fn nf_elem_randtest(
30335        a: *mut nf_elem_struct,
30336        state: *mut flint_rand_s,
30337        bits: mp_bitcnt_t,
30338        nf: *mut nf_struct,
30339    );
30340}
30341extern "C" {
30342    pub fn nf_elem_randtest_not_zero(
30343        a: *mut nf_elem_struct,
30344        state: *mut flint_rand_s,
30345        bits: mp_bitcnt_t,
30346        nf: *mut nf_struct,
30347    );
30348}
30349extern "C" {
30350    pub fn nf_elem_canonicalise(a: *mut nf_elem_struct, nf: *mut nf_struct);
30351}
30352extern "C" {
30353    pub fn _nf_elem_reduce(a: *mut nf_elem_struct, nf: *mut nf_struct);
30354}
30355extern "C" {
30356    pub fn nf_elem_reduce(a: *mut nf_elem_struct, nf: *mut nf_struct);
30357}
30358extern "C" {
30359    pub fn _nf_elem_invertible_check(
30360        a: *mut nf_elem_struct,
30361        nf: *mut nf_struct,
30362    ) -> ::std::os::raw::c_int;
30363}
30364extern "C" {
30365    #[doc = "Comparison"]
30366    pub fn _nf_elem_equal(
30367        a: *mut nf_elem_struct,
30368        b: *mut nf_elem_struct,
30369        nf: *mut nf_struct,
30370    ) -> ::std::os::raw::c_int;
30371}
30372extern "C" {
30373    pub fn nf_elem_equal(
30374        a: *mut nf_elem_struct,
30375        b: *mut nf_elem_struct,
30376        nf: *mut nf_struct,
30377    ) -> ::std::os::raw::c_int;
30378}
30379extern "C" {
30380    pub fn nf_elem_is_zero(a: *mut nf_elem_struct, nf: *mut nf_struct) -> ::std::os::raw::c_int;
30381}
30382extern "C" {
30383    pub fn nf_elem_is_one(a: *mut nf_elem_struct, nf: *mut nf_struct) -> ::std::os::raw::c_int;
30384}
30385extern "C" {
30386    pub fn nf_elem_is_gen(a: *mut nf_elem_struct, nf: *mut nf_struct) -> ::std::os::raw::c_int;
30387}
30388extern "C" {
30389    pub fn nf_elem_is_integer(a: *mut nf_elem_struct, nf: *mut nf_struct) -> ::std::os::raw::c_int;
30390}
30391extern "C" {
30392    pub fn nf_elem_is_rational(a: *mut nf_elem_struct, nf: *mut nf_struct)
30393        -> ::std::os::raw::c_int;
30394}
30395extern "C" {
30396    pub fn nf_elem_equal_si(
30397        a: *mut nf_elem_struct,
30398        b: mp_limb_signed_t,
30399        nf: *mut nf_struct,
30400    ) -> ::std::os::raw::c_int;
30401}
30402extern "C" {
30403    pub fn nf_elem_equal_ui(
30404        a: *mut nf_elem_struct,
30405        b: mp_limb_t,
30406        nf: *mut nf_struct,
30407    ) -> ::std::os::raw::c_int;
30408}
30409extern "C" {
30410    pub fn nf_elem_equal_fmpz(
30411        a: *mut nf_elem_struct,
30412        b: *mut fmpz,
30413        nf: *mut nf_struct,
30414    ) -> ::std::os::raw::c_int;
30415}
30416extern "C" {
30417    pub fn nf_elem_equal_fmpq(
30418        a: *mut nf_elem_struct,
30419        b: *mut fmpq,
30420        nf: *mut nf_struct,
30421    ) -> ::std::os::raw::c_int;
30422}
30423extern "C" {
30424    #[doc = "I/O"]
30425    pub fn nf_elem_print_pretty(
30426        a: *mut nf_elem_struct,
30427        nf: *mut nf_struct,
30428        var: *const ::std::os::raw::c_char,
30429    );
30430}
30431extern "C" {
30432    pub fn nf_elem_get_str_pretty(
30433        a: *mut nf_elem_struct,
30434        var: *const ::std::os::raw::c_char,
30435        nf: *mut nf_struct,
30436    ) -> *mut ::std::os::raw::c_char;
30437}
30438extern "C" {
30439    #[doc = "Element creation"]
30440    pub fn nf_elem_zero(a: *mut nf_elem_struct, nf: *mut nf_struct);
30441}
30442extern "C" {
30443    pub fn nf_elem_one(a: *mut nf_elem_struct, nf: *mut nf_struct);
30444}
30445extern "C" {
30446    pub fn nf_elem_gen(a: *mut nf_elem_struct, nf: *mut nf_struct);
30447}
30448extern "C" {
30449    pub fn nf_elem_set_si(a: *mut nf_elem_struct, c: mp_limb_signed_t, nf: *mut nf_struct);
30450}
30451extern "C" {
30452    pub fn nf_elem_set_ui(a: *mut nf_elem_struct, c: mp_limb_t, nf: *mut nf_struct);
30453}
30454extern "C" {
30455    pub fn nf_elem_set_fmpz(a: *mut nf_elem_struct, c: *mut fmpz, nf: *mut nf_struct);
30456}
30457extern "C" {
30458    pub fn nf_elem_set_fmpq(a: *mut nf_elem_struct, c: *mut fmpq, nf: *mut nf_struct);
30459}
30460extern "C" {
30461    pub fn nf_elem_set_fmpq_poly(
30462        a: *mut nf_elem_struct,
30463        pol: *mut fmpq_poly_struct,
30464        nf: *mut nf_struct,
30465    );
30466}
30467extern "C" {
30468    #[doc = "Conversion"]
30469    pub fn nf_elem_set_fmpz_mat_row(
30470        b: *mut nf_elem_struct,
30471        M: *mut fmpz_mat_struct,
30472        i: mp_limb_signed_t,
30473        den: *mut fmpz,
30474        nf: *mut nf_struct,
30475    );
30476}
30477extern "C" {
30478    pub fn nf_elem_get_fmpz_mat_row(
30479        M: *mut fmpz_mat_struct,
30480        i: mp_limb_signed_t,
30481        den: *mut fmpz,
30482        b: *mut nf_elem_struct,
30483        nf: *mut nf_struct,
30484    );
30485}
30486extern "C" {
30487    pub fn nf_elem_get_fmpq_poly(
30488        pol: *mut fmpq_poly_struct,
30489        a: *mut nf_elem_struct,
30490        nf: *mut nf_struct,
30491    );
30492}
30493extern "C" {
30494    pub fn _nf_elem_get_nmod_poly(
30495        pol: *mut nmod_poly_struct,
30496        a: *mut nf_elem_struct,
30497        nf: *mut nf_struct,
30498    );
30499}
30500extern "C" {
30501    pub fn nf_elem_get_nmod_poly_den(
30502        pol: *mut nmod_poly_struct,
30503        a: *mut nf_elem_struct,
30504        nf: *mut nf_struct,
30505        den: ::std::os::raw::c_int,
30506    );
30507}
30508extern "C" {
30509    pub fn nf_elem_get_nmod_poly(
30510        pol: *mut nmod_poly_struct,
30511        a: *mut nf_elem_struct,
30512        nf: *mut nf_struct,
30513    );
30514}
30515extern "C" {
30516    pub fn _nf_elem_get_fmpz_mod_poly(
30517        pol: *mut fmpz_mod_poly_struct,
30518        a: *mut nf_elem_struct,
30519        nf: *mut nf_struct,
30520    );
30521}
30522extern "C" {
30523    pub fn nf_elem_get_fmpz_mod_poly_den(
30524        pol: *mut fmpz_mod_poly_struct,
30525        a: *mut nf_elem_struct,
30526        nf: *mut nf_struct,
30527        den: ::std::os::raw::c_int,
30528    );
30529}
30530extern "C" {
30531    pub fn nf_elem_get_fmpz_mod_poly(
30532        pol: *mut fmpz_mod_poly_struct,
30533        a: *mut nf_elem_struct,
30534        nf: *mut nf_struct,
30535    );
30536}
30537extern "C" {
30538    #[doc = "Basic manipulation"]
30539    pub fn nf_elem_get_den(d: *mut fmpz, b: *mut nf_elem_struct, nf: *mut nf_struct);
30540}
30541extern "C" {
30542    pub fn nf_elem_set_den(b: *mut nf_elem_struct, d: *mut fmpz, nf: *mut nf_struct);
30543}
30544extern "C" {
30545    pub fn nf_elem_get_coeff_fmpq(
30546        a: *mut fmpq,
30547        b: *mut nf_elem_struct,
30548        i: mp_limb_signed_t,
30549        nf: *mut nf_struct,
30550    );
30551}
30552extern "C" {
30553    pub fn nf_elem_get_coeff_fmpz(
30554        a: *mut fmpz,
30555        b: *mut nf_elem_struct,
30556        i: mp_limb_signed_t,
30557        nf: *mut nf_struct,
30558    );
30559}
30560extern "C" {
30561    pub fn nf_elem_den_is_one(a: *mut nf_elem_struct, nf: *mut nf_struct) -> ::std::os::raw::c_int;
30562}
30563extern "C" {
30564    pub fn _nf_elem_set_coeff_num_fmpz(
30565        a: *mut nf_elem_struct,
30566        i: mp_limb_signed_t,
30567        b: *mut fmpz,
30568        nf: *mut nf_struct,
30569    );
30570}
30571extern "C" {
30572    #[doc = "Arithmetic"]
30573    pub fn nf_elem_set(a: *mut nf_elem_struct, b: *mut nf_elem_struct, nf: *mut nf_struct);
30574}
30575extern "C" {
30576    pub fn nf_elem_neg(a: *mut nf_elem_struct, b: *mut nf_elem_struct, nf: *mut nf_struct);
30577}
30578extern "C" {
30579    pub fn nf_elem_swap(a: *mut nf_elem_struct, b: *mut nf_elem_struct, nf: *mut nf_struct);
30580}
30581extern "C" {
30582    pub fn nf_elem_add_si(
30583        a: *mut nf_elem_struct,
30584        b: *mut nf_elem_struct,
30585        c: mp_limb_signed_t,
30586        nf: *mut nf_struct,
30587    );
30588}
30589extern "C" {
30590    pub fn nf_elem_add_fmpz(
30591        a: *mut nf_elem_struct,
30592        b: *mut nf_elem_struct,
30593        c: *mut fmpz,
30594        nf: *mut nf_struct,
30595    );
30596}
30597extern "C" {
30598    pub fn nf_elem_add_fmpq(
30599        a: *mut nf_elem_struct,
30600        b: *mut nf_elem_struct,
30601        c: *mut fmpq,
30602        nf: *mut nf_struct,
30603    );
30604}
30605extern "C" {
30606    pub fn nf_elem_sub_si(
30607        a: *mut nf_elem_struct,
30608        b: *mut nf_elem_struct,
30609        c: mp_limb_signed_t,
30610        nf: *mut nf_struct,
30611    );
30612}
30613extern "C" {
30614    pub fn nf_elem_sub_fmpz(
30615        a: *mut nf_elem_struct,
30616        b: *mut nf_elem_struct,
30617        c: *mut fmpz,
30618        nf: *mut nf_struct,
30619    );
30620}
30621extern "C" {
30622    pub fn nf_elem_sub_fmpq(
30623        a: *mut nf_elem_struct,
30624        b: *mut nf_elem_struct,
30625        c: *mut fmpq,
30626        nf: *mut nf_struct,
30627    );
30628}
30629extern "C" {
30630    pub fn nf_elem_si_sub(
30631        a: *mut nf_elem_struct,
30632        c: mp_limb_signed_t,
30633        b: *mut nf_elem_struct,
30634        nf: *mut nf_struct,
30635    );
30636}
30637extern "C" {
30638    pub fn nf_elem_fmpz_sub(
30639        a: *mut nf_elem_struct,
30640        c: *mut fmpz,
30641        b: *mut nf_elem_struct,
30642        nf: *mut nf_struct,
30643    );
30644}
30645extern "C" {
30646    pub fn nf_elem_fmpq_sub(
30647        a: *mut nf_elem_struct,
30648        c: *mut fmpq,
30649        b: *mut nf_elem_struct,
30650        nf: *mut nf_struct,
30651    );
30652}
30653extern "C" {
30654    pub fn nf_elem_scalar_mul_si(
30655        a: *mut nf_elem_struct,
30656        b: *mut nf_elem_struct,
30657        c: mp_limb_signed_t,
30658        nf: *mut nf_struct,
30659    );
30660}
30661extern "C" {
30662    pub fn nf_elem_scalar_mul_fmpz(
30663        a: *mut nf_elem_struct,
30664        b: *mut nf_elem_struct,
30665        c: *mut fmpz,
30666        nf: *mut nf_struct,
30667    );
30668}
30669extern "C" {
30670    pub fn nf_elem_scalar_mul_fmpq(
30671        a: *mut nf_elem_struct,
30672        b: *mut nf_elem_struct,
30673        c: *mut fmpq,
30674        nf: *mut nf_struct,
30675    );
30676}
30677extern "C" {
30678    pub fn nf_elem_scalar_div_si(
30679        a: *mut nf_elem_struct,
30680        b: *mut nf_elem_struct,
30681        c: mp_limb_signed_t,
30682        nf: *mut nf_struct,
30683    );
30684}
30685extern "C" {
30686    pub fn nf_elem_scalar_div_fmpz(
30687        a: *mut nf_elem_struct,
30688        b: *mut nf_elem_struct,
30689        c: *mut fmpz,
30690        nf: *mut nf_struct,
30691    );
30692}
30693extern "C" {
30694    pub fn nf_elem_scalar_div_fmpq(
30695        a: *mut nf_elem_struct,
30696        b: *mut nf_elem_struct,
30697        c: *mut fmpq,
30698        nf: *mut nf_struct,
30699    );
30700}
30701extern "C" {
30702    pub fn _nf_elem_add_lf(
30703        a: *mut nf_elem_struct,
30704        b: *mut nf_elem_struct,
30705        c: *mut nf_elem_struct,
30706        nf: *mut nf_struct,
30707        can: ::std::os::raw::c_int,
30708    );
30709}
30710extern "C" {
30711    pub fn _nf_elem_sub_lf(
30712        a: *mut nf_elem_struct,
30713        b: *mut nf_elem_struct,
30714        c: *mut nf_elem_struct,
30715        nf: *mut nf_struct,
30716        can: ::std::os::raw::c_int,
30717    );
30718}
30719extern "C" {
30720    pub fn _nf_elem_add_qf(
30721        a: *mut nf_elem_struct,
30722        b: *mut nf_elem_struct,
30723        c: *mut nf_elem_struct,
30724        nf: *mut nf_struct,
30725        can: ::std::os::raw::c_int,
30726    );
30727}
30728extern "C" {
30729    pub fn _nf_elem_sub_qf(
30730        a: *mut nf_elem_struct,
30731        b: *mut nf_elem_struct,
30732        c: *mut nf_elem_struct,
30733        nf: *mut nf_struct,
30734        can: ::std::os::raw::c_int,
30735    );
30736}
30737extern "C" {
30738    pub fn nf_elem_add_qf(
30739        a: *mut nf_elem_struct,
30740        b: *mut nf_elem_struct,
30741        c: *mut nf_elem_struct,
30742        nf: *mut nf_struct,
30743    );
30744}
30745extern "C" {
30746    pub fn nf_elem_sub_qf(
30747        a: *mut nf_elem_struct,
30748        b: *mut nf_elem_struct,
30749        c: *mut nf_elem_struct,
30750        nf: *mut nf_struct,
30751    );
30752}
30753extern "C" {
30754    pub fn _nf_elem_add(
30755        a: *mut nf_elem_struct,
30756        b: *mut nf_elem_struct,
30757        c: *mut nf_elem_struct,
30758        nf: *mut nf_struct,
30759    );
30760}
30761extern "C" {
30762    pub fn _nf_elem_sub(
30763        a: *mut nf_elem_struct,
30764        b: *mut nf_elem_struct,
30765        c: *mut nf_elem_struct,
30766        nf: *mut nf_struct,
30767    );
30768}
30769extern "C" {
30770    pub fn nf_elem_add(
30771        a: *mut nf_elem_struct,
30772        b: *mut nf_elem_struct,
30773        c: *mut nf_elem_struct,
30774        nf: *mut nf_struct,
30775    );
30776}
30777extern "C" {
30778    pub fn nf_elem_sub(
30779        a: *mut nf_elem_struct,
30780        b: *mut nf_elem_struct,
30781        c: *mut nf_elem_struct,
30782        nf: *mut nf_struct,
30783    );
30784}
30785extern "C" {
30786    pub fn nf_elem_mul_gen(a: *mut nf_elem_struct, b: *mut nf_elem_struct, nf: *mut nf_struct);
30787}
30788extern "C" {
30789    pub fn _nf_elem_mul(
30790        a: *mut nf_elem_struct,
30791        b: *mut nf_elem_struct,
30792        c: *mut nf_elem_struct,
30793        nf: *mut nf_struct,
30794    );
30795}
30796extern "C" {
30797    pub fn nf_elem_mul(
30798        a: *mut nf_elem_struct,
30799        b: *mut nf_elem_struct,
30800        c: *mut nf_elem_struct,
30801        nf: *mut nf_struct,
30802    );
30803}
30804extern "C" {
30805    pub fn _nf_elem_mul_red(
30806        a: *mut nf_elem_struct,
30807        b: *mut nf_elem_struct,
30808        c: *mut nf_elem_struct,
30809        nf: *mut nf_struct,
30810        red: ::std::os::raw::c_int,
30811    );
30812}
30813extern "C" {
30814    pub fn nf_elem_mul_red(
30815        a: *mut nf_elem_struct,
30816        b: *mut nf_elem_struct,
30817        c: *mut nf_elem_struct,
30818        nf: *mut nf_struct,
30819        red: ::std::os::raw::c_int,
30820    );
30821}
30822extern "C" {
30823    pub fn _nf_elem_inv(a: *mut nf_elem_struct, b: *mut nf_elem_struct, nf: *mut nf_struct);
30824}
30825extern "C" {
30826    pub fn nf_elem_inv(a: *mut nf_elem_struct, b: *mut nf_elem_struct, nf: *mut nf_struct);
30827}
30828extern "C" {
30829    pub fn _nf_elem_div(
30830        a: *mut nf_elem_struct,
30831        b: *mut nf_elem_struct,
30832        c: *mut nf_elem_struct,
30833        nf: *mut nf_struct,
30834    );
30835}
30836extern "C" {
30837    pub fn nf_elem_div(
30838        a: *mut nf_elem_struct,
30839        b: *mut nf_elem_struct,
30840        c: *mut nf_elem_struct,
30841        nf: *mut nf_struct,
30842    );
30843}
30844extern "C" {
30845    pub fn _nf_elem_pow(
30846        res: *mut nf_elem_struct,
30847        b: *mut nf_elem_struct,
30848        e: mp_limb_t,
30849        nf: *mut nf_struct,
30850    );
30851}
30852extern "C" {
30853    pub fn nf_elem_pow(
30854        res: *mut nf_elem_struct,
30855        a: *mut nf_elem_struct,
30856        e: mp_limb_t,
30857        nf: *mut nf_struct,
30858    );
30859}
30860extern "C" {
30861    pub fn _nf_elem_norm(
30862        rnum: *mut fmpz,
30863        rden: *mut fmpz,
30864        a: *mut nf_elem_struct,
30865        nf: *mut nf_struct,
30866    );
30867}
30868extern "C" {
30869    pub fn nf_elem_norm(res: *mut fmpq, a: *mut nf_elem_struct, nf: *mut nf_struct);
30870}
30871extern "C" {
30872    pub fn _nf_elem_norm_div(
30873        rnum: *mut fmpz,
30874        rden: *mut fmpz,
30875        a: *mut nf_elem_struct,
30876        nf: *mut nf_struct,
30877        divisor: *mut fmpz,
30878        nbits: mp_limb_signed_t,
30879    );
30880}
30881extern "C" {
30882    pub fn nf_elem_norm_div(
30883        res: *mut fmpq,
30884        a: *mut nf_elem_struct,
30885        nf: *mut nf_struct,
30886        divisor: *mut fmpz,
30887        nbits: mp_limb_signed_t,
30888    );
30889}
30890extern "C" {
30891    pub fn _nf_elem_trace(
30892        rnum: *mut fmpz,
30893        rden: *mut fmpz,
30894        a: *mut nf_elem_struct,
30895        nf: *mut nf_struct,
30896    );
30897}
30898extern "C" {
30899    pub fn nf_elem_trace(res: *mut fmpq, a: *mut nf_elem_struct, nf: *mut nf_struct);
30900}
30901extern "C" {
30902    pub fn nf_elem_rep_mat(res: *mut fmpq_mat_struct, a: *mut nf_elem_struct, nf: *mut nf_struct);
30903}
30904extern "C" {
30905    pub fn nf_elem_rep_mat_fmpz_mat_den(
30906        res: *mut fmpz_mat_struct,
30907        den: *mut fmpz,
30908        a: *mut nf_elem_struct,
30909        nf: *mut nf_struct,
30910    );
30911}
30912extern "C" {
30913    #[doc = "Modular reduction"]
30914    pub fn _nf_elem_mod_fmpz(
30915        res: *mut nf_elem_struct,
30916        a: *mut nf_elem_struct,
30917        mod_: *mut fmpz,
30918        nf: *mut nf_struct,
30919        sign: ::std::os::raw::c_int,
30920    );
30921}
30922extern "C" {
30923    pub fn nf_elem_mod_fmpz_den(
30924        res: *mut nf_elem_struct,
30925        a: *mut nf_elem_struct,
30926        mod_: *mut fmpz,
30927        nf: *mut nf_struct,
30928        den: ::std::os::raw::c_int,
30929    );
30930}
30931extern "C" {
30932    pub fn nf_elem_smod_fmpz_den(
30933        res: *mut nf_elem_struct,
30934        a: *mut nf_elem_struct,
30935        mod_: *mut fmpz,
30936        nf: *mut nf_struct,
30937        den: ::std::os::raw::c_int,
30938    );
30939}
30940extern "C" {
30941    pub fn nf_elem_mod_fmpz(
30942        res: *mut nf_elem_struct,
30943        a: *mut nf_elem_struct,
30944        mod_: *mut fmpz,
30945        nf: *mut nf_struct,
30946    );
30947}
30948extern "C" {
30949    pub fn nf_elem_smod_fmpz(
30950        res: *mut nf_elem_struct,
30951        a: *mut nf_elem_struct,
30952        mod_: *mut fmpz,
30953        nf: *mut nf_struct,
30954    );
30955}
30956extern "C" {
30957    pub fn nf_elem_coprime_den(
30958        res: *mut nf_elem_struct,
30959        a: *mut nf_elem_struct,
30960        mod_: *mut fmpz,
30961        nf: *mut nf_struct,
30962    );
30963}
30964extern "C" {
30965    pub fn nf_elem_coprime_den_signed(
30966        res: *mut nf_elem_struct,
30967        a: *mut nf_elem_struct,
30968        mod_: *mut fmpz,
30969        nf: *mut nf_struct,
30970    );
30971}
30972pub type __builtin_va_list = [__va_list_tag; 1usize];
30973#[repr(C)]
30974#[derive(Debug, Copy, Clone)]
30975pub struct __va_list_tag {
30976    pub gp_offset: ::std::os::raw::c_uint,
30977    pub fp_offset: ::std::os::raw::c_uint,
30978    pub overflow_arg_area: *mut ::std::os::raw::c_void,
30979    pub reg_save_area: *mut ::std::os::raw::c_void,
30980}
30981#[test]
30982fn bindgen_test_layout___va_list_tag() {
30983    assert_eq!(
30984        ::std::mem::size_of::<__va_list_tag>(),
30985        24usize,
30986        concat!("Size of: ", stringify!(__va_list_tag))
30987    );
30988    assert_eq!(
30989        ::std::mem::align_of::<__va_list_tag>(),
30990        8usize,
30991        concat!("Alignment of ", stringify!(__va_list_tag))
30992    );
30993    assert_eq!(
30994        unsafe { &(*(::std::ptr::null::<__va_list_tag>())).gp_offset as *const _ as usize },
30995        0usize,
30996        concat!(
30997            "Offset of field: ",
30998            stringify!(__va_list_tag),
30999            "::",
31000            stringify!(gp_offset)
31001        )
31002    );
31003    assert_eq!(
31004        unsafe { &(*(::std::ptr::null::<__va_list_tag>())).fp_offset as *const _ as usize },
31005        4usize,
31006        concat!(
31007            "Offset of field: ",
31008            stringify!(__va_list_tag),
31009            "::",
31010            stringify!(fp_offset)
31011        )
31012    );
31013    assert_eq!(
31014        unsafe { &(*(::std::ptr::null::<__va_list_tag>())).overflow_arg_area as *const _ as usize },
31015        8usize,
31016        concat!(
31017            "Offset of field: ",
31018            stringify!(__va_list_tag),
31019            "::",
31020            stringify!(overflow_arg_area)
31021        )
31022    );
31023    assert_eq!(
31024        unsafe { &(*(::std::ptr::null::<__va_list_tag>())).reg_save_area as *const _ as usize },
31025        16usize,
31026        concat!(
31027            "Offset of field: ",
31028            stringify!(__va_list_tag),
31029            "::",
31030            stringify!(reg_save_area)
31031        )
31032    );
31033}
31034#[repr(C)]
31035#[derive(Debug, Copy, Clone)]
31036pub struct __locale_data {
31037    pub _address: u8,
31038}