\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
double f(double x, double y, double z, double t, double a, double b) {
double r615609 = x;
double r615610 = y;
double r615611 = 2.0;
double r615612 = r615610 * r615611;
double r615613 = 1.0;
double r615614 = r615612 + r615613;
double r615615 = z;
double r615616 = r615614 * r615615;
double r615617 = t;
double r615618 = r615616 * r615617;
double r615619 = 16.0;
double r615620 = r615618 / r615619;
double r615621 = cos(r615620);
double r615622 = r615609 * r615621;
double r615623 = a;
double r615624 = r615623 * r615611;
double r615625 = r615624 + r615613;
double r615626 = b;
double r615627 = r615625 * r615626;
double r615628 = r615627 * r615617;
double r615629 = r615628 / r615619;
double r615630 = cos(r615629);
double r615631 = r615622 * r615630;
return r615631;
}
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 r615632 = x;
return r615632;
}




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.4 |
|---|---|
| Target | 44.5 |
| Herbie | 44.3 |
Initial program 46.4
Taylor expanded around 0 45.5
Taylor expanded around 0 44.3
Final simplification44.3
herbie shell --seed 2019306
(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))))