岩浆计算机代数系统局部变量和全局变量


function Max(x)
    max := 0; L := [];
    for i := 1 to x do
        P2<x,y,z> := ProjectiveSpace(Rationals(),2);
        C_i := Curve(P2, x^3+y^3-i*z^3);
        E_i, C_itoE_i := EllipticCurve(C_i);
        gen := Generators(E_i);
        if max eq #gen then
            max := #gen;
        end if;
    end for;
    return max;
end function;

当我运行这个(Max(100((时,它告诉我max = 0。但是我知道在不同的地方有 #gen = 1 和 2,因此 #gen> 0。我很难本地化最大值。它认为 if 和 for 语句中的 max 与 for 和 if 语句中的 max 不同,因此不会更新 max。我不确定如何在岩浆 CAS 语法中纠正这一点。有人可以帮助我理解这方面的岩浆语法吗?我尝试放置本地最大值;在循环和 if 语句内,但给了我语法错误。

我不知道magma,但如果它像其他程序计算机语言一样,那么看起来你的代码中有一个简单的错误。 台词:

    if max eq #gen then
        max := #gen;
    end if;

应改为

    if #gen > max then
        max := #gen;
    end if;

使用大于运算符的正确语法。

最新更新