Calculating the value of e: Difference between revisions

Content added Content deleted
(→‎solution 1: make use of all double precision bits)
Line 576: Line 576:
#include <math.h>
#include <math.h>


int main(int argc, char* argv[])
int main(void)
{
{
double e;
double e;
Line 590: Line 590:
// The fast and independed method: e = lim (1 + 1/n)**n
// The fast and independed method: e = lim (1 + 1/n)**n
//
//
int n = 8192;
e = 1.0 + 0x1p-26;
e = 1.0 + 1.0 / n;
for (int i = 0; i < 26; i++)
for (int i = 0; i < 13; i++)
e *= e;
e *= e;
printf("Euler constant e = %.16lf\n", e);
printf("Euler constant e = %.16lf\n", e);
Line 609: Line 608:
for (int i = N - 1; i > 0; i--)
for (int i = N - 1; i > 0; i--)
e += a[i];
e += a[i];
printf("Euler constant e = %.16lf\n", e);
printf("Euler constant e = %.16lf\n", e);


return 0;
return 0;
Line 619: Line 618:


Euler constant e = 2.7182818284590451
Euler constant e = 2.7182818284590451
Euler constant e = 2.7181159362660465
Euler constant e = 2.7182818081824731
Euler constant e = 2.7182818284590455
Euler constant e = 2.7182818284590455
</pre>
</pre>