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 |