1use crate::deps::*;
4use crate::flint::*;
5use crate::fmpq_types::*;
6use crate::fmpz_types::*;
7
8
9pub const BELL_NUMBER_TAB_SIZE: u32 = 26;
10pub const SMALL_EULER_LIMIT: u32 = 25;
11pub const BERNOULLI_SMALL_NUMER_LIMIT: u32 = 35;
12#[repr(C)]
13pub struct trig_prod_struct {
14 pub n: libc::c_int,
15 pub prefactor: libc::c_int,
16 pub sqrt_p: ulong,
17 pub sqrt_q: ulong,
18 pub cos_p: [slong; 64usize],
19 pub cos_q: [ulong; 64usize],
20}
21#[allow(clippy::unnecessary_operation, clippy::identity_op)]
22const _: () = {
23 ["Size of trig_prod_struct"][::std::mem::size_of::<trig_prod_struct>() - 1048usize];
24 ["Alignment of trig_prod_struct"][::std::mem::align_of::<trig_prod_struct>() - 8usize];
25 ["Offset of field: trig_prod_struct::n"][::std::mem::offset_of!(trig_prod_struct, n) - 0usize];
26 ["Offset of field: trig_prod_struct::prefactor"]
27 [::std::mem::offset_of!(trig_prod_struct, prefactor) - 4usize];
28 ["Offset of field: trig_prod_struct::sqrt_p"]
29 [::std::mem::offset_of!(trig_prod_struct, sqrt_p) - 8usize];
30 ["Offset of field: trig_prod_struct::sqrt_q"]
31 [::std::mem::offset_of!(trig_prod_struct, sqrt_q) - 16usize];
32 ["Offset of field: trig_prod_struct::cos_p"]
33 [::std::mem::offset_of!(trig_prod_struct, cos_p) - 24usize];
34 ["Offset of field: trig_prod_struct::cos_q"]
35 [::std::mem::offset_of!(trig_prod_struct, cos_q) - 536usize];
36};
37impl Default for trig_prod_struct {
38 fn default() -> Self {
39 let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
40 unsafe {
41 ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
42 s.assume_init()
43 }
44 }
45}
46pub type trig_prod_t = [trig_prod_struct; 1usize];
47extern "C" {
48 pub fn _arith_harmonic_number(num: *mut fmpz, den: *mut fmpz, n: slong);
49 pub fn arith_harmonic_number(x: *mut fmpq, n: slong);
50 pub fn arith_ramanujan_tau(res: *mut fmpz, n: *const fmpz);
51 pub fn arith_ramanujan_tau_series(res: *mut fmpz_poly_struct, n: slong);
52 pub fn arith_divisors(res: *mut fmpz_poly_struct, n: *const fmpz);
53 pub fn arith_stirling_number_1u(s: *mut fmpz, n: ulong, k: ulong);
54 pub fn arith_stirling_number_1(s: *mut fmpz, n: ulong, k: ulong);
55 pub fn arith_stirling_number_2(s: *mut fmpz, n: ulong, k: ulong);
56 pub fn arith_stirling_number_1u_vec(row: *mut fmpz, n: ulong, klen: slong);
57 pub fn arith_stirling_number_1_vec(row: *mut fmpz, n: ulong, klen: slong);
58 pub fn arith_stirling_number_2_vec(row: *mut fmpz, n: ulong, klen: slong);
59 pub fn arith_stirling_matrix_1u(mat: *mut fmpz_mat_struct);
60 pub fn arith_stirling_matrix_1(mat: *mut fmpz_mat_struct);
61 pub fn arith_stirling_matrix_2(mat: *mut fmpz_mat_struct);
62 pub static bell_number_tab: [ulong; 0usize];
63 pub fn arith_bell_number_size(n: ulong) -> f64;
64 pub fn arith_bell_number(b: *mut fmpz, n: ulong);
65 pub fn arith_bell_number_dobinski(res: *mut fmpz, n: ulong);
66 pub fn arith_bell_number_multi_mod(res: *mut fmpz, n: ulong);
67 pub fn arith_bell_number_vec(b: *mut fmpz, n: slong);
68 pub fn arith_bell_number_vec_recursive(b: *mut fmpz, n: slong);
69 pub fn arith_bell_number_vec_multi_mod(b: *mut fmpz, n: slong);
70 pub fn arith_bell_number_nmod(n: ulong, mod_: nmod_t) -> ulong;
71 pub fn arith_bell_number_nmod_vec(b: nn_ptr, n: slong, mod_: nmod_t);
72 pub fn arith_bell_number_nmod_vec_recursive(b: nn_ptr, n: slong, mod_: nmod_t);
73 pub fn arith_bell_number_nmod_vec_series(b: nn_ptr, n: slong, mod_: nmod_t) -> libc::c_int;
74 pub fn arith_bell_number_nmod_vec_ogf(res: nn_ptr, len: slong, mod_: nmod_t);
75 pub static euler_number_small: [ulong; 13usize];
76 pub fn arith_euler_number_size(n: ulong) -> f64;
77 pub fn arith_euler_number_vec(res: *mut fmpz, n: slong);
78 pub fn arith_euler_number(res: *mut fmpz, n: ulong);
79 pub fn arith_euler_polynomial(poly: *mut fmpq_poly_struct, n: ulong);
80 pub static _bernoulli_numer_small: [slong; 18usize];
81 pub fn _arith_bernoulli_number(num: *mut fmpz, den: *mut fmpz, n: ulong);
82 pub fn arith_bernoulli_number(x: *mut fmpq, n: ulong);
83 pub fn _arith_bernoulli_number_vec(num: *mut fmpz, den: *mut fmpz, n: slong);
84 pub fn arith_bernoulli_number_vec(num: *mut fmpq, n: slong);
85 pub fn arith_bernoulli_number_denom(den: *mut fmpz, n: ulong);
86 pub fn arith_bernoulli_number_size(n: ulong) -> f64;
87 pub fn arith_bernoulli_polynomial(poly: *mut fmpq_poly_struct, n: ulong);
88 pub fn _arith_bernoulli_number_vec_multi_mod(num: *mut fmpz, den: *mut fmpz, n: slong);
89 pub fn _arith_bernoulli_number_vec_recursive(num: *mut fmpz, den: *mut fmpz, n: slong);
90 pub fn arith_landau_function_vec(res: *mut fmpz, len: slong);
91 #[link_name = "trig_prod_init__extern"]
92 pub fn trig_prod_init(sum: *mut trig_prod_struct);
93 pub fn arith_hrr_expsum_factored(prod: *mut trig_prod_struct, k: ulong, n: ulong);
94 pub static partitions_lookup: [libc::c_uint; 128usize];
95 pub fn arith_number_of_partitions_nmod_vec(res: nn_ptr, len: slong, mod_: nmod_t);
96 pub fn arith_number_of_partitions_vec(res: *mut fmpz, len: slong);
97 pub fn arith_number_of_partitions(x: *mut fmpz, n: ulong);
98 pub fn arith_sum_of_squares(r: *mut fmpz, k: ulong, n: *const fmpz);
99 pub fn arith_sum_of_squares_vec(r: *mut fmpz, k: ulong, n: slong);
100}