Average Error: 33.3 → 10.1
Time: 17.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 -5.7874989996849275 \cdot 10^{-40}:\\ \;\;\;\;\frac{-2 \cdot \frac{c}{b}}{2}\\ \mathbf{elif}\;b \le 1.7665622931893247 \cdot 10^{+83}:\\ \;\;\;\;\frac{\sqrt[3]{\frac{\mathsf{fma}\left(-\sqrt{\sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}}, \sqrt{\sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)} \cdot \sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}}, \sqrt{\sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)} \cdot \sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}} \cdot \sqrt{\sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}}\right) + \mathsf{fma}\left(\sqrt[3]{-b} \cdot \sqrt[3]{-b}, \sqrt[3]{-b}, \sqrt{\sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}} \cdot \left(-\sqrt{\sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)} \cdot \sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}}\right)\right)}{a}} \cdot \left(\sqrt[3]{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}}{a}} \cdot \sqrt[3]{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}}{a}}\right)}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 2}{2}\\ \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.7874989996849275 \cdot 10^{-40}:\\
\;\;\;\;\frac{-2 \cdot \frac{c}{b}}{2}\\

\mathbf{elif}\;b \le 1.7665622931893247 \cdot 10^{+83}:\\
\;\;\;\;\frac{\sqrt[3]{\frac{\mathsf{fma}\left(-\sqrt{\sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}}, \sqrt{\sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)} \cdot \sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}}, \sqrt{\sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)} \cdot \sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}} \cdot \sqrt{\sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}}\right) + \mathsf{fma}\left(\sqrt[3]{-b} \cdot \sqrt[3]{-b}, \sqrt[3]{-b}, \sqrt{\sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}} \cdot \left(-\sqrt{\sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)} \cdot \sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}}\right)\right)}{a}} \cdot \left(\sqrt[3]{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}}{a}} \cdot \sqrt[3]{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}}{a}}\right)}{2}\\

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

\end{array}
double f(double a, double b, double c) {
        double r1539886 = b;
        double r1539887 = -r1539886;
        double r1539888 = r1539886 * r1539886;
        double r1539889 = 4.0;
        double r1539890 = a;
        double r1539891 = c;
        double r1539892 = r1539890 * r1539891;
        double r1539893 = r1539889 * r1539892;
        double r1539894 = r1539888 - r1539893;
        double r1539895 = sqrt(r1539894);
        double r1539896 = r1539887 - r1539895;
        double r1539897 = 2.0;
        double r1539898 = r1539897 * r1539890;
        double r1539899 = r1539896 / r1539898;
        return r1539899;
}

double f(double a, double b, double c) {
        double r1539900 = b;
        double r1539901 = -5.7874989996849275e-40;
        bool r1539902 = r1539900 <= r1539901;
        double r1539903 = -2.0;
        double r1539904 = c;
        double r1539905 = r1539904 / r1539900;
        double r1539906 = r1539903 * r1539905;
        double r1539907 = 2.0;
        double r1539908 = r1539906 / r1539907;
        double r1539909 = 1.7665622931893247e+83;
        bool r1539910 = r1539900 <= r1539909;
        double r1539911 = a;
        double r1539912 = -4.0;
        double r1539913 = r1539911 * r1539912;
        double r1539914 = r1539900 * r1539900;
        double r1539915 = fma(r1539913, r1539904, r1539914);
        double r1539916 = cbrt(r1539915);
        double r1539917 = sqrt(r1539916);
        double r1539918 = -r1539917;
        double r1539919 = r1539916 * r1539916;
        double r1539920 = sqrt(r1539919);
        double r1539921 = r1539920 * r1539917;
        double r1539922 = fma(r1539918, r1539920, r1539921);
        double r1539923 = -r1539900;
        double r1539924 = cbrt(r1539923);
        double r1539925 = r1539924 * r1539924;
        double r1539926 = -r1539920;
        double r1539927 = r1539917 * r1539926;
        double r1539928 = fma(r1539925, r1539924, r1539927);
        double r1539929 = r1539922 + r1539928;
        double r1539930 = r1539929 / r1539911;
        double r1539931 = cbrt(r1539930);
        double r1539932 = sqrt(r1539915);
        double r1539933 = r1539923 - r1539932;
        double r1539934 = r1539933 / r1539911;
        double r1539935 = cbrt(r1539934);
        double r1539936 = r1539935 * r1539935;
        double r1539937 = r1539931 * r1539936;
        double r1539938 = r1539937 / r1539907;
        double r1539939 = r1539900 / r1539911;
        double r1539940 = r1539905 - r1539939;
        double r1539941 = r1539940 * r1539907;
        double r1539942 = r1539941 / r1539907;
        double r1539943 = r1539910 ? r1539938 : r1539942;
        double r1539944 = r1539902 ? r1539908 : r1539943;
        return r1539944;
}

