Как увеличить размер стека в Pari/Gp, чтобы команда работала

Я работаю с GP и минимальными полиномами на ASUS x75 следующим образом:

(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)))

Первая команда завершилась успешно, а вторая, приведенная ниже, завершилась успешно и выдала ошибку 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()

person J. Linne    schedule 14.06.2017    source источник


Ответы (2)


Вы можете увеличить размер кучи PARI/GP до любого желаемого предела во время выполнения, следуя приведенному ниже примеру (показывает, как установить размер кучи равным 120000000 байт):

default(parisize, 120000000)
person Piotr Semenov    schedule 15.06.2017
comment
Подсказка предлагает allocatemem(120*10^6), но вы делаете default(parisize, 120*10^6). Будет ли последний на самом деле выделять больше памяти, если сеанс уже запущен и используется с меньшим размером? Есть ли разница между вызовом allocatemem и просто установкой по умолчанию parisize нового значения? - person Jeppe Stig Nielsen; 28.06.2017
comment
@JeppeStigNielsen Пожалуйста, просмотрите это: pari.math.u-bordeaux .fr/dochtml/html/. В этом разделе говорится, что allocatemem(...) и default(parisize,...) являются синонимами общего случая. - person Piotr Semenov; 28.06.2017

default(parisize, 10000000000) больше 8 Гб и в моем случае этого хватило для выполнения сложных расчетов с матрицами.

person Alberto Ragagnin    schedule 02.10.2020