arb_sys/
arith.rs

1#![allow(non_camel_case_types)]
2
3//! *See the [Arb documentation](https://arblib.org/).
4
5use flint_sys::deps::*;
6use flint_sys::fmpq::fmpq;
7use flint_sys::fmpq_poly::fmpq_poly_struct;
8use flint_sys::fmpz::fmpz;
9use flint_sys::fmpz_mat::fmpz_mat_struct;
10use flint_sys::fmpz_poly::fmpz_poly_struct;
11use flint_sys::nmod_vec::nmod_t;
12
13#[repr(C)]
14#[derive(Debug, Copy, Clone)]
15pub struct trig_prod_struct {
16    pub n: ::std::os::raw::c_int,
17    pub prefactor: ::std::os::raw::c_int,
18    pub sqrt_p: mp_limb_t,
19    pub sqrt_q: mp_limb_t,
20    pub cos_p: [mp_limb_signed_t; 64usize],
21    pub cos_q: [mp_limb_t; 64usize],
22}
23
24pub type trig_prod_t = [trig_prod_struct; 1usize];
25
26extern "C" {
27    pub static mut bell_number_tab: [mp_limb_t; 0usize];
28    pub static euler_number_small: [mp_limb_t; 13usize];
29    pub static _bernoulli_numer_small: [mp_limb_signed_t; 18usize];
30    pub static partitions_lookup: [::std::os::raw::c_uint; 128usize];
31    pub fn mpfr_zeta_inv_euler_product(
32        res: *mut __mpfr_struct,
33        s: mp_limb_t,
34        char_4: ::std::os::raw::c_int,
35    );
36    pub fn _arith_harmonic_number(num: *mut fmpz, den: *mut fmpz, n: mp_limb_signed_t);
37    pub fn arith_harmonic_number(x: *mut fmpq, n: mp_limb_signed_t);
38    pub fn arith_ramanujan_tau(res: *mut fmpz, n: *mut fmpz);
39    pub fn arith_ramanujan_tau_series(res: *mut fmpz_poly_struct, n: mp_limb_signed_t);
40    pub fn arith_divisors(res: *mut fmpz_poly_struct, n: *mut fmpz);
41    pub fn arith_stirling_number_1u(s: *mut fmpz, n: mp_limb_signed_t, k: mp_limb_signed_t);
42    pub fn arith_stirling_number_1(s: *mut fmpz, n: mp_limb_signed_t, k: mp_limb_signed_t);
43    pub fn arith_stirling_number_2(s: *mut fmpz, n: mp_limb_signed_t, k: mp_limb_signed_t);
44    pub fn arith_stirling_number_1u_vec(
45        row: *mut fmpz,
46        n: mp_limb_signed_t,
47        klen: mp_limb_signed_t,
48    );
49    pub fn arith_stirling_number_1_vec(row: *mut fmpz, n: mp_limb_signed_t, klen: mp_limb_signed_t);
50    pub fn arith_stirling_number_2_vec(row: *mut fmpz, n: mp_limb_signed_t, klen: mp_limb_signed_t);
51    pub fn arith_stirling_number_1u_vec_next(
52        row: *mut fmpz,
53        prev: *const fmpz,
54        n: mp_limb_signed_t,
55        klen: mp_limb_signed_t,
56    );
57    pub fn arith_stirling_number_1_vec_next(
58        row: *mut fmpz,
59        prev: *const fmpz,
60        n: mp_limb_signed_t,
61        klen: mp_limb_signed_t,
62    );
63    pub fn arith_stirling_number_2_vec_next(
64        row: *mut fmpz,
65        prev: *const fmpz,
66        n: mp_limb_signed_t,
67        klen: mp_limb_signed_t,
68    );
69    pub fn arith_stirling_matrix_1u(mat: *mut fmpz_mat_struct);
70    pub fn arith_stirling_matrix_1(mat: *mut fmpz_mat_struct);
71    pub fn arith_stirling_matrix_2(mat: *mut fmpz_mat_struct);
72    pub fn arith_bell_number_size(n: mp_limb_t) -> f64;
73    pub fn arith_bell_number(b: *mut fmpz, n: mp_limb_t);
74    pub fn arith_bell_number_bsplit(res: *mut fmpz, n: mp_limb_t);
75    pub fn arith_bell_number_multi_mod(res: *mut fmpz, n: mp_limb_t);
76    pub fn arith_bell_number_vec(b: *mut fmpz, n: mp_limb_signed_t);
77    pub fn arith_bell_number_vec_recursive(b: *mut fmpz, n: mp_limb_signed_t);
78    pub fn arith_bell_number_vec_multi_mod(b: *mut fmpz, n: mp_limb_signed_t);
79    pub fn arith_bell_number_nmod(n: mp_limb_t, mod_: nmod_t) -> mp_limb_t;
80    pub fn arith_bell_number_nmod_vec(b: mp_ptr, n: mp_limb_signed_t, mod_: nmod_t);
81    pub fn arith_bell_number_nmod_vec_recursive(b: mp_ptr, n: mp_limb_signed_t, mod_: nmod_t);
82    pub fn arith_bell_number_nmod_vec_series(b: mp_ptr, n: mp_limb_signed_t, mod_: nmod_t);
83    pub fn arith_euler_number_size(n: mp_limb_t) -> f64;
84    pub fn arith_euler_number_vec(res: *mut fmpz, n: mp_limb_signed_t);
85    pub fn _arith_euler_number_zeta(res: *mut fmpz, n: mp_limb_t);
86    pub fn arith_euler_number(res: *mut fmpz, n: mp_limb_t);
87    pub fn arith_euler_polynomial(poly: *mut fmpq_poly_struct, n: mp_limb_t);
88    pub fn _arith_bernoulli_number(num: *mut fmpz, den: *mut fmpz, n: mp_limb_t);
89    pub fn arith_bernoulli_number(x: *mut fmpq, n: mp_limb_t);
90    pub fn _arith_bernoulli_number_vec(num: *mut fmpz, den: *mut fmpz, n: mp_limb_signed_t);
91    pub fn arith_bernoulli_number_vec(num: *mut fmpq, n: mp_limb_signed_t);
92    pub fn arith_bernoulli_number_denom(den: *mut fmpz, n: mp_limb_t);
93    pub fn arith_bernoulli_number_size(n: mp_limb_t) -> f64;
94    pub fn arith_bernoulli_polynomial(poly: *mut fmpq_poly_struct, n: mp_limb_t);
95    pub fn _arith_bernoulli_number_zeta(num: *mut fmpz, den: *mut fmpz, n: mp_limb_t);
96    pub fn _arith_bernoulli_number_vec_multi_mod(
97        num: *mut fmpz,
98        den: *mut fmpz,
99        n: mp_limb_signed_t,
100    );
101    pub fn _arith_bernoulli_number_vec_recursive(
102        num: *mut fmpz,
103        den: *mut fmpz,
104        n: mp_limb_signed_t,
105    );
106    pub fn _arith_bernoulli_number_vec_zeta(num: *mut fmpz, den: *mut fmpz, n: mp_limb_signed_t);
107    pub fn _arith_cos_minpoly(coeffs: *mut fmpz, d: mp_limb_signed_t, n: mp_limb_t);
108    pub fn arith_cos_minpoly(poly: *mut fmpz_poly_struct, n: mp_limb_t);
109    pub fn arith_landau_function_vec(res: *mut fmpz, len: mp_limb_signed_t);
110    pub fn arith_hrr_expsum_factored(prod: *mut trig_prod_struct, k: mp_limb_t, n: mp_limb_t);
111    pub fn arith_number_of_partitions_nmod_vec(res: mp_ptr, len: mp_limb_signed_t, mod_: nmod_t);
112    pub fn arith_number_of_partitions_vec(res: *mut fmpz, len: mp_limb_signed_t);
113    pub fn arith_number_of_partitions_mpfr(x: *mut __mpfr_struct, n: mp_limb_t);
114    pub fn arith_number_of_partitions(x: *mut fmpz, n: mp_limb_t);
115    pub fn arith_sum_of_squares(r: *mut fmpz, k: mp_limb_t, n: *mut fmpz);
116    pub fn arith_sum_of_squares_vec(r: *mut fmpz, k: mp_limb_t, n: mp_limb_signed_t);
117}