| Bill Allombert on Sat, 17 May 2025 12:05:20 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: Incorporating Pari into a C program |
On Sat, May 17, 2025 at 11:20:37AM +0200, Loïc Grenié wrote:
> #include <pari/pari.h>
>
> at the beginning. In your decision(int a*, int n) you'll have to do a
> variant of
>
> ***Since I do not know how the elements of the matrix are encoded, you
> said
> "small rational numbers" but provide a pointer a an array of integers,
> I'll make
> the (wrong) assumption that a is actually int ***a, where a[i-1][j-1][0]
> is the
> numerator of the (i,j)-entry and a[i-1][j-1][1] is the denominator.
> You'll have to
> translate that into the linear versione (maybe
> a[2*n*n*(i-1)+2*n*(j-1)+k], where
> k is 0 or 1 above).***
>
> GEN M, col;
> long i, j;
>
> pari_init(2*1024*1024,500*1000);
> paristack_setsize(2*1024*1024,1024uL*1024uL*1024uL);
> M = cgetg(n+1, t_MAT);
> for (j = 1; j < n; j++) {
> GEN col = cgetg(n+1, t_COL);
> for (i = 1; i < n; i++)
> gel(col, i) = gdiv(ltoi(a[i-1][j-1][0]),ltoi(a[i-1][j-1][1]));
ltoi is actually called stoi. But you can just use sstoQ
gel(col, i) = sstoQ(a[i-1][j-1][0], a[i-1][j-1][1]);
Cheers,
Bill.