1#![allow(non_camel_case_types)]
2
3use crate::acb::{acb_ptr, acb_srcptr, acb_struct};
6use crate::acb_poly::acb_poly_struct;
7use crate::arf::arf_struct;
8use flint_sys::deps::*;
9use flint_sys::flint::*;
10use flint_sys::fmpz::fmpz;
11use flint_sys::fmpz_poly::fmpz_poly_struct;
12
13#[repr(C)]
14#[derive(Debug, Copy, Clone)]
15pub struct psl2z_struct {
16 pub a: fmpz,
17 pub b: fmpz,
18 pub c: fmpz,
19 pub d: fmpz,
20}
21
22pub type psl2z_t = [psl2z_struct; 1usize];
23
24extern "C" {
25 pub fn psl2z_mul(h: *mut psl2z_struct, f: *mut psl2z_struct, g: *mut psl2z_struct);
26 pub fn psl2z_inv(h: *mut psl2z_struct, g: *mut psl2z_struct);
27 pub fn psl2z_is_one(g: *mut psl2z_struct) -> ::std::os::raw::c_int;
28 pub fn psl2z_is_correct(g: *mut psl2z_struct) -> ::std::os::raw::c_int;
29 pub fn psl2z_randtest(g: *mut psl2z_struct, state: *mut flint_rand_s, bits: mp_limb_signed_t);
30 pub fn acb_modular_transform(
31 w: *mut acb_struct,
32 g: *mut psl2z_struct,
33 z: *mut acb_struct,
34 prec: mp_limb_signed_t,
35 );
36 pub fn acb_modular_fundamental_domain_approx_d(
37 g: *mut psl2z_struct,
38 x: f64,
39 y: f64,
40 one_minus_eps: f64,
41 );
42 pub fn acb_modular_fundamental_domain_approx_arf(
43 g: *mut psl2z_struct,
44 xx: *mut arf_struct,
45 yy: *mut arf_struct,
46 one_minus_eps: *mut arf_struct,
47 prec: mp_limb_signed_t,
48 );
49 pub fn acb_modular_fundamental_domain_approx(
50 w: *mut acb_struct,
51 g: *mut psl2z_struct,
52 z: *mut acb_struct,
53 one_minus_eps: *mut arf_struct,
54 prec: mp_limb_signed_t,
55 );
56 pub fn acb_modular_is_in_fundamental_domain(
57 z: *mut acb_struct,
58 tol: *mut arf_struct,
59 prec: mp_limb_signed_t,
60 ) -> ::std::os::raw::c_int;
61 pub fn acb_modular_addseq_theta(
62 exponents: *mut mp_limb_signed_t,
63 aindex: *mut mp_limb_signed_t,
64 bindex: *mut mp_limb_signed_t,
65 num: mp_limb_signed_t,
66 );
67 pub fn acb_modular_addseq_eta(
68 exponents: *mut mp_limb_signed_t,
69 aindex: *mut mp_limb_signed_t,
70 bindex: *mut mp_limb_signed_t,
71 num: mp_limb_signed_t,
72 );
73 pub fn acb_modular_fill_addseq(tab: *mut mp_limb_signed_t, len: mp_limb_signed_t);
74 pub fn acb_modular_theta_transform(
75 R: *mut ::std::os::raw::c_int,
76 S: *mut ::std::os::raw::c_int,
77 C: *mut ::std::os::raw::c_int,
78 g: *mut psl2z_struct,
79 );
80 pub fn acb_modular_theta_const_sum(
81 theta2: *mut acb_struct,
82 theta3: *mut acb_struct,
83 theta4: *mut acb_struct,
84 q: *mut acb_struct,
85 prec: mp_limb_signed_t,
86 );
87 pub fn acb_modular_theta_const_sum_basecase(
88 theta2: *mut acb_struct,
89 theta3: *mut acb_struct,
90 theta4: *mut acb_struct,
91 q: *mut acb_struct,
92 N: mp_limb_signed_t,
93 prec: mp_limb_signed_t,
94 );
95 pub fn acb_modular_theta_const_sum_rs(
96 theta2: *mut acb_struct,
97 theta3: *mut acb_struct,
98 theta4: *mut acb_struct,
99 q: *mut acb_struct,
100 N: mp_limb_signed_t,
101 prec: mp_limb_signed_t,
102 );
103 pub fn acb_modular_theta_sum(
104 theta1: acb_ptr,
105 theta2: acb_ptr,
106 theta3: acb_ptr,
107 theta4: acb_ptr,
108 w: *mut acb_struct,
109 w_is_unit: ::std::os::raw::c_int,
110 q: *mut acb_struct,
111 len: mp_limb_signed_t,
112 prec: mp_limb_signed_t,
113 );
114 pub fn acb_modular_theta_notransform(
115 theta1: *mut acb_struct,
116 theta2: *mut acb_struct,
117 theta3: *mut acb_struct,
118 theta4: *mut acb_struct,
119 z: *mut acb_struct,
120 tau: *mut acb_struct,
121 prec: mp_limb_signed_t,
122 );
123 pub fn acb_modular_theta(
124 theta1: *mut acb_struct,
125 theta2: *mut acb_struct,
126 theta3: *mut acb_struct,
127 theta4: *mut acb_struct,
128 z: *mut acb_struct,
129 tau: *mut acb_struct,
130 prec: mp_limb_signed_t,
131 );
132 pub fn acb_modular_theta_jet_notransform(
133 theta1: acb_ptr,
134 theta2: acb_ptr,
135 theta3: acb_ptr,
136 theta4: acb_ptr,
137 z: *mut acb_struct,
138 tau: *mut acb_struct,
139 len: mp_limb_signed_t,
140 prec: mp_limb_signed_t,
141 );
142 pub fn acb_modular_theta_jet(
143 theta1: acb_ptr,
144 theta2: acb_ptr,
145 theta3: acb_ptr,
146 theta4: acb_ptr,
147 z: *mut acb_struct,
148 tau: *mut acb_struct,
149 len: mp_limb_signed_t,
150 prec: mp_limb_signed_t,
151 );
152 pub fn _acb_modular_theta_series(
153 theta1: acb_ptr,
154 theta2: acb_ptr,
155 theta3: acb_ptr,
156 theta4: acb_ptr,
157 z: acb_srcptr,
158 zlen: mp_limb_signed_t,
159 tau: *mut acb_struct,
160 len: mp_limb_signed_t,
161 prec: mp_limb_signed_t,
162 );
163 pub fn acb_modular_theta_series(
164 theta1: *mut acb_poly_struct,
165 theta2: *mut acb_poly_struct,
166 theta3: *mut acb_poly_struct,
167 theta4: *mut acb_poly_struct,
168 z: *mut acb_poly_struct,
169 tau: *mut acb_struct,
170 len: mp_limb_signed_t,
171 prec: mp_limb_signed_t,
172 );
173 pub fn acb_modular_j(z: *mut acb_struct, tau: *mut acb_struct, prec: mp_limb_signed_t);
174 pub fn acb_modular_epsilon_arg(g: *mut psl2z_struct) -> ::std::os::raw::c_int;
175 pub fn acb_modular_eta_sum(eta: *mut acb_struct, q: *mut acb_struct, prec: mp_limb_signed_t);
176 pub fn acb_modular_eta(z: *mut acb_struct, tau: *mut acb_struct, prec: mp_limb_signed_t);
177 pub fn acb_modular_lambda(r: *mut acb_struct, tau: *mut acb_struct, prec: mp_limb_signed_t);
178 pub fn acb_modular_delta(r: *mut acb_struct, tau: *mut acb_struct, prec: mp_limb_signed_t);
179 pub fn acb_modular_eisenstein(
180 r: acb_ptr,
181 tau: *mut acb_struct,
182 len: mp_limb_signed_t,
183 prec: mp_limb_signed_t,
184 );
185 pub fn acb_modular_elliptic_p(
186 r: *mut acb_struct,
187 z: *mut acb_struct,
188 tau: *mut acb_struct,
189 prec: mp_limb_signed_t,
190 );
191 pub fn acb_modular_elliptic_p_zpx(
192 r: acb_ptr,
193 z: *mut acb_struct,
194 tau: *mut acb_struct,
195 len: mp_limb_signed_t,
196 prec: mp_limb_signed_t,
197 );
198 pub fn acb_modular_elliptic_k(k: *mut acb_struct, m: *mut acb_struct, prec: mp_limb_signed_t);
199 pub fn acb_modular_elliptic_k_cpx(
200 w: acb_ptr,
201 m: *mut acb_struct,
202 len: mp_limb_signed_t,
203 prec: mp_limb_signed_t,
204 );
205 pub fn acb_modular_elliptic_e(res: *mut acb_struct, m: *mut acb_struct, prec: mp_limb_signed_t);
206 pub fn acb_modular_hilbert_class_poly(res: *mut fmpz_poly_struct, D: mp_limb_signed_t);
207 pub fn _acb_modular_mul(
208 z: *mut acb_struct,
209 tmp1: *mut acb_struct,
210 tmp2: *mut acb_struct,
211 x: *mut acb_struct,
212 y: *mut acb_struct,
213 wprec: mp_limb_signed_t,
214 prec: mp_limb_signed_t,
215 );
216}