Average Error: 33.6 → 7.1
Time: 10.3s
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 -3.2861348863199683 \cdot 10^{57}:\\ \;\;\;\;\frac{1}{2} \cdot \left(-2 \cdot \frac{c}{b}\right)\\ \mathbf{elif}\;b \le 2.0214567901407411 \cdot 10^{-132}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{4 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}\\ \mathbf{elif}\;b \le 4.58193200392030278 \cdot 10^{61}:\\ \;\;\;\;\frac{1}{2} \cdot \left(\left(\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right) \cdot \frac{1}{a}\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{2} \cdot \left(2 \cdot \frac{c}{b} - 2 \cdot \frac{b}{a}\right)\\ \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 -3.2861348863199683 \cdot 10^{57}:\\
\;\;\;\;\frac{1}{2} \cdot \left(-2 \cdot \frac{c}{b}\right)\\

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

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

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

\end{array}
double f(double a, double b, double c) {
        double r85221 = b;
        double r85222 = -r85221;
        double r85223 = r85221 * r85221;
        double r85224 = 4.0;
        double r85225 = a;
        double r85226 = c;
        double r85227 = r85225 * r85226;
        double r85228 = r85224 * r85227;
        double r85229 = r85223 - r85228;
        double r85230 = sqrt(r85229);
        double r85231 = r85222 - r85230;
        double r85232 = 2.0;
        double r85233 = r85232 * r85225;
        double r85234 = r85231 / r85233;
        return r85234;
}

double f(double a, double b, double c) {
        double r85235 = b;
        double r85236 = -3.286134886319968e+57;
        bool r85237 = r85235 <= r85236;
        double r85238 = 1.0;
        double r85239 = 2.0;
        double r85240 = r85238 / r85239;
        double r85241 = -2.0;
        double r85242 = c;
        double r85243 = r85242 / r85235;
        double r85244 = r85241 * r85243;
        double r85245 = r85240 * r85244;
        double r85246 = 2.021456790140741e-132;
        bool r85247 = r85235 <= r85246;
        double r85248 = 4.0;
        double r85249 = r85248 * r85242;
        double r85250 = -r85235;
        double r85251 = r85235 * r85235;
        double r85252 = a;
        double r85253 = r85252 * r85242;
        double r85254 = r85248 * r85253;
        double r85255 = r85251 - r85254;
        double r85256 = sqrt(r85255);
        double r85257 = r85250 + r85256;
        double r85258 = r85249 / r85257;
        double r85259 = r85240 * r85258;
        double r85260 = 4.581932003920303e+61;
        bool r85261 = r85235 <= r85260;
        double r85262 = r85250 - r85256;
        double r85263 = r85238 / r85252;
        double r85264 = r85262 * r85263;
        double r85265 = r85240 * r85264;
        double r85266 = r85239 * r85243;
        double r85267 = 2.0;
        double r85268 = r85235 / r85252;
        double r85269 = r85267 * r85268;
        double r85270 = r85266 - r85269;
        double r85271 = r85240 * r85270;
        double r85272 = r85261 ? r85265 : r85271;
        double r85273 = r85247 ? r85259 : r85272;
        double r85274 = r85237 ? r85245 : r85273;
        return r85274;
}

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.6
Target20.6
Herbie7.1
\[\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 4 regimes
  2. if b < -3.286134886319968e+57

    1. Initial program 57.9

      \[\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    2. Using strategy rm
    3. Applied *-un-lft-identity57.9

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

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

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

    if -3.286134886319968e+57 < b < 2.021456790140741e-132

    1. Initial program 24.7

      \[\frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    2. Using strategy rm
    3. Applied *-un-lft-identity24.7

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

      \[\leadsto \color{blue}{\frac{1}{2} \cdot \frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{a}}\]
    5. Using strategy rm
    6. Applied div-inv24.7

      \[\leadsto \frac{1}{2} \cdot \color{blue}{\left(\left(\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right) \cdot \frac{1}{a}\right)}\]
    7. Using strategy rm
    8. Applied flip--25.7

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

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

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

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

    if 2.021456790140741e-132 < b < 4.581932003920303e+61

    1. Initial program 6.6

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

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

      \[\leadsto \color{blue}{\frac{1}{2} \cdot \frac{\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{a}}\]
    5. Using strategy rm
    6. Applied div-inv6.7

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

    if 4.581932003920303e+61 < b

    1. Initial program 39.6

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

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

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

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

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

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

Reproduce

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

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

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