Average Error: 46.2 → 44.8
Time: 12.3s
Precision: 64
\[\left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right)\]
\[\begin{array}{l} \mathbf{if}\;b \le 6.9807938153255191 \cdot 10^{74}:\\ \;\;\;\;\left(x \cdot \cos \left(\frac{0}{16}\right)\right) \cdot \cos \left(\frac{\frac{\frac{\mathsf{fma}\left(a, 2, 1\right) \cdot \left(b \cdot t\right)}{\sqrt[3]{16}}}{\sqrt[3]{16}}}{{16}^{\frac{1}{3}}}\right)\\ \mathbf{else}:\\ \;\;\;\;\left(x \cdot \cos \left(\frac{0}{16}\right)\right) \cdot 1\\ \end{array}\]
\left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right)
\begin{array}{l}
\mathbf{if}\;b \le 6.9807938153255191 \cdot 10^{74}:\\
\;\;\;\;\left(x \cdot \cos \left(\frac{0}{16}\right)\right) \cdot \cos \left(\frac{\frac{\frac{\mathsf{fma}\left(a, 2, 1\right) \cdot \left(b \cdot t\right)}{\sqrt[3]{16}}}{\sqrt[3]{16}}}{{16}^{\frac{1}{3}}}\right)\\

\mathbf{else}:\\
\;\;\;\;\left(x \cdot \cos \left(\frac{0}{16}\right)\right) \cdot 1\\

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r896001 = x;
        double r896002 = y;
        double r896003 = 2.0;
        double r896004 = r896002 * r896003;
        double r896005 = 1.0;
        double r896006 = r896004 + r896005;
        double r896007 = z;
        double r896008 = r896006 * r896007;
        double r896009 = t;
        double r896010 = r896008 * r896009;
        double r896011 = 16.0;
        double r896012 = r896010 / r896011;
        double r896013 = cos(r896012);
        double r896014 = r896001 * r896013;
        double r896015 = a;
        double r896016 = r896015 * r896003;
        double r896017 = r896016 + r896005;
        double r896018 = b;
        double r896019 = r896017 * r896018;
        double r896020 = r896019 * r896009;
        double r896021 = r896020 / r896011;
        double r896022 = cos(r896021);
        double r896023 = r896014 * r896022;
        return r896023;
}

double f(double x, double __attribute__((unused)) y, double __attribute__((unused)) z, double t, double a, double b) {
        double r896024 = b;
        double r896025 = 6.980793815325519e+74;
        bool r896026 = r896024 <= r896025;
        double r896027 = x;
        double r896028 = 0.0;
        double r896029 = 16.0;
        double r896030 = r896028 / r896029;
        double r896031 = cos(r896030);
        double r896032 = r896027 * r896031;
        double r896033 = a;
        double r896034 = 2.0;
        double r896035 = 1.0;
        double r896036 = fma(r896033, r896034, r896035);
        double r896037 = t;
        double r896038 = r896024 * r896037;
        double r896039 = r896036 * r896038;
        double r896040 = cbrt(r896029);
        double r896041 = r896039 / r896040;
        double r896042 = r896041 / r896040;
        double r896043 = 0.3333333333333333;
        double r896044 = pow(r896029, r896043);
        double r896045 = r896042 / r896044;
        double r896046 = cos(r896045);
        double r896047 = r896032 * r896046;
        double r896048 = 1.0;
        double r896049 = r896032 * r896048;
        double r896050 = r896026 ? r896047 : r896049;
        return r896050;
}

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

Original46.2
Target44.5
Herbie44.8
\[x \cdot \cos \left(\frac{b}{16} \cdot \frac{t}{\left(1 - a \cdot 2\right) + {\left(a \cdot 2\right)}^{2}}\right)\]

Derivation

  1. Split input into 2 regimes
  2. if b < 6.980793815325519e+74

    1. Initial program 44.0

      \[\left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right)\]
    2. Taylor expanded around 0 43.2

      \[\leadsto \left(x \cdot \cos \left(\frac{\color{blue}{0}}{16}\right)\right) \cdot \cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right)\]
    3. Using strategy rm
    4. Applied add-cube-cbrt43.2

      \[\leadsto \left(x \cdot \cos \left(\frac{0}{16}\right)\right) \cdot \cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{\color{blue}{\left(\sqrt[3]{16} \cdot \sqrt[3]{16}\right) \cdot \sqrt[3]{16}}}\right)\]
    5. Applied associate-/r*43.2

      \[\leadsto \left(x \cdot \cos \left(\frac{0}{16}\right)\right) \cdot \cos \color{blue}{\left(\frac{\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{\sqrt[3]{16} \cdot \sqrt[3]{16}}}{\sqrt[3]{16}}\right)}\]
    6. Simplified43.0

      \[\leadsto \left(x \cdot \cos \left(\frac{0}{16}\right)\right) \cdot \cos \left(\frac{\color{blue}{\frac{\frac{\mathsf{fma}\left(a, 2, 1\right) \cdot \left(b \cdot t\right)}{\sqrt[3]{16}}}{\sqrt[3]{16}}}}{\sqrt[3]{16}}\right)\]
    7. Using strategy rm
    8. Applied pow1/343.0

      \[\leadsto \left(x \cdot \cos \left(\frac{0}{16}\right)\right) \cdot \cos \left(\frac{\frac{\frac{\mathsf{fma}\left(a, 2, 1\right) \cdot \left(b \cdot t\right)}{\sqrt[3]{16}}}{\sqrt[3]{16}}}{\color{blue}{{16}^{\frac{1}{3}}}}\right)\]

    if 6.980793815325519e+74 < b

    1. Initial program 55.9

      \[\left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right)\]
    2. Taylor expanded around 0 55.7

      \[\leadsto \left(x \cdot \cos \left(\frac{\color{blue}{0}}{16}\right)\right) \cdot \cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right)\]
    3. Taylor expanded around 0 52.5

      \[\leadsto \left(x \cdot \cos \left(\frac{0}{16}\right)\right) \cdot \color{blue}{1}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification44.8

    \[\leadsto \begin{array}{l} \mathbf{if}\;b \le 6.9807938153255191 \cdot 10^{74}:\\ \;\;\;\;\left(x \cdot \cos \left(\frac{0}{16}\right)\right) \cdot \cos \left(\frac{\frac{\frac{\mathsf{fma}\left(a, 2, 1\right) \cdot \left(b \cdot t\right)}{\sqrt[3]{16}}}{\sqrt[3]{16}}}{{16}^{\frac{1}{3}}}\right)\\ \mathbf{else}:\\ \;\;\;\;\left(x \cdot \cos \left(\frac{0}{16}\right)\right) \cdot 1\\ \end{array}\]

Reproduce

herbie shell --seed 2020020 +o rules:numerics
(FPCore (x y z t a b)
  :name "Codec.Picture.Jpg.FastDct:referenceDct from JuicyPixels-3.2.6.1"
  :precision binary64

  :herbie-target
  (* x (cos (* (/ b 16) (/ t (+ (- 1 (* a 2)) (pow (* a 2) 2))))))

  (* (* x (cos (/ (* (* (+ (* y 2) 1) z) t) 16))) (cos (/ (* (* (+ (* a 2) 1) b) t) 16))))