Average Error: 20.1 → 6.3
Time: 45.5s
Precision: 64
\[\begin{array}{l} \mathbf{if}\;b \ge 0.0:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4.0 \cdot a\right) \cdot c}}{2.0 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{2.0 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4.0 \cdot a\right) \cdot c}}\\ \end{array}\]
\[\begin{array}{l} \mathbf{if}\;b \le -3.3646042166231086 \cdot 10^{+152}:\\ \;\;\;\;\begin{array}{l} \mathbf{if}\;b \ge 0.0:\\ \;\;\;\;1.0 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\ \mathbf{else}:\\ \;\;\;\;-1.0 \cdot \frac{c}{b}\\ \end{array}\\ \mathbf{elif}\;b \le 3.7351193763925545 \cdot 10^{-261}:\\ \;\;\;\;\begin{array}{l} \mathbf{if}\;b \ge 0.0:\\ \;\;\;\;\frac{\frac{c \cdot \left(a \cdot 4.0\right) + \left(b \cdot b - b \cdot b\right)}{\left(-b\right) + \sqrt{b \cdot b - c \cdot \left(a \cdot 4.0\right)}}}{2.0 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{2.0 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - c \cdot \left(a \cdot 4.0\right)}}\\ \end{array}\\ \mathbf{elif}\;b \le 4.237649019836543 \cdot 10^{+103}:\\ \;\;\;\;\begin{array}{l} \mathbf{if}\;b \ge 0.0:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - c \cdot \left(a \cdot 4.0\right)}}{2.0 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{2.0 \cdot c}{\frac{c \cdot \left(a \cdot 4.0\right) + \left(b \cdot b - b \cdot b\right)}{\left(-b\right) - \sqrt{b \cdot b - c \cdot \left(a \cdot 4.0\right)}}}\\ \end{array}\\ \mathbf{elif}\;b \ge 0.0:\\ \;\;\;\;1.0 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{2.0 \cdot c}{\left(-b\right) + \sqrt{\left(\sqrt[3]{b \cdot b - c \cdot \left(a \cdot 4.0\right)} \cdot \sqrt[3]{b \cdot b - c \cdot \left(a \cdot 4.0\right)}\right) \cdot \sqrt[3]{b \cdot b - c \cdot \left(a \cdot 4.0\right)}}}\\ \end{array}\]
\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4.0 \cdot a\right) \cdot c}}{2.0 \cdot a}\\

\mathbf{else}:\\
\;\;\;\;\frac{2.0 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4.0 \cdot a\right) \cdot c}}\\

\end{array}
\begin{array}{l}
\mathbf{if}\;b \le -3.3646042166231086 \cdot 10^{+152}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;1.0 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\

\mathbf{else}:\\
\;\;\;\;-1.0 \cdot \frac{c}{b}\\

\end{array}\\

\mathbf{elif}\;b \le 3.7351193763925545 \cdot 10^{-261}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\frac{c \cdot \left(a \cdot 4.0\right) + \left(b \cdot b - b \cdot b\right)}{\left(-b\right) + \sqrt{b \cdot b - c \cdot \left(a \cdot 4.0\right)}}}{2.0 \cdot a}\\

\mathbf{else}:\\
\;\;\;\;\frac{2.0 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - c \cdot \left(a \cdot 4.0\right)}}\\

\end{array}\\

\mathbf{elif}\;b \le 4.237649019836543 \cdot 10^{+103}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - c \cdot \left(a \cdot 4.0\right)}}{2.0 \cdot a}\\

\mathbf{else}:\\
\;\;\;\;\frac{2.0 \cdot c}{\frac{c \cdot \left(a \cdot 4.0\right) + \left(b \cdot b - b \cdot b\right)}{\left(-b\right) - \sqrt{b \cdot b - c \cdot \left(a \cdot 4.0\right)}}}\\

\end{array}\\

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

\mathbf{else}:\\
\;\;\;\;\frac{2.0 \cdot c}{\left(-b\right) + \sqrt{\left(\sqrt[3]{b \cdot b - c \cdot \left(a \cdot 4.0\right)} \cdot \sqrt[3]{b \cdot b - c \cdot \left(a \cdot 4.0\right)}\right) \cdot \sqrt[3]{b \cdot b - c \cdot \left(a \cdot 4.0\right)}}}\\

\end{array}
double f(double a, double b, double c) {
        double r1434190 = b;
        double r1434191 = 0.0;
        bool r1434192 = r1434190 >= r1434191;
        double r1434193 = -r1434190;
        double r1434194 = r1434190 * r1434190;
        double r1434195 = 4.0;
        double r1434196 = a;
        double r1434197 = r1434195 * r1434196;
        double r1434198 = c;
        double r1434199 = r1434197 * r1434198;
        double r1434200 = r1434194 - r1434199;
        double r1434201 = sqrt(r1434200);
        double r1434202 = r1434193 - r1434201;
        double r1434203 = 2.0;
        double r1434204 = r1434203 * r1434196;
        double r1434205 = r1434202 / r1434204;
        double r1434206 = r1434203 * r1434198;
        double r1434207 = r1434193 + r1434201;
        double r1434208 = r1434206 / r1434207;
        double r1434209 = r1434192 ? r1434205 : r1434208;
        return r1434209;
}

