Average Error: 34.1 → 10.6
Time: 4.9s
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 -2.2375225949334019 \cdot 10^{57}:\\ \;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\ \mathbf{elif}\;b \le 8.67970785211126629 \cdot 10^{-40}:\\ \;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;-1 \cdot \frac{c}{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 -2.2375225949334019 \cdot 10^{57}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\

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

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

\end{array}
double f(double a, double b, double c) {
        double r88097 = b;
        double r88098 = -r88097;
        double r88099 = r88097 * r88097;
        double r88100 = 4.0;
        double r88101 = a;
        double r88102 = r88100 * r88101;
        double r88103 = c;
        double r88104 = r88102 * r88103;
        double r88105 = r88099 - r88104;
        double r88106 = sqrt(r88105);
        double r88107 = r88098 + r88106;
        double r88108 = 2.0;
        double r88109 = r88108 * r88101;
        double r88110 = r88107 / r88109;
        return r88110;
}

double f(double a, double b, double c) {
        double r88111 = b;
        double r88112 = -2.237522594933402e+57;
        bool r88113 = r88111 <= r88112;
        double r88114 = 1.0;
        double r88115 = c;
        double r88116 = r88115 / r88111;
        double r88117 = a;
        double r88118 = r88111 / r88117;
        double r88119 = r88116 - r88118;
        double r88120 = r88114 * r88119;
        double r88121 = 8.679707852111266e-40;
        bool r88122 = r88111 <= r88121;
        double r88123 = -r88111;
        double r88124 = r88111 * r88111;
        double r88125 = 4.0;
        double r88126 = r88125 * r88117;
        double r88127 = r88126 * r88115;
        double r88128 = r88124 - r88127;
        double r88129 = sqrt(r88128);
        double r88130 = r88123 + r88129;
        double r88131 = 2.0;
        double r88132 = r88131 * r88117;
        double r88133 = r88130 / r88132;
        double r88134 = -1.0;
        double r88135 = r88134 * r88116;
        double r88136 = r88122 ? r88133 : r88135;
        double r88137 = r88113 ? r88120 : r88136;
        return r88137;
}

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.6
\[\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 < -2.237522594933402e+57

    1. Initial program 38.1

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

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

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

    if -2.237522594933402e+57 < b < 8.679707852111266e-40

    1. Initial program 15.3

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

    if 8.679707852111266e-40 < b

    1. Initial program 55.1

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

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

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

Reproduce

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

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

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