
| Calculate array values | Final calculations |
|---|---|
int main() {
double s[33], sum;
int b;
s[0] = 1;
s[1] = s[0] - 1./3;
s[2] = s[1] + 1./5;
s[3] = s[2] - 1./7;
s[4] = s[3] + 1./9;
s[5] = s[4] - 1./11;
s[6] = s[5] + 1./13;
s[7] = s[6] - 1./15;
s[8] = s[7] + 1./17;
s[9] = s[8] - 1./19;
s[10] = s[9] + 1./21;
s[11] = s[10] - 1./23;
s[12] = s[11] + 1./25;
s[13] = s[12] - 1./27;
s[14] = s[13] + 1./29;
s[15] = s[14] - 1./31;
s[16] = s[15] + 1./33;
s[17] = s[16] - 1./35;
s[18] = s[17] + 1./37;
s[19] = s[18] - 1./39;
s[20] = s[19] + 1./41;
s[21] = s[20] - 1./43;
s[22] = s[21] + 1./45;
s[23] = s[22] - 1./47;
s[24] = s[23] + 1./49;
s[25] = s[24] - 1./51;
s[26] = s[25] + 1./53;
s[27] = s[26] - 1./55;
s[28] = s[27] + 1./57;
s[29] = s[28] - 1./59;
s[30] = s[29] + 1./61;
s[31] = s[30] - 1./63;
| b = 1; sum = s[15];
b = b*16; sum += b*s[16];
b = b*15 / 2; sum += b*s[17];
b = b*14 / 3; sum += b*s[18];
b = b*13 / 4; sum += b*s[19];
b = b*12 / 5; sum += b*s[20];
b = b*11 / 6; sum += b*s[21];
b = b*10 / 7; sum += b*s[22];
b = b* 9 / 8; sum += b*s[23];
b = b* 8 / 9; sum += b*s[24];
b = b* 7 /10; sum += b*s[25];
b = b* 6 /11; sum += b*s[26];
b = b* 5 /12; sum += b*s[27];
b = b* 4 /13; sum += b*s[28];
b = b* 3 /14; sum += b*s[29];
b = b* 2 /15; sum += b*s[30];
sum += s[31];
sum /= 16384;
printf("%20.17f\n", sum);
} |
| Formulas simplified | Calculate Binomial Coef. |
|---|---|
int main() {
double sum, s;
sum = s =
1. - 1./3 +
1./5 - 1./7 +
1./9 - 1./11 +
1./13 - 1./15 +
1./17 - 1./19 +
1./21 - 1./23 +
1./25 - 1./27 +
1./29 - 1./31;
sum +=
(s += 1./33)*16 +
(s -= 1./35)*120 +
(s += 1./37)*560 +
(s -= 1./39)*1820 +
(s += 1./41)*4368 +
(s -= 1./43)*8008 +
(s += 1./45)*11440 +
(s -= 1./47)*12870 +
(s += 1./49)*11440 +
(s -= 1./51)*8008 +
(s += 1./53)*4368 +
(s -= 1./55)*1820 +
(s += 1./57)*560 +
(s -= 1./59)*120 +
(s += 1./61)*16 +
(s -= 1./63);
sum /= 16384;
printf("%20.17f\n",sum);
} |
int main() {
double sum, s;
int b = 1;
sum = s =
1. - 1./3 +
1./5 - 1./7 +
1./9 - 1./11 +
1./13 - 1./15 +
1./17 - 1./19 +
1./21 - 1./23 +
1./25 - 1./27 +
1./29 - 1./31;
sum +=
(s += 1./33)*(b = b*16) +
(s -= 1./35)*(b = b*15/ 2) +
(s += 1./37)*(b = b*14/ 3) +
(s -= 1./39)*(b = b*13/ 4) +
(s += 1./41)*(b = b*12/ 5) +
(s -= 1./43)*(b = b*11/ 6) +
(s += 1./45)*(b = b*10/ 7) +
(s -= 1./47)*(b = b* 9/ 8) +
(s += 1./49)*(b = b* 8/ 9) +
(s -= 1./51)*(b = b* 7/10) +
(s += 1./53)*(b = b* 6/11) +
(s -= 1./55)*(b = b* 5/12) +
(s += 1./57)*(b = b* 4/13) +
(s -= 1./59)*(b = b* 3/14) +
(s += 1./61)*(b = b* 2/15) +
(s -= 1./63);
sum /= 16384;
printf("%20.17f\n", sum);
} |
| Inefficient Binomial Coefficients | |
|---|---|
int main() {
double sum, s;
sum = s =
1. -
1./3 +
1./5 -
1./7 +
1./9 -
1./11 +
1./13 -
1./15 +
1./17 -
1./19 +
1./21 -
1./23 +
1./25 -
1./27 +
1./29 -
1./31; | sum +=
(s += 1./33)*c(16,1) +
(s -= 1./35)*c(16,2) +
(s += 1./37)*c(16,3) +
(s -= 1./39)*c(16,4) +
(s += 1./41)*c(16,5) +
(s -= 1./43)*c(16,6) +
(s += 1./45)*c(16,7) +
(s -= 1./47)*c(16,8) +
(s += 1./49)*c(16,7) +
(s -= 1./51)*c(16,6) +
(s += 1./53)*c(16,5) +
(s -= 1./55)*c(16,4) +
(s += 1./57)*c(16,3) +
(s -= 1./59)*c(16,2) +
(s += 1./61)*c(16,1) +
(s -= 1./63);
sum /= 16384;
printf("%20.17f\n",sum);
}
// terribly inefficient!
int c(int r, int k) {
if (k == 0 || k == r) return 1;
return c(r-1, k) + c(r-1, k-1);
} |
% ./ave2 3.14159265358979312 | |