/********************************************************************** * Section : 15 * Machine No. : N * Roll No. : 18CS100XY * Name : Soumyajit Dey, Aritra Hazra * Assignment No : 5a * Description : Find Binomial Sum using Expansions of Binomial Theorem **********************************************************************/ #include /* calculates m^p */ double power(float m, int p) { double result; if (p == 0) result = 1.0; else if (p == 1) return result = m; else { if(p%2) { result = power(m, p/2); result = result * result * m; } else { result = power(m, p/2); result = result * result; } } return result; } /* calculates num! */ long int factorial(int num) { long int fact = 1; while(num > 0) { fact = fact * num; num = num - 1; } return fact; } /* calculates nCr = (n!) / (r!(n-r)!) */ long int find_ncr(int n, int r) { return ( factorial(n) / (factorial(r) * factorial(n-r)) ); } /* calculates the Binomial sum using Binomial Theorem as follows: (x+y)^n = nC0.x^n.y^0 + ... + nCi.x^(n-i).y^i + ... + nCn.x^0.y^n */ double find_binomial_sum(float x, float y, int n) { int i; double sum = 0.0; for(i=0; i<=n; ++i) { sum = sum + find_ncr(n,i) * power(x,n-i) * power(y,i); } return sum; } int main() { float x, y; int n; /* reads user inputs */ printf("Enter Real x: "); scanf("%f", &x); printf("Enter Real y: "); scanf("%f", &y); printf("Enter Integer Exponent (n >= 0): "); scanf("%d", &n); /* displays the Binomial Sum */ printf("The Binomial Sum: (%f + %f)^%d = %lf\n", x, y, n, find_binomial_sum(x,y,n)); return 0; }