PARI でk 乗根を求めるには?
Ruby での
(0..(n ** (1.0 / k)).to_i).each{|i| ... }
の計算をPARI で行おうとしています。
k 乗したらn になるあたりの整数まで計算させたいのですが、
for (i=0, sqrtint(n),
for (i=0, sqrtint(sqrtint(n) + 1),
のようなコードしか思い浮かびません。
この方法では、一般のk のときではうまくいきません。
一般のk でもうまくいく方法を教えてください。
P.S.
for (i=0, sqrtint(n),
for (i=0, sqrtint(sqrtint(n) + 1),
を例えば、
for (i=0, n^(1.0/2)の整数部分,
for (i=0, n^(1.0/4)の整数部分,
みたいなコードにしたいのですが、どうすればいいですか?
私が直面している問題のコードです。
(n+1)^(1.0/2) にかえると動かなくなります。
{a(n)=local(CF=1+x*O(x^n), M=sqrtint(n+1)); for(k=0, M, CF=1/(1-x^((M-k+1)^2)*CF)); polcoeff(CF, n, x)}
for(n=0, 55, print1(a(n), ", "))
こんなエラーが出ます。
*** at top-level: for(n=0,55,print1(a(n),", "))
*** ^-----------
*** in function a: ...0/2));for(k=0,M,CF=1/(1-x^((M-k+1)^2)*CF));po
*** ^--------------------
*** _^_: domain error in gpow [irrational exponent]: valuation != 0
*** Break loop: type 'break' to go back to GP prompt
ちなみにM=5 にするとうまく動くが、M=5.1 とすると上記と似たエラーが出ることから、M は整数でないとだめみたいです。