New to programming, writing a cubic formula calculator, having stupid/newbie issues

Hey guys.

Im trying to write a program to calculate the roots of a cubic using Cardanos formula. Im new to programming and C, i've been at this problem for about 4 hours or so. I struggled to get my head around function prototypes and I dont really think i've worked it out yet.

Firstly, if i omit the A1 = blah line, it compiles, but I get "Q = nan S = nan", i dont understand why its returning "not a number" for these values??

Secondly, i dont understand how to use the pow() operator on the A1 line.

Thirdly, it wont compile because i think i've stuffed up the use of the function. I dont quite understand whats going on.

Fourthly.. should it be int main(), or float main(), the values that are to be calculated could be floating point numbers, not integers.

Fifthly.. I want it all in terms of a = 1, hence my if (a != 1) line, i used an if statement to do this, but then i wasn't sure if i needed an else statement. cant i just remove the else statement? is that redundant? i just want it to test if a is equal to 1, and if it isnt, i want it to divide the other coefficents by a.

Thanks so much for reading this and thanks alot if you post.

Code:

#include <stdio.h>

#include <math.h>

float sign(float S); /* sign function prototype */

int main()

{

float Q, S, a, b, c, d, A1, x1, x2, x3, theta;

/* Get coefficients from user */

printf("Cubic coefficient a? ");

scanf("%f", &a);

printf("Cubic coefficient b? ");

scanf("%f", &a);

printf("Cubic coefficient c? ");

scanf("%f", &a);

printf("Cubic coefficient d? ");

scanf("%f", &a);

/* Make sure a = 1, if it doesn't, recalculate the rest of the coefficents */

if (a != 1)

{

a = 1;

b = b/a;

c = c/a;

d = d/a;

}

else

{

a = a;

b = b;

c = c;

d = d;

}

/* Now to do some calculations to be used later in the program */

Q = (b*b - 3.*c)/(9.0);

S = (2.*b*b - 9.*b*c + 27.*d)/(54.0);

A1 = -sign(S)((sqrt[S*S - Q*Q*Q] + fabs(S))^(1/3);

printf("The value of %f = Q, and %f = S is\n" Q, S);

/* calculations will be done here */

/* if Q^3 - S^2 > 0 will be done here */

/* if Q^3 - S^2 <= 0 will be done here */

}

float sign(float S)

{

if (S > 0)

return 1;

else if (S < 0)

return -1;

else

return 0;

}