Average Error: 46.7 → 45.2
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}\;z \le -1.1779311528106351 \cdot 10^{-256}:\\ \;\;\;\;\left(x \cdot 1\right) \cdot \cos \left(\frac{\left(\sqrt[3]{a \cdot 2 + 1} \cdot \sqrt[3]{a \cdot 2 + 1}\right) \cdot \left(\sqrt[3]{a \cdot 2 + 1} \cdot \left(b \cdot t\right)\right)}{16}\right)\\ \mathbf{elif}\;z \le 2.21843112193388165 \cdot 10^{139}:\\ \;\;\;\;\left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot 1\\ \mathbf{else}:\\ \;\;\;\;\left(x \cdot 1\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}\;z \le -1.1779311528106351 \cdot 10^{-256}:\\
\;\;\;\;\left(x \cdot 1\right) \cdot \cos \left(\frac{\left(\sqrt[3]{a \cdot 2 + 1} \cdot \sqrt[3]{a \cdot 2 + 1}\right) \cdot \left(\sqrt[3]{a \cdot 2 + 1} \cdot \left(b \cdot t\right)\right)}{16}\right)\\

\mathbf{elif}\;z \le 2.21843112193388165 \cdot 10^{139}:\\
\;\;\;\;\left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot 1\\

\mathbf{else}:\\
\;\;\;\;\left(x \cdot 1\right) \cdot 1\\

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r774075 = x;
        double r774076 = y;
        double r774077 = 2.0;
        double r774078 = r774076 * r774077;
        double r774079 = 1.0;
        double r774080 = r774078 + r774079;
        double r774081 = z;
        double r774082 = r774080 * r774081;
        double r774083 = t;
        double r774084 = r774082 * r774083;
        double r774085 = 16.0;
        double r774086 = r774084 / r774085;
        double r774087 = cos(r774086);
        double r774088 = r774075 * r774087;
        double r774089 = a;
        double r774090 = r774089 * r774077;
        double r774091 = r774090 + r774079;
        double r774092 = b;
        double r774093 = r774091 * r774092;
        double r774094 = r774093 * r774083;
        double r774095 = r774094 / r774085;
        double r774096 = cos(r774095);
        double r774097 = r774088 * r774096;
        return r774097;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r774098 = z;
        double r774099 = -1.1779311528106351e-256;
        bool r774100 = r774098 <= r774099;
        double r774101 = x;
        double r774102 = 1.0;
        double r774103 = r774101 * r774102;
        double r774104 = a;
        double r774105 = 2.0;
        double r774106 = r774104 * r774105;
        double r774107 = 1.0;
        double r774108 = r774106 + r774107;
        double r774109 = cbrt(r774108);
        double r774110 = r774109 * r774109;
        double r774111 = b;
        double r774112 = t;
        double r774113 = r774111 * r774112;
        double r774114 = r774109 * r774113;
        double r774115 = r774110 * r774114;
        double r774116 = 16.0;
        double r774117 = r774115 / r774116;
        double r774118 = cos(r774117);
        double r774119 = r774103 * r774118;
        double r774120 = 2.2184311219338817e+139;
        bool r774121 = r774098 <= r774120;
        double r774122 = y;
        double r774123 = r774122 * r774105;
        double r774124 = r774123 + r774107;
        double r774125 = r774124 * r774098;
        double r774126 = r774125 * r774112;
        double r774127 = r774126 / r774116;
        double r774128 = cos(r774127);
        double r774129 = r774101 * r774128;
        double r774130 = r774129 * r774102;
        double r774131 = r774103 * r774102;
        double r774132 = r774121 ? r774130 : r774131;
        double r774133 = r774100 ? r774119 : r774132;
        return r774133;
}

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

Original46.7
Target45.0
Herbie45.2
\[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 3 regimes
  2. if z < -1.1779311528106351e-256

    1. Initial program 47.1

      \[\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 46.3

      \[\leadsto \left(x \cdot \color{blue}{1}\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 associate-*l*46.0

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

      \[\leadsto \left(x \cdot 1\right) \cdot \cos \left(\frac{\color{blue}{\left(\left(\sqrt[3]{a \cdot 2 + 1} \cdot \sqrt[3]{a \cdot 2 + 1}\right) \cdot \sqrt[3]{a \cdot 2 + 1}\right)} \cdot \left(b \cdot t\right)}{16}\right)\]
    7. Applied associate-*l*46.0

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

    if -1.1779311528106351e-256 < z < 2.2184311219338817e+139

    1. Initial program 42.3

      \[\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 41.5

      \[\leadsto \left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot \color{blue}{1}\]

    if 2.2184311219338817e+139 < z

    1. Initial program 57.8

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

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

      \[\leadsto \left(x \cdot 1\right) \cdot \color{blue}{1}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification45.2

    \[\leadsto \begin{array}{l} \mathbf{if}\;z \le -1.1779311528106351 \cdot 10^{-256}:\\ \;\;\;\;\left(x \cdot 1\right) \cdot \cos \left(\frac{\left(\sqrt[3]{a \cdot 2 + 1} \cdot \sqrt[3]{a \cdot 2 + 1}\right) \cdot \left(\sqrt[3]{a \cdot 2 + 1} \cdot \left(b \cdot t\right)\right)}{16}\right)\\ \mathbf{elif}\;z \le 2.21843112193388165 \cdot 10^{139}:\\ \;\;\;\;\left(x \cdot \cos \left(\frac{\left(\left(y \cdot 2 + 1\right) \cdot z\right) \cdot t}{16}\right)\right) \cdot 1\\ \mathbf{else}:\\ \;\;\;\;\left(x \cdot 1\right) \cdot 1\\ \end{array}\]

Reproduce

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