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() { pari_init(500000,0); // output(ggamma(gadd(dbltor(200.),gmul(gi,dbltor(10.))),50)); brute(ggamma(dbltor(50.),50),'f',100);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): 6.082818640342675609E62-- from libpari with brute(ggamma(dbltor(50.),50),'f',100) after converting to double with rtodbl(GEN x):
6.0828186403426752248860160811673162316877754210242e+62Please help me on this, I searched all the documentation and I am really stuck and the days go by.
Thank you very much! Micha