Average Error: 33.8 → 9.8
Time: 43.7s
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 -4.1061641587957725 \cdot 10^{+142}:\\ \;\;\;\;\frac{c}{b} - \frac{b}{a}\\ \mathbf{elif}\;b \le 4.92308681460715 \cdot 10^{-109}:\\ \;\;\;\;\frac{\frac{(\left(\sqrt{\sqrt{(b \cdot b + \left(\left(c \cdot a\right) \cdot -4\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(b \cdot b + \left(\left(c \cdot a\right) \cdot -4\right))_*}}\right) + \left(-b\right))_*}{2}}{a}\\ \mathbf{elif}\;b \le 6.2093480529009754 \cdot 10^{-80}:\\ \;\;\;\;-\frac{c}{b}\\ \mathbf{elif}\;b \le 27437652342722.5:\\ \;\;\;\;\frac{c \cdot \left(-2 \cdot a\right)}{a \cdot \left(\sqrt{(\left(c \cdot a\right) \cdot -4 + \left(b \cdot b\right))_*} + b\right)}\\ \mathbf{else}:\\ \;\;\;\;-\frac{c}{b}\\ \end{array}\]
double f(double a, double b, double c) {
        double r3516001 = b;
        double r3516002 = -r3516001;
        double r3516003 = r3516001 * r3516001;
        double r3516004 = 4.0;
        double r3516005 = a;
        double r3516006 = c;
        double r3516007 = r3516005 * r3516006;
        double r3516008 = r3516004 * r3516007;
        double r3516009 = r3516003 - r3516008;
        double r3516010 = sqrt(r3516009);
        double r3516011 = r3516002 + r3516010;
        double r3516012 = 2.0;
        double r3516013 = r3516012 * r3516005;
        double r3516014 = r3516011 / r3516013;
        return r3516014;
}

double f(double a, double b, double c) {
        double r3516015 = b;
        double r3516016 = -4.1061641587957725e+142;
        bool r3516017 = r3516015 <= r3516016;
        double r3516018 = c;
        double r3516019 = r3516018 / r3516015;
        double r3516020 = a;
        double r3516021 = r3516015 / r3516020;
        double r3516022 = r3516019 - r3516021;
        double r3516023 = 4.92308681460715e-109;
        bool r3516024 = r3516015 <= r3516023;
        double r3516025 = r3516018 * r3516020;
        double r3516026 = -4.0;
        double r3516027 = r3516025 * r3516026;
        double r3516028 = fma(r3516015, r3516015, r3516027);
        double r3516029 = sqrt(r3516028);
        double r3516030 = sqrt(r3516029);
        double r3516031 = -r3516015;
        double r3516032 = fma(r3516030, r3516030, r3516031);
        double r3516033 = 2.0;
        double r3516034 = r3516032 / r3516033;
        double r3516035 = r3516034 / r3516020;
        double r3516036 = 6.2093480529009754e-80;
        bool r3516037 = r3516015 <= r3516036;
        double r3516038 = -r3516019;
        double r3516039 = 27437652342722.5;
        bool r3516040 = r3516015 <= r3516039;
        double r3516041 = -2.0;
        double r3516042 = r3516041 * r3516020;
        double r3516043 = r3516018 * r3516042;
        double r3516044 = r3516015 * r3516015;
        double r3516045 = fma(r3516025, r3516026, r3516044);
        double r3516046 = sqrt(r3516045);
        double r3516047 = r3516046 + r3516015;
        double r3516048 = r3516020 * r3516047;
        double r3516049 = r3516043 / r3516048;
        double r3516050 = r3516040 ? r3516049 : r3516038;
        double r3516051 = r3516037 ? r3516038 : r3516050;
        double r3516052 = r3516024 ? r3516035 : r3516051;
        double r3516053 = r3516017 ? r3516022 : r3516052;
        return r3516053;
}

\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 -4.1061641587957725 \cdot 10^{+142}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\

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

\mathbf{elif}\;b \le 6.2093480529009754 \cdot 10^{-80}:\\
\;\;\;\;-\frac{c}{b}\\

\mathbf{elif}\;b \le 27437652342722.5:\\
\;\;\;\;\frac{c \cdot \left(-2 \cdot a\right)}{a \cdot \left(\sqrt{(\left(c \cdot a\right) \cdot -4 + \left(b \cdot b\right))_*} + b\right)}\\

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

\end{array}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Target

Original33.8
Target21.0
Herbie9.8
\[\begin{array}{l} \mathbf{if}\;b \lt 0:\\ \;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\\ \mathbf{else}:\\ \;\;\;\;\frac{c}{a \cdot \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 < -4.1061641587957725e+142

    1. Initial program 56.5

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    2. Simplified56.5

      \[\leadsto \color{blue}{\frac{\frac{\sqrt{(b \cdot b + \left(\left(a \cdot c\right) \cdot -4\right))_*} - b}{2}}{a}}\]
    3. Taylor expanded around -inf 2.7

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

    if -4.1061641587957725e+142 < b < 4.92308681460715e-109

    1. Initial program 11.8

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    2. Simplified11.8

      \[\leadsto \color{blue}{\frac{\frac{\sqrt{(b \cdot b + \left(\left(a \cdot c\right) \cdot -4\right))_*} - b}{2}}{a}}\]
    3. Using strategy rm
    4. Applied add-sqr-sqrt12.0

      \[\leadsto \frac{\frac{\color{blue}{\sqrt{\sqrt{(b \cdot b + \left(\left(a \cdot c\right) \cdot -4\right))_*}} \cdot \sqrt{\sqrt{(b \cdot b + \left(\left(a \cdot c\right) \cdot -4\right))_*}}} - b}{2}}{a}\]
    5. Applied fma-neg12.0

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

    if 4.92308681460715e-109 < b < 6.2093480529009754e-80 or 27437652342722.5 < b

    1. Initial program 53.9

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    2. Simplified53.9

      \[\leadsto \color{blue}{\frac{\frac{\sqrt{(b \cdot b + \left(\left(a \cdot c\right) \cdot -4\right))_*} - b}{2}}{a}}\]
    3. Taylor expanded around inf 7.3

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

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

    if 6.2093480529009754e-80 < b < 27437652342722.5

    1. Initial program 40.7

      \[\frac{\left(-b\right) + \sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)}}{2 \cdot a}\]
    2. Simplified40.7

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

      \[\leadsto \frac{\frac{\sqrt{(b \cdot b + \left(\left(a \cdot c\right) \cdot -4\right))_*} - b}{2}}{\color{blue}{1 \cdot a}}\]
    5. Applied div-inv40.7

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

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

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

      \[\leadsto \left(\sqrt{(\left(-4 \cdot c\right) \cdot a + \left(b \cdot b\right))_*} - b\right) \cdot \color{blue}{\frac{\frac{1}{2}}{a}}\]
    9. Taylor expanded around -inf 40.7

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

      \[\leadsto \left(\sqrt{\color{blue}{(\left(a \cdot c\right) \cdot -4 + \left(b \cdot b\right))_*}} - b\right) \cdot \frac{\frac{1}{2}}{a}\]
    11. Using strategy rm
    12. Applied flip--40.8

      \[\leadsto \color{blue}{\frac{\sqrt{(\left(a \cdot c\right) \cdot -4 + \left(b \cdot b\right))_*} \cdot \sqrt{(\left(a \cdot c\right) \cdot -4 + \left(b \cdot b\right))_*} - b \cdot b}{\sqrt{(\left(a \cdot c\right) \cdot -4 + \left(b \cdot b\right))_*} + b}} \cdot \frac{\frac{1}{2}}{a}\]
    13. Applied frac-times43.0

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -4.1061641587957725 \cdot 10^{+142}:\\ \;\;\;\;\frac{c}{b} - \frac{b}{a}\\ \mathbf{elif}\;b \le 4.92308681460715 \cdot 10^{-109}:\\ \;\;\;\;\frac{\frac{(\left(\sqrt{\sqrt{(b \cdot b + \left(\left(c \cdot a\right) \cdot -4\right))_*}}\right) \cdot \left(\sqrt{\sqrt{(b \cdot b + \left(\left(c \cdot a\right) \cdot -4\right))_*}}\right) + \left(-b\right))_*}{2}}{a}\\ \mathbf{elif}\;b \le 6.2093480529009754 \cdot 10^{-80}:\\ \;\;\;\;-\frac{c}{b}\\ \mathbf{elif}\;b \le 27437652342722.5:\\ \;\;\;\;\frac{c \cdot \left(-2 \cdot a\right)}{a \cdot \left(\sqrt{(\left(c \cdot a\right) \cdot -4 + \left(b \cdot b\right))_*} + b\right)}\\ \mathbf{else}:\\ \;\;\;\;-\frac{c}{b}\\ \end{array}\]

Reproduce

herbie shell --seed 2019102 +o rules:numerics
(FPCore (a b c)
  :name "quadp (p42, positive)"

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