\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 r662434 = x;
double r662435 = y;
double r662436 = 2.0;
double r662437 = r662435 * r662436;
double r662438 = 1.0;
double r662439 = r662437 + r662438;
double r662440 = z;
double r662441 = r662439 * r662440;
double r662442 = t;
double r662443 = r662441 * r662442;
double r662444 = 16.0;
double r662445 = r662443 / r662444;
double r662446 = cos(r662445);
double r662447 = r662434 * r662446;
double r662448 = a;
double r662449 = r662448 * r662436;
double r662450 = r662449 + r662438;
double r662451 = b;
double r662452 = r662450 * r662451;
double r662453 = r662452 * r662442;
double r662454 = r662453 / r662444;
double r662455 = cos(r662454);
double r662456 = r662447 * r662455;
return r662456;
}
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 r662457 = x;
return r662457;
}




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
Simplified46.4
Taylor expanded around 0 45.5
Taylor expanded around 0 44.3
Final simplification44.3
herbie shell --seed 2019306 +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))))