Average Error: 20.1 → 16.7
Time: 47.6s
Precision: 64
\[\left(2.0 \cdot \sqrt{x}\right) \cdot \cos \left(y - \frac{z \cdot t}{3.0}\right) - \frac{a}{b \cdot 3.0}\]
\[\begin{array}{l} \mathbf{if}\;z \cdot t \le -2.0242052511188462 \cdot 10^{+300}:\\ \;\;\;\;\mathsf{fma}\left(\frac{-1}{2}, y \cdot y, 1\right) \cdot \left(\sqrt{x} \cdot 2.0\right) - \frac{a}{b \cdot 3.0}\\ \mathbf{elif}\;z \cdot t \le -9.018122894565441 \cdot 10^{+61}:\\ \;\;\;\;\left(\cos \left(\mathsf{fma}\left(\sqrt[3]{y} \cdot \sqrt[3]{y}, \sqrt[3]{y}, \frac{-t}{3.0} \cdot z\right)\right) \cdot \cos \left(\mathsf{fma}\left(\frac{-t}{3.0}, z, \frac{t}{3.0} \cdot z\right)\right) - \sin \left(\mathsf{fma}\left(\sqrt[3]{y} \cdot \sqrt[3]{y}, \sqrt[3]{y}, \frac{-t}{3.0} \cdot z\right)\right) \cdot \sin \left(\mathsf{fma}\left(\frac{-t}{3.0}, z, \frac{t}{3.0} \cdot z\right)\right)\right) \cdot \left(\sqrt{x} \cdot 2.0\right) - \frac{a}{b \cdot 3.0}\\ \mathbf{elif}\;z \cdot t \le 7.38439639698813 \cdot 10^{+306}:\\ \;\;\;\;\left(\sqrt{x} \cdot 2.0\right) \cdot \left(\cos \left(\frac{z \cdot t}{3.0}\right) \cdot \cos y + \sin y \cdot \sin \left(\frac{t}{\sqrt[3]{3.0}} \cdot \frac{z}{\sqrt[3]{3.0} \cdot \sqrt[3]{3.0}}\right)\right) - \frac{a}{b \cdot 3.0}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{-1}{2}, y \cdot y, 1\right) \cdot \left(\sqrt{x} \cdot 2.0\right) - \frac{a}{b \cdot 3.0}\\ \end{array}\]
\left(2.0 \cdot \sqrt{x}\right) \cdot \cos \left(y - \frac{z \cdot t}{3.0}\right) - \frac{a}{b \cdot 3.0}
\begin{array}{l}
\mathbf{if}\;z \cdot t \le -2.0242052511188462 \cdot 10^{+300}:\\
\;\;\;\;\mathsf{fma}\left(\frac{-1}{2}, y \cdot y, 1\right) \cdot \left(\sqrt{x} \cdot 2.0\right) - \frac{a}{b \cdot 3.0}\\

\mathbf{elif}\;z \cdot t \le -9.018122894565441 \cdot 10^{+61}:\\
\;\;\;\;\left(\cos \left(\mathsf{fma}\left(\sqrt[3]{y} \cdot \sqrt[3]{y}, \sqrt[3]{y}, \frac{-t}{3.0} \cdot z\right)\right) \cdot \cos \left(\mathsf{fma}\left(\frac{-t}{3.0}, z, \frac{t}{3.0} \cdot z\right)\right) - \sin \left(\mathsf{fma}\left(\sqrt[3]{y} \cdot \sqrt[3]{y}, \sqrt[3]{y}, \frac{-t}{3.0} \cdot z\right)\right) \cdot \sin \left(\mathsf{fma}\left(\frac{-t}{3.0}, z, \frac{t}{3.0} \cdot z\right)\right)\right) \cdot \left(\sqrt{x} \cdot 2.0\right) - \frac{a}{b \cdot 3.0}\\

