\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\end{array}\begin{array}{l}
\mathbf{if}\;b \le -4.67709060099111074 \cdot 10^{67}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\mathsf{fma}\left(\frac{a \cdot c}{b}, 2, b \cdot -2\right)}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\mathsf{fma}\left(\frac{a \cdot c}{b}, 2, b \cdot -2\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 1.5185319133964099 \cdot 10^{99}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\mathsf{fma}\left(\sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c} \cdot \sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}}, \sqrt{\left(\sqrt[3]{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt[3]{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}}\right) \cdot \sqrt[3]{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}}}, -b\right)}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}\\
\end{array}double f(double a, double b, double c) {
double r36782 = b;
double r36783 = 0.0;
bool r36784 = r36782 >= r36783;
double r36785 = -r36782;
double r36786 = r36782 * r36782;
double r36787 = 4.0;
double r36788 = a;
double r36789 = r36787 * r36788;
double r36790 = c;
double r36791 = r36789 * r36790;
double r36792 = r36786 - r36791;
double r36793 = sqrt(r36792);
double r36794 = r36785 - r36793;
double r36795 = 2.0;
double r36796 = r36795 * r36788;
double r36797 = r36794 / r36796;
double r36798 = r36795 * r36790;
double r36799 = r36785 + r36793;
double r36800 = r36798 / r36799;
double r36801 = r36784 ? r36797 : r36800;
return r36801;
}
double f(double a, double b, double c) {
double r36802 = b;
double r36803 = -4.677090600991111e+67;
bool r36804 = r36802 <= r36803;
double r36805 = 0.0;
bool r36806 = r36802 >= r36805;
double r36807 = a;
double r36808 = c;
double r36809 = r36807 * r36808;
double r36810 = r36809 / r36802;
double r36811 = 2.0;
double r36812 = -2.0;
double r36813 = r36802 * r36812;
double r36814 = fma(r36810, r36811, r36813);
double r36815 = r36811 * r36807;
double r36816 = r36814 / r36815;
double r36817 = r36811 * r36808;
double r36818 = r36817 / r36814;
double r36819 = r36806 ? r36816 : r36818;
double r36820 = 1.51853191339641e+99;
bool r36821 = r36802 <= r36820;
double r36822 = -r36802;
double r36823 = r36802 * r36802;
double r36824 = 4.0;
double r36825 = r36824 * r36807;
double r36826 = r36825 * r36808;
double r36827 = r36823 - r36826;
double r36828 = sqrt(r36827);
double r36829 = r36822 - r36828;
double r36830 = r36829 / r36815;
double r36831 = cbrt(r36827);
double r36832 = r36831 * r36831;
double r36833 = sqrt(r36832);
double r36834 = cbrt(r36831);
double r36835 = r36834 * r36834;
double r36836 = r36835 * r36834;
double r36837 = sqrt(r36836);
double r36838 = fma(r36833, r36837, r36822);
double r36839 = r36817 / r36838;
double r36840 = r36806 ? r36830 : r36839;
double r36841 = 1.0;
double r36842 = r36808 / r36802;
double r36843 = r36802 / r36807;
double r36844 = r36842 - r36843;
double r36845 = r36841 * r36844;
double r36846 = r36828 - r36802;
double r36847 = r36817 / r36846;
double r36848 = r36806 ? r36845 : r36847;
double r36849 = r36821 ? r36840 : r36848;
double r36850 = r36804 ? r36819 : r36849;
return r36850;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -4.677090600991111e+67Initial program 26.8
Simplified26.8
Taylor expanded around inf 26.8
Simplified26.8
Taylor expanded around -inf 6.7
Simplified6.7
if -4.677090600991111e+67 < b < 1.51853191339641e+99Initial program 9.3
Simplified9.3
rmApplied add-cube-cbrt9.5
Applied sqrt-prod9.5
Applied fma-neg9.5
rmApplied add-cube-cbrt9.6
if 1.51853191339641e+99 < b Initial program 47.9
Simplified47.9
Taylor expanded around inf 10.4
Simplified10.4
Taylor expanded around 0 3.7
Simplified3.7
Final simplification7.9
herbie shell --seed 2019195 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 1"
(if (>= b 0.0) (/ (- (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)) (/ (* 2.0 c) (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))))))