Average Error: 3.4 → 0.7
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 -1.692168027207219119632921191955869644457 \cdot 10^{48}:\\ \;\;\;\;\left(x \cdot 2 - \left(y \cdot \left(9 \cdot z\right)\right) \cdot t\right) + \left(a \cdot 27\right) \cdot b\\ \mathbf{elif}\;t \le 3.133670688265845900358360010448440660965 \cdot 10^{-34}:\\ \;\;\;\;\left(x \cdot 2 - \left(y \cdot 9\right) \cdot \left(z \cdot t\right)\right) + a \cdot \left(27 \cdot b\right)\\ \mathbf{else}:\\ \;\;\;\;x \cdot 2 + \left(27 \cdot \left(a \cdot b\right) - 9 \cdot \left(t \cdot \left(z \cdot y\right)\right)\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 -1.692168027207219119632921191955869644457 \cdot 10^{48}:\\
\;\;\;\;\left(x \cdot 2 - \left(y \cdot \left(9 \cdot z\right)\right) \cdot t\right) + \left(a \cdot 27\right) \cdot b\\

\mathbf{elif}\;t \le 3.133670688265845900358360010448440660965 \cdot 10^{-34}:\\
\;\;\;\;\left(x \cdot 2 - \left(y \cdot 9\right) \cdot \left(z \cdot t\right)\right) + a \cdot \left(27 \cdot b\right)\\

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

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r621917 = x;
        double r621918 = 2.0;
        double r621919 = r621917 * r621918;
        double r621920 = y;
        double r621921 = 9.0;
        double r621922 = r621920 * r621921;
        double r621923 = z;
        double r621924 = r621922 * r621923;
        double r621925 = t;
        double r621926 = r621924 * r621925;
        double r621927 = r621919 - r621926;
        double r621928 = a;
        double r621929 = 27.0;
        double r621930 = r621928 * r621929;
        double r621931 = b;
        double r621932 = r621930 * r621931;
        double r621933 = r621927 + r621932;
        return r621933;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r621934 = t;
        double r621935 = -1.692168027207219e+48;
        bool r621936 = r621934 <= r621935;
        double r621937 = x;
        double r621938 = 2.0;
        double r621939 = r621937 * r621938;
        double r621940 = y;
        double r621941 = 9.0;
        double r621942 = z;
        double r621943 = r621941 * r621942;
        double r621944 = r621940 * r621943;
        double r621945 = r621944 * r621934;
        double r621946 = r621939 - r621945;
        double r621947 = a;
        double r621948 = 27.0;
        double r621949 = r621947 * r621948;
        double r621950 = b;
        double r621951 = r621949 * r621950;
        double r621952 = r621946 + r621951;
        double r621953 = 3.133670688265846e-34;
        bool r621954 = r621934 <= r621953;
        double r621955 = r621940 * r621941;
        double r621956 = r621942 * r621934;
        double r621957 = r621955 * r621956;
        double r621958 = r621939 - r621957;
        double r621959 = r621948 * r621950;
        double r621960 = r621947 * r621959;
        double r621961 = r621958 + r621960;
        double r621962 = r621947 * r621950;
        double r621963 = r621948 * r621962;
        double r621964 = r621942 * r621940;
        double r621965 = r621934 * r621964;
        double r621966 = r621941 * r621965;
        double r621967 = r621963 - r621966;
        double r621968 = r621939 + r621967;
        double r621969 = r621954 ? r621961 : r621968;
        double r621970 = r621936 ? r621952 : r621969;
        return r621970;
}

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.4
Target2.3
Herbie0.7
\[\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 3 regimes
  2. if t < -1.692168027207219e+48

    1. Initial program 1.0

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

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

    if -1.692168027207219e+48 < t < 3.133670688265846e-34

    1. Initial program 5.2

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

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

      \[\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)\]

    if 3.133670688265846e-34 < t

    1. Initial program 0.8

      \[\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 sub-neg0.8

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

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

      \[\leadsto x \cdot 2 + \color{blue}{\left(27 \cdot \left(a \cdot b\right) - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right)}\]
    6. Taylor expanded around inf 0.8

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;t \le -1.692168027207219119632921191955869644457 \cdot 10^{48}:\\ \;\;\;\;\left(x \cdot 2 - \left(y \cdot \left(9 \cdot z\right)\right) \cdot t\right) + \left(a \cdot 27\right) \cdot b\\ \mathbf{elif}\;t \le 3.133670688265845900358360010448440660965 \cdot 10^{-34}:\\ \;\;\;\;\left(x \cdot 2 - \left(y \cdot 9\right) \cdot \left(z \cdot t\right)\right) + a \cdot \left(27 \cdot b\right)\\ \mathbf{else}:\\ \;\;\;\;x \cdot 2 + \left(27 \cdot \left(a \cdot b\right) - 9 \cdot \left(t \cdot \left(z \cdot y\right)\right)\right)\\ \end{array}\]

Reproduce

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