Average Error: 34.1 → 10.9
Time: 12.9s
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 -3.203999247190537828410646770952979837777 \cdot 10^{59}:\\ \;\;\;\;-1 \cdot \frac{c}{b}\\ \mathbf{elif}\;b \le 5.330769455174493332636713829620953568317 \cdot 10^{-168}:\\ \;\;\;\;\frac{1}{\frac{2}{\frac{4 \cdot c}{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}}}\\ \mathbf{elif}\;b \le 3.705250296078930544323375298653357812472 \cdot 10^{-110}:\\ \;\;\;\;\frac{-2 \cdot b}{2 \cdot a}\\ \mathbf{elif}\;b \le 1.031355438277997973881064791355113167797 \cdot 10^{-63}:\\ \;\;\;\;\frac{\frac{\left(4 \cdot c\right) \cdot a}{\frac{\left(b \cdot b - 4 \cdot \left(a \cdot c\right)\right) - b \cdot b}{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} + b}}}{2 \cdot a}\\ \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 -3.203999247190537828410646770952979837777 \cdot 10^{59}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\

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

\mathbf{elif}\;b \le 3.705250296078930544323375298653357812472 \cdot 10^{-110}:\\
\;\;\;\;\frac{-2 \cdot b}{2 \cdot a}\\

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

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

\end{array}
double f(double a, double b, double c) {
        double r108348 = b;
        double r108349 = -r108348;
        double r108350 = r108348 * r108348;
        double r108351 = 4.0;
        double r108352 = a;
        double r108353 = c;
        double r108354 = r108352 * r108353;
        double r108355 = r108351 * r108354;
        double r108356 = r108350 - r108355;
        double r108357 = sqrt(r108356);
        double r108358 = r108349 - r108357;
        double r108359 = 2.0;
        double r108360 = r108359 * r108352;
        double r108361 = r108358 / r108360;
        return r108361;
}

double f(double a, double b, double c) {
        double r108362 = b;
        double r108363 = -3.203999247190538e+59;
        bool r108364 = r108362 <= r108363;
        double r108365 = -1.0;
        double r108366 = c;
        double r108367 = r108366 / r108362;
        double r108368 = r108365 * r108367;
        double r108369 = 5.330769455174493e-168;
        bool r108370 = r108362 <= r108369;
        double r108371 = 1.0;
        double r108372 = 2.0;
        double r108373 = 4.0;
        double r108374 = r108373 * r108366;
        double r108375 = r108362 * r108362;
        double r108376 = a;
        double r108377 = r108376 * r108366;
        double r108378 = r108373 * r108377;
        double r108379 = r108375 - r108378;
        double r108380 = sqrt(r108379);
        double r108381 = r108380 - r108362;
        double r108382 = r108374 / r108381;
        double r108383 = r108372 / r108382;
        double r108384 = r108371 / r108383;
        double r108385 = 3.7052502960789305e-110;
        bool r108386 = r108362 <= r108385;
        double r108387 = -2.0;
        double r108388 = r108387 * r108362;
        double r108389 = r108372 * r108376;
        double r108390 = r108388 / r108389;
        double r108391 = 1.031355438277998e-63;
        bool r108392 = r108362 <= r108391;
        double r108393 = r108374 * r108376;
        double r108394 = r108379 - r108375;
        double r108395 = r108380 + r108362;
        double r108396 = r108394 / r108395;
        double r108397 = r108393 / r108396;
        double r108398 = r108397 / r108389;
        double r108399 = 1.0;
        double r108400 = r108362 / r108376;
        double r108401 = r108367 - r108400;
        double r108402 = r108399 * r108401;
        double r108403 = r108392 ? r108398 : r108402;
        double r108404 = r108386 ? r108390 : r108403;
        double r108405 = r108370 ? r108384 : r108404;
        double r108406 = r108364 ? r108368 : r108405;
        return r108406;
}

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

Original34.1
Target20.9
Herbie10.9
\[\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 5 regimes
  2. if b < -3.203999247190538e+59

    1. Initial program 57.1

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

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

    if -3.203999247190538e+59 < b < 5.330769455174493e-168

    1. Initial program 26.8

      \[\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--27.0

      \[\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.4

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

      \[\leadsto \frac{\frac{0 + \left(4 \cdot c\right) \cdot a}{\color{blue}{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}}}{2 \cdot a}\]
    6. Using strategy rm
    7. Applied *-un-lft-identity16.4

      \[\leadsto \frac{\frac{0 + \left(4 \cdot c\right) \cdot a}{\color{blue}{1 \cdot \left(\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b\right)}}}{2 \cdot a}\]
    8. Applied *-un-lft-identity16.4

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

      \[\leadsto \frac{\color{blue}{\frac{1}{1} \cdot \frac{0 + \left(4 \cdot c\right) \cdot a}{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}}}{2 \cdot a}\]
    10. Applied associate-/l*16.5

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

      \[\leadsto \frac{\frac{1}{1}}{\color{blue}{\frac{2 \cdot a}{\frac{\left(4 \cdot c\right) \cdot a}{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}}}}\]
    12. Using strategy rm
    13. Applied associate-/l*16.5

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

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

    if 5.330769455174493e-168 < b < 3.7052502960789305e-110

    1. Initial program 6.3

      \[\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--21.5

      \[\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. Simplified21.7

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

      \[\leadsto \frac{\frac{0 + \left(4 \cdot c\right) \cdot a}{\color{blue}{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}}}{2 \cdot a}\]
    6. Taylor expanded around 0 44.9

      \[\leadsto \frac{\color{blue}{-2 \cdot b}}{2 \cdot a}\]

    if 3.7052502960789305e-110 < b < 1.031355438277998e-63

    1. Initial program 6.6

      \[\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--29.2

      \[\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. Simplified29.5

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

      \[\leadsto \frac{\frac{0 + \left(4 \cdot c\right) \cdot a}{\color{blue}{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}}}{2 \cdot a}\]
    6. Using strategy rm
    7. Applied flip--29.5

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

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

    if 1.031355438277998e-63 < b

    1. Initial program 28.0

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -3.203999247190537828410646770952979837777 \cdot 10^{59}:\\ \;\;\;\;-1 \cdot \frac{c}{b}\\ \mathbf{elif}\;b \le 5.330769455174493332636713829620953568317 \cdot 10^{-168}:\\ \;\;\;\;\frac{1}{\frac{2}{\frac{4 \cdot c}{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}}}\\ \mathbf{elif}\;b \le 3.705250296078930544323375298653357812472 \cdot 10^{-110}:\\ \;\;\;\;\frac{-2 \cdot b}{2 \cdot a}\\ \mathbf{elif}\;b \le 1.031355438277997973881064791355113167797 \cdot 10^{-63}:\\ \;\;\;\;\frac{\frac{\left(4 \cdot c\right) \cdot a}{\frac{\left(b \cdot b - 4 \cdot \left(a \cdot c\right)\right) - b \cdot b}{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} + b}}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\ \end{array}\]

Reproduce

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

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

  (/ (- (- b) (sqrt (- (* b b) (* 4 (* a c))))) (* 2 a)))