Error

Bits error versus a

Bits error versus b

Bits error versus c

Target

Original33.3
Target20.4
Herbie10.1
\[\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 3 regimes
  2. if b < -5.7874989996849275e-40

    1. Initial program 53.7

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

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

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

    if -5.7874989996849275e-40 < b < 1.7665622931893247e+83

    1. Initial program 13.8

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

      \[\leadsto \color{blue}{\frac{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}}{a}}{2}}\]
    3. Using strategy rm
    4. Applied add-cube-cbrt14.7

      \[\leadsto \frac{\color{blue}{\left(\sqrt[3]{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}}{a}} \cdot \sqrt[3]{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}}{a}}\right) \cdot \sqrt[3]{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}}{a}}}}{2}\]
    5. Using strategy rm
    6. Applied add-cube-cbrt14.6

      \[\leadsto \frac{\left(\sqrt[3]{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}}{a}} \cdot \sqrt[3]{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}}{a}}\right) \cdot \sqrt[3]{\frac{\left(-b\right) - \sqrt{\color{blue}{\left(\sqrt[3]{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)} \cdot \sqrt[3]{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}\right) \cdot \sqrt[3]{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}}}}{a}}}{2}\]
    7. Applied sqrt-prod14.6

      \[\leadsto \frac{\left(\sqrt[3]{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}}{a}} \cdot \sqrt[3]{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}}{a}}\right) \cdot \sqrt[3]{\frac{\left(-b\right) - \color{blue}{\sqrt{\sqrt[3]{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)} \cdot \sqrt[3]{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}} \cdot \sqrt{\sqrt[3]{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}}}}{a}}}{2}\]
    8. Applied add-cube-cbrt14.6

      \[\leadsto \frac{\left(\sqrt[3]{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}}{a}} \cdot \sqrt[3]{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}}{a}}\right) \cdot \sqrt[3]{\frac{\color{blue}{\left(\sqrt[3]{-b} \cdot \sqrt[3]{-b}\right) \cdot \sqrt[3]{-b}} - \sqrt{\sqrt[3]{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)} \cdot \sqrt[3]{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}} \cdot \sqrt{\sqrt[3]{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}}}{a}}}{2}\]
    9. Applied prod-diff14.7

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

    if 1.7665622931893247e+83 < b

    1. Initial program 42.5

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

      \[\leadsto \color{blue}{\frac{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}}{a}}{2}}\]
    3. Using strategy rm
    4. Applied div-inv42.5

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

      \[\leadsto \frac{\color{blue}{2 \cdot \frac{c}{b} - 2 \cdot \frac{b}{a}}}{2}\]
    6. Simplified3.9

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le -5.7874989996849275 \cdot 10^{-40}:\\ \;\;\;\;\frac{-2 \cdot \frac{c}{b}}{2}\\ \mathbf{elif}\;b \le 1.7665622931893247 \cdot 10^{+83}:\\ \;\;\;\;\frac{\sqrt[3]{\frac{\mathsf{fma}\left(-\sqrt{\sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}}, \sqrt{\sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)} \cdot \sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}}, \sqrt{\sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)} \cdot \sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}} \cdot \sqrt{\sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}}\right) + \mathsf{fma}\left(\sqrt[3]{-b} \cdot \sqrt[3]{-b}, \sqrt[3]{-b}, \sqrt{\sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}} \cdot \left(-\sqrt{\sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)} \cdot \sqrt[3]{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}}\right)\right)}{a}} \cdot \left(\sqrt[3]{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}}{a}} \cdot \sqrt[3]{\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)}}{a}}\right)}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 2}{2}\\ \end{array}\]

Reproduce

herbie shell --seed 2019156 +o rules:numerics
(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)))