Average Error: 5.5 → 4.0
Time: 23.3s
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 -4.802521353136590134090568041763149695323 \cdot 10^{-178}:\\ \;\;\;\;\left(\left(\left(\left(z \cdot \left(18 \cdot \left(x \cdot y\right)\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 4.339340101075432744492970777980355608709 \cdot 10^{-63}:\\ \;\;\;\;\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot \left(t \cdot z\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - j \cdot \left(27 \cdot k\right)\\ \mathbf{else}:\\ \;\;\;\;\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) - j \cdot \left(27 \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 -4.802521353136590134090568041763149695323 \cdot 10^{-178}:\\
\;\;\;\;\left(\left(\left(\left(z \cdot \left(18 \cdot \left(x \cdot y\right)\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 4.339340101075432744492970777980355608709 \cdot 10^{-63}:\\
\;\;\;\;\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot \left(t \cdot z\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - j \cdot \left(27 \cdot k\right)\\

\mathbf{else}:\\
\;\;\;\;\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) - j \cdot \left(27 \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 r560985 = x;
        double r560986 = 18.0;
        double r560987 = r560985 * r560986;
        double r560988 = y;
        double r560989 = r560987 * r560988;
        double r560990 = z;
        double r560991 = r560989 * r560990;
        double r560992 = t;
        double r560993 = r560991 * r560992;
        double r560994 = a;
        double r560995 = 4.0;
        double r560996 = r560994 * r560995;
        double r560997 = r560996 * r560992;
        double r560998 = r560993 - r560997;
        double r560999 = b;
        double r561000 = c;
        double r561001 = r560999 * r561000;
        double r561002 = r560998 + r561001;
        double r561003 = r560985 * r560995;
        double r561004 = i;
        double r561005 = r561003 * r561004;
        double r561006 = r561002 - r561005;
        double r561007 = j;
        double r561008 = 27.0;
        double r561009 = r561007 * r561008;
        double r561010 = k;
        double r561011 = r561009 * r561010;
        double r561012 = r561006 - r561011;
        return r561012;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r561013 = t;
        double r561014 = -4.80252135313659e-178;
        bool r561015 = r561013 <= r561014;
        double r561016 = z;
        double r561017 = 18.0;
        double r561018 = x;
        double r561019 = y;
        double r561020 = r561018 * r561019;
        double r561021 = r561017 * r561020;
        double r561022 = r561016 * r561021;
        double r561023 = r561022 * r561013;
        double r561024 = a;
        double r561025 = 4.0;
        double r561026 = r561024 * r561025;
        double r561027 = r561026 * r561013;
        double r561028 = r561023 - r561027;
        double r561029 = b;
        double r561030 = c;
        double r561031 = r561029 * r561030;
        double r561032 = r561028 + r561031;
        double r561033 = r561018 * r561025;
        double r561034 = i;
        double r561035 = r561033 * r561034;
        double r561036 = r561032 - r561035;
        double r561037 = j;
        double r561038 = 27.0;
        double r561039 = r561037 * r561038;
        double r561040 = k;
        double r561041 = r561039 * r561040;
        double r561042 = r561036 - r561041;
        double r561043 = 4.339340101075433e-63;
        bool r561044 = r561013 <= r561043;
        double r561045 = r561018 * r561017;
        double r561046 = r561045 * r561019;
        double r561047 = r561013 * r561016;
        double r561048 = r561046 * r561047;
        double r561049 = r561048 - r561027;
        double r561050 = r561049 + r561031;
        double r561051 = r561050 - r561035;
        double r561052 = r561038 * r561040;
        double r561053 = r561037 * r561052;
        double r561054 = r561051 - r561053;
        double r561055 = r561019 * r561016;
        double r561056 = r561045 * r561055;
        double r561057 = r561056 * r561013;
        double r561058 = r561057 - r561027;
        double r561059 = r561058 + r561031;
        double r561060 = r561059 - r561035;
        double r561061 = r561060 - r561053;
        double r561062 = r561044 ? r561054 : r561061;
        double r561063 = r561015 ? r561042 : r561062;
        return r561063;
}

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
Herbie4.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 < -4.80252135313659e-178

    1. Initial program 4.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(\left(\color{blue}{\left(x \cdot \left(18 \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\]
    4. Simplified4.0

      \[\leadsto \left(\left(\left(\left(\left(x \cdot \color{blue}{\left(y \cdot 18\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\]
    5. Using strategy rm
    6. Applied *-un-lft-identity4.0

      \[\leadsto \left(\left(\left(\left(\left(x \cdot \left(y \cdot 18\right)\right) \cdot z\right) \cdot \color{blue}{\left(1 \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\]
    7. Applied associate-*r*4.0

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

      \[\leadsto \left(\left(\left(\color{blue}{\left(z \cdot \left(18 \cdot \left(x \cdot y\right)\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 -4.80252135313659e-178 < t < 4.339340101075433e-63

    1. Initial program 8.5

      \[\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*8.5

      \[\leadsto \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) - \color{blue}{j \cdot \left(27 \cdot k\right)}\]
    4. Using strategy rm
    5. Applied associate-*l*4.5

      \[\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) - j \cdot \left(27 \cdot k\right)\]
    6. Simplified4.5

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

    if 4.339340101075433e-63 < t

    1. Initial program 3.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*3.0

      \[\leadsto \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) - \color{blue}{j \cdot \left(27 \cdot k\right)}\]
    4. Using strategy rm
    5. Applied associate-*l*3.3

      \[\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) - j \cdot \left(27 \cdot k\right)\]
  3. Recombined 3 regimes into one program.
  4. Final simplification4.0

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

Reproduce

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