| Safe Haskell | Safe-Inferred | 
|---|---|
| Language | Haskell2010 | 
Data.Number.Flint.Fq.NMod.Embed
Description
Synopsis
- fq_nmod_embed_gens :: Ptr CFqNMod -> Ptr CFqNMod -> Ptr CNModPoly -> Ptr CFqNModCtx -> Ptr CFqNModCtx -> IO ()
 - _fq_nmod_embed_gens_naive :: Ptr CFqNMod -> Ptr CFqNMod -> Ptr CNModPoly -> Ptr CFqNModCtx -> Ptr CFqNModCtx -> IO ()
 - fq_nmod_embed_matrices :: Ptr CNModMat -> Ptr CNModMat -> Ptr CFqNMod -> Ptr CFqNModCtx -> Ptr CFqNMod -> Ptr CFqNModCtx -> Ptr CNModPoly -> IO ()
 - fq_nmod_embed_trace_matrix :: Ptr CNModMat -> Ptr CNModMat -> Ptr CFqNModCtx -> Ptr CFqNModCtx -> IO ()
 - fq_nmod_embed_composition_matrix :: Ptr CNModMat -> Ptr CFqNMod -> Ptr CFqNModCtx -> IO ()
 - fq_nmod_embed_composition_matrix_sub :: Ptr CNModMat -> Ptr CFqNMod -> Ptr CFqNModCtx -> CLong -> IO ()
 - fq_nmod_embed_mul_matrix :: Ptr CNModMat -> Ptr CFqNMod -> Ptr CFqNModCtx -> IO ()
 - fq_nmod_embed_mono_to_dual_matrix :: Ptr CNModMat -> Ptr CFqNModCtx -> IO ()
 - fq_nmod_embed_dual_to_mono_matrix :: Ptr CNModMat -> Ptr CFqNModCtx -> IO ()
 - fq_nmod_modulus_pow_series_inv :: Ptr CNModPoly -> Ptr CFqNModCtx -> CLong -> IO ()
 - fq_nmod_modulus_derivative_inv :: Ptr CFqNMod -> Ptr CFqNMod -> Ptr CFqNModCtx -> IO ()
 
