Michael Koehn on Wed, 14 Oct 2009 12:19:26 +0200

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

using PARI library with arbitrary precision in C++

Dear PARi users,

please help me on my problem. I need to compute the complex gamma function to arbitrary precision and wanted to use PARI's built-in function. However I don't know how to convert the GEN value back to some arbitrary precision type that I can use for my program in C++. (I am using the arprec package.)

I am only able to convert my GEN with t_REAL back to double with rtodbl(GEN x), but then I lose the high precision. Can anybody give me please a hint on this?

Also, I am wondering why I can only compute values for gamma(x) in libpari to the 18th digit, if I print them with brute(). (See below.)

This is my example program:


#include </usr/local/include/pari/pari.h>
#include <iostream>
#include <iomanip>
using namespace std;

static GEN s;

int main()	
//	output(ggamma(gadd(dbltor(200.),gmul(gi,dbltor(10.))),50));
cout << "\n" << setprecision(50) << rtodbl(ggamma(dbltor(50.),50)) << "\n";


The returned values of gamma(50)
-- in gp: (19:32) gp > gamma(50) %11 = 608281864034267560872252163321295376887552831379210240000000000.0000000000000000000000000000000000000

-- from libpari with brute(ggamma(dbltor(50.),50),'f',100):

-- from libpari with brute(ggamma(dbltor(50.),50),'f',100) after converting to double with rtodbl(GEN x):

Please help me on this, I searched all the documentation and I am really stuck and the days go by.

Thank you very much!