Average Error: 5.5 → 2.0
Time: 10.5s
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.036775871972911749699325479966497352254 \cdot 10^{-16}:\\ \;\;\;\;\left(\left(\left(\left(\left(x \cdot 18\right) \cdot \left(y \cdot z\right)\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\\ \mathbf{elif}\;t \le 1.532489333056134866631301001282850563412 \cdot 10^{-52}:\\ \;\;\;\;\left(\left(\left(\left(x \cdot 18\right) \cdot \left(\left(\sqrt[3]{y \cdot \left(z \cdot t\right)} \cdot \sqrt[3]{y \cdot \left(z \cdot t\right)}\right) \cdot \sqrt[3]{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\\ \mathbf{else}:\\ \;\;\;\;t \cdot \left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z - a \cdot 4\right) + \left(b \cdot c - \left(\left(x \cdot 4\right) \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.036775871972911749699325479966497352254 \cdot 10^{-16}:\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot 18\right) \cdot \left(y \cdot z\right)\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\\

\mathbf{elif}\;t \le 1.532489333056134866631301001282850563412 \cdot 10^{-52}:\\
\;\;\;\;\left(\left(\left(\left(x \cdot 18\right) \cdot \left(\left(\sqrt[3]{y \cdot \left(z \cdot t\right)} \cdot \sqrt[3]{y \cdot \left(z \cdot t\right)}\right) \cdot \sqrt[3]{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\\

\mathbf{else}:\\
\;\;\;\;t \cdot \left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z - a \cdot 4\right) + \left(b \cdot c - \left(\left(x \cdot 4\right) \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 r808006 = x;
        double r808007 = 18.0;
        double r808008 = r808006 * r808007;
        double r808009 = y;
        double r808010 = r808008 * r808009;
        double r808011 = z;
        double r808012 = r808010 * r808011;
        double r808013 = t;
        double r808014 = r808012 * r808013;
        double r808015 = a;
        double r808016 = 4.0;
        double r808017 = r808015 * r808016;
        double r808018 = r808017 * r808013;
        double r808019 = r808014 - r808018;
        double r808020 = b;
        double r808021 = c;
        double r808022 = r808020 * r808021;
        double r808023 = r808019 + r808022;
        double r808024 = r808006 * r808016;
        double r808025 = i;
        double r808026 = r808024 * r808025;
        double r808027 = r808023 - r808026;
        double r808028 = j;
        double r808029 = 27.0;
        double r808030 = r808028 * r808029;
        double r808031 = k;
        double r808032 = r808030 * r808031;
        double r808033 = r808027 - r808032;
        return r808033;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r808034 = t;
        double r808035 = -1.0367758719729117e-16;
        bool r808036 = r808034 <= r808035;
        double r808037 = x;
        double r808038 = 18.0;
        double r808039 = r808037 * r808038;
        double r808040 = y;
        double r808041 = z;
        double r808042 = r808040 * r808041;
        double r808043 = r808039 * r808042;
        double r808044 = r808043 * r808034;
        double r808045 = a;
        double r808046 = 4.0;
        double r808047 = r808045 * r808046;
        double r808048 = r808047 * r808034;
        double r808049 = r808044 - r808048;
        double r808050 = b;
        double r808051 = c;
        double r808052 = r808050 * r808051;
        double r808053 = r808049 + r808052;
        double r808054 = r808037 * r808046;
        double r808055 = i;
        double r808056 = r808054 * r808055;
        double r808057 = r808053 - r808056;
        double r808058 = j;
        double r808059 = 27.0;
        double r808060 = r808058 * r808059;
        double r808061 = k;
        double r808062 = r808060 * r808061;
        double r808063 = r808057 - r808062;
        double r808064 = 1.5324893330561349e-52;
        bool r808065 = r808034 <= r808064;
        double r808066 = r808041 * r808034;
        double r808067 = r808040 * r808066;
        double r808068 = cbrt(r808067);
        double r808069 = r808068 * r808068;
        double r808070 = r808069 * r808068;
        double r808071 = r808039 * r808070;
        double r808072 = r808071 - r808048;
        double r808073 = r808072 + r808052;
        double r808074 = r808073 - r808056;
        double r808075 = r808074 - r808062;
        double r808076 = r808039 * r808040;
        double r808077 = r808076 * r808041;
        double r808078 = r808077 - r808047;
        double r808079 = r808034 * r808078;
        double r808080 = r808056 + r808062;
        double r808081 = r808052 - r808080;
        double r808082 = r808079 + r808081;
        double r808083 = r808065 ? r808075 : r808082;
        double r808084 = r808036 ? r808063 : r808083;
        return r808084;
}

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.5
Target1.6
Herbie2.0
\[\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 3 regimes
  2. if t < -1.0367758719729117e-16

    1. Initial program 2.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*2.7

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

    if -1.0367758719729117e-16 < t < 1.5324893330561349e-52

    1. Initial program 8.0

      \[\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*4.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*1.6

      \[\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-cube-cbrt1.6

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

    if 1.5324893330561349e-52 < t

    1. Initial program 2.1

      \[\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}{t \cdot \left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z - a \cdot 4\right) + \left(b \cdot c - \left(\left(x \cdot 4\right) \cdot i + \left(j \cdot 27\right) \cdot k\right)\right)}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification2.0

    \[\leadsto \begin{array}{l} \mathbf{if}\;t \le -1.036775871972911749699325479966497352254 \cdot 10^{-16}:\\ \;\;\;\;\left(\left(\left(\left(\left(x \cdot 18\right) \cdot \left(y \cdot z\right)\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\\ \mathbf{elif}\;t \le 1.532489333056134866631301001282850563412 \cdot 10^{-52}:\\ \;\;\;\;\left(\left(\left(\left(x \cdot 18\right) \cdot \left(\left(\sqrt[3]{y \cdot \left(z \cdot t\right)} \cdot \sqrt[3]{y \cdot \left(z \cdot t\right)}\right) \cdot \sqrt[3]{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\\ \mathbf{else}:\\ \;\;\;\;t \cdot \left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z - a \cdot 4\right) + \left(b \cdot c - \left(\left(x \cdot 4\right) \cdot i + \left(j \cdot 27\right) \cdot k\right)\right)\\ \end{array}\]

Reproduce

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

  :herbie-target
  (if (< t -1.6210815397541398e-69) (- (- (* (* 18 t) (* (* x y) z)) (* (+ (* a t) (* i x)) 4)) (- (* (* k j) 27) (* c b))) (if (< t 165.680279438052224) (+ (- (* (* 18 y) (* x (* z t))) (* (+ (* a t) (* i x)) 4)) (- (* c b) (* 27 (* k j)))) (- (- (* (* 18 t) (* (* x y) z)) (* (+ (* a t) (* i x)) 4)) (- (* (* k j) 27) (* c b)))))

  (- (- (+ (- (* (* (* (* x 18) y) z) t) (* (* a 4) t)) (* b c)) (* (* x 4) i)) (* (* j 27) k)))