double f(double a, double b, double c) {
        double r1434210 = b;
        double r1434211 = -3.3646042166231086e+152;
        bool r1434212 = r1434210 <= r1434211;
        double r1434213 = 0.0;
        bool r1434214 = r1434210 >= r1434213;
        double r1434215 = 1.0;
        double r1434216 = c;
        double r1434217 = r1434216 / r1434210;
        double r1434218 = a;
        double r1434219 = r1434210 / r1434218;
        double r1434220 = r1434217 - r1434219;
        double r1434221 = r1434215 * r1434220;
        double r1434222 = -1.0;
        double r1434223 = r1434222 * r1434217;
        double r1434224 = r1434214 ? r1434221 : r1434223;
        double r1434225 = 3.7351193763925545e-261;
        bool r1434226 = r1434210 <= r1434225;
        double r1434227 = 4.0;
        double r1434228 = r1434218 * r1434227;
        double r1434229 = r1434216 * r1434228;
        double r1434230 = r1434210 * r1434210;
        double r1434231 = r1434230 - r1434230;
        double r1434232 = r1434229 + r1434231;
        double r1434233 = -r1434210;
        double r1434234 = r1434230 - r1434229;
        double r1434235 = sqrt(r1434234);
        double r1434236 = r1434233 + r1434235;
        double r1434237 = r1434232 / r1434236;
        double r1434238 = 2.0;
        double r1434239 = r1434238 * r1434218;
        double r1434240 = r1434237 / r1434239;
        double r1434241 = r1434238 * r1434216;
        double r1434242 = r1434241 / r1434236;
        double r1434243 = r1434214 ? r1434240 : r1434242;
        double r1434244 = 4.237649019836543e+103;
        bool r1434245 = r1434210 <= r1434244;
        double r1434246 = r1434233 - r1434235;
        double r1434247 = r1434246 / r1434239;
        double r1434248 = r1434232 / r1434246;
        double r1434249 = r1434241 / r1434248;
        double r1434250 = r1434214 ? r1434247 : r1434249;
        double r1434251 = cbrt(r1434234);
        double r1434252 = r1434251 * r1434251;
        double r1434253 = r1434252 * r1434251;
        double r1434254 = sqrt(r1434253);
        double r1434255 = r1434233 + r1434254;
        double r1434256 = r1434241 / r1434255;
        double r1434257 = r1434214 ? r1434221 : r1434256;
        double r1434258 = r1434245 ? r1434250 : r1434257;
        double r1434259 = r1434226 ? r1434243 : r1434258;
        double r1434260 = r1434212 ? r1434224 : r1434259;
        return r1434260;
}

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 4 regimes
  2. if b < -3.3646042166231086e+152

    1. Initial program 38.4

      \[\begin{array}{l} \mathbf{if}\;b \ge 0.0:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4.0 \cdot a\right) \cdot c}}{2.0 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{2.0 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4.0 \cdot a\right) \cdot c}}\\ \end{array}\]
    2. Taylor expanded around inf 38.4

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

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0.0:\\ \;\;\;\;\frac{\color{blue}{\mathsf{fma}\left(b, -2, \frac{a}{b} \cdot \left(c \cdot 2.0\right)\right)}}{2.0 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{2.0 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4.0 \cdot a\right) \cdot c}}\\ \end{array}\]
    4. Taylor expanded around 0 38.4

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0.0:\\ \;\;\;\;\color{blue}{1.0 \cdot \frac{c}{b} - 1.0 \cdot \frac{b}{a}}\\ \mathbf{else}:\\ \;\;\;\;\frac{2.0 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4.0 \cdot a\right) \cdot c}}\\ \end{array}\]
    5. Simplified38.4

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0.0:\\ \;\;\;\;\color{blue}{1.0 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{2.0 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4.0 \cdot a\right) \cdot c}}\\ \end{array}\]
    6. Using strategy rm
    7. Applied associate-/l*38.4

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0.0:\\ \;\;\;\;1.0 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{2.0}{\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4.0 \cdot a\right) \cdot c}}{c}}\\ \end{array}\]
    8. Simplified38.4

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0.0:\\ \;\;\;\;1.0 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\ \mathbf{else}:\\ \;\;\;\;\color{blue}{\frac{2.0}{\frac{\sqrt{b \cdot b - a \cdot \left(4.0 \cdot c\right)} - b}{c}}}\\ \end{array}\]
    9. Taylor expanded around -inf 1.7

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0.0:\\ \;\;\;\;1.0 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\ \mathbf{else}:\\ \;\;\;\;-1.0 \cdot \frac{c}{b}\\ \end{array}\]

    if -3.3646042166231086e+152 < b < 3.7351193763925545e-261

    1. Initial program 8.2

      \[\begin{array}{l} \mathbf{if}\;b \ge 0.0:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4.0 \cdot a\right) \cdot c}}{2.0 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{2.0 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4.0 \cdot a\right) \cdot c}}\\ \end{array}\]
    2. Using strategy rm
    3. Applied flip--8.2

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

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0.0:\\ \;\;\;\;\frac{\frac{\color{blue}{\left(b \cdot b - b \cdot b\right) + \left(4.0 \cdot a\right) \cdot c}}{\left(-b\right) + \sqrt{b \cdot b - \left(4.0 \cdot a\right) \cdot c}}}{2.0 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{2.0 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4.0 \cdot a\right) \cdot c}}\\ \end{array}\]

    if 3.7351193763925545e-261 < b < 4.237649019836543e+103

    1. Initial program 8.4

      \[\begin{array}{l} \mathbf{if}\;b \ge 0.0:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4.0 \cdot a\right) \cdot c}}{2.0 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{2.0 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4.0 \cdot a\right) \cdot c}}\\ \end{array}\]
    2. Using strategy rm
    3. Applied flip-+8.4

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

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0.0:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4.0 \cdot a\right) \cdot c}}{2.0 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{\color{blue}{2.0 \cdot c}}{\frac{\left(b \cdot b - b \cdot b\right) + \left(4.0 \cdot a\right) \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4.0 \cdot a\right) \cdot c}}}\\ \end{array}\]

    if 4.237649019836543e+103 < b

    1. Initial program 47.5

      \[\begin{array}{l} \mathbf{if}\;b \ge 0.0:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4.0 \cdot a\right) \cdot c}}{2.0 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{2.0 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4.0 \cdot a\right) \cdot c}}\\ \end{array}\]
    2. Taylor expanded around inf 10.8

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0.0:\\ \;\;\;\;\frac{\color{blue}{2.0 \cdot \frac{a \cdot c}{b} - 2 \cdot b}}{2.0 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{2.0 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4.0 \cdot a\right) \cdot c}}\\ \end{array}\]
    3. Simplified3.5

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0.0:\\ \;\;\;\;\frac{\color{blue}{\mathsf{fma}\left(b, -2, \frac{a}{b} \cdot \left(c \cdot 2.0\right)\right)}}{2.0 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{2.0 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4.0 \cdot a\right) \cdot c}}\\ \end{array}\]
    4. Taylor expanded around 0 3.2

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0.0:\\ \;\;\;\;\color{blue}{1.0 \cdot \frac{c}{b} - 1.0 \cdot \frac{b}{a}}\\ \mathbf{else}:\\ \;\;\;\;\frac{2.0 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4.0 \cdot a\right) \cdot c}}\\ \end{array}\]
    5. Simplified3.2

      \[\leadsto \begin{array}{l} \mathbf{if}\;b \ge 0.0:\\ \;\;\;\;\color{blue}{1.0 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{2.0 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4.0 \cdot a\right) \cdot c}}\\ \end{array}\]
    6. Using strategy rm
    7. Applied add-cube-cbrt3.2

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -3.3646042166231086 \cdot 10^{+152}:\\ \;\;\;\;\begin{array}{l} \mathbf{if}\;b \ge 0.0:\\ \;\;\;\;1.0 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\ \mathbf{else}:\\ \;\;\;\;-1.0 \cdot \frac{c}{b}\\ \end{array}\\ \mathbf{elif}\;b \le 3.7351193763925545 \cdot 10^{-261}:\\ \;\;\;\;\begin{array}{l} \mathbf{if}\;b \ge 0.0:\\ \;\;\;\;\frac{\frac{c \cdot \left(a \cdot 4.0\right) + \left(b \cdot b - b \cdot b\right)}{\left(-b\right) + \sqrt{b \cdot b - c \cdot \left(a \cdot 4.0\right)}}}{2.0 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{2.0 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - c \cdot \left(a \cdot 4.0\right)}}\\ \end{array}\\ \mathbf{elif}\;b \le 4.237649019836543 \cdot 10^{+103}:\\ \;\;\;\;\begin{array}{l} \mathbf{if}\;b \ge 0.0:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - c \cdot \left(a \cdot 4.0\right)}}{2.0 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{2.0 \cdot c}{\frac{c \cdot \left(a \cdot 4.0\right) + \left(b \cdot b - b \cdot b\right)}{\left(-b\right) - \sqrt{b \cdot b - c \cdot \left(a \cdot 4.0\right)}}}\\ \end{array}\\ \mathbf{elif}\;b \ge 0.0:\\ \;\;\;\;1.0 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{2.0 \cdot c}{\left(-b\right) + \sqrt{\left(\sqrt[3]{b \cdot b - c \cdot \left(a \cdot 4.0\right)} \cdot \sqrt[3]{b \cdot b - c \cdot \left(a \cdot 4.0\right)}\right) \cdot \sqrt[3]{b \cdot b - c \cdot \left(a \cdot 4.0\right)}}}\\ \end{array}\]

Reproduce

herbie shell --seed 2019165 +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)))))))