Ok this is what ive done so far:

However it doesnt work for all values? More importantly I get this also:Code:/* ** Solve a cubic polynomial ** By xxxxxxxxxxxxxxxx */ #include <math.h> #include <stdlib.h> #include <stdio.h> float a1,a2,a3,b,c,d,G,roots,S,x1,x2,x3, C, theta, P, Q; int main(int argc, char* argv[]) { printf("Please enter the coefficient of x^2:"); scanf("%f",&a1); printf("Please enter the coefficient of x:"); scanf("%f",&a2); printf("Please enter the constant term:"); scanf("%f",&a3); Q=((a1*a1-3*a2)/9); S = ((2*a1*a1*a1)-(9*a1*a2+(27*a3)))/54; theta=acos(S/sqrt(Q*Q*Q)); P= pow ( (sqrt( (S*S)-(Q*Q*Q)+fabs(S) )), 1/3); C = ((Q*Q*Q)-(S*S)); if (C<=0) { theta=acos(S/sqrt(Q*Q*Q)); x1 = (((-2*sqrt(Q))*(cos(theta/3))) - a1)/3; x2 = ((-2*sqrt(Q))*(cos((theta+2*3.1412)))/3) - a1/3; x3 = ((-2*sqrt(Q))*(cos((theta+4*3.1412)))/3) - a1/3; printf("First root: %f.\n", x1); printf("Second root: %f.\n", x2); printf("Third root: %f.\n", x3); } else { if(G>0) { x1 = -G*(P + (Q/P))-(a1/3); printf("Only root: %f.\n", x1); } else { x1 = G*(P + (Q/P))-(a1/3); } printf("There is only one single root: %f.\n", x1); } return(0); }

Please enter the coefficient of x^2:9

Please enter the coefficient of x:9

Please enter the constant term:9

There is only one single root: -1.#IND00.

Press any key to continue

I got that with 9,9,9. What does -1.#IND00 mean?

Any help would be greatly appreciated.