Mike Rosing on Mon, 23 Feb 2015 22:53:01 +0100

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

Re: Now what am I doing wrong?

I figured it out - The limit should be i<k not i<=k.
so I ran off the end of the pointers.

On Mon, 23 Feb 2015, Mike Rosing wrote:

I have a really simple program:

#include <pari/pari.h>

int main()
 GEN f, num, sum;
 int i, k;

 pari_init(2*1024*1024, 5*1024*512);
 f = factor(stoi(20765));
 pari_printf("%Ps\n", f);
 num = gel(f, 2);
 sum = gen_0;
 k =lg(num);
 for(i=1; i<=k; i++)
   sum = gadd(sum, gel(num, i));
   pari_printf("%d  %Pd\n", i, sum);
 return 0;

which dies at the end of the for loop:

$ ./bug-dyn
[5, 1; 4153, 1]
1  1
2  2
 ***   bug in PARI/GP (Segmentation Fault), please report.
 ***   Error in the PARI system. End of program.

The value of sum is always correct, but exiting the for loop crashes the program. What am I doing wrong?