Average Error: 5.7 → 5.0
Time: 29.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}\;t \le -8.580938398712717545524727866274452921134 \cdot 10^{-92}:\\ \;\;\;\;\left(\left(t \cdot \left(\left(x \cdot 18\right) \cdot \left(y \cdot z\right) - a \cdot 4\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - 27 \cdot \left(j \cdot k\right)\\ \mathbf{elif}\;t \le 5888699400.34645938873291015625:\\ \;\;\;\;\left(\left(\left(-a \cdot 4\right) \cdot t + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - 27 \cdot \left(j \cdot k\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\left(t \cdot \left(\left(x \cdot 18\right) \cdot \left(y \cdot z\right) - a \cdot 4\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - 27 \cdot \left(j \cdot k\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 -8.580938398712717545524727866274452921134 \cdot 10^{-92}:\\
\;\;\;\;\left(\left(t \cdot \left(\left(x \cdot 18\right) \cdot \left(y \cdot z\right) - a \cdot 4\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - 27 \cdot \left(j \cdot k\right)\\

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

\mathbf{else}:\\
\;\;\;\;\left(\left(t \cdot \left(\left(x \cdot 18\right) \cdot \left(y \cdot z\right) - a \cdot 4\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - 27 \cdot \left(j \cdot k\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 r120295833 = x;
        double r120295834 = 18.0;
        double r120295835 = r120295833 * r120295834;
        double r120295836 = y;
        double r120295837 = r120295835 * r120295836;
        double r120295838 = z;
        double r120295839 = r120295837 * r120295838;
        double r120295840 = t;
        double r120295841 = r120295839 * r120295840;
        double r120295842 = a;
        double r120295843 = 4.0;
        double r120295844 = r120295842 * r120295843;
        double r120295845 = r120295844 * r120295840;
        double r120295846 = r120295841 - r120295845;
        double r120295847 = b;
        double r120295848 = c;
        double r120295849 = r120295847 * r120295848;
        double r120295850 = r120295846 + r120295849;
        double r120295851 = r120295833 * r120295843;
        double r120295852 = i;
        double r120295853 = r120295851 * r120295852;
        double r120295854 = r120295850 - r120295853;
        double r120295855 = j;
        double r120295856 = 27.0;
        double r120295857 = r120295855 * r120295856;
        double r120295858 = k;
        double r120295859 = r120295857 * r120295858;
        double r120295860 = r120295854 - r120295859;
        return r120295860;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r120295861 = t;
        double r120295862 = -8.580938398712718e-92;
        bool r120295863 = r120295861 <= r120295862;
        double r120295864 = x;
        double r120295865 = 18.0;
        double r120295866 = r120295864 * r120295865;
        double r120295867 = y;
        double r120295868 = z;
        double r120295869 = r120295867 * r120295868;
        double r120295870 = r120295866 * r120295869;
        double r120295871 = a;
        double r120295872 = 4.0;
        double r120295873 = r120295871 * r120295872;
        double r120295874 = r120295870 - r120295873;
        double r120295875 = r120295861 * r120295874;
        double r120295876 = b;
        double r120295877 = c;
        double r120295878 = r120295876 * r120295877;
        double r120295879 = r120295875 + r120295878;
        double r120295880 = r120295864 * r120295872;
        double r120295881 = i;
        double r120295882 = r120295880 * r120295881;
        double r120295883 = r120295879 - r120295882;
        double r120295884 = 27.0;
        double r120295885 = j;
        double r120295886 = k;
        double r120295887 = r120295885 * r120295886;
        double r120295888 = r120295884 * r120295887;
        double r120295889 = r120295883 - r120295888;
        double r120295890 = 5888699400.346459;
        bool r120295891 = r120295861 <= r120295890;
        double r120295892 = -r120295873;
        double r120295893 = r120295892 * r120295861;
        double r120295894 = r120295893 + r120295878;
        double r120295895 = r120295894 - r120295882;
        double r120295896 = r120295895 - r120295888;
        double r120295897 = r120295891 ? r120295896 : r120295889;
        double r120295898 = r120295863 ? r120295889 : r120295897;
        return r120295898;
}

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.7
Target1.5
Herbie5.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 2 regimes
  2. if t < -8.580938398712718e-92 or 5888699400.346459 < 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}{\left(\left(t \cdot \left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z - a \cdot 4\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k}\]
    3. Taylor expanded around 0 2.0

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

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

    if -8.580938398712718e-92 < t < 5888699400.346459

    1. Initial program 8.7

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

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

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

      \[\leadsto \left(\left(t \cdot \left(\color{blue}{0} - a \cdot 4\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - 27 \cdot \left(j \cdot k\right)\]
  3. Recombined 2 regimes into one program.
  4. Final simplification5.0

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

Reproduce

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