Average Error: 5.5 → 1.7
Time: 23.9s
Precision: 64
\[\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
\[\begin{array}{l} \mathbf{if}\;x \le -1.15848203748868583 \cdot 10^{-15} \lor \neg \left(x \le 4.75949776591493624 \cdot 10^{-71}\right):\\ \;\;\;\;\mathsf{fma}\left(c, b, \left(\left(x \cdot 18\right) \cdot \left(y \cdot \left(z \cdot t\right)\right) - \left(a \cdot 4\right) \cdot t\right) - \mathsf{fma}\left(x \cdot 4, i, \left(j \cdot 27\right) \cdot k\right)\right) + \left(j \cdot 27\right) \cdot \left(\left(-k\right) + k\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot \left(\sqrt[3]{t} \cdot \sqrt[3]{t}\right)\right) \cdot \sqrt[3]{t} - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\\ \end{array}\]
\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k
\begin{array}{l}
\mathbf{if}\;x \le -1.15848203748868583 \cdot 10^{-15} \lor \neg \left(x \le 4.75949776591493624 \cdot 10^{-71}\right):\\
\;\;\;\;\mathsf{fma}\left(c, b, \left(\left(x \cdot 18\right) \cdot \left(y \cdot \left(z \cdot t\right)\right) - \left(a \cdot 4\right) \cdot t\right) - \mathsf{fma}\left(x \cdot 4, i, \left(j \cdot 27\right) \cdot k\right)\right) + \left(j \cdot 27\right) \cdot \left(\left(-k\right) + k\right)\\

\mathbf{else}:\\
\;\;\;\;\left(\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot \left(\sqrt[3]{t} \cdot \sqrt[3]{t}\right)\right) \cdot \sqrt[3]{t} - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\\

\end{array}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r142853 = x;
        double r142854 = 18.0;
        double r142855 = r142853 * r142854;
        double r142856 = y;
        double r142857 = r142855 * r142856;
        double r142858 = z;
        double r142859 = r142857 * r142858;
        double r142860 = t;
        double r142861 = r142859 * r142860;
        double r142862 = a;
        double r142863 = 4.0;
        double r142864 = r142862 * r142863;
        double r142865 = r142864 * r142860;
        double r142866 = r142861 - r142865;
        double r142867 = b;
        double r142868 = c;
        double r142869 = r142867 * r142868;
        double r142870 = r142866 + r142869;
        double r142871 = r142853 * r142863;
        double r142872 = i;
        double r142873 = r142871 * r142872;
        double r142874 = r142870 - r142873;
        double r142875 = j;
        double r142876 = 27.0;
        double r142877 = r142875 * r142876;
        double r142878 = k;
        double r142879 = r142877 * r142878;
        double r142880 = r142874 - r142879;
        return r142880;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r142881 = x;
        double r142882 = -1.1584820374886858e-15;
        bool r142883 = r142881 <= r142882;
        double r142884 = 4.759497765914936e-71;
        bool r142885 = r142881 <= r142884;
        double r142886 = !r142885;
        bool r142887 = r142883 || r142886;
        double r142888 = c;
        double r142889 = b;
        double r142890 = 18.0;
        double r142891 = r142881 * r142890;
        double r142892 = y;
        double r142893 = z;
        double r142894 = t;
        double r142895 = r142893 * r142894;
        double r142896 = r142892 * r142895;
        double r142897 = r142891 * r142896;
        double r142898 = a;
        double r142899 = 4.0;
        double r142900 = r142898 * r142899;
        double r142901 = r142900 * r142894;
        double r142902 = r142897 - r142901;
        double r142903 = r142881 * r142899;
        double r142904 = i;
        double r142905 = j;
        double r142906 = 27.0;
        double r142907 = r142905 * r142906;
        double r142908 = k;
        double r142909 = r142907 * r142908;
        double r142910 = fma(r142903, r142904, r142909);
        double r142911 = r142902 - r142910;
        double r142912 = fma(r142888, r142889, r142911);
        double r142913 = -r142908;
        double r142914 = r142913 + r142908;
        double r142915 = r142907 * r142914;
        double r142916 = r142912 + r142915;
        double r142917 = r142891 * r142892;
        double r142918 = r142917 * r142893;
        double r142919 = cbrt(r142894);
        double r142920 = r142919 * r142919;
        double r142921 = r142918 * r142920;
        double r142922 = r142921 * r142919;
        double r142923 = r142922 - r142901;
        double r142924 = r142889 * r142888;
        double r142925 = r142923 + r142924;
        double r142926 = r142903 * r142904;
        double r142927 = r142925 - r142926;
        double r142928 = r142927 - r142909;
        double r142929 = r142887 ? r142916 : r142928;
        return r142929;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Bits error versus a

Bits error versus b

Bits error versus c

Bits error versus i

Bits error versus j

Bits error versus k

Derivation

  1. Split input into 2 regimes
  2. if x < -1.1584820374886858e-15 or 4.759497765914936e-71 < x

    1. Initial program 10.4

      \[\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
    2. Using strategy rm
    3. Applied associate-*l*7.5

      \[\leadsto \left(\left(\left(\color{blue}{\left(\left(x \cdot 18\right) \cdot y\right) \cdot \left(z \cdot t\right)} - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
    4. Using strategy rm
    5. Applied associate-*l*1.9

      \[\leadsto \left(\left(\left(\color{blue}{\left(x \cdot 18\right) \cdot \left(y \cdot \left(z \cdot t\right)\right)} - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
    6. Using strategy rm
    7. Applied add-sqr-sqrt32.7

      \[\leadsto \color{blue}{\sqrt{\left(\left(\left(x \cdot 18\right) \cdot \left(y \cdot \left(z \cdot t\right)\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i} \cdot \sqrt{\left(\left(\left(x \cdot 18\right) \cdot \left(y \cdot \left(z \cdot t\right)\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i}} - \left(j \cdot 27\right) \cdot k\]
    8. Applied prod-diff32.7

      \[\leadsto \color{blue}{\mathsf{fma}\left(\sqrt{\left(\left(\left(x \cdot 18\right) \cdot \left(y \cdot \left(z \cdot t\right)\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i}, \sqrt{\left(\left(\left(x \cdot 18\right) \cdot \left(y \cdot \left(z \cdot t\right)\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i}, -k \cdot \left(j \cdot 27\right)\right) + \mathsf{fma}\left(-k, j \cdot 27, k \cdot \left(j \cdot 27\right)\right)}\]
    9. Simplified1.9

      \[\leadsto \color{blue}{\mathsf{fma}\left(c, b, \left(\left(x \cdot 18\right) \cdot \left(y \cdot \left(z \cdot t\right)\right) - \left(a \cdot 4\right) \cdot t\right) - \mathsf{fma}\left(x \cdot 4, i, \left(j \cdot 27\right) \cdot k\right)\right)} + \mathsf{fma}\left(-k, j \cdot 27, k \cdot \left(j \cdot 27\right)\right)\]
    10. Simplified1.9

      \[\leadsto \mathsf{fma}\left(c, b, \left(\left(x \cdot 18\right) \cdot \left(y \cdot \left(z \cdot t\right)\right) - \left(a \cdot 4\right) \cdot t\right) - \mathsf{fma}\left(x \cdot 4, i, \left(j \cdot 27\right) \cdot k\right)\right) + \color{blue}{\left(j \cdot 27\right) \cdot \left(\left(-k\right) + k\right)}\]

    if -1.1584820374886858e-15 < x < 4.759497765914936e-71

    1. Initial program 1.5

      \[\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
    2. Using strategy rm
    3. Applied add-cube-cbrt1.6

      \[\leadsto \left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot \color{blue}{\left(\left(\sqrt[3]{t} \cdot \sqrt[3]{t}\right) \cdot \sqrt[3]{t}\right)} - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
    4. Applied associate-*r*1.6

      \[\leadsto \left(\left(\left(\color{blue}{\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot \left(\sqrt[3]{t} \cdot \sqrt[3]{t}\right)\right) \cdot \sqrt[3]{t}} - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
  3. Recombined 2 regimes into one program.
  4. Final simplification1.7

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -1.15848203748868583 \cdot 10^{-15} \lor \neg \left(x \le 4.75949776591493624 \cdot 10^{-71}\right):\\ \;\;\;\;\mathsf{fma}\left(c, b, \left(\left(x \cdot 18\right) \cdot \left(y \cdot \left(z \cdot t\right)\right) - \left(a \cdot 4\right) \cdot t\right) - \mathsf{fma}\left(x \cdot 4, i, \left(j \cdot 27\right) \cdot k\right)\right) + \left(j \cdot 27\right) \cdot \left(\left(-k\right) + k\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot \left(\sqrt[3]{t} \cdot \sqrt[3]{t}\right)\right) \cdot \sqrt[3]{t} - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\\ \end{array}\]

Reproduce

herbie shell --seed 2020083 +o rules:numerics
(FPCore (x y z t a b c i j k)
  :name "Diagrams.Solve.Polynomial:cubForm  from diagrams-solve-0.1"
  :precision binary64
  (- (- (+ (- (* (* (* (* x 18) y) z) t) (* (* a 4) t)) (* b c)) (* (* x 4) i)) (* (* j 27) k)))