Average Error: 33.5 → 8.8
Time: 60.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.2624408798128872 \cdot 10^{+73}:\\ \;\;\;\;\frac{-c}{b}\\ \mathbf{elif}\;b \le -7.507092554429818 \cdot 10^{-252}:\\ \;\;\;\;\frac{\frac{a \cdot c}{\frac{-1}{2}}}{a} \cdot \frac{-1}{\sqrt{b \cdot b - \left(a \cdot c\right) \cdot 4} - b}\\ \mathbf{elif}\;b \le 2.695924339454757 \cdot 10^{+108}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{\left(-b\right) - \sqrt{b \cdot b - a \cdot \left(c \cdot 4\right)}}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{-b}{a}\\ \end{array}\]
double f(double a, double b, double c) {
        double r4752652 = b;
        double r4752653 = -r4752652;
        double r4752654 = r4752652 * r4752652;
        double r4752655 = 4.0;
        double r4752656 = a;
        double r4752657 = c;
        double r4752658 = r4752656 * r4752657;
        double r4752659 = r4752655 * r4752658;
        double r4752660 = r4752654 - r4752659;
        double r4752661 = sqrt(r4752660);
        double r4752662 = r4752653 - r4752661;
        double r4752663 = 2.0;
        double r4752664 = r4752663 * r4752656;
        double r4752665 = r4752662 / r4752664;
        return r4752665;
}

double f(double a, double b, double c) {
        double r4752666 = b;
        double r4752667 = -1.2624408798128872e+73;
        bool r4752668 = r4752666 <= r4752667;
        double r4752669 = c;
        double r4752670 = -r4752669;
        double r4752671 = r4752670 / r4752666;
        double r4752672 = -7.507092554429818e-252;
        bool r4752673 = r4752666 <= r4752672;
        double r4752674 = a;
        double r4752675 = r4752674 * r4752669;
        double r4752676 = -0.5;
        double r4752677 = r4752675 / r4752676;
        double r4752678 = r4752677 / r4752674;
        double r4752679 = -1.0;
        double r4752680 = r4752666 * r4752666;
        double r4752681 = 4.0;
        double r4752682 = r4752675 * r4752681;
        double r4752683 = r4752680 - r4752682;
        double r4752684 = sqrt(r4752683);
        double r4752685 = r4752684 - r4752666;
        double r4752686 = r4752679 / r4752685;
        double r4752687 = r4752678 * r4752686;
        double r4752688 = 2.695924339454757e+108;
        bool r4752689 = r4752666 <= r4752688;
        double r4752690 = 0.5;
        double r4752691 = -r4752666;
        double r4752692 = r4752669 * r4752681;
        double r4752693 = r4752674 * r4752692;
        double r4752694 = r4752680 - r4752693;
        double r4752695 = sqrt(r4752694);
        double r4752696 = r4752691 - r4752695;
        double r4752697 = r4752696 / r4752674;
        double r4752698 = r4752690 * r4752697;
        double r4752699 = r4752691 / r4752674;
        double r4752700 = r4752689 ? r4752698 : r4752699;
        double r4752701 = r4752673 ? r4752687 : r4752700;
        double r4752702 = r4752668 ? r4752671 : r4752701;
        return r4752702;
}

\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.2624408798128872 \cdot 10^{+73}:\\
\;\;\;\;\frac{-c}{b}\\

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

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

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

\end{array}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Target

Original33.5
Target20.8
Herbie8.8
\[\begin{array}{l} \mathbf{if}\;b \lt 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 < -1.2624408798128872e+73

    1. Initial program 57.3

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

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

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

    if -1.2624408798128872e+73 < b < -7.507092554429818e-252

    1. Initial program 32.1

      \[\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-identity32.1

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

      \[\leadsto \frac{\left(-\color{blue}{1 \cdot b}\right) - 1 \cdot \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    5. Applied distribute-rgt-neg-in32.1

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

      \[\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}\]
    7. Applied associate-/l*32.1

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

      \[\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)}}}}}\]
    10. Applied associate-/r/32.2

      \[\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)}}\]
    11. Applied add-sqr-sqrt32.2

      \[\leadsto \frac{\color{blue}{\sqrt{1} \cdot \sqrt{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)}} \cdot \left(\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}\right)}\]
    12. Applied times-frac32.3

      \[\leadsto \color{blue}{\frac{\sqrt{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)}}} \cdot \frac{\sqrt{1}}{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}\]
    13. Simplified16.5

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

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

    if -7.507092554429818e-252 < b < 2.695924339454757e+108

    1. Initial program 10.0

      \[\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-identity10.0

      \[\leadsto \frac{\left(-b\right) - \color{blue}{1 \cdot \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}}{2 \cdot a}\]
    4. Applied *-un-lft-identity10.0

      \[\leadsto \frac{\left(-\color{blue}{1 \cdot b}\right) - 1 \cdot \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    5. Applied distribute-rgt-neg-in10.0

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

      \[\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}\]
    7. Applied associate-/l*10.1

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

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

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

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

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

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

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

    if 2.695924339454757e+108 < b

    1. Initial program 47.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 *-un-lft-identity47.2

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

      \[\leadsto \frac{\left(-\color{blue}{1 \cdot b}\right) - 1 \cdot \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    5. Applied distribute-rgt-neg-in47.2

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

      \[\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}\]
    7. Applied associate-/l*47.2

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

      \[\leadsto \color{blue}{-1 \cdot \frac{b}{a}}\]
    9. Simplified3.4

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -1.2624408798128872 \cdot 10^{+73}:\\ \;\;\;\;\frac{-c}{b}\\ \mathbf{elif}\;b \le -7.507092554429818 \cdot 10^{-252}:\\ \;\;\;\;\frac{\frac{a \cdot c}{\frac{-1}{2}}}{a} \cdot \frac{-1}{\sqrt{b \cdot b - \left(a \cdot c\right) \cdot 4} - b}\\ \mathbf{elif}\;b \le 2.695924339454757 \cdot 10^{+108}:\\ \;\;\;\;\frac{1}{2} \cdot \frac{\left(-b\right) - \sqrt{b \cdot b - a \cdot \left(c \cdot 4\right)}}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{-b}{a}\\ \end{array}\]

Reproduce

herbie shell --seed 2019102 
(FPCore (a b c)
  :name "quadm (p42, negative)"

  :herbie-target
  (if (< b 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)))