\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 r814584 = x;
double r814585 = y;
double r814586 = 2.0;
double r814587 = r814585 * r814586;
double r814588 = 1.0;
double r814589 = r814587 + r814588;
double r814590 = z;
double r814591 = r814589 * r814590;
double r814592 = t;
double r814593 = r814591 * r814592;
double r814594 = 16.0;
double r814595 = r814593 / r814594;
double r814596 = cos(r814595);
double r814597 = r814584 * r814596;
double r814598 = a;
double r814599 = r814598 * r814586;
double r814600 = r814599 + r814588;
double r814601 = b;
double r814602 = r814600 * r814601;
double r814603 = r814602 * r814592;
double r814604 = r814603 / r814594;
double r814605 = cos(r814604);
double r814606 = r814597 * r814605;
return r814606;
}
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 r814607 = x;
return r814607;
}




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.5 |
| Herbie | 44.2 |
Initial program 46.1
Simplified46.1
Taylor expanded around 0 45.3
Taylor expanded around 0 44.2
Final simplification44.2
herbie shell --seed 2020047 +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))))