\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\begin{array}{l}
\mathbf{if}\;b \le 0.10455593216828488:\\
\;\;\;\;\frac{\frac{\frac{\mathsf{fma}\left(\left(\left(b \cdot b\right) \cdot \left(b \cdot b\right)\right) \cdot \left(b \cdot b\right), \mathsf{fma}\left(a \cdot c, -3, b \cdot b\right) \cdot \sqrt{\mathsf{fma}\left(a \cdot c, -3, b \cdot b\right)}, -\left(\left(\left(\left(b \cdot b\right) \cdot \left(b \cdot b\right)\right) \cdot \left(b \cdot b\right)\right) \cdot \left(b \cdot b\right)\right) \cdot b\right)}{\mathsf{fma}\left(b \cdot b, \mathsf{fma}\left(a \cdot c, -3, b \cdot b\right) \cdot \left(b \cdot b\right), \left(b \cdot \left(b \cdot b\right)\right) \cdot \mathsf{fma}\left(b \cdot b, \sqrt{\mathsf{fma}\left(a \cdot c, -3, b \cdot b\right)}, b \cdot \left(b \cdot b\right)\right)\right)} + \left(\left(a \cdot c\right) \cdot -3\right) \cdot \sqrt{\mathsf{fma}\left(a \cdot c, -3, 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)}}{a \cdot 3}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\mathsf{fma}\left(\frac{3}{2}, a \cdot \left(c \cdot b\right), \left(-\sqrt{\mathsf{fma}\left(a \cdot -3, c, b \cdot b\right)}\right) \cdot \left(\left(a \cdot -3\right) \cdot c\right)\right)}{\mathsf{fma}\left(\sqrt{\mathsf{fma}\left(a \cdot -3, c, b \cdot b\right)}, b, \mathsf{fma}\left(a \cdot -3, c, b \cdot b\right) + b \cdot b\right)}}{a \cdot -3}\\
\end{array}double f(double a, double b, double c) {
double r4561182 = b;
double r4561183 = -r4561182;
double r4561184 = r4561182 * r4561182;
double r4561185 = 3.0;
double r4561186 = a;
double r4561187 = r4561185 * r4561186;
double r4561188 = c;
double r4561189 = r4561187 * r4561188;
double r4561190 = r4561184 - r4561189;
double r4561191 = sqrt(r4561190);
double r4561192 = r4561183 + r4561191;
double r4561193 = r4561192 / r4561187;
return r4561193;
}
double f(double a, double b, double c) {
double r4561194 = b;
double r4561195 = 0.10455593216828488;
bool r4561196 = r4561194 <= r4561195;
double r4561197 = r4561194 * r4561194;
double r4561198 = r4561197 * r4561197;
double r4561199 = r4561198 * r4561197;
double r4561200 = a;
double r4561201 = c;
double r4561202 = r4561200 * r4561201;
double r4561203 = -3.0;
double r4561204 = fma(r4561202, r4561203, r4561197);
double r4561205 = sqrt(r4561204);
double r4561206 = r4561204 * r4561205;
double r4561207 = r4561199 * r4561197;
double r4561208 = r4561207 * r4561194;
double r4561209 = -r4561208;
double r4561210 = fma(r4561199, r4561206, r4561209);
double r4561211 = r4561204 * r4561197;
double r4561212 = r4561194 * r4561197;
double r4561213 = fma(r4561197, r4561205, r4561212);
double r4561214 = r4561212 * r4561213;
double r4561215 = fma(r4561197, r4561211, r4561214);
double r4561216 = r4561210 / r4561215;
double r4561217 = r4561202 * r4561203;
double r4561218 = r4561217 * r4561205;
double r4561219 = r4561216 + r4561218;
double r4561220 = r4561197 + r4561204;
double r4561221 = fma(r4561205, r4561194, r4561220);
double r4561222 = r4561219 / r4561221;
double r4561223 = 3.0;
double r4561224 = r4561200 * r4561223;
double r4561225 = r4561222 / r4561224;
double r4561226 = 1.5;
double r4561227 = r4561201 * r4561194;
double r4561228 = r4561200 * r4561227;
double r4561229 = r4561200 * r4561203;
double r4561230 = fma(r4561229, r4561201, r4561197);
double r4561231 = sqrt(r4561230);
double r4561232 = -r4561231;
double r4561233 = r4561229 * r4561201;
double r4561234 = r4561232 * r4561233;
double r4561235 = fma(r4561226, r4561228, r4561234);
double r4561236 = r4561230 + r4561197;
double r4561237 = fma(r4561231, r4561194, r4561236);
double r4561238 = r4561235 / r4561237;
double r4561239 = r4561238 / r4561229;
double r4561240 = r4561196 ? r4561225 : r4561239;
return r4561240;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 0.10455593216828488Initial program 23.1
Simplified23.1
rmApplied flip3--23.2
Simplified22.6
Simplified22.6
rmApplied fma-udef22.6
Applied distribute-rgt-in22.5
Applied associate--l+21.3
rmApplied flip3--21.4
Simplified21.0
Simplified21.0
if 0.10455593216828488 < b Initial program 47.3
Simplified47.3
rmApplied flip3--47.3
Simplified46.9
Simplified46.9
rmApplied fma-udef46.9
Applied distribute-rgt-in46.8
Applied associate--l+40.6
Taylor expanded around inf 9.2
rmApplied frac-2neg9.2
Simplified9.2
Simplified9.2
Final simplification10.7
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)))