Average Error: 5.7 → 4.8
Time: 17.8s
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}\;t \le -1.816104989340000263533513256286904752193 \cdot 10^{-100}:\\ \;\;\;\;\mathsf{fma}\left(t, \left(x \cdot 18\right) \cdot \left(y \cdot z\right) - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\right)\right)\\ \mathbf{elif}\;t \le 1.945396783892281696257471720471681450496 \cdot 10^{-140}:\\ \;\;\;\;\mathsf{fma}\left(t, 0 - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(t, \left(x \cdot \left(18 \cdot y\right)\right) \cdot z - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\right)\right)\\ \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}\;t \le -1.816104989340000263533513256286904752193 \cdot 10^{-100}:\\
\;\;\;\;\mathsf{fma}\left(t, \left(x \cdot 18\right) \cdot \left(y \cdot z\right) - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\right)\right)\\

\mathbf{elif}\;t \le 1.945396783892281696257471720471681450496 \cdot 10^{-140}:\\
\;\;\;\;\mathsf{fma}\left(t, 0 - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\right)\right)\\

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(t, \left(x \cdot \left(18 \cdot y\right)\right) \cdot z - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\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 r136937 = x;
        double r136938 = 18.0;
        double r136939 = r136937 * r136938;
        double r136940 = y;
        double r136941 = r136939 * r136940;
        double r136942 = z;
        double r136943 = r136941 * r136942;
        double r136944 = t;
        double r136945 = r136943 * r136944;
        double r136946 = a;
        double r136947 = 4.0;
        double r136948 = r136946 * r136947;
        double r136949 = r136948 * r136944;
        double r136950 = r136945 - r136949;
        double r136951 = b;
        double r136952 = c;
        double r136953 = r136951 * r136952;
        double r136954 = r136950 + r136953;
        double r136955 = r136937 * r136947;
        double r136956 = i;
        double r136957 = r136955 * r136956;
        double r136958 = r136954 - r136957;
        double r136959 = j;
        double r136960 = 27.0;
        double r136961 = r136959 * r136960;
        double r136962 = k;
        double r136963 = r136961 * r136962;
        double r136964 = r136958 - r136963;
        return r136964;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r136965 = t;
        double r136966 = -1.8161049893400003e-100;
        bool r136967 = r136965 <= r136966;
        double r136968 = x;
        double r136969 = 18.0;
        double r136970 = r136968 * r136969;
        double r136971 = y;
        double r136972 = z;
        double r136973 = r136971 * r136972;
        double r136974 = r136970 * r136973;
        double r136975 = a;
        double r136976 = 4.0;
        double r136977 = r136975 * r136976;
        double r136978 = r136974 - r136977;
        double r136979 = b;
        double r136980 = c;
        double r136981 = r136979 * r136980;
        double r136982 = i;
        double r136983 = r136976 * r136982;
        double r136984 = j;
        double r136985 = 27.0;
        double r136986 = r136984 * r136985;
        double r136987 = k;
        double r136988 = r136986 * r136987;
        double r136989 = fma(r136968, r136983, r136988);
        double r136990 = r136981 - r136989;
        double r136991 = fma(r136965, r136978, r136990);
        double r136992 = 1.9453967838922817e-140;
        bool r136993 = r136965 <= r136992;
        double r136994 = 0.0;
        double r136995 = r136994 - r136977;
        double r136996 = fma(r136965, r136995, r136990);
        double r136997 = r136969 * r136971;
        double r136998 = r136968 * r136997;
        double r136999 = r136998 * r136972;
        double r137000 = r136999 - r136977;
        double r137001 = fma(r136965, r137000, r136990);
        double r137002 = r136993 ? r136996 : r137001;
        double r137003 = r136967 ? r136991 : r137002;
        return r137003;
}

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 3 regimes
  2. if t < -1.8161049893400003e-100

    1. Initial program 3.3

      \[\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. Simplified3.3

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

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

    if -1.8161049893400003e-100 < t < 1.9453967838922817e-140

    1. Initial program 8.9

      \[\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. Simplified8.9

      \[\leadsto \color{blue}{\mathsf{fma}\left(t, \left(\left(x \cdot 18\right) \cdot y\right) \cdot z - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\right)\right)}\]
    3. Taylor expanded around 0 6.2

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

    if 1.9453967838922817e-140 < t

    1. Initial program 3.8

      \[\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. Simplified3.8

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

      \[\leadsto \mathsf{fma}\left(t, \color{blue}{\left(x \cdot \left(18 \cdot y\right)\right)} \cdot z - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\right)\right)\]
  3. Recombined 3 regimes into one program.
  4. Final simplification4.8

    \[\leadsto \begin{array}{l} \mathbf{if}\;t \le -1.816104989340000263533513256286904752193 \cdot 10^{-100}:\\ \;\;\;\;\mathsf{fma}\left(t, \left(x \cdot 18\right) \cdot \left(y \cdot z\right) - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\right)\right)\\ \mathbf{elif}\;t \le 1.945396783892281696257471720471681450496 \cdot 10^{-140}:\\ \;\;\;\;\mathsf{fma}\left(t, 0 - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(t, \left(x \cdot \left(18 \cdot y\right)\right) \cdot z - a \cdot 4, b \cdot c - \mathsf{fma}\left(x, 4 \cdot i, \left(j \cdot 27\right) \cdot k\right)\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2020001 +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)))