Average Error: 34.6 → 10.3
Time: 18.1s
Precision: 64
\[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\]
\[\begin{array}{l} \mathbf{if}\;b \le -3995085856351435358208:\\ \;\;\;\;\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 1\\ \mathbf{elif}\;b \le 1.369663197338588139608765037558519461426 \cdot 10^{-61}:\\ \;\;\;\;\frac{\frac{1}{a} \cdot \left(\sqrt{b \cdot b - a \cdot \left(c \cdot 4\right)} - b\right)}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{c \cdot -1}{b}\\ \end{array}\]
\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}
\begin{array}{l}
\mathbf{if}\;b \le -3995085856351435358208:\\
\;\;\;\;\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 1\\

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

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

\end{array}
double f(double a, double b, double c) {
        double r103019 = b;
        double r103020 = -r103019;
        double r103021 = r103019 * r103019;
        double r103022 = 4.0;
        double r103023 = a;
        double r103024 = r103022 * r103023;
        double r103025 = c;
        double r103026 = r103024 * r103025;
        double r103027 = r103021 - r103026;
        double r103028 = sqrt(r103027);
        double r103029 = r103020 + r103028;
        double r103030 = 2.0;
        double r103031 = r103030 * r103023;
        double r103032 = r103029 / r103031;
        return r103032;
}

double f(double a, double b, double c) {
        double r103033 = b;
        double r103034 = -3.9950858563514354e+21;
        bool r103035 = r103033 <= r103034;
        double r103036 = c;
        double r103037 = r103036 / r103033;
        double r103038 = a;
        double r103039 = r103033 / r103038;
        double r103040 = r103037 - r103039;
        double r103041 = 1.0;
        double r103042 = r103040 * r103041;
        double r103043 = 1.3696631973385881e-61;
        bool r103044 = r103033 <= r103043;
        double r103045 = 1.0;
        double r103046 = r103045 / r103038;
        double r103047 = r103033 * r103033;
        double r103048 = 4.0;
        double r103049 = r103036 * r103048;
        double r103050 = r103038 * r103049;
        double r103051 = r103047 - r103050;
        double r103052 = sqrt(r103051);
        double r103053 = r103052 - r103033;
        double r103054 = r103046 * r103053;
        double r103055 = 2.0;
        double r103056 = r103054 / r103055;
        double r103057 = -1.0;
        double r103058 = r103036 * r103057;
        double r103059 = r103058 / r103033;
        double r103060 = r103044 ? r103056 : r103059;
        double r103061 = r103035 ? r103042 : r103060;
        return r103061;
}

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.6
Target21.0
Herbie10.3
\[\begin{array}{l} \mathbf{if}\;b \lt 0.0:\\ \;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{c}{a \cdot \frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}}\\ \end{array}\]

Derivation

  1. Split input into 3 regimes
  2. if b < -3.9950858563514354e+21

    1. Initial program 35.4

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\]
    2. Simplified35.4

      \[\leadsto \color{blue}{\frac{\frac{\sqrt{b \cdot b - \left(c \cdot a\right) \cdot 4} - b}{2}}{a}}\]
    3. Taylor expanded around -inf 6.5

      \[\leadsto \color{blue}{1 \cdot \frac{c}{b} - 1 \cdot \frac{b}{a}}\]
    4. Simplified6.5

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

    if -3.9950858563514354e+21 < b < 1.3696631973385881e-61

    1. Initial program 14.6

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\]
    2. Simplified14.6

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

      \[\leadsto \frac{\frac{\sqrt{b \cdot b - \left(c \cdot a\right) \cdot 4} - b}{\color{blue}{1 \cdot 2}}}{a}\]
    5. Applied *-un-lft-identity14.6

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

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

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

      \[\leadsto \frac{\frac{1}{1}}{\color{blue}{\frac{a}{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b} \cdot 2}}\]
    9. Using strategy rm
    10. Applied associate-/r*14.7

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

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

    if 1.3696631973385881e-61 < b

    1. Initial program 53.7

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\]
    2. Simplified53.7

      \[\leadsto \color{blue}{\frac{\frac{\sqrt{b \cdot b - \left(c \cdot a\right) \cdot 4} - b}{2}}{a}}\]
    3. Taylor expanded around inf 8.2

      \[\leadsto \color{blue}{-1 \cdot \frac{c}{b}}\]
    4. Simplified8.2

      \[\leadsto \color{blue}{\frac{c \cdot -1}{b}}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification10.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -3995085856351435358208:\\ \;\;\;\;\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 1\\ \mathbf{elif}\;b \le 1.369663197338588139608765037558519461426 \cdot 10^{-61}:\\ \;\;\;\;\frac{\frac{1}{a} \cdot \left(\sqrt{b \cdot b - a \cdot \left(c \cdot 4\right)} - b\right)}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{c \cdot -1}{b}\\ \end{array}\]

Reproduce

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

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

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