Average Error: 34.3 → 10.5
Time: 42.0s
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.264659490877097952776006549579654784856 \cdot 10^{-67}:\\ \;\;\;\;-1 \cdot \frac{c}{b}\\ \mathbf{elif}\;b \le 0.173897874048477174557802982235443778336:\\ \;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - a \cdot \left(4 \cdot c\right)}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 1\\ \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.264659490877097952776006549579654784856 \cdot 10^{-67}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\

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

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

\end{array}
double f(double a, double b, double c) {
        double r4467155 = b;
        double r4467156 = -r4467155;
        double r4467157 = r4467155 * r4467155;
        double r4467158 = 4.0;
        double r4467159 = a;
        double r4467160 = c;
        double r4467161 = r4467159 * r4467160;
        double r4467162 = r4467158 * r4467161;
        double r4467163 = r4467157 - r4467162;
        double r4467164 = sqrt(r4467163);
        double r4467165 = r4467156 - r4467164;
        double r4467166 = 2.0;
        double r4467167 = r4467166 * r4467159;
        double r4467168 = r4467165 / r4467167;
        return r4467168;
}

double f(double a, double b, double c) {
        double r4467169 = b;
        double r4467170 = -1.264659490877098e-67;
        bool r4467171 = r4467169 <= r4467170;
        double r4467172 = -1.0;
        double r4467173 = c;
        double r4467174 = r4467173 / r4467169;
        double r4467175 = r4467172 * r4467174;
        double r4467176 = 0.17389787404847717;
        bool r4467177 = r4467169 <= r4467176;
        double r4467178 = -r4467169;
        double r4467179 = r4467169 * r4467169;
        double r4467180 = a;
        double r4467181 = 4.0;
        double r4467182 = r4467181 * r4467173;
        double r4467183 = r4467180 * r4467182;
        double r4467184 = r4467179 - r4467183;
        double r4467185 = sqrt(r4467184);
        double r4467186 = r4467178 - r4467185;
        double r4467187 = 2.0;
        double r4467188 = r4467187 * r4467180;
        double r4467189 = r4467186 / r4467188;
        double r4467190 = r4467169 / r4467180;
        double r4467191 = r4467174 - r4467190;
        double r4467192 = 1.0;
        double r4467193 = r4467191 * r4467192;
        double r4467194 = r4467177 ? r4467189 : r4467193;
        double r4467195 = r4467171 ? r4467175 : r4467194;
        return r4467195;
}

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.3
Target21.3
Herbie10.5
\[\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 3 regimes
  2. if b < -1.264659490877098e-67

    1. Initial program 53.5

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

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

    if -1.264659490877098e-67 < b < 0.17389787404847717

    1. Initial program 15.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 div-inv15.4

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

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

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

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

      \[\leadsto \color{blue}{\frac{-\left(b + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right)}{2}} \cdot \frac{1}{a}\]
    9. Using strategy rm
    10. Applied frac-times15.3

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

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

    if 0.17389787404847717 < b

    1. Initial program 31.2

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

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

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

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

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

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

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

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

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

Reproduce

herbie shell --seed 2019168 
(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)))