如何在 Pari/Gp 中增加足够的堆栈大小以使命令正常工作

J. *_*nne 1 stack-size pari pari-gp polynomials

我正在使用在 ASUS x75 上运行的 GP 和最小多项式,如下所示:

(19:25) gp > elt=Mod(a*x^3+b*x^2+c*x+d,('x^5-1)/('x-1))
%122 = Mod(a*x^3 + b*x^2 + c*x + d, x^4 + x^3 + x^2 + x + 1)
(19:25) gp > (poly=minpoly(elt,x='x))
%123 = x^4 + (a + (b + (c - 4*d)))*x^3 + (a^2 + (-3*b + (2*c - 3*d))*a + (b^2 + (2*c - 3*d)*b + (c^2 - 3*d*c + 6*d^2)))*x^2 + (a^3 + (-2*b + (3*c - 2*d))*a^2 + (-2*b^2 + (c + 6*d)*b + (-2*c^2 - 4*d*c + 3*d^2))*a + (b^3 + (-2*c - 2*d)*b^2 + (3*c^2 - 4*d*c + 3*d^2)*b + (c^3 - 2*d*c^2 + 3*d^2*c - 4*d^3)))*x + (a^4 + (-b + (-c - d))*a^3 + (b^2 + (2*c + 2*d)*b + (c^2 - 3*d*c + d^2))*a^2 + (-b^3 + (-3*c + 2*d)*b^2 + (2*c^2 - d*c - 3*d^2)*b + (-c^3 + 2*d*c^2 + 2*d^2*c - d^3))*a + (b^4 + (-c - d)*b^3 + (c^2 + 2*d*c + d^2)*b^2 + (-c^3 - 3*d*c^2 + 2*d^2*c - d^3)*b + (c^4 - d*c^3 + d^2*c^2 - d^3*c + d^4)))
Run Code Online (Sandbox Code Playgroud)

第一个命令成功执行,而下面的第二个命令成功完成并给出 allocatemem() 错误。如何才能让第二个命令正常工作,而不会使计算机过热或程序耗尽?并且需要下面命令的整个输出。谢谢您的帮助。

(19:23) gp > elt=Mod(a*x^5+b*x^4+c*x^3+d*x^2+e*x+f,('x^7-1)/('x-1))
%120 = Mod(a*x^5 + b*x^4 + c*x^3 + d*x^2 + e*x + f, x^6 + x^5 + x^4 + x^3 + x^2 + x + 1)
(19:23) gp > (poly=minpoly(elt,x='x))
  ***   at top-level: poly=minpoly(elt,x='x)
  ***                      ^-----------------
  *** minpoly: the PARI stack overflows !
  current stack size: 9000000 (8.583 Mbytes)
  [hint] you can increase GP stack with allocatemem()
Run Code Online (Sandbox Code Playgroud)

Pio*_*nov 5

您可以按照以下示例在运行时将 PARI/GP 堆增加到所需的任何限制(演示如何将堆大小设置为 120000000 字节):

default(parisize, 120000000)
Run Code Online (Sandbox Code Playgroud)

  • @JeppeStigNielsen 请查看此内容:https://pari.math.u-bordeaux.fr/dochtml/html/Programming_in_GP__other_specific_functions.html#allocatemem。该部分指出“allocatemem(...)”和“default(parisize,...)”是常见情况的同义词。 (3认同)