Average Error: 34.1 → 8.4
Time: 7.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 -5.9781116525486667988079736143201932298 \cdot 10^{136}:\\ \;\;\;\;-1 \cdot \frac{c}{b}\\ \mathbf{elif}\;b \le -3.389290229286940203318575526144880311596 \cdot 10^{-293}:\\ \;\;\;\;\frac{\frac{\frac{1}{2} \cdot \left(\left({b}^{2} - {b}^{2}\right) + 4 \cdot \left(a \cdot c\right)\right)}{a}}{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}\\ \mathbf{elif}\;b \le 1.156413586509534978562921370260547482111 \cdot 10^{129}:\\ \;\;\;\;\frac{0 - \left(\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} + b\right)}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;1 \cdot \left(\frac{c}{b} - \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 -5.9781116525486667988079736143201932298 \cdot 10^{136}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\

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

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

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

\end{array}
double f(double a, double b, double c) {
        double r110257 = b;
        double r110258 = -r110257;
        double r110259 = r110257 * r110257;
        double r110260 = 4.0;
        double r110261 = a;
        double r110262 = c;
        double r110263 = r110261 * r110262;
        double r110264 = r110260 * r110263;
        double r110265 = r110259 - r110264;
        double r110266 = sqrt(r110265);
        double r110267 = r110258 - r110266;
        double r110268 = 2.0;
        double r110269 = r110268 * r110261;
        double r110270 = r110267 / r110269;
        return r110270;
}

double f(double a, double b, double c) {
        double r110271 = b;
        double r110272 = -5.978111652548667e+136;
        bool r110273 = r110271 <= r110272;
        double r110274 = -1.0;
        double r110275 = c;
        double r110276 = r110275 / r110271;
        double r110277 = r110274 * r110276;
        double r110278 = -3.38929022928694e-293;
        bool r110279 = r110271 <= r110278;
        double r110280 = 1.0;
        double r110281 = 2.0;
        double r110282 = r110280 / r110281;
        double r110283 = 2.0;
        double r110284 = pow(r110271, r110283);
        double r110285 = r110284 - r110284;
        double r110286 = 4.0;
        double r110287 = a;
        double r110288 = r110287 * r110275;
        double r110289 = r110286 * r110288;
        double r110290 = r110285 + r110289;
        double r110291 = r110282 * r110290;
        double r110292 = r110291 / r110287;
        double r110293 = -r110271;
        double r110294 = r110271 * r110271;
        double r110295 = r110294 - r110289;
        double r110296 = sqrt(r110295);
        double r110297 = r110293 + r110296;
        double r110298 = r110292 / r110297;
        double r110299 = 1.156413586509535e+129;
        bool r110300 = r110271 <= r110299;
        double r110301 = 0.0;
        double r110302 = r110296 + r110271;
        double r110303 = r110301 - r110302;
        double r110304 = r110281 * r110287;
        double r110305 = r110303 / r110304;
        double r110306 = 1.0;
        double r110307 = r110271 / r110287;
        double r110308 = r110276 - r110307;
        double r110309 = r110306 * r110308;
        double r110310 = r110300 ? r110305 : r110309;
        double r110311 = r110279 ? r110298 : r110310;
        double r110312 = r110273 ? r110277 : r110311;
        return r110312;
}

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
Target21.2
Herbie8.4
\[\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 < -5.978111652548667e+136

    1. Initial program 61.8

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

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

    if -5.978111652548667e+136 < b < -3.38929022928694e-293

    1. Initial program 33.8

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

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

      \[\leadsto \frac{1}{\frac{2 \cdot a}{\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)}}}}}\]
    6. Applied associate-/r/33.9

      \[\leadsto \frac{1}{\color{blue}{\frac{2 \cdot a}{\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)}} \cdot \left(\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right)}}\]
    7. Applied associate-/r*33.9

      \[\leadsto \color{blue}{\frac{\frac{1}{\frac{2 \cdot a}{\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)}}}\]
    8. Simplified13.9

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

    if -3.38929022928694e-293 < b < 1.156413586509535e+129

    1. Initial program 9.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 add-exp-log12.6

      \[\leadsto \frac{\left(-b\right) - \color{blue}{e^{\log \left(\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right)}}}{2 \cdot a}\]
    4. Using strategy rm
    5. Applied neg-sub012.6

      \[\leadsto \frac{\color{blue}{\left(0 - b\right)} - e^{\log \left(\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right)}}{2 \cdot a}\]
    6. Applied associate--l-12.6

      \[\leadsto \frac{\color{blue}{0 - \left(b + e^{\log \left(\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right)}\right)}}{2 \cdot a}\]
    7. Simplified9.3

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

    if 1.156413586509535e+129 < b

    1. Initial program 54.4

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -5.9781116525486667988079736143201932298 \cdot 10^{136}:\\ \;\;\;\;-1 \cdot \frac{c}{b}\\ \mathbf{elif}\;b \le -3.389290229286940203318575526144880311596 \cdot 10^{-293}:\\ \;\;\;\;\frac{\frac{\frac{1}{2} \cdot \left(\left({b}^{2} - {b}^{2}\right) + 4 \cdot \left(a \cdot c\right)\right)}{a}}{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}\\ \mathbf{elif}\;b \le 1.156413586509534978562921370260547482111 \cdot 10^{129}:\\ \;\;\;\;\frac{0 - \left(\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} + b\right)}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019318 
(FPCore (a b c)
  :name "quadm (p42, negative)"
  :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)))