1use 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}