Average Error: 20.6 → 16.1
Time: 42.7s
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}\;\cos \left(y - \frac{t \cdot z}{3.0}\right) \le 0.9999999999997474:\\ \;\;\;\;\left(\sqrt{x} \cdot 2.0\right) \cdot \left(\cos \left(\mathsf{fma}\left(-\frac{t}{3.0}, z, \frac{t}{3.0} \cdot z\right)\right) \cdot \log \left(e^{\cos \left(\mathsf{fma}\left(1, y, z \cdot \left(-\frac{t}{3.0}\right)\right)\right)}\right) - \sin \left(\mathsf{fma}\left(1, y, z \cdot \left(-\frac{t}{3.0}\right)\right)\right) \cdot \sin \left(\mathsf{fma}\left(-\frac{t}{3.0}, z, \frac{t}{3.0} \cdot z\right)\right)\right) - \frac{a}{b \cdot 3.0}\\ \mathbf{else}:\\ \;\;\;\;\left(\sqrt{x} \cdot 2.0\right) \cdot \mathsf{fma}\left(y \cdot y, \frac{-1}{2}, 1\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}\;\cos \left(y - \frac{t \cdot z}{3.0}\right) \le 0.9999999999997474:\\
\;\;\;\;\left(\sqrt{x} \cdot 2.0\right) \cdot \left(\cos \left(\mathsf{fma}\left(-\frac{t}{3.0}, z, \frac{t}{3.0} \cdot z\right)\right) \cdot \log \left(e^{\cos \left(\mathsf{fma}\left(1, y, z \cdot \left(-\frac{t}{3.0}\right)\right)\right)}\right) - \sin \left(\mathsf{fma}\left(1, y, z \cdot \left(-\frac{t}{3.0}\right)\right)\right) \cdot \sin \left(\mathsf{fma}\left(-\frac{t}{3.0}, z, \frac{t}{3.0} \cdot z\right)\right)\right) - \frac{a}{b \cdot 3.0}\\

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

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r32976893 = 2.0;
        double r32976894 = x;
        double r32976895 = sqrt(r32976894);
        double r32976896 = r32976893 * r32976895;
        double r32976897 = y;
        double r32976898 = z;
        double r32976899 = t;
        double r32976900 = r32976898 * r32976899;
        double r32976901 = 3.0;
        double r32976902 = r32976900 / r32976901;
        double r32976903 = r32976897 - r32976902;
        double r32976904 = cos(r32976903);
        double r32976905 = r32976896 * r32976904;
        double r32976906 = a;
        double r32976907 = b;
        double r32976908 = r32976907 * r32976901;
        double r32976909 = r32976906 / r32976908;
        double r32976910 = r32976905 - r32976909;
        return r32976910;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r32976911 = y;
        double r32976912 = t;
        double r32976913 = z;
        double r32976914 = r32976912 * r32976913;
        double r32976915 = 3.0;
        double r32976916 = r32976914 / r32976915;
        double r32976917 = r32976911 - r32976916;
        double r32976918 = cos(r32976917);
        double r32976919 = 0.9999999999997474;
        bool r32976920 = r32976918 <= r32976919;
        double r32976921 = x;
        double r32976922 = sqrt(r32976921);
        double r32976923 = 2.0;
        double r32976924 = r32976922 * r32976923;
        double r32976925 = r32976912 / r32976915;
        double r32976926 = -r32976925;
        double r32976927 = r32976925 * r32976913;
        double r32976928 = fma(r32976926, r32976913, r32976927);
        double r32976929 = cos(r32976928);
        double r32976930 = 1.0;
        double r32976931 = r32976913 * r32976926;
        double r32976932 = fma(r32976930, r32976911, r32976931);
        double r32976933 = cos(r32976932);
        double r32976934 = exp(r32976933);
        double r32976935 = log(r32976934);
        double r32976936 = r32976929 * r32976935;
        double r32976937 = sin(r32976932);
        double r32976938 = sin(r32976928);
        double r32976939 = r32976937 * r32976938;
        double r32976940 = r32976936 - r32976939;
        double r32976941 = r32976924 * r32976940;
        double r32976942 = a;
        double r32976943 = b;
        double r32976944 = r32976943 * r32976915;
        double r32976945 = r32976942 / r32976944;
        double r32976946 = r32976941 - r32976945;
        double r32976947 = r32976911 * r32976911;
        double r32976948 = -0.5;
        double r32976949 = fma(r32976947, r32976948, r32976930);
        double r32976950 = r32976924 * r32976949;
        double r32976951 = r32976950 - r32976945;
        double r32976952 = r32976920 ? r32976946 : r32976951;
        return r32976952;
}

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.6
Target18.6
Herbie16.1
\[\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 2 regimes
  2. if (cos (- y (/ (* z t) 3.0))) < 0.9999999999997474

    1. Initial program 19.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-identity19.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-frac19.4

      \[\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 *-un-lft-identity19.4

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

      \[\leadsto \left(2.0 \cdot \sqrt{x}\right) \cdot \cos \color{blue}{\left(\mathsf{fma}\left(1, 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-sum16.3

      \[\leadsto \left(2.0 \cdot \sqrt{x}\right) \cdot \color{blue}{\left(\cos \left(\mathsf{fma}\left(1, 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(1, 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}\]
    8. Using strategy rm
    9. Applied add-log-exp16.4

      \[\leadsto \left(2.0 \cdot \sqrt{x}\right) \cdot \left(\color{blue}{\log \left(e^{\cos \left(\mathsf{fma}\left(1, y, -\frac{t}{3.0} \cdot \frac{z}{1}\right)\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(1, 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 0.9999999999997474 < (cos (- y (/ (* z t) 3.0)))

    1. Initial program 22.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 15.6

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

      \[\leadsto \left(2.0 \cdot \sqrt{x}\right) \cdot \color{blue}{\mathsf{fma}\left(y \cdot y, \frac{-1}{2}, 1\right)} - \frac{a}{b \cdot 3.0}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification16.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;\cos \left(y - \frac{t \cdot z}{3.0}\right) \le 0.9999999999997474:\\ \;\;\;\;\left(\sqrt{x} \cdot 2.0\right) \cdot \left(\cos \left(\mathsf{fma}\left(-\frac{t}{3.0}, z, \frac{t}{3.0} \cdot z\right)\right) \cdot \log \left(e^{\cos \left(\mathsf{fma}\left(1, y, z \cdot \left(-\frac{t}{3.0}\right)\right)\right)}\right) - \sin \left(\mathsf{fma}\left(1, y, z \cdot \left(-\frac{t}{3.0}\right)\right)\right) \cdot \sin \left(\mathsf{fma}\left(-\frac{t}{3.0}, z, \frac{t}{3.0} \cdot z\right)\right)\right) - \frac{a}{b \cdot 3.0}\\ \mathbf{else}:\\ \;\;\;\;\left(\sqrt{x} \cdot 2.0\right) \cdot \mathsf{fma}\left(y \cdot y, \frac{-1}{2}, 1\right) - \frac{a}{b \cdot 3.0}\\ \end{array}\]

Reproduce

herbie shell --seed 2019164 +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))))