Average Error: 3.5 → 1.2
Time: 4.0s
Precision: 64
\[\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + \left(a \cdot 27\right) \cdot b\]
\[\begin{array}{l} \mathbf{if}\;t \le -6.783546124099399342803284536509003124637 \cdot 10^{-59} \lor \neg \left(t \le 1.3815157485807560225904258124223973148 \cdot 10^{-154}\right):\\ \;\;\;\;\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + 27 \cdot \left(a \cdot b\right)\\ \mathbf{else}:\\ \;\;\;\;\left(x \cdot 2 - \left(y \cdot 9\right) \cdot \left(z \cdot t\right)\right) + a \cdot \left(27 \cdot b\right)\\ \end{array}\]
\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + \left(a \cdot 27\right) \cdot b
\begin{array}{l}
\mathbf{if}\;t \le -6.783546124099399342803284536509003124637 \cdot 10^{-59} \lor \neg \left(t \le 1.3815157485807560225904258124223973148 \cdot 10^{-154}\right):\\
\;\;\;\;\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + 27 \cdot \left(a \cdot b\right)\\

\mathbf{else}:\\
\;\;\;\;\left(x \cdot 2 - \left(y \cdot 9\right) \cdot \left(z \cdot t\right)\right) + a \cdot \left(27 \cdot b\right)\\

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r814903 = x;
        double r814904 = 2.0;
        double r814905 = r814903 * r814904;
        double r814906 = y;
        double r814907 = 9.0;
        double r814908 = r814906 * r814907;
        double r814909 = z;
        double r814910 = r814908 * r814909;
        double r814911 = t;
        double r814912 = r814910 * r814911;
        double r814913 = r814905 - r814912;
        double r814914 = a;
        double r814915 = 27.0;
        double r814916 = r814914 * r814915;
        double r814917 = b;
        double r814918 = r814916 * r814917;
        double r814919 = r814913 + r814918;
        return r814919;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r814920 = t;
        double r814921 = -6.783546124099399e-59;
        bool r814922 = r814920 <= r814921;
        double r814923 = 1.381515748580756e-154;
        bool r814924 = r814920 <= r814923;
        double r814925 = !r814924;
        bool r814926 = r814922 || r814925;
        double r814927 = x;
        double r814928 = 2.0;
        double r814929 = r814927 * r814928;
        double r814930 = y;
        double r814931 = 9.0;
        double r814932 = r814930 * r814931;
        double r814933 = z;
        double r814934 = r814932 * r814933;
        double r814935 = r814934 * r814920;
        double r814936 = r814929 - r814935;
        double r814937 = 27.0;
        double r814938 = a;
        double r814939 = b;
        double r814940 = r814938 * r814939;
        double r814941 = r814937 * r814940;
        double r814942 = r814936 + r814941;
        double r814943 = r814933 * r814920;
        double r814944 = r814932 * r814943;
        double r814945 = r814929 - r814944;
        double r814946 = r814937 * r814939;
        double r814947 = r814938 * r814946;
        double r814948 = r814945 + r814947;
        double r814949 = r814926 ? r814942 : r814948;
        return r814949;
}

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

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original3.5
Target2.3
Herbie1.2
\[\begin{array}{l} \mathbf{if}\;y \lt 7.590524218811188954625810696587370427881 \cdot 10^{-161}:\\ \;\;\;\;\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + a \cdot \left(27 \cdot b\right)\\ \mathbf{else}:\\ \;\;\;\;\left(x \cdot 2 - 9 \cdot \left(y \cdot \left(t \cdot z\right)\right)\right) + \left(a \cdot 27\right) \cdot b\\ \end{array}\]

Derivation

  1. Split input into 2 regimes
  2. if t < -6.783546124099399e-59 or 1.381515748580756e-154 < t

    1. Initial program 1.5

      \[\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + \left(a \cdot 27\right) \cdot b\]
    2. Taylor expanded around 0 1.5

      \[\leadsto \left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + \color{blue}{27 \cdot \left(a \cdot b\right)}\]

    if -6.783546124099399e-59 < t < 1.381515748580756e-154

    1. Initial program 6.7

      \[\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + \left(a \cdot 27\right) \cdot b\]
    2. Using strategy rm
    3. Applied associate-*l*6.8

      \[\leadsto \left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + \color{blue}{a \cdot \left(27 \cdot b\right)}\]
    4. Using strategy rm
    5. Applied associate-*l*0.7

      \[\leadsto \left(x \cdot 2 - \color{blue}{\left(y \cdot 9\right) \cdot \left(z \cdot t\right)}\right) + a \cdot \left(27 \cdot b\right)\]
  3. Recombined 2 regimes into one program.
  4. Final simplification1.2

    \[\leadsto \begin{array}{l} \mathbf{if}\;t \le -6.783546124099399342803284536509003124637 \cdot 10^{-59} \lor \neg \left(t \le 1.3815157485807560225904258124223973148 \cdot 10^{-154}\right):\\ \;\;\;\;\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + 27 \cdot \left(a \cdot b\right)\\ \mathbf{else}:\\ \;\;\;\;\left(x \cdot 2 - \left(y \cdot 9\right) \cdot \left(z \cdot t\right)\right) + a \cdot \left(27 \cdot b\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019356 
(FPCore (x y z t a b)
  :name "Diagrams.Solve.Polynomial:cubForm  from diagrams-solve-0.1, A"
  :precision binary64

  :herbie-target
  (if (< y 7.590524218811189e-161) (+ (- (* x 2) (* (* (* y 9) z) t)) (* a (* 27 b))) (+ (- (* x 2) (* 9 (* y (* t z)))) (* (* a 27) b)))

  (+ (- (* x 2) (* (* (* y 9) z) t)) (* (* a 27) b)))