Average Error: 34.2 → 8.8
Time: 13.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 -2.836428028485715319451603232683389323254 \cdot 10^{57}:\\ \;\;\;\;\left(-1 \cdot \frac{c}{b}\right) \cdot 1\\ \mathbf{elif}\;b \le 3.453257280209626363179514948804869253532 \cdot 10^{-290}:\\ \;\;\;\;\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 6.390820394725621542655113374079691934397 \cdot 10^{97}:\\ \;\;\;\;\frac{\frac{1 \cdot \left(\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right)}{2}}{a} \cdot 1\\ \mathbf{else}:\\ \;\;\;\;-1 \cdot \frac{b}{a}\\ \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 -2.836428028485715319451603232683389323254 \cdot 10^{57}:\\
\;\;\;\;\left(-1 \cdot \frac{c}{b}\right) \cdot 1\\

\mathbf{elif}\;b \le 3.453257280209626363179514948804869253532 \cdot 10^{-290}:\\
\;\;\;\;\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 6.390820394725621542655113374079691934397 \cdot 10^{97}:\\
\;\;\;\;\frac{\frac{1 \cdot \left(\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right)}{2}}{a} \cdot 1\\

\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{b}{a}\\

\end{array}
double f(double a, double b, double c) {
        double r91636 = b;
        double r91637 = -r91636;
        double r91638 = r91636 * r91636;
        double r91639 = 4.0;
        double r91640 = a;
        double r91641 = c;
        double r91642 = r91640 * r91641;
        double r91643 = r91639 * r91642;
        double r91644 = r91638 - r91643;
        double r91645 = sqrt(r91644);
        double r91646 = r91637 - r91645;
        double r91647 = 2.0;
        double r91648 = r91647 * r91640;
        double r91649 = r91646 / r91648;
        return r91649;
}

double f(double a, double b, double c) {
        double r91650 = b;
        double r91651 = -2.8364280284857153e+57;
        bool r91652 = r91650 <= r91651;
        double r91653 = -1.0;
        double r91654 = c;
        double r91655 = r91654 / r91650;
        double r91656 = r91653 * r91655;
        double r91657 = 1.0;
        double r91658 = r91656 * r91657;
        double r91659 = 3.4532572802096264e-290;
        bool r91660 = r91650 <= r91659;
        double r91661 = 2.0;
        double r91662 = r91657 / r91661;
        double r91663 = 2.0;
        double r91664 = pow(r91650, r91663);
        double r91665 = r91664 - r91664;
        double r91666 = 4.0;
        double r91667 = a;
        double r91668 = r91667 * r91654;
        double r91669 = r91666 * r91668;
        double r91670 = r91665 + r91669;
        double r91671 = r91662 * r91670;
        double r91672 = r91671 / r91667;
        double r91673 = -r91650;
        double r91674 = r91650 * r91650;
        double r91675 = r91674 - r91669;
        double r91676 = sqrt(r91675);
        double r91677 = r91673 + r91676;
        double r91678 = r91672 / r91677;
        double r91679 = 6.3908203947256215e+97;
        bool r91680 = r91650 <= r91679;
        double r91681 = r91673 - r91676;
        double r91682 = r91657 * r91681;
        double r91683 = r91682 / r91661;
        double r91684 = r91683 / r91667;
        double r91685 = r91684 * r91657;
        double r91686 = r91650 / r91667;
        double r91687 = r91653 * r91686;
        double r91688 = r91680 ? r91685 : r91687;
        double r91689 = r91660 ? r91678 : r91688;
        double r91690 = r91652 ? r91658 : r91689;
        return r91690;
}

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.2
Target21.1
Herbie8.8
\[\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 < -2.8364280284857153e+57

    1. Initial program 57.4

      \[\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-num57.4

      \[\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 add-sqr-sqrt57.4

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

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

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

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

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

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

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

    if -2.8364280284857153e+57 < b < 3.4532572802096264e-290

    1. Initial program 29.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 clear-num29.4

      \[\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--29.4

      \[\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/29.4

      \[\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*29.4

      \[\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. Simplified16.7

      \[\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.4532572802096264e-290 < b < 6.3908203947256215e+97

    1. Initial program 9.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 clear-num9.3

      \[\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 add-sqr-sqrt9.3

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

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

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

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

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

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

    if 6.3908203947256215e+97 < b

    1. Initial program 47.4

      \[\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-num47.5

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -2.836428028485715319451603232683389323254 \cdot 10^{57}:\\ \;\;\;\;\left(-1 \cdot \frac{c}{b}\right) \cdot 1\\ \mathbf{elif}\;b \le 3.453257280209626363179514948804869253532 \cdot 10^{-290}:\\ \;\;\;\;\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 6.390820394725621542655113374079691934397 \cdot 10^{97}:\\ \;\;\;\;\frac{\frac{1 \cdot \left(\left(-b\right) - \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right)}{2}}{a} \cdot 1\\ \mathbf{else}:\\ \;\;\;\;-1 \cdot \frac{b}{a}\\ \end{array}\]

Reproduce

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