Average Error: 5.7 → 2.6
Time: 9.6s
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 -2.00851625405295385 \cdot 10^{-41} \lor \neg \left(x \le 1.9644826400661441 \cdot 10^{-195}\right):\\ \;\;\;\;\left(\left(\left(x \cdot \left(\left(18 \cdot y\right) \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\\ \mathbf{else}:\\ \;\;\;\;\left(\left(\left(\left(\left(x \cdot \left(18 \cdot y\right)\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\\ \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 -2.00851625405295385 \cdot 10^{-41} \lor \neg \left(x \le 1.9644826400661441 \cdot 10^{-195}\right):\\
\;\;\;\;\left(\left(\left(x \cdot \left(\left(18 \cdot y\right) \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\\

\mathbf{else}:\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot \left(18 \cdot y\right)\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\\

\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 r180853 = x;
        double r180854 = 18.0;
        double r180855 = r180853 * r180854;
        double r180856 = y;
        double r180857 = r180855 * r180856;
        double r180858 = z;
        double r180859 = r180857 * r180858;
        double r180860 = t;
        double r180861 = r180859 * r180860;
        double r180862 = a;
        double r180863 = 4.0;
        double r180864 = r180862 * r180863;
        double r180865 = r180864 * r180860;
        double r180866 = r180861 - r180865;
        double r180867 = b;
        double r180868 = c;
        double r180869 = r180867 * r180868;
        double r180870 = r180866 + r180869;
        double r180871 = r180853 * r180863;
        double r180872 = i;
        double r180873 = r180871 * r180872;
        double r180874 = r180870 - r180873;
        double r180875 = j;
        double r180876 = 27.0;
        double r180877 = r180875 * r180876;
        double r180878 = k;
        double r180879 = r180877 * r180878;
        double r180880 = r180874 - r180879;
        return r180880;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r180881 = x;
        double r180882 = -2.0085162540529539e-41;
        bool r180883 = r180881 <= r180882;
        double r180884 = 1.964482640066144e-195;
        bool r180885 = r180881 <= r180884;
        double r180886 = !r180885;
        bool r180887 = r180883 || r180886;
        double r180888 = 18.0;
        double r180889 = y;
        double r180890 = r180888 * r180889;
        double r180891 = z;
        double r180892 = t;
        double r180893 = r180891 * r180892;
        double r180894 = r180890 * r180893;
        double r180895 = r180881 * r180894;
        double r180896 = a;
        double r180897 = 4.0;
        double r180898 = r180896 * r180897;
        double r180899 = r180898 * r180892;
        double r180900 = r180895 - r180899;
        double r180901 = b;
        double r180902 = c;
        double r180903 = r180901 * r180902;
        double r180904 = r180900 + r180903;
        double r180905 = r180881 * r180897;
        double r180906 = i;
        double r180907 = r180905 * r180906;
        double r180908 = r180904 - r180907;
        double r180909 = j;
        double r180910 = 27.0;
        double r180911 = r180909 * r180910;
        double r180912 = k;
        double r180913 = r180911 * r180912;
        double r180914 = r180908 - r180913;
        double r180915 = r180881 * r180890;
        double r180916 = r180915 * r180891;
        double r180917 = r180916 * r180892;
        double r180918 = r180917 - r180899;
        double r180919 = r180918 + r180903;
        double r180920 = r180919 - r180907;
        double r180921 = r180920 - r180913;
        double r180922 = r180887 ? r180914 : r180921;
        return r180922;
}

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

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 2 regimes
  2. if x < -2.0085162540529539e-41 or 1.964482640066144e-195 < x

    1. Initial program 8.6

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

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

      \[\leadsto \left(\left(\left(\color{blue}{\left(x \cdot \left(18 \cdot y\right)\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\]
    6. Using strategy rm
    7. Applied associate-*l*3.3

      \[\leadsto \left(\left(\left(\color{blue}{x \cdot \left(\left(18 \cdot y\right) \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\]

    if -2.0085162540529539e-41 < x < 1.964482640066144e-195

    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 associate-*l*1.6

      \[\leadsto \left(\left(\left(\left(\color{blue}{\left(x \cdot \left(18 \cdot y\right)\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\]
  3. Recombined 2 regimes into one program.
  4. Final simplification2.6

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -2.00851625405295385 \cdot 10^{-41} \lor \neg \left(x \le 1.9644826400661441 \cdot 10^{-195}\right):\\ \;\;\;\;\left(\left(\left(x \cdot \left(\left(18 \cdot y\right) \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\\ \mathbf{else}:\\ \;\;\;\;\left(\left(\left(\left(\left(x \cdot \left(18 \cdot y\right)\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\\ \end{array}\]

Reproduce

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