I think I'm doing everything correctly but for some reason the program refuses to compute, it just freezes.

I'm given an equation for a curve, and for certain values of x and y along that I want to take the double integral and set that over the double integral of the whole curve and compute that fraction.

To do this I loop through values of x and y and then multiply them to get the double integral of the whole curve.

For the isolated section of the curve I substitute a new variable z for y and then within the x loop I cycle through z values for each value of x and if x and z are within certain values I compute the smaller integral.

I then set the two integrals over each other and compute that fraction.

What am I doing wrong?

Code:#include <stdio.h> #include <math.h> #define STEP 5.556e-5 int main() { float a=0.3489, b=0.255, R=0.68085, xlimit=0.2799, zlimit=-0.0008; float utotalarea=0; float vtotalarea=0; float x, xarea, xtotalarea=0; float y, yarea, ytotalarea=0; float z, zarea; float result, result2, fraction; //First loop through x values. for (x=STEP; x<=10; x=x+STEP){ xarea=0.5*(exp(-log(2)*pow(x/a,2)-1)+exp(-log(2)*pow((x-STEP)/a,2)-1))*STEP; xtotalarea=xtotalarea+xarea; //Next, loop through z values for each x value. Note: z is really y, its a different variable here in order to calculate the integral for certain x and y values. for (z=STEP; z<=10; z=z+STEP){ zarea=0.5*(exp(-log(2)*pow(z/b,2)-1) + exp(-log(2)*pow((z-STEP)/b,2)-1))*STEP; //If x and z are within certain values take integral. if((pow(x-xlimit,2)+pow(z-zlimit,2))<=pow(R,2)){ utotalarea=utotalarea+xarea; vtotalarea=vtotalarea+zarea; } } } //Now, loop through all y values. for (y=STEP; y<=10; y=y+STEP){ yarea=0.5*(exp(-log(2)*pow(y/b,2)-1)+exp(-log(2)*pow((y-STEP)/b,2)-1))*STEP; ytotalarea=ytotalarea+yarea; } //Compute double integral for the whole curve. result=xtotalarea*ytotalarea; //Compute double integral for the certain x and z values. result2=utotalarea*vtotalarea; //Set the smaller integral over the larger integral. fraction=result2/result; //print the fraction. printf("%.5f\n", fraction); }