\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 r676740 = x;
double r676741 = y;
double r676742 = 2.0;
double r676743 = r676741 * r676742;
double r676744 = 1.0;
double r676745 = r676743 + r676744;
double r676746 = z;
double r676747 = r676745 * r676746;
double r676748 = t;
double r676749 = r676747 * r676748;
double r676750 = 16.0;
double r676751 = r676749 / r676750;
double r676752 = cos(r676751);
double r676753 = r676740 * r676752;
double r676754 = a;
double r676755 = r676754 * r676742;
double r676756 = r676755 + r676744;
double r676757 = b;
double r676758 = r676756 * r676757;
double r676759 = r676758 * r676748;
double r676760 = r676759 / r676750;
double r676761 = cos(r676760);
double r676762 = r676753 * r676761;
return r676762;
}
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 r676763 = x;
return r676763;
}




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.1 |
|---|---|
| Target | 44.3 |
| Herbie | 44.0 |
Initial program 46.1
Taylor expanded around 0 45.3
Taylor expanded around 0 44.0
Final simplification44.0
herbie shell --seed 2019198 +o rules:numerics
(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))))