Average Error: 20.0 → 7.4
Time: 5.3s
Precision: 64
\[\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 -1.37504242873730254 \cdot 10^{154}:\\ \;\;\;\;\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}{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}\\ \end{array}\\ \mathbf{elif}\;b \le 6.8918052678600522 \cdot 10^{-309}:\\ \;\;\;\;\begin{array}{l} \mathbf{if}\;b \ge 0.0:\\ \;\;\;\;\left(\sqrt[3]{\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2 \cdot a}} \cdot \sqrt[3]{\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2 \cdot a}}\right) \cdot \sqrt[3]{\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{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}\\ \mathbf{elif}\;b \le 2.1545230570852197 \cdot 10^{80}:\\ \;\;\;\;\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}{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}\\ \end{array}\\ \mathbf{elif}\;b \ge 0.0:\\ \;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{2 \cdot c}{\frac{0 + 4 \cdot \left(a \cdot c\right)}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\ \end{array}\]
\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 -1.37504242873730254 \cdot 10^{154}:\\
\;\;\;\;\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}{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}\\

\end{array}\\

\mathbf{elif}\;b \le 6.8918052678600522 \cdot 10^{-309}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\left(\sqrt[3]{\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2 \cdot a}} \cdot \sqrt[3]{\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2 \cdot a}}\right) \cdot \sqrt[3]{\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{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}\\

\mathbf{elif}\;b \le 2.1545230570852197 \cdot 10^{80}:\\
\;\;\;\;\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}{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}\\

\end{array}\\

\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\

\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\frac{0 + 4 \cdot \left(a \cdot c\right)}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\

\end{array}
double f(double a, double b, double c) {
        double r41178 = b;
        double r41179 = 0.0;
        bool r41180 = r41178 >= r41179;
        double r41181 = -r41178;
        double r41182 = r41178 * r41178;
        double r41183 = 4.0;
        double r41184 = a;
        double r41185 = r41183 * r41184;
        double r41186 = c;
        double r41187 = r41185 * r41186;
        double r41188 = r41182 - r41187;
        double r41189 = sqrt(r41188);
        double r41190 = r41181 - r41189;
        double r41191 = 2.0;
        double r41192 = r41191 * r41184;
        double r41193 = r41190 / r41192;
        double r41194 = r41191 * r41186;
        double r41195 = r41181 + r41189;
        double r41196 = r41194 / r41195;
        double r41197 = r41180 ? r41193 : r41196;
        return r41197;
}

