arb_sys/
acb_modular.rs

1#![allow(non_camel_case_types)]
2
3//! *See the [Arb documentation](https://arblib.org/).
4
5use 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}