\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{0}{16}\right)double f(double x, double y, double z, double t, double a, double b) {
double r950486 = x;
double r950487 = y;
double r950488 = 2.0;
double r950489 = r950487 * r950488;
double r950490 = 1.0;
double r950491 = r950489 + r950490;
double r950492 = z;
double r950493 = r950491 * r950492;
double r950494 = t;
double r950495 = r950493 * r950494;
double r950496 = 16.0;
double r950497 = r950495 / r950496;
double r950498 = cos(r950497);
double r950499 = r950486 * r950498;
double r950500 = a;
double r950501 = r950500 * r950488;
double r950502 = r950501 + r950490;
double r950503 = b;
double r950504 = r950502 * r950503;
double r950505 = r950504 * r950494;
double r950506 = r950505 / r950496;
double r950507 = cos(r950506);
double r950508 = r950499 * r950507;
return r950508;
}
double f(double x, double __attribute__((unused)) y, double __attribute__((unused)) z, double __attribute__((unused)) t, double __attribute__((unused)) a, double __attribute__((unused)) b) {
double r950509 = x;
double r950510 = 0.0;
double r950511 = 16.0;
double r950512 = r950510 / r950511;
double r950513 = cos(r950512);
double r950514 = r950509 * r950513;
return r950514;
}




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.3 |
|---|---|
| Target | 44.6 |
| Herbie | 44.4 |
Initial program 46.3
Taylor expanded around 0 45.6
Taylor expanded around 0 44.4
Final simplification44.4
herbie shell --seed 2020065
(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))))