\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{\frac{1 \cdot \left(a \cdot c\right)}{\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}}{a}double f(double a, double b, double c) {
double r131103 = b;
double r131104 = -r131103;
double r131105 = r131103 * r131103;
double r131106 = 3.0;
double r131107 = a;
double r131108 = r131106 * r131107;
double r131109 = c;
double r131110 = r131108 * r131109;
double r131111 = r131105 - r131110;
double r131112 = sqrt(r131111);
double r131113 = r131104 + r131112;
double r131114 = r131113 / r131108;
return r131114;
}
double f(double a, double b, double c) {
double r131115 = 1.0;
double r131116 = a;
double r131117 = c;
double r131118 = r131116 * r131117;
double r131119 = r131115 * r131118;
double r131120 = b;
double r131121 = -r131120;
double r131122 = r131120 * r131120;
double r131123 = 3.0;
double r131124 = r131123 * r131116;
double r131125 = r131124 * r131117;
double r131126 = r131122 - r131125;
double r131127 = sqrt(r131126);
double r131128 = r131121 - r131127;
double r131129 = r131119 / r131128;
double r131130 = r131129 / r131116;
return r131130;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
Initial program 28.6
rmApplied flip-+28.6
Simplified0.6
rmApplied associate-/r*0.6
Simplified0.5
Taylor expanded around 0 0.5
Final simplification0.5
herbie shell --seed 2020056
(FPCore (a b c)
:name "Cubic critical, narrow range"
:precision binary64
:pre (and (< 1.0536712127723509e-08 a 94906265.62425156) (< 1.0536712127723509e-08 b 94906265.62425156) (< 1.0536712127723509e-08 c 94906265.62425156))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))