\mathbf{elif}\;z \cdot t \le 7.38439639698813 \cdot 10^{+306}:\\
\;\;\;\;\left(\sqrt{x} \cdot 2.0\right) \cdot \left(\cos \left(\frac{z \cdot t}{3.0}\right) \cdot \cos y + \sin y \cdot \sin \left(\frac{t}{\sqrt[3]{3.0}} \cdot \frac{z}{\sqrt[3]{3.0} \cdot \sqrt[3]{3.0}}\right)\right) - \frac{a}{b \cdot 3.0}\\

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{-1}{2}, y \cdot y, 1\right) \cdot \left(\sqrt{x} \cdot 2.0\right) - \frac{a}{b \cdot 3.0}\\

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r32035918 = 2.0;
        double r32035919 = x;
        double r32035920 = sqrt(r32035919);
        double r32035921 = r32035918 * r32035920;
        double r32035922 = y;
        double r32035923 = z;
        double r32035924 = t;
        double r32035925 = r32035923 * r32035924;
        double r32035926 = 3.0;
        double r32035927 = r32035925 / r32035926;
        double r32035928 = r32035922 - r32035927;
        double r32035929 = cos(r32035928);
        double r32035930 = r32035921 * r32035929;
        double r32035931 = a;
        double r32035932 = b;
        double r32035933 = r32035932 * r32035926;
        double r32035934 = r32035931 / r32035933;
        double r32035935 = r32035930 - r32035934;
        return r32035935;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r32035936 = z;
        double r32035937 = t;
        double r32035938 = r32035936 * r32035937;
        double r32035939 = -2.0242052511188462e+300;
        bool r32035940 = r32035938 <= r32035939;
        double r32035941 = -0.5;
        double r32035942 = y;
        double r32035943 = r32035942 * r32035942;
        double r32035944 = 1.0;
        double r32035945 = fma(r32035941, r32035943, r32035944);
        double r32035946 = x;
        double r32035947 = sqrt(r32035946);
        double r32035948 = 2.0;
        double r32035949 = r32035947 * r32035948;
        double r32035950 = r32035945 * r32035949;
        double r32035951 = a;
        double r32035952 = b;
        double r32035953 = 3.0;
        double r32035954 = r32035952 * r32035953;
        double r32035955 = r32035951 / r32035954;
        double r32035956 = r32035950 - r32035955;
        double r32035957 = -9.018122894565441e+61;
        bool r32035958 = r32035938 <= r32035957;
        double r32035959 = cbrt(r32035942);
        double r32035960 = r32035959 * r32035959;
        double r32035961 = -r32035937;
        double r32035962 = r32035961 / r32035953;
        double r32035963 = r32035962 * r32035936;
        double r32035964 = fma(r32035960, r32035959, r32035963);
        double r32035965 = cos(r32035964);
        double r32035966 = r32035937 / r32035953;
        double r32035967 = r32035966 * r32035936;
        double r32035968 = fma(r32035962, r32035936, r32035967);
        double r32035969 = cos(r32035968);
        double r32035970 = r32035965 * r32035969;
        double r32035971 = sin(r32035964);
        double r32035972 = sin(r32035968);
        double r32035973 = r32035971 * r32035972;
        double r32035974 = r32035970 - r32035973;
        double r32035975 = r32035974 * r32035949;
        double r32035976 = r32035975 - r32035955;
        double r32035977 = 7.38439639698813e+306;
        bool r32035978 = r32035938 <= r32035977;
        double r32035979 = r32035938 / r32035953;
        double r32035980 = cos(r32035979);
        double r32035981 = cos(r32035942);
        double r32035982 = r32035980 * r32035981;
        double r32035983 = sin(r32035942);
        double r32035984 = cbrt(r32035953);
        double r32035985 = r32035937 / r32035984;
        double r32035986 = r32035984 * r32035984;
        double r32035987 = r32035936 / r32035986;
        double r32035988 = r32035985 * r32035987;
        double r32035989 = sin(r32035988);
        double r32035990 = r32035983 * r32035989;
        double r32035991 = r32035982 + r32035990;
        double r32035992 = r32035949 * r32035991;
        double r32035993 = r32035992 - r32035955;
        double r32035994 = r32035978 ? r32035993 : r32035956;
        double r32035995 = r32035958 ? r32035976 : r32035994;
        double r32035996 = r32035940 ? r32035956 : r32035995;
        return r32035996;
}

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

Target

Original20.1
Target18.4
Herbie16.7
\[\begin{array}{l} \mathbf{if}\;z \lt -1.3793337487235141 \cdot 10^{+129}:\\ \;\;\;\;\left(2.0 \cdot \sqrt{x}\right) \cdot \cos \left(\frac{1}{y} - \frac{\frac{0.3333333333333333}{z}}{t}\right) - \frac{\frac{a}{3.0}}{b}\\ \mathbf{elif}\;z \lt 3.516290613555987 \cdot 10^{+106}:\\ \;\;\;\;\left(\sqrt{x} \cdot 2.0\right) \cdot \cos \left(y - \frac{t}{3.0} \cdot z\right) - \frac{\frac{a}{3.0}}{b}\\ \mathbf{else}:\\ \;\;\;\;\cos \left(y - \frac{\frac{0.3333333333333333}{z}}{t}\right) \cdot \left(2.0 \cdot \sqrt{x}\right) - \frac{\frac{a}{b}}{3.0}\\ \end{array}\]

