\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\frac{\frac{\sqrt{\mathsf{fma}\left(a \cdot c, -3, b \cdot b\right)} \cdot \left(\left(a \cdot c\right) \cdot -3\right) + \left(b \cdot b\right) \cdot \frac{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right) \cdot \sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)} - b \cdot \left(b \cdot b\right)}{\mathsf{fma}\left(b, \sqrt{\mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}, b \cdot b\right) + \mathsf{fma}\left(-3, a \cdot c, b \cdot b\right)}}{\mathsf{fma}\left(\sqrt{\mathsf{fma}\left(a \cdot c, -3, b \cdot b\right)}, b, b \cdot b + \mathsf{fma}\left(a \cdot c, -3, b \cdot b\right)\right)}}{3 \cdot a}double f(double a, double b, double c) {
double r5408508 = b;
double r5408509 = -r5408508;
double r5408510 = r5408508 * r5408508;
double r5408511 = 3.0;
double r5408512 = a;
double r5408513 = r5408511 * r5408512;
double r5408514 = c;
double r5408515 = r5408513 * r5408514;
double r5408516 = r5408510 - r5408515;
double r5408517 = sqrt(r5408516);
double r5408518 = r5408509 + r5408517;
double r5408519 = r5408518 / r5408513;
return r5408519;
}
double f(double a, double b, double c) {
double r5408520 = a;
double r5408521 = c;
double r5408522 = r5408520 * r5408521;
double r5408523 = -3.0;
double r5408524 = b;
double r5408525 = r5408524 * r5408524;
double r5408526 = fma(r5408522, r5408523, r5408525);
double r5408527 = sqrt(r5408526);
double r5408528 = r5408522 * r5408523;
double r5408529 = r5408527 * r5408528;
double r5408530 = fma(r5408523, r5408522, r5408525);
double r5408531 = sqrt(r5408530);
double r5408532 = r5408530 * r5408531;
double r5408533 = r5408524 * r5408525;
double r5408534 = r5408532 - r5408533;
double r5408535 = fma(r5408524, r5408531, r5408525);
double r5408536 = r5408535 + r5408530;
double r5408537 = r5408534 / r5408536;
double r5408538 = r5408525 * r5408537;
double r5408539 = r5408529 + r5408538;
double r5408540 = r5408525 + r5408526;
double r5408541 = fma(r5408527, r5408524, r5408540);
double r5408542 = r5408539 / r5408541;
double r5408543 = 3.0;
double r5408544 = r5408543 * r5408520;
double r5408545 = r5408542 / r5408544;
return r5408545;
}



Bits error versus a



Bits error versus b



Bits error versus c
Initial program 44.1
Simplified44.1
rmApplied flip3--44.2
Simplified43.8
Simplified43.8
rmApplied fma-udef43.7
Applied distribute-lft-in43.7
Applied associate--l+38.0
rmApplied distribute-rgt-out--37.8
rmApplied flip3--37.8
Simplified37.5
Simplified37.5
Final simplification37.5
herbie shell --seed 2019162 +o rules:numerics
(FPCore (a b c)
:name "Cubic critical, medium range"
:pre (and (< 1.1102230246251565e-16 a 9007199254740992.0) (< 1.1102230246251565e-16 b 9007199254740992.0) (< 1.1102230246251565e-16 c 9007199254740992.0))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))