1#![allow(non_camel_case_types)]
2
3use crate::deps::*;
6use crate::fmpz_mod_mat::fmpz_mod_mat_struct;
7use crate::fmpz_mod_poly::fmpz_mod_poly_struct;
8use crate::fmpz_poly::fmpz_poly_struct;
9use crate::fq::fq_ctx_struct;
10
11extern "C" {
12 pub fn fq_embed_gens(
13 gen_sub: *mut fmpz_poly_struct,
14 gen_sup: *mut fmpz_poly_struct,
15 minpoly: *mut fmpz_mod_poly_struct,
16 sub_ctx: *mut fq_ctx_struct,
17 sup_ctx: *mut fq_ctx_struct,
18 );
19 pub fn _fq_embed_gens_naive(
20 gen_sub: *mut fmpz_poly_struct,
21 gen_sup: *mut fmpz_poly_struct,
22 minpoly: *mut fmpz_mod_poly_struct,
23 sub_ctx: *mut fq_ctx_struct,
24 sup_ctx: *mut fq_ctx_struct,
25 );
26 pub fn _fq_embed_gens_allombert(
27 gen_sub: *mut fmpz_poly_struct,
28 gen_sup: *mut fmpz_poly_struct,
29 minpoly: *mut fmpz_mod_poly_struct,
30 sub_ctx: *mut fq_ctx_struct,
31 sup_ctx: *mut fq_ctx_struct,
32 );
33 pub fn fq_embed_matrices(
34 embed: *mut fmpz_mod_mat_struct,
35 project: *mut fmpz_mod_mat_struct,
36 gen_sub: *mut fmpz_poly_struct,
37 sub_ctx: *mut fq_ctx_struct,
38 gen_sup: *mut fmpz_poly_struct,
39 sup_ctx: *mut fq_ctx_struct,
40 gen_minpoly: *mut fmpz_mod_poly_struct,
41 );
42 pub fn fq_embed_trace_matrix(
43 res: *mut fmpz_mod_mat_struct,
44 basis: *mut fmpz_mod_mat_struct,
45 sub_ctx: *mut fq_ctx_struct,
46 sup_ctx: *mut fq_ctx_struct,
47 );
48 pub fn fq_embed_composition_matrix_sub(
49 matrix: *mut fmpz_mod_mat_struct,
50 gen: *mut fmpz_poly_struct,
51 ctx: *mut fq_ctx_struct,
52 trunc: mp_limb_signed_t,
53 );
54 pub fn fq_embed_composition_matrix(
55 matrix: *mut fmpz_mod_mat_struct,
56 gen: *mut fmpz_poly_struct,
57 ctx: *mut fq_ctx_struct,
58 );
59 pub fn fq_embed_mul_matrix(
60 matrix: *mut fmpz_mod_mat_struct,
61 gen: *mut fmpz_poly_struct,
62 ctx: *mut fq_ctx_struct,
63 );
64 pub fn fq_embed_mono_to_dual_matrix(res: *mut fmpz_mod_mat_struct, ctx: *mut fq_ctx_struct);
65 pub fn fq_embed_dual_to_mono_matrix(res: *mut fmpz_mod_mat_struct, ctx: *mut fq_ctx_struct);
66 pub fn fq_modulus_pow_series_inv(
67 res: *mut fmpz_mod_poly_struct,
68 ctx: *mut fq_ctx_struct,
69 trunc: mp_limb_signed_t,
70 );
71 pub fn fq_modulus_derivative_inv(
72 m_prime: *mut fmpz_poly_struct,
73 m_prime_inv: *mut fmpz_poly_struct,
74 ctx: *mut fq_ctx_struct,
75 );
76}