Derivation

  1. Split input into 3 regimes
  2. if (* z t) < -2.0242052511188462e+300 or 7.38439639698813e+306 < (* z t)

    1. Initial program 61.6

      \[\left(2.0 \cdot \sqrt{x}\right) \cdot \cos \left(y - \frac{z \cdot t}{3.0}\right) - \frac{a}{b \cdot 3.0}\]
    2. Taylor expanded around 0 44.8

      \[\leadsto \left(2.0 \cdot \sqrt{x}\right) \cdot \color{blue}{\left(1 - \frac{1}{2} \cdot {y}^{2}\right)} - \frac{a}{b \cdot 3.0}\]
    3. Simplified44.8

      \[\leadsto \left(2.0 \cdot \sqrt{x}\right) \cdot \color{blue}{\mathsf{fma}\left(\frac{-1}{2}, y \cdot y, 1\right)} - \frac{a}{b \cdot 3.0}\]

    if -2.0242052511188462e+300 < (* z t) < -9.018122894565441e+61

    1. Initial program 33.5

      \[\left(2.0 \cdot \sqrt{x}\right) \cdot \cos \left(y - \frac{z \cdot t}{3.0}\right) - \frac{a}{b \cdot 3.0}\]
    2. Using strategy rm
    3. Applied *-un-lft-identity33.5

      \[\leadsto \left(2.0 \cdot \sqrt{x}\right) \cdot \cos \left(y - \frac{z \cdot t}{\color{blue}{1 \cdot 3.0}}\right) - \frac{a}{b \cdot 3.0}\]
    4. Applied times-frac33.2

      \[\leadsto \left(2.0 \cdot \sqrt{x}\right) \cdot \cos \left(y - \color{blue}{\frac{z}{1} \cdot \frac{t}{3.0}}\right) - \frac{a}{b \cdot 3.0}\]
    5. Applied add-cube-cbrt33.2

      \[\leadsto \left(2.0 \cdot \sqrt{x}\right) \cdot \cos \left(\color{blue}{\left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) \cdot \sqrt[3]{y}} - \frac{z}{1} \cdot \frac{t}{3.0}\right) - \frac{a}{b \cdot 3.0}\]
    6. Applied prod-diff33.2

      \[\leadsto \left(2.0 \cdot \sqrt{x}\right) \cdot \cos \color{blue}{\left(\mathsf{fma}\left(\sqrt[3]{y} \cdot \sqrt[3]{y}, \sqrt[3]{y}, -\frac{t}{3.0} \cdot \frac{z}{1}\right) + \mathsf{fma}\left(-\frac{t}{3.0}, \frac{z}{1}, \frac{t}{3.0} \cdot \frac{z}{1}\right)\right)} - \frac{a}{b \cdot 3.0}\]
    7. Applied cos-sum27.6

      \[\leadsto \left(2.0 \cdot \sqrt{x}\right) \cdot \color{blue}{\left(\cos \left(\mathsf{fma}\left(\sqrt[3]{y} \cdot \sqrt[3]{y}, \sqrt[3]{y}, -\frac{t}{3.0} \cdot \frac{z}{1}\right)\right) \cdot \cos \left(\mathsf{fma}\left(-\frac{t}{3.0}, \frac{z}{1}, \frac{t}{3.0} \cdot \frac{z}{1}\right)\right) - \sin \left(\mathsf{fma}\left(\sqrt[3]{y} \cdot \sqrt[3]{y}, \sqrt[3]{y}, -\frac{t}{3.0} \cdot \frac{z}{1}\right)\right) \cdot \sin \left(\mathsf{fma}\left(-\frac{t}{3.0}, \frac{z}{1}, \frac{t}{3.0} \cdot \frac{z}{1}\right)\right)\right)} - \frac{a}{b \cdot 3.0}\]

    if -9.018122894565441e+61 < (* z t) < 7.38439639698813e+306

    1. Initial program 10.6

      \[\left(2.0 \cdot \sqrt{x}\right) \cdot \cos \left(y - \frac{z \cdot t}{3.0}\right) - \frac{a}{b \cdot 3.0}\]
    2. Using strategy rm
    3. Applied cos-diff10.0

      \[\leadsto \left(2.0 \cdot \sqrt{x}\right) \cdot \color{blue}{\left(\cos y \cdot \cos \left(\frac{z \cdot t}{3.0}\right) + \sin y \cdot \sin \left(\frac{z \cdot t}{3.0}\right)\right)} - \frac{a}{b \cdot 3.0}\]
    4. Using strategy rm
    5. Applied add-cube-cbrt10.0

      \[\leadsto \left(2.0 \cdot \sqrt{x}\right) \cdot \left(\cos y \cdot \cos \left(\frac{z \cdot t}{3.0}\right) + \sin y \cdot \sin \left(\frac{z \cdot t}{\color{blue}{\left(\sqrt[3]{3.0} \cdot \sqrt[3]{3.0}\right) \cdot \sqrt[3]{3.0}}}\right)\right) - \frac{a}{b \cdot 3.0}\]
    6. Applied times-frac10.0

      \[\leadsto \left(2.0 \cdot \sqrt{x}\right) \cdot \left(\cos y \cdot \cos \left(\frac{z \cdot t}{3.0}\right) + \sin y \cdot \sin \color{blue}{\left(\frac{z}{\sqrt[3]{3.0} \cdot \sqrt[3]{3.0}} \cdot \frac{t}{\sqrt[3]{3.0}}\right)}\right) - \frac{a}{b \cdot 3.0}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification16.7

    \[\leadsto \begin{array}{l} \mathbf{if}\;z \cdot t \le -2.0242052511188462 \cdot 10^{+300}:\\ \;\;\;\;\mathsf{fma}\left(\frac{-1}{2}, y \cdot y, 1\right) \cdot \left(\sqrt{x} \cdot 2.0\right) - \frac{a}{b \cdot 3.0}\\ \mathbf{elif}\;z \cdot t \le -9.018122894565441 \cdot 10^{+61}:\\ \;\;\;\;\left(\cos \left(\mathsf{fma}\left(\sqrt[3]{y} \cdot \sqrt[3]{y}, \sqrt[3]{y}, \frac{-t}{3.0} \cdot z\right)\right) \cdot \cos \left(\mathsf{fma}\left(\frac{-t}{3.0}, z, \frac{t}{3.0} \cdot z\right)\right) - \sin \left(\mathsf{fma}\left(\sqrt[3]{y} \cdot \sqrt[3]{y}, \sqrt[3]{y}, \frac{-t}{3.0} \cdot z\right)\right) \cdot \sin \left(\mathsf{fma}\left(\frac{-t}{3.0}, z, \frac{t}{3.0} \cdot z\right)\right)\right) \cdot \left(\sqrt{x} \cdot 2.0\right) - \frac{a}{b \cdot 3.0}\\ \mathbf{elif}\;z \cdot t \le 7.38439639698813 \cdot 10^{+306}:\\ \;\;\;\;\left(\sqrt{x} \cdot 2.0\right) \cdot \left(\cos \left(\frac{z \cdot t}{3.0}\right) \cdot \cos y + \sin y \cdot \sin \left(\frac{t}{\sqrt[3]{3.0}} \cdot \frac{z}{\sqrt[3]{3.0} \cdot \sqrt[3]{3.0}}\right)\right) - \frac{a}{b \cdot 3.0}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{-1}{2}, y \cdot y, 1\right) \cdot \left(\sqrt{x} \cdot 2.0\right) - \frac{a}{b \cdot 3.0}\\ \end{array}\]

Reproduce

herbie shell --seed 2019163 +o rules:numerics
(FPCore (x y z t a b)
  :name "Diagrams.Solve.Polynomial:cubForm  from diagrams-solve-0.1, K"

  :herbie-target
  (if (< z -1.3793337487235141e+129) (- (* (* 2.0 (sqrt x)) (cos (- (/ 1 y) (/ (/ 0.3333333333333333 z) t)))) (/ (/ a 3.0) b)) (if (< z 3.516290613555987e+106) (- (* (* (sqrt x) 2.0) (cos (- y (* (/ t 3.0) z)))) (/ (/ a 3.0) b)) (- (* (cos (- y (/ (/ 0.3333333333333333 z) t))) (* 2.0 (sqrt x))) (/ (/ a b) 3.0))))

  (- (* (* 2.0 (sqrt x)) (cos (- y (/ (* z t) 3.0)))) (/ a (* b 3.0))))