note
zentara
I'm not a c compiler expert, but have a look at <a href=http://groups.google.com/group/comp.lang.c/search?group=comp.lang.c&q=double+precision+pi&qt_g=Search+this+group> double precision pi </a> It may be the difference between computational precision and "%Lf" display precision. I started looking into it, when I questioned the way GLib defined pi as a constant. They defined it out to 50 decimal places, but any use of it in it's long double is limited to 15 decimal places. <p>One of the c gurus in that thread said that c's precision is only gauranteed to 10 decimal places, but with IEEE standards, it's common to see 15. I see 15.<p>Eventually, I found <a href=http://www.mpfr.org> mpfr </a> which lets you set how many digits of precision you want to use. <p>If you can show me a simple c program that computes and displays values out to 50 decimal places, with normal c, I would be greatful. Everything I see truncates it (pi) to 3.(15 decimal places).
<p>For example, in this code, the value of pi is correctly printed as a string on the first line of output, but the subsequent lines all have garbage after the 15th decimal place.
<code>
#include <gtk/gtk.h>
/* gcc -o test test.c `pkg-config --cflags --libs gtk+-2.0` */
int main (){
/* how the headers define G_PI */
/* #define G_PI 3.1415926535897932384626433832795028841971693993751
*/
long double PI = G_PI;
g_print("3.1415926535897932384626433832795028841971693993751\n");
g_print("%0.50e\n",G_PI);
g_print("%0.50Lf\n",G_PI);
g_print("%0.50Lf\n",PI);
g_print("%0.50Lg\n",PI);
g_print("%0.50Le\n",PI);
return 0;
}
</code>
Output:
<code>
^^^^^^^^^^^ -> unstable after 15 decimal
3.1415926535897932384626433832795028841971693993751
3.14159265358979311599796346854418516159057617187500e+00
-0.00000000000000000000000000000000000000000000000000
3.14159265358979311599796346854418516159057617187500
3.141592653589793115997963468544185161590576171875
3.14159265358979311599796346854418516159057617187500e+00
^^^^^^^^^^^^ -> unstable after 15 decimal
</code>
<!-- Node text goes above. Div tags should contain sig only -->
<div class="pmsig"><div class="pmsig-131741">
<hr />
I'm not really a human, but I play one on earth.
<a href = http://zentara.net/japh.html>Cogito ergo sum a bum</a>
</div></div>
598007
598188