Я раньше думал что сравнивается лишь числитель (т.е. эквивалентно lift(Mod(2,3))==5).
Сравнение
a==b в PARI/GP всегда вычисляется через сравнение разности
a-b с нулем. Здесь мы имеем:
Код:
? Mod(2,3) - 5
%1 = Mod(0, 3)
Т.е. тип
t_INT приводится к
t_INTMOD, а не наоборот.
И, кстати, называть значение вычета "числителем" (как и его модуль "знаменателем") не принято.
-- Thu Aug 22, 2024 19:58:24 --Изготовление вектора [коэффициентов] из полинома:
? vector(#P,i,polcoef(P,#P-i))
%3 = [1, 5, 3, 4]
Можно просто
Vec(P) или
Vecrev(P) в зависимости от того, с какого конца хочется начинать перечислять коэффициенты.
-- Thu Aug 22, 2024 20:03:30 --Вопрос: Нельзя ли в forvec применять переменные вектора? Типа
forvec( s=[[1,222],[i1,224],[i2,226]], ...)
То есть изящно сделать
for( i1=1,222, for( i2=i1+1,224, for( i3=(i2+1,226, ... )))
Для этого у
forvec() есть третий параметр
flag:
Код:
? ?forvec
forvec(X=v,seq,{flag=0}): v being a two-component vectors of length n, the sequence is evaluated with X[i] going from v[i][1] to v[i][2] for i=n,..,1 if flag is zero or omitted. If flag = 1 (resp. flag = 2), restrict to increasing (resp. strictly increasing) sequences. As a shortcut, v being a vector of nonnegative integers allows to loop over representatives of Z^n/vZ^n.
Так как вы хотите, чтобы индексы суммирования были упорядочены строго, то ставим флаг равным 2:
Код:
forvec( s=[[1,222],[1,224],[1,226]], ..., 2 )