Average Error: 5.2 → 4.4
Time: 7.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}\;x \le 2.233890913137363 \cdot 10^{-21}:\\ \;\;\;\;t \cdot \left(\left(\left(\left(x \cdot 18\right) \cdot \left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right)\right) \cdot \sqrt[3]{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)\\ \mathbf{else}:\\ \;\;\;\;1 \cdot \left(t \cdot \left(18 \cdot \left(x \cdot \left(z \cdot y\right)\right) - a \cdot 4\right)\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}\;x \le 2.233890913137363 \cdot 10^{-21}:\\
\;\;\;\;t \cdot \left(\left(\left(\left(x \cdot 18\right) \cdot \left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right)\right) \cdot \sqrt[3]{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)\\

\mathbf{else}:\\
\;\;\;\;1 \cdot \left(t \cdot \left(18 \cdot \left(x \cdot \left(z \cdot y\right)\right) - a \cdot 4\right)\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 r696653 = x;
        double r696654 = 18.0;
        double r696655 = r696653 * r696654;
        double r696656 = y;
        double r696657 = r696655 * r696656;
        double r696658 = z;
        double r696659 = r696657 * r696658;
        double r696660 = t;
        double r696661 = r696659 * r696660;
        double r696662 = a;
        double r696663 = 4.0;
        double r696664 = r696662 * r696663;
        double r696665 = r696664 * r696660;
        double r696666 = r696661 - r696665;
        double r696667 = b;
        double r696668 = c;
        double r696669 = r696667 * r696668;
        double r696670 = r696666 + r696669;
        double r696671 = r696653 * r696663;
        double r696672 = i;
        double r696673 = r696671 * r696672;
        double r696674 = r696670 - r696673;
        double r696675 = j;
        double r696676 = 27.0;
        double r696677 = r696675 * r696676;
        double r696678 = k;
        double r696679 = r696677 * r696678;
        double r696680 = r696674 - r696679;
        return r696680;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r696681 = x;
        double r696682 = 2.2338909131373625e-21;
        bool r696683 = r696681 <= r696682;
        double r696684 = t;
        double r696685 = 18.0;
        double r696686 = r696681 * r696685;
        double r696687 = y;
        double r696688 = cbrt(r696687);
        double r696689 = r696688 * r696688;
        double r696690 = r696686 * r696689;
        double r696691 = r696690 * r696688;
        double r696692 = z;
        double r696693 = r696691 * r696692;
        double r696694 = a;
        double r696695 = 4.0;
        double r696696 = r696694 * r696695;
        double r696697 = r696693 - r696696;
        double r696698 = r696684 * r696697;
        double r696699 = b;
        double r696700 = c;
        double r696701 = r696699 * r696700;
        double r696702 = r696681 * r696695;
        double r696703 = i;
        double r696704 = r696702 * r696703;
        double r696705 = j;
        double r696706 = 27.0;
        double r696707 = r696705 * r696706;
        double r696708 = k;
        double r696709 = r696707 * r696708;
        double r696710 = r696704 + r696709;
        double r696711 = r696701 - r696710;
        double r696712 = r696698 + r696711;
        double r696713 = 1.0;
        double r696714 = r696692 * r696687;
        double r696715 = r696681 * r696714;
        double r696716 = r696685 * r696715;
        double r696717 = r696716 - r696696;
        double r696718 = r696684 * r696717;
        double r696719 = r696713 * r696718;
        double r696720 = r696719 + r696711;
        double r696721 = r696683 ? r696712 : r696720;
        return r696721;
}

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.2
Target1.4
Herbie4.4
\[\begin{array}{l} \mathbf{if}\;t \lt -1.6210815397541398 \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.680279438052224:\\ \;\;\;\;\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 x < 2.2338909131373625e-21

    1. Initial program 3.6

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

      \[\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. Using strategy rm
    4. Applied add-cube-cbrt3.7

      \[\leadsto t \cdot \left(\left(\left(x \cdot 18\right) \cdot \color{blue}{\left(\left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) \cdot \sqrt[3]{y}\right)}\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)\]
    5. Applied associate-*r*3.7

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

    if 2.2338909131373625e-21 < x

    1. Initial program 11.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. Simplified11.2

      \[\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. Using strategy rm
    4. Applied add-cube-cbrt11.3

      \[\leadsto t \cdot \left(\left(\left(x \cdot 18\right) \cdot \color{blue}{\left(\left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) \cdot \sqrt[3]{y}\right)}\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)\]
    5. Applied associate-*r*11.3

      \[\leadsto t \cdot \left(\color{blue}{\left(\left(\left(x \cdot 18\right) \cdot \left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right)\right) \cdot \sqrt[3]{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)\]
    6. Using strategy rm
    7. Applied *-un-lft-identity11.3

      \[\leadsto \color{blue}{\left(1 \cdot t\right)} \cdot \left(\left(\left(\left(x \cdot 18\right) \cdot \left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right)\right) \cdot \sqrt[3]{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)\]
    8. Applied associate-*l*11.3

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le 2.233890913137363 \cdot 10^{-21}:\\ \;\;\;\;t \cdot \left(\left(\left(\left(x \cdot 18\right) \cdot \left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right)\right) \cdot \sqrt[3]{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)\\ \mathbf{else}:\\ \;\;\;\;1 \cdot \left(t \cdot \left(18 \cdot \left(x \cdot \left(z \cdot y\right)\right) - a \cdot 4\right)\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 2020039 
(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.68027943805222) (+ (- (* (* 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)))