\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)x \cdot \cos \left(\frac{\sqrt[3]{\sqrt[3]{t}} \cdot \left(\left(\left(\left(\sqrt[3]{t} \cdot \sqrt[3]{t}\right) \cdot z\right) \cdot \left(2 \cdot y + 1\right)\right) \cdot \sqrt[3]{\sqrt[3]{t} \cdot \sqrt[3]{t}}\right)}{16}\right)double f(double x, double y, double z, double t, double a, double b) {
double r41591255 = x;
double r41591256 = y;
double r41591257 = 2.0;
double r41591258 = r41591256 * r41591257;
double r41591259 = 1.0;
double r41591260 = r41591258 + r41591259;
double r41591261 = z;
double r41591262 = r41591260 * r41591261;
double r41591263 = t;
double r41591264 = r41591262 * r41591263;
double r41591265 = 16.0;
double r41591266 = r41591264 / r41591265;
double r41591267 = cos(r41591266);
double r41591268 = r41591255 * r41591267;
double r41591269 = a;
double r41591270 = r41591269 * r41591257;
double r41591271 = r41591270 + r41591259;
double r41591272 = b;
double r41591273 = r41591271 * r41591272;
double r41591274 = r41591273 * r41591263;
double r41591275 = r41591274 / r41591265;
double r41591276 = cos(r41591275);
double r41591277 = r41591268 * r41591276;
return r41591277;
}
double f(double x, double y, double z, double t, double __attribute__((unused)) a, double __attribute__((unused)) b) {
double r41591278 = x;
double r41591279 = t;
double r41591280 = cbrt(r41591279);
double r41591281 = cbrt(r41591280);
double r41591282 = r41591280 * r41591280;
double r41591283 = z;
double r41591284 = r41591282 * r41591283;
double r41591285 = 2.0;
double r41591286 = y;
double r41591287 = r41591285 * r41591286;
double r41591288 = 1.0;
double r41591289 = r41591287 + r41591288;
double r41591290 = r41591284 * r41591289;
double r41591291 = cbrt(r41591282);
double r41591292 = r41591290 * r41591291;
double r41591293 = r41591281 * r41591292;
double r41591294 = 16.0;
double r41591295 = r41591293 / r41591294;
double r41591296 = cos(r41591295);
double r41591297 = r41591278 * r41591296;
return r41591297;
}




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.2 |
|---|---|
| Target | 44.3 |
| Herbie | 45.2 |
Initial program 46.2
Taylor expanded around 0 45.5
rmApplied add-cube-cbrt45.4
Applied associate-*r*45.4
rmApplied *-un-lft-identity45.4
Applied cbrt-prod45.4
Applied associate-*r*45.4
Simplified45.2
rmApplied add-cube-cbrt45.2
Applied cbrt-prod45.2
Applied associate-*r*45.2
Final simplification45.2
herbie shell --seed 2019172
(FPCore (x y z t a b)
:name "Codec.Picture.Jpg.FastDct:referenceDct from JuicyPixels-3.2.6.1"
:herbie-target
(* x (cos (* (/ b 16.0) (/ t (+ (- 1.0 (* a 2.0)) (pow (* a 2.0) 2.0))))))
(* (* x (cos (/ (* (* (+ (* y 2.0) 1.0) z) t) 16.0))) (cos (/ (* (* (+ (* a 2.0) 1.0) b) t) 16.0))))