Average Error: 33.7 → 9.1
Time: 17.2s
Precision: 64
\[\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
\[\begin{array}{l} \mathbf{if}\;b \le -1.6806111715441095 \cdot 10^{-29}:\\ \;\;\;\;-1 \cdot \frac{c}{b}\\ \mathbf{elif}\;b \le -2.5349830112643849 \cdot 10^{-83}:\\ \;\;\;\;\frac{\frac{4 \cdot \left(a \cdot c\right)}{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}}{2 \cdot a}\\ \mathbf{elif}\;b \le 5.9911994584698608 \cdot 10^{103}:\\ \;\;\;\;\frac{1}{\frac{2 \cdot a}{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}\\ \mathbf{else}:\\ \;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\ \end{array}\]
\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}
\begin{array}{l}
\mathbf{if}\;b \le -1.6806111715441095 \cdot 10^{-29}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\

\mathbf{elif}\;b \le -2.5349830112643849 \cdot 10^{-83}:\\
\;\;\;\;\frac{\frac{4 \cdot \left(a \cdot c\right)}{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}}{2 \cdot a}\\

\mathbf{elif}\;b \le 5.9911994584698608 \cdot 10^{103}:\\
\;\;\;\;\frac{1}{\frac{2 \cdot a}{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}\\

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

\end{array}
double f(double a, double b, double c) {
        double r80457 = b;
        double r80458 = -r80457;
        double r80459 = r80457 * r80457;
        double r80460 = 4.0;
        double r80461 = a;
        double r80462 = c;
        double r80463 = r80461 * r80462;
        double r80464 = r80460 * r80463;
        double r80465 = r80459 - r80464;
        double r80466 = sqrt(r80465);
        double r80467 = r80458 - r80466;
        double r80468 = 2.0;
        double r80469 = r80468 * r80461;
        double r80470 = r80467 / r80469;
        return r80470;
}

double f(double a, double b, double c) {
        double r80471 = b;
        double r80472 = -1.6806111715441095e-29;
        bool r80473 = r80471 <= r80472;
        double r80474 = -1.0;
        double r80475 = c;
        double r80476 = r80475 / r80471;
        double r80477 = r80474 * r80476;
        double r80478 = -2.534983011264385e-83;
        bool r80479 = r80471 <= r80478;
        double r80480 = 4.0;
        double r80481 = a;
        double r80482 = r80481 * r80475;
        double r80483 = r80480 * r80482;
        double r80484 = r80471 * r80471;
        double r80485 = r80484 - r80483;
        double r80486 = sqrt(r80485);
        double r80487 = r80486 - r80471;
        double r80488 = r80483 / r80487;
        double r80489 = 2.0;
        double r80490 = r80489 * r80481;
        double r80491 = r80488 / r80490;
        double r80492 = 5.991199458469861e+103;
        bool r80493 = r80471 <= r80492;
        double r80494 = 1.0;
        double r80495 = -r80471;
        double r80496 = r80495 - r80486;
        double r80497 = r80490 / r80496;
        double r80498 = r80494 / r80497;
        double r80499 = 1.0;
        double r80500 = r80471 / r80481;
        double r80501 = r80476 - r80500;
        double r80502 = r80499 * r80501;
        double r80503 = r80493 ? r80498 : r80502;
        double r80504 = r80479 ? r80491 : r80503;
        double r80505 = r80473 ? r80477 : r80504;
        return r80505;
}

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

Target

Original33.7
Target20.6
Herbie9.1
\[\begin{array}{l} \mathbf{if}\;b \lt 0.0:\\ \;\;\;\;\frac{c}{a \cdot \frac{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\\ \end{array}\]

Derivation

  1. Split input into 4 regimes
  2. if b < -1.6806111715441095e-29

    1. Initial program 54.8

      \[\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    2. Taylor expanded around -inf 6.6

      \[\leadsto \color{blue}{-1 \cdot \frac{c}{b}}\]

    if -1.6806111715441095e-29 < b < -2.534983011264385e-83

    1. Initial program 32.9

      \[\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    2. Using strategy rm
    3. Applied flip--32.9

      \[\leadsto \frac{\color{blue}{\frac{\left(-b\right) \cdot \left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} \cdot \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}}{2 \cdot a}\]
    4. Simplified16.9

      \[\leadsto \frac{\frac{\color{blue}{0 + 4 \cdot \left(a \cdot c\right)}}{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}{2 \cdot a}\]
    5. Simplified16.9

      \[\leadsto \frac{\frac{0 + 4 \cdot \left(a \cdot c\right)}{\color{blue}{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}}}{2 \cdot a}\]

    if -2.534983011264385e-83 < b < 5.991199458469861e+103

    1. Initial program 12.0

      \[\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    2. Using strategy rm
    3. Applied clear-num12.1

      \[\leadsto \color{blue}{\frac{1}{\frac{2 \cdot a}{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}}\]

    if 5.991199458469861e+103 < b

    1. Initial program 48.7

      \[\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    2. Taylor expanded around inf 4.1

      \[\leadsto \color{blue}{1 \cdot \frac{c}{b} - 1 \cdot \frac{b}{a}}\]
    3. Simplified4.1

      \[\leadsto \color{blue}{1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification9.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -1.6806111715441095 \cdot 10^{-29}:\\ \;\;\;\;-1 \cdot \frac{c}{b}\\ \mathbf{elif}\;b \le -2.5349830112643849 \cdot 10^{-83}:\\ \;\;\;\;\frac{\frac{4 \cdot \left(a \cdot c\right)}{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}}{2 \cdot a}\\ \mathbf{elif}\;b \le 5.9911994584698608 \cdot 10^{103}:\\ \;\;\;\;\frac{1}{\frac{2 \cdot a}{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}\\ \mathbf{else}:\\ \;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019198 
(FPCore (a b c)
  :name "The quadratic formula (r2)"

  :herbie-target
  (if (< b 0.0) (/ c (* a (/ (+ (- b) (sqrt (- (* b b) (* 4.0 (* a c))))) (* 2.0 a)))) (/ (- (- b) (sqrt (- (* b b) (* 4.0 (* a c))))) (* 2.0 a)))

  (/ (- (- b) (sqrt (- (* b b) (* 4.0 (* a c))))) (* 2.0 a)))