flint_sys/
fq_embed.rs

1#![allow(non_camel_case_types)]
2
3//! *See the [FLINT documentation](http://flintlib.org/doc/fq_embed.html).
4
5use 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}