Average Error: 5.4 → 3.7
Time: 52.8s
Precision: 64
\[\left(\left(\left(\left(\left(\left(x \cdot 18.0\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4.0\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4.0\right) \cdot i\right) - \left(j \cdot 27.0\right) \cdot k\]
\[\begin{array}{l} \mathbf{if}\;t \le -1.493810714954948 \cdot 10^{-102}:\\ \;\;\;\;\left(\left(b \cdot c + \left(18.0 \cdot \left(t \cdot \left(\left(z \cdot y\right) \cdot x\right)\right) - \left(a \cdot 4.0\right) \cdot t\right)\right) - \left(x \cdot 4.0\right) \cdot i\right) - \left(j \cdot 27.0\right) \cdot k\\ \mathbf{elif}\;t \le 6.970646552295907 \cdot 10^{-137}:\\ \;\;\;\;\left(\left(b \cdot c + \left(\left(z \cdot t\right) \cdot \left(\left(18.0 \cdot x\right) \cdot y\right) - \left(a \cdot 4.0\right) \cdot t\right)\right) - \left(x \cdot 4.0\right) \cdot i\right) - \left(j \cdot 27.0\right) \cdot k\\ \mathbf{else}:\\ \;\;\;\;\left(\left(18.0 \cdot y\right) \cdot \left(x \cdot z\right) - a \cdot 4.0\right) \cdot t + \left(b \cdot c - \left(\left(j \cdot 27.0\right) \cdot k + \left(x \cdot 4.0\right) \cdot i\right)\right)\\ \end{array}\]
\left(\left(\left(\left(\left(\left(x \cdot 18.0\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4.0\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4.0\right) \cdot i\right) - \left(j \cdot 27.0\right) \cdot k
\begin{array}{l}
\mathbf{if}\;t \le -1.493810714954948 \cdot 10^{-102}:\\
\;\;\;\;\left(\left(b \cdot c + \left(18.0 \cdot \left(t \cdot \left(\left(z \cdot y\right) \cdot x\right)\right) - \left(a \cdot 4.0\right) \cdot t\right)\right) - \left(x \cdot 4.0\right) \cdot i\right) - \left(j \cdot 27.0\right) \cdot k\\

\mathbf{elif}\;t \le 6.970646552295907 \cdot 10^{-137}:\\
\;\;\;\;\left(\left(b \cdot c + \left(\left(z \cdot t\right) \cdot \left(\left(18.0 \cdot x\right) \cdot y\right) - \left(a \cdot 4.0\right) \cdot t\right)\right) - \left(x \cdot 4.0\right) \cdot i\right) - \left(j \cdot 27.0\right) \cdot k\\

\mathbf{else}:\\
\;\;\;\;\left(\left(18.0 \cdot y\right) \cdot \left(x \cdot z\right) - a \cdot 4.0\right) \cdot t + \left(b \cdot c - \left(\left(j \cdot 27.0\right) \cdot k + \left(x \cdot 4.0\right) \cdot i\right)\right)\\

\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 r12611925 = x;
        double r12611926 = 18.0;
        double r12611927 = r12611925 * r12611926;
        double r12611928 = y;
        double r12611929 = r12611927 * r12611928;
        double r12611930 = z;
        double r12611931 = r12611929 * r12611930;
        double r12611932 = t;
        double r12611933 = r12611931 * r12611932;
        double r12611934 = a;
        double r12611935 = 4.0;
        double r12611936 = r12611934 * r12611935;
        double r12611937 = r12611936 * r12611932;
        double r12611938 = r12611933 - r12611937;
        double r12611939 = b;
        double r12611940 = c;
        double r12611941 = r12611939 * r12611940;
        double r12611942 = r12611938 + r12611941;
        double r12611943 = r12611925 * r12611935;
        double r12611944 = i;
        double r12611945 = r12611943 * r12611944;
        double r12611946 = r12611942 - r12611945;
        double r12611947 = j;
        double r12611948 = 27.0;
        double r12611949 = r12611947 * r12611948;
        double r12611950 = k;
        double r12611951 = r12611949 * r12611950;
        double r12611952 = r12611946 - r12611951;
        return r12611952;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r12611953 = t;
        double r12611954 = -1.493810714954948e-102;
        bool r12611955 = r12611953 <= r12611954;
        double r12611956 = b;
        double r12611957 = c;
        double r12611958 = r12611956 * r12611957;
        double r12611959 = 18.0;
        double r12611960 = z;
        double r12611961 = y;
        double r12611962 = r12611960 * r12611961;
        double r12611963 = x;
        double r12611964 = r12611962 * r12611963;
        double r12611965 = r12611953 * r12611964;
        double r12611966 = r12611959 * r12611965;
        double r12611967 = a;
        double r12611968 = 4.0;
        double r12611969 = r12611967 * r12611968;
        double r12611970 = r12611969 * r12611953;
        double r12611971 = r12611966 - r12611970;
        double r12611972 = r12611958 + r12611971;
        double r12611973 = r12611963 * r12611968;
        double r12611974 = i;
        double r12611975 = r12611973 * r12611974;
        double r12611976 = r12611972 - r12611975;
        double r12611977 = j;
        double r12611978 = 27.0;
        double r12611979 = r12611977 * r12611978;
        double r12611980 = k;
        double r12611981 = r12611979 * r12611980;
        double r12611982 = r12611976 - r12611981;
        double r12611983 = 6.970646552295907e-137;
        bool r12611984 = r12611953 <= r12611983;
        double r12611985 = r12611960 * r12611953;
        double r12611986 = r12611959 * r12611963;
        double r12611987 = r12611986 * r12611961;
        double r12611988 = r12611985 * r12611987;
        double r12611989 = r12611988 - r12611970;
        double r12611990 = r12611958 + r12611989;
        double r12611991 = r12611990 - r12611975;
        double r12611992 = r12611991 - r12611981;
        double r12611993 = r12611959 * r12611961;
        double r12611994 = r12611963 * r12611960;
        double r12611995 = r12611993 * r12611994;
        double r12611996 = r12611995 - r12611969;
        double r12611997 = r12611996 * r12611953;
        double r12611998 = r12611981 + r12611975;
        double r12611999 = r12611958 - r12611998;
        double r12612000 = r12611997 + r12611999;
        double r12612001 = r12611984 ? r12611992 : r12612000;
        double r12612002 = r12611955 ? r12611982 : r12612001;
        return r12612002;
}

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 3 regimes
  2. if t < -1.493810714954948e-102

    1. Initial program 2.4

      \[\left(\left(\left(\left(\left(\left(x \cdot 18.0\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4.0\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4.0\right) \cdot i\right) - \left(j \cdot 27.0\right) \cdot k\]
    2. Taylor expanded around -inf 3.4

      \[\leadsto \left(\left(\left(\color{blue}{18.0 \cdot \left(t \cdot \left(x \cdot \left(z \cdot y\right)\right)\right)} - \left(a \cdot 4.0\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4.0\right) \cdot i\right) - \left(j \cdot 27.0\right) \cdot k\]

    if -1.493810714954948e-102 < t < 6.970646552295907e-137

    1. Initial program 9.3

      \[\left(\left(\left(\left(\left(\left(x \cdot 18.0\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4.0\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4.0\right) \cdot i\right) - \left(j \cdot 27.0\right) \cdot k\]
    2. Using strategy rm
    3. Applied associate-*l*4.3

      \[\leadsto \left(\left(\left(\color{blue}{\left(\left(x \cdot 18.0\right) \cdot y\right) \cdot \left(z \cdot t\right)} - \left(a \cdot 4.0\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4.0\right) \cdot i\right) - \left(j \cdot 27.0\right) \cdot k\]

    if 6.970646552295907e-137 < t

    1. Initial program 3.3

      \[\left(\left(\left(\left(\left(\left(x \cdot 18.0\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4.0\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4.0\right) \cdot i\right) - \left(j \cdot 27.0\right) \cdot k\]
    2. Simplified3.3

      \[\leadsto \color{blue}{\left(c \cdot b - \left(\left(27.0 \cdot j\right) \cdot k + \left(x \cdot 4.0\right) \cdot i\right)\right) + \left(y \cdot \left(\left(x \cdot 18.0\right) \cdot z\right) - a \cdot 4.0\right) \cdot t}\]
    3. Taylor expanded around -inf 4.4

      \[\leadsto \left(c \cdot b - \left(\left(27.0 \cdot j\right) \cdot k + \left(x \cdot 4.0\right) \cdot i\right)\right) + \color{blue}{\left(18.0 \cdot \left(t \cdot \left(x \cdot \left(z \cdot y\right)\right)\right) - 4.0 \cdot \left(t \cdot a\right)\right)}\]
    4. Simplified3.3

      \[\leadsto \left(c \cdot b - \left(\left(27.0 \cdot j\right) \cdot k + \left(x \cdot 4.0\right) \cdot i\right)\right) + \color{blue}{t \cdot \left(\left(x \cdot z\right) \cdot \left(y \cdot 18.0\right) - 4.0 \cdot a\right)}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification3.7

    \[\leadsto \begin{array}{l} \mathbf{if}\;t \le -1.493810714954948 \cdot 10^{-102}:\\ \;\;\;\;\left(\left(b \cdot c + \left(18.0 \cdot \left(t \cdot \left(\left(z \cdot y\right) \cdot x\right)\right) - \left(a \cdot 4.0\right) \cdot t\right)\right) - \left(x \cdot 4.0\right) \cdot i\right) - \left(j \cdot 27.0\right) \cdot k\\ \mathbf{elif}\;t \le 6.970646552295907 \cdot 10^{-137}:\\ \;\;\;\;\left(\left(b \cdot c + \left(\left(z \cdot t\right) \cdot \left(\left(18.0 \cdot x\right) \cdot y\right) - \left(a \cdot 4.0\right) \cdot t\right)\right) - \left(x \cdot 4.0\right) \cdot i\right) - \left(j \cdot 27.0\right) \cdot k\\ \mathbf{else}:\\ \;\;\;\;\left(\left(18.0 \cdot y\right) \cdot \left(x \cdot z\right) - a \cdot 4.0\right) \cdot t + \left(b \cdot c - \left(\left(j \cdot 27.0\right) \cdot k + \left(x \cdot 4.0\right) \cdot i\right)\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019124 
(FPCore (x y z t a b c i j k)
  :name "Diagrams.Solve.Polynomial:cubForm  from diagrams-solve-0.1"
  (- (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) (* (* j 27.0) k)))