Average Error: 5.8 → 3.7
Time: 26.7s
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.205203319587854639702496288290674129254 \cdot 10^{-38}:\\ \;\;\;\;\left(\left(\left(z \cdot 18\right) \cdot x\right) \cdot y - a \cdot 4\right) \cdot t - \left(\left(k \cdot 27\right) \cdot j + \left(\left(x \cdot i\right) \cdot 4 - c \cdot b\right)\right)\\ \mathbf{elif}\;t \le 21398956214679056089773245927409728880640:\\ \;\;\;\;\left(\left(\left(\left(18 \cdot \left(y \cdot x\right)\right) \cdot \left(z \cdot t\right) - \left(a \cdot 4\right) \cdot t\right) + c \cdot b\right) - \left(4 \cdot x\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\\ \mathbf{else}:\\ \;\;\;\;\left(\left(\left(z \cdot 18\right) \cdot x\right) \cdot y - a \cdot 4\right) \cdot t - \left(\left(k \cdot 27\right) \cdot j + \left(\left(x \cdot i\right) \cdot 4 - c \cdot b\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.205203319587854639702496288290674129254 \cdot 10^{-38}:\\
\;\;\;\;\left(\left(\left(z \cdot 18\right) \cdot x\right) \cdot y - a \cdot 4\right) \cdot t - \left(\left(k \cdot 27\right) \cdot j + \left(\left(x \cdot i\right) \cdot 4 - c \cdot b\right)\right)\\

\mathbf{elif}\;t \le 21398956214679056089773245927409728880640:\\
\;\;\;\;\left(\left(\left(\left(18 \cdot \left(y \cdot x\right)\right) \cdot \left(z \cdot t\right) - \left(a \cdot 4\right) \cdot t\right) + c \cdot b\right) - \left(4 \cdot x\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\\

\mathbf{else}:\\
\;\;\;\;\left(\left(\left(z \cdot 18\right) \cdot x\right) \cdot y - a \cdot 4\right) \cdot t - \left(\left(k \cdot 27\right) \cdot j + \left(\left(x \cdot i\right) \cdot 4 - c \cdot b\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 r47188924 = x;
        double r47188925 = 18.0;
        double r47188926 = r47188924 * r47188925;
        double r47188927 = y;
        double r47188928 = r47188926 * r47188927;
        double r47188929 = z;
        double r47188930 = r47188928 * r47188929;
        double r47188931 = t;
        double r47188932 = r47188930 * r47188931;
        double r47188933 = a;
        double r47188934 = 4.0;
        double r47188935 = r47188933 * r47188934;
        double r47188936 = r47188935 * r47188931;
        double r47188937 = r47188932 - r47188936;
        double r47188938 = b;
        double r47188939 = c;
        double r47188940 = r47188938 * r47188939;
        double r47188941 = r47188937 + r47188940;
        double r47188942 = r47188924 * r47188934;
        double r47188943 = i;
        double r47188944 = r47188942 * r47188943;
        double r47188945 = r47188941 - r47188944;
        double r47188946 = j;
        double r47188947 = 27.0;
        double r47188948 = r47188946 * r47188947;
        double r47188949 = k;
        double r47188950 = r47188948 * r47188949;
        double r47188951 = r47188945 - r47188950;
        return r47188951;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r47188952 = t;
        double r47188953 = -1.2052033195878546e-38;
        bool r47188954 = r47188952 <= r47188953;
        double r47188955 = z;
        double r47188956 = 18.0;
        double r47188957 = r47188955 * r47188956;
        double r47188958 = x;
        double r47188959 = r47188957 * r47188958;
        double r47188960 = y;
        double r47188961 = r47188959 * r47188960;
        double r47188962 = a;
        double r47188963 = 4.0;
        double r47188964 = r47188962 * r47188963;
        double r47188965 = r47188961 - r47188964;
        double r47188966 = r47188965 * r47188952;
        double r47188967 = k;
        double r47188968 = 27.0;
        double r47188969 = r47188967 * r47188968;
        double r47188970 = j;
        double r47188971 = r47188969 * r47188970;
        double r47188972 = i;
        double r47188973 = r47188958 * r47188972;
        double r47188974 = r47188973 * r47188963;
        double r47188975 = c;
        double r47188976 = b;
        double r47188977 = r47188975 * r47188976;
        double r47188978 = r47188974 - r47188977;
        double r47188979 = r47188971 + r47188978;
        double r47188980 = r47188966 - r47188979;
        double r47188981 = 2.1398956214679056e+40;
        bool r47188982 = r47188952 <= r47188981;
        double r47188983 = r47188960 * r47188958;
        double r47188984 = r47188956 * r47188983;
        double r47188985 = r47188955 * r47188952;
        double r47188986 = r47188984 * r47188985;
        double r47188987 = r47188964 * r47188952;
        double r47188988 = r47188986 - r47188987;
        double r47188989 = r47188988 + r47188977;
        double r47188990 = r47188963 * r47188958;
        double r47188991 = r47188990 * r47188972;
        double r47188992 = r47188989 - r47188991;
        double r47188993 = r47188970 * r47188968;
        double r47188994 = r47188993 * r47188967;
        double r47188995 = r47188992 - r47188994;
        double r47188996 = r47188982 ? r47188995 : r47188980;
        double r47188997 = r47188954 ? r47188980 : r47188996;
        return r47188997;
}

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

Target

Original5.8
Target1.7
Herbie3.7
\[\begin{array}{l} \mathbf{if}\;t \lt -1.62108153975413982700795070153457058168 \cdot 10^{-69}:\\ \;\;\;\;\left(\left(18 \cdot t\right) \cdot \left(\left(x \cdot y\right) \cdot z\right) - \left(a \cdot t + i \cdot x\right) \cdot 4\right) - \left(\left(k \cdot j\right) \cdot 27 - c \cdot b\right)\\ \mathbf{elif}\;t \lt 165.6802794380522243500308832153677940369:\\ \;\;\;\;\left(\left(18 \cdot y\right) \cdot \left(x \cdot \left(z \cdot t\right)\right) - \left(a \cdot t + i \cdot x\right) \cdot 4\right) + \left(c \cdot b - 27 \cdot \left(k \cdot j\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\left(18 \cdot t\right) \cdot \left(\left(x \cdot y\right) \cdot z\right) - \left(a \cdot t + i \cdot x\right) \cdot 4\right) - \left(\left(k \cdot j\right) \cdot 27 - c \cdot b\right)\\ \end{array}\]

Derivation

  1. Split input into 2 regimes
  2. if t < -1.2052033195878546e-38 or 2.1398956214679056e+40 < t

    1. Initial program 1.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. Simplified2.1

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

    if -1.2052033195878546e-38 < t < 2.1398956214679056e+40

    1. Initial program 8.2

      \[\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. Taylor expanded around 0 8.2

      \[\leadsto \left(\left(\left(\left(\color{blue}{\left(18 \cdot \left(x \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. Using strategy rm
    4. Applied associate-*l*4.7

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;t \le -1.205203319587854639702496288290674129254 \cdot 10^{-38}:\\ \;\;\;\;\left(\left(\left(z \cdot 18\right) \cdot x\right) \cdot y - a \cdot 4\right) \cdot t - \left(\left(k \cdot 27\right) \cdot j + \left(\left(x \cdot i\right) \cdot 4 - c \cdot b\right)\right)\\ \mathbf{elif}\;t \le 21398956214679056089773245927409728880640:\\ \;\;\;\;\left(\left(\left(\left(18 \cdot \left(y \cdot x\right)\right) \cdot \left(z \cdot t\right) - \left(a \cdot 4\right) \cdot t\right) + c \cdot b\right) - \left(4 \cdot x\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\\ \mathbf{else}:\\ \;\;\;\;\left(\left(\left(z \cdot 18\right) \cdot x\right) \cdot y - a \cdot 4\right) \cdot t - \left(\left(k \cdot 27\right) \cdot j + \left(\left(x \cdot i\right) \cdot 4 - c \cdot b\right)\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019171 
(FPCore (x y z t a b c i j k)
  :name "Diagrams.Solve.Polynomial:cubForm  from diagrams-solve-0.1, E"

  :herbie-target
  (if (< t -1.6210815397541398e-69) (- (- (* (* 18.0 t) (* (* x y) z)) (* (+ (* a t) (* i x)) 4.0)) (- (* (* k j) 27.0) (* c b))) (if (< t 165.68027943805222) (+ (- (* (* 18.0 y) (* x (* z t))) (* (+ (* a t) (* i x)) 4.0)) (- (* c b) (* 27.0 (* k j)))) (- (- (* (* 18.0 t) (* (* x y) z)) (* (+ (* a t) (* i x)) 4.0)) (- (* (* k j) 27.0) (* c b)))))

  (- (- (+ (- (* (* (* (* x 18.0) y) z) t) (* (* a 4.0) t)) (* b c)) (* (* x 4.0) i)) (* (* j 27.0) k)))