\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;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
Results
| Original | 46.7 |
|---|---|
| Target | 45.0 |
| Herbie | 45.2 |
if z < -1.1779311528106351e-256Initial program 47.1
Taylor expanded around 0 46.3
rmApplied associate-*l*46.0
rmApplied add-cube-cbrt46.0
Applied associate-*l*46.0
if -1.1779311528106351e-256 < z < 2.2184311219338817e+139Initial program 42.3
Taylor expanded around 0 41.5
if 2.2184311219338817e+139 < z Initial program 57.8
Taylor expanded around 0 55.4
Taylor expanded around 0 53.7
Final simplification45.2
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))))