It really helps if you implement the [URL="http://en.wikipedia.org/wiki/Chudnovsky_algorithm"]formula [/URL]correctly.
[code]
cin >> num; //the number of terms, or iterations to use
for (k = 0; k < num; k++ ) //start k at 0, not the user's input
{
t[0]=fac(k);
t[1]=3*k+3/2.0; //divide by a floating point, else 3/2 is just … Read More

you are getting a overflow and that is what the return value becomes. your call to pow when k=10 for instance returns 1.5556504132421497887188538979512e+174 but the max value for a float is 3.40282e+038. i would try using type double which has a max of 1.79769e+308.

Just took a quick look at Fedora - in a VM running on top of 32 bit XP, g++ shows its long double as size 12 - I could run your code out to 50 iterations with no problem once all variables and function return updated to long double. Of course, it doesn't really get you any better pi due to the limit on the precision of the answer.