Average Error: 33.0 → 10.8
Time: 17.2s
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.9862044966069494 \cdot 10^{+41}:\\ \;\;\;\;\frac{c}{b} - \frac{b}{a}\\ \mathbf{elif}\;b \le 1.990519652731023 \cdot 10^{-106}:\\ \;\;\;\;\frac{\left(-b\right) + \sqrt{\left(c \cdot a\right) \cdot -4 + b \cdot b}}{a \cdot 2}\\ \mathbf{elif}\;b \le 1.0350377446088803 \cdot 10^{-69}:\\ \;\;\;\;-\frac{c}{b}\\ \mathbf{elif}\;b \le 3.325219738594455 \cdot 10^{-21}:\\ \;\;\;\;\frac{\frac{b \cdot b - \left(\left(c \cdot a\right) \cdot -4 + b \cdot b\right)}{\left(-b\right) - \sqrt{\left(c \cdot a\right) \cdot -4 + b \cdot b}}}{a \cdot 2}\\ \mathbf{else}:\\ \;\;\;\;-\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.9862044966069494 \cdot 10^{+41}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\

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

\mathbf{elif}\;b \le 1.0350377446088803 \cdot 10^{-69}:\\
\;\;\;\;-\frac{c}{b}\\

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

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

\end{array}
double f(double a, double b, double c) {
        double r4478161 = b;
        double r4478162 = -r4478161;
        double r4478163 = r4478161 * r4478161;
        double r4478164 = 4.0;
        double r4478165 = a;
        double r4478166 = r4478164 * r4478165;
        double r4478167 = c;
        double r4478168 = r4478166 * r4478167;
        double r4478169 = r4478163 - r4478168;
        double r4478170 = sqrt(r4478169);
        double r4478171 = r4478162 + r4478170;
        double r4478172 = 2.0;
        double r4478173 = r4478172 * r4478165;
        double r4478174 = r4478171 / r4478173;
        return r4478174;
}

double f(double a, double b, double c) {
        double r4478175 = b;
        double r4478176 = -2.9862044966069494e+41;
        bool r4478177 = r4478175 <= r4478176;
        double r4478178 = c;
        double r4478179 = r4478178 / r4478175;
        double r4478180 = a;
        double r4478181 = r4478175 / r4478180;
        double r4478182 = r4478179 - r4478181;
        double r4478183 = 1.990519652731023e-106;
        bool r4478184 = r4478175 <= r4478183;
        double r4478185 = -r4478175;
        double r4478186 = r4478178 * r4478180;
        double r4478187 = -4.0;
        double r4478188 = r4478186 * r4478187;
        double r4478189 = r4478175 * r4478175;
        double r4478190 = r4478188 + r4478189;
        double r4478191 = sqrt(r4478190);
        double r4478192 = r4478185 + r4478191;
        double r4478193 = 2.0;
        double r4478194 = r4478180 * r4478193;
        double r4478195 = r4478192 / r4478194;
        double r4478196 = 1.0350377446088803e-69;
        bool r4478197 = r4478175 <= r4478196;
        double r4478198 = -r4478179;
        double r4478199 = 3.325219738594455e-21;
        bool r4478200 = r4478175 <= r4478199;
        double r4478201 = r4478189 - r4478190;
        double r4478202 = r4478185 - r4478191;
        double r4478203 = r4478201 / r4478202;
        double r4478204 = r4478203 / r4478194;
        double r4478205 = r4478200 ? r4478204 : r4478198;
        double r4478206 = r4478197 ? r4478198 : r4478205;
        double r4478207 = r4478184 ? r4478195 : r4478206;
        double r4478208 = r4478177 ? r4478182 : r4478207;
        return r4478208;
}

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.0
Target20.1
Herbie10.8
\[\begin{array}{l} \mathbf{if}\;b \lt 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 4 regimes
  2. if b < -2.9862044966069494e+41

    1. Initial program 34.1

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

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

    if -2.9862044966069494e+41 < b < 1.990519652731023e-106

    1. Initial program 12.8

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

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

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

    if 1.990519652731023e-106 < b < 1.0350377446088803e-69 or 3.325219738594455e-21 < b

    1. Initial program 53.1

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

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

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

    if 1.0350377446088803e-69 < b < 3.325219738594455e-21

    1. Initial program 35.7

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

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

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -2.9862044966069494 \cdot 10^{+41}:\\ \;\;\;\;\frac{c}{b} - \frac{b}{a}\\ \mathbf{elif}\;b \le 1.990519652731023 \cdot 10^{-106}:\\ \;\;\;\;\frac{\left(-b\right) + \sqrt{\left(c \cdot a\right) \cdot -4 + b \cdot b}}{a \cdot 2}\\ \mathbf{elif}\;b \le 1.0350377446088803 \cdot 10^{-69}:\\ \;\;\;\;-\frac{c}{b}\\ \mathbf{elif}\;b \le 3.325219738594455 \cdot 10^{-21}:\\ \;\;\;\;\frac{\frac{b \cdot b - \left(\left(c \cdot a\right) \cdot -4 + b \cdot b\right)}{\left(-b\right) - \sqrt{\left(c \cdot a\right) \cdot -4 + b \cdot b}}}{a \cdot 2}\\ \mathbf{else}:\\ \;\;\;\;-\frac{c}{b}\\ \end{array}\]

Reproduce

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

  :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)))