Ariel Pacetti on Thu, 05 Feb 2015 21:25:49 +0100


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

fordiv question



Dear pari users,

I realized that using fordiv for big numbers (with easy factorization) blows down completely the memory. Here is an example:

? fordiv(2^240*3^50*5^20*7^15,x,1)
  ***   at top-level: fordiv(2^240*3^50*5^
  ***                 ^--------------------
  *** fordiv: the PARI stack overflows !
  current stack size: 128000000 (122.070 Mbytes)
  [hint] set 'parisizemax' to a non-zero value in your GPRC

  ***   Break loop: type 'break' to go back to GP prompt
break> break

While

? forvec(X=[[0,240],[0,50],[0,20],[0,15]],x=2^X[1]*3^X[2]*5^X[3]*7^X[4],1)

Is fordiv first computing the set of all divisors and then performing the operation?

Also note the timings (factoring takes 0 time)

? forvec(X=[[0,240],[0,50],[0,20],[0,15]],x=2^X[1]*3^X[2]*5^X[3]*7^X[4],1)
? ##
  ***   last result computed in 4 ms.
? fordiv(2^240*3^50*5^20,x,1)
? ##
  ***   last result computed in 90 ms.



Ariel