double f(double a, double b, double c, double __attribute__((unused)) d) {
double r14932141 = b;
double r14932142 = -r14932141;
double r14932143 = r14932141 * r14932141;
double r14932144 = 3.0;
double r14932145 = a;
double r14932146 = r14932144 * r14932145;
double r14932147 = c;
double r14932148 = r14932146 * r14932147;
double r14932149 = r14932143 - r14932148;
double r14932150 = sqrt(r14932149);
double r14932151 = r14932142 + r14932150;
double r14932152 = r14932151 / r14932146;
return r14932152;
}
double f(double a, double b, double c, double __attribute__((unused)) d) {
double r14932153 = b;
double r14932154 = 492.3350762243114;
bool r14932155 = r14932153 <= r14932154;
double r14932156 = r14932153 * r14932153;
double r14932157 = c;
double r14932158 = 3.0;
double r14932159 = a;
double r14932160 = r14932158 * r14932159;
double r14932161 = r14932157 * r14932160;
double r14932162 = r14932156 - r14932161;
double r14932163 = sqrt(r14932162);
double r14932164 = r14932162 * r14932163;
double r14932165 = r14932156 * r14932153;
double r14932166 = r14932164 - r14932165;
double r14932167 = r14932153 * r14932163;
double r14932168 = r14932167 + r14932156;
double r14932169 = r14932163 * r14932163;
double r14932170 = r14932168 + r14932169;
double r14932171 = r14932160 * r14932170;
double r14932172 = r14932166 / r14932171;
double r14932173 = -0.5;
double r14932174 = r14932157 / r14932153;
double r14932175 = r14932173 * r14932174;
double r14932176 = r14932155 ? r14932172 : r14932175;
return r14932176;
}
\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 492.3350762243114:\\
\;\;\;\;\frac{\left(b \cdot b - c \cdot \left(3 \cdot a\right)\right) \cdot \sqrt{b \cdot b - c \cdot \left(3 \cdot a\right)} - \left(b \cdot b\right) \cdot b}{\left(3 \cdot a\right) \cdot \left(\left(b \cdot \sqrt{b \cdot b - c \cdot \left(3 \cdot a\right)} + b \cdot b\right) + \sqrt{b \cdot b - c \cdot \left(3 \cdot a\right)} \cdot \sqrt{b \cdot b - c \cdot \left(3 \cdot a\right)}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b}\\
\end{array}


Bits error versus a



Bits error versus b



Bits error versus c



Bits error versus d
if b < 492.3350762243114Initial program 16.5
Simplified16.5
rmApplied flip3--16.6
Applied associate-/l/16.6
Simplified15.9
if 492.3350762243114 < b Initial program 35.9
Simplified35.9
Taylor expanded around inf 16.7
Taylor expanded around inf 16.6
Final simplification16.3
herbie shell --seed 2019101
(FPCore (a b c d)
:name "Cubic critical, narrow range"
: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)))