【问题标题】:In pari-gp, any stuff to map the finite field to its some extension?在 pari-gp 中,有什么东西可以将有限域映射到它的某个扩展吗?
【发布时间】:2016-02-17 22:04:09
【问题描述】:

比如说,我有一个关于 GF(2) 的多项式 p(x) 和一个关于 GF(4) 的多项式 g(x)。例如,

gf2 = gf(2, 1);
gf4 = gf(2, 2);

p2 = Polrev(vector(5, i, random(gf2)));
p4 = Polrev(vector(7, i, random(gf4)));

p2 * p4
>> ***   at top-level: p2*p4
>> ***                   ^---
>> *** _*_: inconsistent multiplication t_FFELT * t_FFELT.

pari-gp 是否提供了在这种情况下继续进行的任何东西?如果没有,我该如何进行所需的嵌入?

【问题讨论】:

    标签: pari pari-gp finite-field


    【解决方案1】:

    不幸的是,解决方案是您自己的。 PARI/GP 没有为有限域嵌入提供任何东西。 出于我的目的,我为有限域嵌入开发了以下函数:

    get_gf_embedding(f: t_FFELT, g: t_FFELT) =
    {
        if(f.p != g.p,
            error("** get_gf_embedding: fields are of different characterisitics")
        );
        if(f.p != g.p || poldegree(g.mod) % poldegree(f.mod) != 0,
            error("** get_gf_embedding: finite fields are not embeddable")
        );
    
        my (smaller_field_min_poly = subst(f.mod, variable(f.mod), 'x));
        my (larger_field_min_poly = subst(g.mod, variable(g.mod), 'y));
        my (subfield_prim =
            g^0 *
            subst(
                polrootsff(smaller_field_min_poly, f.p, larger_field_min_poly)[1].pol,
                'y,
                g
            )
        );
        embedding(elt) =
            subfield_prim^0 * subst((f^0 * elt).pol, variable((f^0 * elt).pol), subfield_prim)
    };
    

    有关算法的详细信息,请参阅http://johnkerl.org/doc/ffcomp.pdf(第 5.11 节)。 使用上面的代码你必须重写你的代码如下:

    embed = get_gf_embedding(gf2, gf4);
    Polrev(apply(embed, Vecrev(p2))) * p4
    

    【讨论】:

    • 感谢您的快速响应:)
    猜你喜欢
    • 2016-05-10
    • 1970-01-01
    • 1970-01-01
    • 2012-06-03
    • 2012-04-08
    • 1970-01-01
    • 2010-09-25
    • 2011-02-25
    • 1970-01-01
    相关资源
    最近更新 更多