Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,145 @@
|
|||
/*********************************************
|
||||
Subject: Comparing five methods for
|
||||
computing Euler's constant 0.5772...
|
||||
// https://rosettacode.org/wiki/Euler%27s_constant_0.5772...
|
||||
--------------------------------------------*/
|
||||
double a, b, h, n2, r, u, v;
|
||||
float floatA, floatB, floatN2;
|
||||
int k, k2, m, n;
|
||||
double eps = 1e-6;
|
||||
|
||||
void setup() {
|
||||
size(100, 100);
|
||||
noLoop();
|
||||
}
|
||||
|
||||
void draw() {
|
||||
println("From the definition, err. 3e-10\n");
|
||||
|
||||
n = 400;
|
||||
|
||||
h = 1;
|
||||
|
||||
for (int k = 2; k <= n; k++) {
|
||||
h += 1.0 / k;
|
||||
}
|
||||
//faster convergence: Negoi, 1997
|
||||
a = log(n +.5 + 1.0 / (24*n));
|
||||
|
||||
println("Hn ", h);
|
||||
println("gamma ", h - a);
|
||||
println("k = ", n);
|
||||
println("");
|
||||
|
||||
|
||||
println("Sweeney, 1963, err. idem");
|
||||
n = 21;
|
||||
|
||||
double s[] = {0, n};
|
||||
r = n;
|
||||
k = 1;
|
||||
while (r > eps) {
|
||||
k ++;
|
||||
r *= (double) n / k;
|
||||
s[k & 1] = s[k & 1] + r / k;
|
||||
}
|
||||
|
||||
// println("gamma %.16f\nk = %d\n\n", s[1] - s[0] - log(n), k);
|
||||
|
||||
println("Hn ", h);
|
||||
println("gamma ", s[1] - s[0] - log(n));
|
||||
println("k = ", k);
|
||||
println("");
|
||||
|
||||
println("Bailey, 1988");
|
||||
n = 5;
|
||||
floatA = 1;
|
||||
h = 1;
|
||||
floatN2 = pow(2, n);
|
||||
r = 1;
|
||||
k = 1;
|
||||
while (abs(floatB - floatA) > eps) {
|
||||
k += 1;
|
||||
r *= floatN2 / k;
|
||||
h += 1.0 / k;
|
||||
floatB = floatA;
|
||||
floatA += r * h;
|
||||
}
|
||||
floatA *= floatN2 / exp(floatN2);
|
||||
|
||||
println("gamma ", floatA - n * log(2));
|
||||
println("k = ", k);
|
||||
println("");
|
||||
|
||||
println("Brent-McMillan, 1980");
|
||||
|
||||
n = 13;
|
||||
|
||||
floatA = -log(n);
|
||||
floatB = 1;
|
||||
u = a;
|
||||
v = b;
|
||||
n2 = n * n;
|
||||
k2 = 0;
|
||||
k = 0;
|
||||
|
||||
|
||||
while (abs(floatA) > eps) {
|
||||
k2 += 2*k + 1;
|
||||
k += 1;
|
||||
floatA *= n2 / k;
|
||||
floatB *= n2 / k2;
|
||||
floatA = (floatA + floatB) / k;
|
||||
u += floatA;
|
||||
v += floatB;
|
||||
}
|
||||
println("gamma ", u / v);
|
||||
println("k ", k);
|
||||
|
||||
|
||||
|
||||
println("How Euler did it in 1735\n");
|
||||
//Bernoulli numbers with even indices
|
||||
|
||||
double[] B2 = new double[11];
|
||||
|
||||
B2[1] = 1.0;
|
||||
B2[2] = 1.0/6;
|
||||
B2[3] = -1.0/30;
|
||||
B2[4] = 1.0/42;
|
||||
B2[5] = -1.0/30;
|
||||
B2[6] = 5.0/66;
|
||||
B2[7] = -691.0/2730;
|
||||
B2[8] = 7.0/6;
|
||||
B2[9] = -3617.0/510;
|
||||
B2[10]= 43867.0/798;
|
||||
|
||||
m = 7;
|
||||
n = 10;
|
||||
|
||||
//n-th harmonic number
|
||||
h = 1;
|
||||
for (k = 2; k <= n; k++) {
|
||||
h += 1.0 / k;
|
||||
}
|
||||
println("Hn ", h);
|
||||
|
||||
h -= log(n);
|
||||
println(" -ln ", h);
|
||||
|
||||
//expansion C = -digamma(1)
|
||||
a = -1.0 / (2*n);
|
||||
n2 = n * n;
|
||||
r = 1;
|
||||
for (k = 1; k <= m; k++) {
|
||||
r *= n2;
|
||||
a += B2[k] / (2*k * r);
|
||||
}
|
||||
|
||||
println("");
|
||||
println("err ", a);
|
||||
println("gamma ", h + a );
|
||||
println("k = ", n + m);
|
||||
println("");
|
||||
println("C = 0.57721566490153286...\n");
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue