devo scrivere questa formula in un mio programma:

io ho fatto così:
codice:
public static double terzoGrado(double a,double b,double c,double d){
double f=(-2*Math.pow(b,3)+9*a*b*c-27*Math.pow(a,2)*d)/(54*Math.pow(a,3));
double g=(3*a*c-Math.pow(b,2))/(9*Math.pow(a,2));
double h=b/(3*a);
double risultato=(Math.pow(f+Math.sqrt(Math.pow(f,2)+Math.pow(g,3)),1/3)+Math.pow(f-Math.sqrt(Math.pow(f,2)+Math.pow(g,3)),1/3))-h;
return risultato;
}
ma questa formula dà risultati sbagliati!
Premetto che essa è la formula risolutiva delle equazioni di terzo grado,provando il codice nel main ad esempio:
codice:
System.out.println(terzoGrado(51,99,851,739));
dà come risultato:
1.3529411764705883
invece che:
-0.9202010552801512
data dai calcolatori matematici tipo derive o altri online
cosa e dove ho sbagliato nel codice?mi date una mano?io non riesco a trovare l'errore
grazie!