double f(double a, double b, double c) {
        double r41198 = b;
        double r41199 = -1.3750424287373025e+154;
        bool r41200 = r41198 <= r41199;
        double r41201 = 0.0;
        bool r41202 = r41198 >= r41201;
        double r41203 = -r41198;
        double r41204 = r41198 * r41198;
        double r41205 = 4.0;
        double r41206 = a;
        double r41207 = r41205 * r41206;
        double r41208 = c;
        double r41209 = r41207 * r41208;
        double r41210 = r41204 - r41209;
        double r41211 = sqrt(r41210);
        double r41212 = r41203 - r41211;
        double r41213 = 2.0;
        double r41214 = r41213 * r41206;
        double r41215 = r41212 / r41214;
        double r41216 = r41213 * r41208;
        double r41217 = r41206 * r41208;
        double r41218 = r41217 / r41198;
        double r41219 = r41213 * r41218;
        double r41220 = 2.0;
        double r41221 = r41220 * r41198;
        double r41222 = r41219 - r41221;
        double r41223 = r41216 / r41222;
        double r41224 = r41202 ? r41215 : r41223;
        double r41225 = 6.89180526786005e-309;
        bool r41226 = r41198 <= r41225;
        double r41227 = r41222 / r41214;
        double r41228 = cbrt(r41227);
        double r41229 = r41228 * r41228;
        double r41230 = r41229 * r41228;
        double r41231 = r41203 + r41211;
        double r41232 = r41216 / r41231;
        double r41233 = r41202 ? r41230 : r41232;
        double r41234 = 2.1545230570852197e+80;
        bool r41235 = r41198 <= r41234;
        double r41236 = 1.0;
        double r41237 = r41208 / r41198;
        double r41238 = r41198 / r41206;
        double r41239 = r41237 - r41238;
        double r41240 = r41236 * r41239;
        double r41241 = 0.0;
        double r41242 = r41205 * r41217;
        double r41243 = r41241 + r41242;
        double r41244 = r41243 / r41212;
        double r41245 = r41216 / r41244;
        double r41246 = r41202 ? r41240 : r41245;
        double r41247 = r41235 ? r41224 : r41246;
        double r41248 = r41226 ? r41233 : r41247;
        double r41249 = r41200 ? r41224 : r41248;
        return r41249;
}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 3 regimes
  2. if b < -1.3750424287373025e+154 or 6.89180526786005e-309 < b < 2.1545230570852197e+80

    1. Initial program 20.8

      \[\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}\]
    2. Taylor expanded around -inf 8.1

      \[\leadsto \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}:\\ \;\;\;\;\color{blue}{\frac{2 \cdot c}{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}}\\ \end{array}\]

    if -1.3750424287373025e+154 < b < 6.89180526786005e-309

    1. Initial program 8.2

      \[\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}\]
    2. Taylor expanded around inf 8.2

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0.0:\\ \;\;\;\;\frac{\color{blue}{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}}{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}\]
    3. Using strategy rm
    4. Applied add-cube-cbrt8.2

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0.0:\\ \;\;\;\;\color{blue}{\left(\sqrt[3]{\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2 \cdot a}} \cdot \sqrt[3]{\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2 \cdot a}}\right) \cdot \sqrt[3]{\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{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}\]

    if 2.1545230570852197e+80 < b

    1. Initial program 43.0

      \[\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}\]
    2. Taylor expanded around inf 10.7

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0.0:\\ \;\;\;\;\frac{\color{blue}{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}}{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}\]
    3. Taylor expanded around 0 4.0

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0.0:\\ \;\;\;\;\color{blue}{1 \cdot \frac{c}{b} - 1 \cdot \frac{b}{a}}\\ \mathbf{else}:\\ \;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\ \end{array}\]
    4. Simplified4.0

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0.0:\\ \;\;\;\;\color{blue}{1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\ \end{array}\]
    5. Using strategy rm
    6. Applied flip-+4.0

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0.0:\\ \;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\ \mathbf{else}:\\ \;\;\;\;\color{blue}{\frac{2 \cdot c}{\frac{\left(-b\right) \cdot \left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} \cdot \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}}\\ \end{array}\]
    7. Simplified4.0

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0.0:\\ \;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{\color{blue}{2 \cdot c}}{\frac{0 + 4 \cdot \left(a \cdot c\right)}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\ \end{array}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification7.4

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -1.37504242873730254 \cdot 10^{154}:\\ \;\;\;\;\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}{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}\\ \end{array}\\ \mathbf{elif}\;b \le 6.8918052678600522 \cdot 10^{-309}:\\ \;\;\;\;\begin{array}{l} \mathbf{if}\;b \ge 0.0:\\ \;\;\;\;\left(\sqrt[3]{\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2 \cdot a}} \cdot \sqrt[3]{\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2 \cdot a}}\right) \cdot \sqrt[3]{\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{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}\\ \mathbf{elif}\;b \le 2.1545230570852197 \cdot 10^{80}:\\ \;\;\;\;\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}{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}\\ \end{array}\\ \mathbf{elif}\;b \ge 0.0:\\ \;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{2 \cdot c}{\frac{0 + 4 \cdot \left(a \cdot c\right)}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\ \end{array}\]

Reproduce

herbie shell --seed 2020021 
(FPCore (a b c)
  :name "jeff quadratic root 1"
  :precision binary64
  (if (>= b 0.0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))