Computing isomorphisms and embeddings of finite fields
fq_nmod_embed_gens :: Ptr CFqNMod -> Ptr CFqNMod -> Ptr CNModPoly -> Ptr CFqNModCtx -> Ptr CFqNModCtx -> IO () Source #
fq_nmod_embed_gens gen_sub gen_sup minpoly sub_ctx sup_ctx
Given two contexts sub_ctx and sup_ctx, such that degree(sub_ctx) divides degree(sup_ctx), compute:
- an element 
gen_subinsub_ctxsuch thatgen_subgenerates the finite field defined bysub_ctx, - its minimal polynomial 
minpoly, - a root 
gen_supofminpolyinside the field defined bysup_ctx. 
These data uniquely define an embedding of sub_ctx into sup_ctx.
_fq_nmod_embed_gens_naive :: Ptr CFqNMod -> Ptr CFqNMod -> Ptr CNModPoly -> Ptr CFqNModCtx -> Ptr CFqNModCtx -> IO () Source #
_fq_nmod_embed_gens_naive gen_sub gen_sup minpoly sub_ctx sup_ctx
Given two contexts sub_ctx and sup_ctx, such that degree(sub_ctx) divides degree(sup_ctx), compute an embedding of sub_ctx into sup_ctx defined as follows:
gen_subis the canonical generator ofsup_ctx(i.e., the class of \(X\)),minpolyis the defining polynomial ofsub_ctx,gen_supis a root ofminpolyinside the field defined bysup_ctx.
fq_nmod_embed_matrices :: Ptr CNModMat -> Ptr CNModMat -> Ptr CFqNMod -> Ptr CFqNModCtx -> Ptr CFqNMod -> Ptr CFqNModCtx -> Ptr CNModPoly -> IO () Source #
fq_nmod_embed_matrices embed project gen_sub sub_ctx gen_sup sup_ctx gen_minpoly
Given:
- two contexts 
sub_ctxandsup_ctx, of respective degrees \(m\) and \(n\), such that \(m\) divides \(n\); - a generator 
gen_subofsub_ctx, its minimal polynomialgen_minpoly, and a rootgen_supofgen_minpolyinsup_ctx, as returned byfq_nmod_embed_gens; 
Compute:
- the \(n\times m\) matrix 
embedmappinggen_subtogen_sup, and all their powers accordingly; - an \(m\times n\) matrix 
projectsuch thatproject\(\times\)embedis the \(m\times m\) identity matrix. 
fq_nmod_embed_trace_matrix :: Ptr CNModMat -> Ptr CNModMat -> Ptr CFqNModCtx -> Ptr CFqNModCtx -> IO () Source #
fq_nmod_embed_trace_matrix res basis sub_ctx sup_ctx
Given:
- two contexts 
sub_ctxandsup_ctx, of degrees \(m\) and \(n\), such that \(m\) divides \(n\); - an \(n\times m\) matrix 
basisthat mapssub_ctxto an isomorphic subfield insup_ctx; 
Compute the \(m\times n\) matrix of the trace from sup_ctx to sub_ctx.
This matrix is computed as
embed_dual_to_mono_matrix(_, sub_ctx) \(\times\) basist \(\times\) embed_mono_to_dual_matrix(_, sup_ctx)}.
Note: if \(m=n\), basis represents a Frobenius, and the result is its inverse matrix.
fq_nmod_embed_composition_matrix :: Ptr CNModMat -> Ptr CFqNMod -> Ptr CFqNModCtx -> IO () Source #
fq_nmod_embed_composition_matrix matrix gen ctx
Compute the composition matrix of gen.
For an element \(a\in\mathbf{F}_{p^n}\), its composition matrix is the matrix whose columns are \(a^0, a^1, \ldots, a^{n-1}\).
fq_nmod_embed_composition_matrix_sub :: Ptr CNModMat -> Ptr CFqNMod -> Ptr CFqNModCtx -> CLong -> IO () Source #
fq_nmod_embed_composition_matrix_sub matrix gen ctx trunc
Compute the composition matrix of gen, truncated to trunc columns.
fq_nmod_embed_mul_matrix :: Ptr CNModMat -> Ptr CFqNMod -> Ptr CFqNModCtx -> IO () Source #
fq_nmod_embed_mul_matrix matrix gen ctx
Compute the multiplication matrix of gen.
For an element \(a\) in \(\mathbf{F}_{p^n}=\mathbf{F}_p[x]\), its multiplication matrix is the matrix whose columns are (a, ax, dots, ax^{n-1}).
fq_nmod_embed_mono_to_dual_matrix :: Ptr CNModMat -> Ptr CFqNModCtx -> IO () Source #
fq_nmod_embed_mono_to_dual_matrix res ctx
Compute the change of basis matrix from the monomial basis of ctx to its dual basis.
fq_nmod_embed_dual_to_mono_matrix :: Ptr CNModMat -> Ptr CFqNModCtx -> IO () Source #
fq_nmod_embed_dual_to_mono_matrix res ctx
Compute the change of basis matrix from the dual basis of ctx to its monomial basis.
fq_nmod_modulus_pow_series_inv :: Ptr CNModPoly -> Ptr CFqNModCtx -> CLong -> IO () Source #
fq_nmod_modulus_pow_series_inv res ctx trunc
Compute the power series inverse of the reverse of the modulus of ctx up to \(O(x^\texttt{trunc})\).
fq_nmod_modulus_derivative_inv :: Ptr CFqNMod -> Ptr CFqNMod -> Ptr CFqNModCtx -> IO () Source #
fq_nmod_modulus_derivative_inv m_prime m_prime_inv ctx
Compute the derivative m_prime of the modulus of ctx as an element of ctx, and its inverse m_prime_inv.