Average Error: 3.8 → 0.7
Time: 14.4s
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}\;y \cdot 9 \le -3.338893372507656821369864426932132802203 \cdot 10^{-32}:\\ \;\;\;\;\left(x \cdot 2 - y \cdot \left(\sqrt{9} \cdot \left(\sqrt{9} \cdot \left(t \cdot z\right)\right)\right)\right) + 27 \cdot \left(a \cdot b\right)\\ \mathbf{elif}\;y \cdot 9 \le 7.055620513394500257077151321056658993069 \cdot 10^{57}:\\ \;\;\;\;\left(x \cdot 2 - \left(y \cdot \left(z \cdot 9\right)\right) \cdot t\right) + \left(a \cdot 27\right) \cdot b\\ \mathbf{else}:\\ \;\;\;\;\left(x \cdot 2 - \left(y \cdot 9\right) \cdot \left(t \cdot z\right)\right) + \sqrt{27} \cdot \left(\sqrt{27} \cdot \left(a \cdot b\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}\;y \cdot 9 \le -3.338893372507656821369864426932132802203 \cdot 10^{-32}:\\
\;\;\;\;\left(x \cdot 2 - y \cdot \left(\sqrt{9} \cdot \left(\sqrt{9} \cdot \left(t \cdot z\right)\right)\right)\right) + 27 \cdot \left(a \cdot b\right)\\

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

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

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r558814 = x;
        double r558815 = 2.0;
        double r558816 = r558814 * r558815;
        double r558817 = y;
        double r558818 = 9.0;
        double r558819 = r558817 * r558818;
        double r558820 = z;
        double r558821 = r558819 * r558820;
        double r558822 = t;
        double r558823 = r558821 * r558822;
        double r558824 = r558816 - r558823;
        double r558825 = a;
        double r558826 = 27.0;
        double r558827 = r558825 * r558826;
        double r558828 = b;
        double r558829 = r558827 * r558828;
        double r558830 = r558824 + r558829;
        return r558830;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r558831 = y;
        double r558832 = 9.0;
        double r558833 = r558831 * r558832;
        double r558834 = -3.338893372507657e-32;
        bool r558835 = r558833 <= r558834;
        double r558836 = x;
        double r558837 = 2.0;
        double r558838 = r558836 * r558837;
        double r558839 = sqrt(r558832);
        double r558840 = t;
        double r558841 = z;
        double r558842 = r558840 * r558841;
        double r558843 = r558839 * r558842;
        double r558844 = r558839 * r558843;
        double r558845 = r558831 * r558844;
        double r558846 = r558838 - r558845;
        double r558847 = 27.0;
        double r558848 = a;
        double r558849 = b;
        double r558850 = r558848 * r558849;
        double r558851 = r558847 * r558850;
        double r558852 = r558846 + r558851;
        double r558853 = 7.0556205133945e+57;
        bool r558854 = r558833 <= r558853;
        double r558855 = r558841 * r558832;
        double r558856 = r558831 * r558855;
        double r558857 = r558856 * r558840;
        double r558858 = r558838 - r558857;
        double r558859 = r558848 * r558847;
        double r558860 = r558859 * r558849;
        double r558861 = r558858 + r558860;
        double r558862 = r558833 * r558842;
        double r558863 = r558838 - r558862;
        double r558864 = sqrt(r558847);
        double r558865 = r558864 * r558850;
        double r558866 = r558864 * r558865;
        double r558867 = r558863 + r558866;
        double r558868 = r558854 ? r558861 : r558867;
        double r558869 = r558835 ? r558852 : r558868;
        return r558869;
}

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.8
Target2.6
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 (* y 9.0) < -3.338893372507657e-32

    1. Initial program 7.1

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

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

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

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

      \[\leadsto \left(x \cdot 2 - \color{blue}{y \cdot \left(9 \cdot \left(t \cdot z\right)\right)}\right) + 27 \cdot \left(a \cdot b\right)\]
    8. Using strategy rm
    9. Applied add-sqr-sqrt0.7

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

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

    if -3.338893372507657e-32 < (* y 9.0) < 7.0556205133945e+57

    1. Initial program 0.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*0.7

      \[\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\]
    4. Simplified0.7

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

    if 7.0556205133945e+57 < (* y 9.0)

    1. Initial program 10.4

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

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

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

      \[\leadsto \left(x \cdot 2 - \left(y \cdot 9\right) \cdot \left(t \cdot z\right)\right) + \color{blue}{27 \cdot \left(a \cdot b\right)}\]
    6. Using strategy rm
    7. Applied add-sqr-sqrt0.8

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;y \cdot 9 \le -3.338893372507656821369864426932132802203 \cdot 10^{-32}:\\ \;\;\;\;\left(x \cdot 2 - y \cdot \left(\sqrt{9} \cdot \left(\sqrt{9} \cdot \left(t \cdot z\right)\right)\right)\right) + 27 \cdot \left(a \cdot b\right)\\ \mathbf{elif}\;y \cdot 9 \le 7.055620513394500257077151321056658993069 \cdot 10^{57}:\\ \;\;\;\;\left(x \cdot 2 - \left(y \cdot \left(z \cdot 9\right)\right) \cdot t\right) + \left(a \cdot 27\right) \cdot b\\ \mathbf{else}:\\ \;\;\;\;\left(x \cdot 2 - \left(y \cdot 9\right) \cdot \left(t \cdot z\right)\right) + \sqrt{27} \cdot \left(\sqrt{27} \cdot \left(a \cdot b\right)\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019323 +o rules:numerics
(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)))