Skip to main content

flint_sys/
acb_modular.rs

1/* automatically generated by rust-bindgen 0.70.1 */
2
3use libc::*;
4use crate::deps::*;
5use crate::acb_types::*;
6use crate::arf_types::*;
7use crate::flint::*;
8use crate::fmpz_types::*;
9
10
11#[repr(C)]
12pub struct psl2z_struct {
13    pub a: fmpz,
14    pub b: fmpz,
15    pub c: fmpz,
16    pub d: fmpz,
17}
18#[allow(clippy::unnecessary_operation, clippy::identity_op)]
19const _: () = {
20    ["Size of psl2z_struct"][::std::mem::size_of::<psl2z_struct>() - 32usize];
21    ["Alignment of psl2z_struct"][::std::mem::align_of::<psl2z_struct>() - 8usize];
22    ["Offset of field: psl2z_struct::a"][::std::mem::offset_of!(psl2z_struct, a) - 0usize];
23    ["Offset of field: psl2z_struct::b"][::std::mem::offset_of!(psl2z_struct, b) - 8usize];
24    ["Offset of field: psl2z_struct::c"][::std::mem::offset_of!(psl2z_struct, c) - 16usize];
25    ["Offset of field: psl2z_struct::d"][::std::mem::offset_of!(psl2z_struct, d) - 24usize];
26};
27impl Default for psl2z_struct {
28    fn default() -> Self {
29        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
30        unsafe {
31            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
32            s.assume_init()
33        }
34    }
35}
36pub type psl2z_t = [psl2z_struct; 1usize];
37extern "C" {
38    #[link_name = "psl2z_init__extern"]
39    pub fn psl2z_init(g: *mut psl2z_struct);
40    #[link_name = "psl2z_clear__extern"]
41    pub fn psl2z_clear(g: *mut psl2z_struct);
42    #[link_name = "psl2z_swap__extern"]
43    pub fn psl2z_swap(f: *mut psl2z_struct, g: *mut psl2z_struct);
44    #[link_name = "psl2z_set__extern"]
45    pub fn psl2z_set(h: *mut psl2z_struct, g: *const psl2z_struct);
46    #[link_name = "psl2z_one__extern"]
47    pub fn psl2z_one(g: *mut psl2z_struct);
48    pub fn psl2z_fprint(file: *mut FILE, g: *const psl2z_struct);
49    pub fn psl2z_print(g: *const psl2z_struct);
50    #[link_name = "psl2z_equal__extern"]
51    pub fn psl2z_equal(f: *const psl2z_struct, g: *const psl2z_struct) -> libc::c_int;
52    pub fn psl2z_mul(h: *mut psl2z_struct, f: *const psl2z_struct, g: *const psl2z_struct);
53    pub fn psl2z_inv(h: *mut psl2z_struct, g: *const psl2z_struct);
54    pub fn psl2z_is_one(g: *const psl2z_struct) -> libc::c_int;
55    pub fn psl2z_is_correct(g: *const psl2z_struct) -> libc::c_int;
56    pub fn psl2z_randtest(g: *mut psl2z_struct, state: *mut flint_rand_struct, bits: slong);
57    pub fn acb_modular_transform(
58        w: *mut acb_struct,
59        g: *const psl2z_struct,
60        z: *const acb_struct,
61        prec: slong,
62    );
63    pub fn acb_modular_fundamental_domain_approx_d(
64        g: *mut psl2z_struct,
65        x: f64,
66        y: f64,
67        one_minus_eps: f64,
68    );
69    pub fn acb_modular_fundamental_domain_approx_arf(
70        g: *mut psl2z_struct,
71        xx: *const arf_struct,
72        yy: *const arf_struct,
73        one_minus_eps: *const arf_struct,
74        prec: slong,
75    );
76    pub fn acb_modular_fundamental_domain_approx(
77        w: *mut acb_struct,
78        g: *mut psl2z_struct,
79        z: *const acb_struct,
80        one_minus_eps: *const arf_struct,
81        prec: slong,
82    );
83    pub fn acb_modular_is_in_fundamental_domain(
84        z: *const acb_struct,
85        tol: *const arf_struct,
86        prec: slong,
87    ) -> libc::c_int;
88    pub fn acb_modular_addseq_theta(
89        exponents: *mut slong,
90        aindex: *mut slong,
91        bindex: *mut slong,
92        num: slong,
93    );
94    pub fn acb_modular_addseq_eta(
95        exponents: *mut slong,
96        aindex: *mut slong,
97        bindex: *mut slong,
98        num: slong,
99    );
100    pub fn acb_modular_fill_addseq(tab: *mut slong, len: slong);
101    pub fn acb_modular_theta_transform(
102        R: *mut libc::c_int,
103        S: *mut libc::c_int,
104        C: *mut libc::c_int,
105        g: *const psl2z_struct,
106    );
107    pub fn acb_modular_theta_const_sum(
108        theta2: *mut acb_struct,
109        theta3: *mut acb_struct,
110        theta4: *mut acb_struct,
111        q: *const acb_struct,
112        prec: slong,
113    );
114    pub fn acb_modular_theta_const_sum_basecase(
115        theta2: *mut acb_struct,
116        theta3: *mut acb_struct,
117        theta4: *mut acb_struct,
118        q: *const acb_struct,
119        N: slong,
120        prec: slong,
121    );
122    pub fn acb_modular_theta_const_sum_rs(
123        theta2: *mut acb_struct,
124        theta3: *mut acb_struct,
125        theta4: *mut acb_struct,
126        q: *const acb_struct,
127        N: slong,
128        prec: slong,
129    );
130    pub fn acb_modular_theta_sum(
131        theta1: acb_ptr,
132        theta2: acb_ptr,
133        theta3: acb_ptr,
134        theta4: acb_ptr,
135        w: *const acb_struct,
136        w_is_unit: libc::c_int,
137        q: *const acb_struct,
138        len: slong,
139        prec: slong,
140    );
141    pub fn acb_modular_theta_notransform(
142        theta1: *mut acb_struct,
143        theta2: *mut acb_struct,
144        theta3: *mut acb_struct,
145        theta4: *mut acb_struct,
146        z: *const acb_struct,
147        tau: *const acb_struct,
148        prec: slong,
149    );
150    pub fn acb_modular_theta(
151        theta1: *mut acb_struct,
152        theta2: *mut acb_struct,
153        theta3: *mut acb_struct,
154        theta4: *mut acb_struct,
155        z: *const acb_struct,
156        tau: *const acb_struct,
157        prec: slong,
158    );
159    pub fn acb_modular_theta_jet_notransform(
160        theta1: acb_ptr,
161        theta2: acb_ptr,
162        theta3: acb_ptr,
163        theta4: acb_ptr,
164        z: *const acb_struct,
165        tau: *const acb_struct,
166        len: slong,
167        prec: slong,
168    );
169    pub fn acb_modular_theta_jet(
170        theta1: acb_ptr,
171        theta2: acb_ptr,
172        theta3: acb_ptr,
173        theta4: acb_ptr,
174        z: *const acb_struct,
175        tau: *const acb_struct,
176        len: slong,
177        prec: slong,
178    );
179    pub fn _acb_modular_theta_series(
180        theta1: acb_ptr,
181        theta2: acb_ptr,
182        theta3: acb_ptr,
183        theta4: acb_ptr,
184        z: acb_srcptr,
185        zlen: slong,
186        tau: *const acb_struct,
187        len: slong,
188        prec: slong,
189    );
190    pub fn acb_modular_theta_series(
191        theta1: *mut acb_poly_struct,
192        theta2: *mut acb_poly_struct,
193        theta3: *mut acb_poly_struct,
194        theta4: *mut acb_poly_struct,
195        z: *const acb_poly_struct,
196        tau: *const acb_struct,
197        len: slong,
198        prec: slong,
199    );
200    pub fn acb_modular_j(z: *mut acb_struct, tau: *const acb_struct, prec: slong);
201    pub fn acb_modular_epsilon_arg(g: *const psl2z_struct) -> libc::c_int;
202    pub fn acb_modular_eta_sum(eta: *mut acb_struct, q: *const acb_struct, prec: slong);
203    pub fn acb_modular_eta(z: *mut acb_struct, tau: *const acb_struct, prec: slong);
204    pub fn acb_modular_lambda(r: *mut acb_struct, tau: *const acb_struct, prec: slong);
205    pub fn acb_modular_delta(r: *mut acb_struct, tau: *const acb_struct, prec: slong);
206    pub fn acb_modular_eisenstein(r: acb_ptr, tau: *const acb_struct, len: slong, prec: slong);
207    pub fn acb_modular_elliptic_p(
208        r: *mut acb_struct,
209        z: *const acb_struct,
210        tau: *const acb_struct,
211        prec: slong,
212    );
213    pub fn acb_modular_elliptic_p_zpx(
214        r: acb_ptr,
215        z: *const acb_struct,
216        tau: *const acb_struct,
217        len: slong,
218        prec: slong,
219    );
220    pub fn acb_modular_elliptic_k(k: *mut acb_struct, m: *const acb_struct, prec: slong);
221    pub fn acb_modular_elliptic_k_cpx(w: acb_ptr, m: *const acb_struct, len: slong, prec: slong);
222    pub fn acb_modular_elliptic_e(res: *mut acb_struct, m: *const acb_struct, prec: slong);
223    pub fn acb_modular_hilbert_class_poly(res: *mut fmpz_poly_struct, D: slong);
224    pub fn _acb_modular_mul(
225        z: *mut acb_struct,
226        tmp1: *mut acb_struct,
227        tmp2: *mut acb_struct,
228        x: *const acb_struct,
229        y: *const acb_struct,
230        wprec: slong,
231        prec: slong,
232    );
233}