Average Error: 33.1 → 9.3
Time: 18.7s
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.1783617127509567 \cdot 10^{+133}:\\ \;\;\;\;\frac{c}{b} - \frac{b}{a}\\ \mathbf{elif}\;b \le 1.1310477508076152 \cdot 10^{-72}:\\ \;\;\;\;\frac{\sqrt{b \cdot b - \left(a \cdot 4\right) \cdot c} - b}{a \cdot 2}\\ \mathbf{else}:\\ \;\;\;\;-\frac{c}{b}\\ \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.1783617127509567 \cdot 10^{+133}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\

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

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

\end{array}
double f(double a, double b, double c) {
        double r2235685 = b;
        double r2235686 = -r2235685;
        double r2235687 = r2235685 * r2235685;
        double r2235688 = 4.0;
        double r2235689 = a;
        double r2235690 = c;
        double r2235691 = r2235689 * r2235690;
        double r2235692 = r2235688 * r2235691;
        double r2235693 = r2235687 - r2235692;
        double r2235694 = sqrt(r2235693);
        double r2235695 = r2235686 + r2235694;
        double r2235696 = 2.0;
        double r2235697 = r2235696 * r2235689;
        double r2235698 = r2235695 / r2235697;
        return r2235698;
}

double f(double a, double b, double c) {
        double r2235699 = b;
        double r2235700 = -1.1783617127509567e+133;
        bool r2235701 = r2235699 <= r2235700;
        double r2235702 = c;
        double r2235703 = r2235702 / r2235699;
        double r2235704 = a;
        double r2235705 = r2235699 / r2235704;
        double r2235706 = r2235703 - r2235705;
        double r2235707 = 1.1310477508076152e-72;
        bool r2235708 = r2235699 <= r2235707;
        double r2235709 = r2235699 * r2235699;
        double r2235710 = 4.0;
        double r2235711 = r2235704 * r2235710;
        double r2235712 = r2235711 * r2235702;
        double r2235713 = r2235709 - r2235712;
        double r2235714 = sqrt(r2235713);
        double r2235715 = r2235714 - r2235699;
        double r2235716 = 2.0;
        double r2235717 = r2235704 * r2235716;
        double r2235718 = r2235715 / r2235717;
        double r2235719 = -r2235703;
        double r2235720 = r2235708 ? r2235718 : r2235719;
        double r2235721 = r2235701 ? r2235706 : r2235720;
        return r2235721;
}

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.1
Target20.3
Herbie9.3
\[\begin{array}{l} \mathbf{if}\;b \lt 0:\\ \;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{c}{a \cdot \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 3 regimes
  2. if b < -1.1783617127509567e+133

    1. Initial program 54.0

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

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

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

    if -1.1783617127509567e+133 < b < 1.1310477508076152e-72

    1. Initial program 11.6

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

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

    if 1.1310477508076152e-72 < b

    1. Initial program 52.6

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -1.1783617127509567 \cdot 10^{+133}:\\ \;\;\;\;\frac{c}{b} - \frac{b}{a}\\ \mathbf{elif}\;b \le 1.1310477508076152 \cdot 10^{-72}:\\ \;\;\;\;\frac{\sqrt{b \cdot b - \left(a \cdot 4\right) \cdot c} - b}{a \cdot 2}\\ \mathbf{else}:\\ \;\;\;\;-\frac{c}{b}\\ \end{array}\]

Reproduce

herbie shell --seed 2019137 
(FPCore (a b c)
  :name "quadp (p42, positive)"

  :herbie-target
  (if (< b 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)))