\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 r163634439 = x;
double r163634440 = y;
double r163634441 = 2.0;
double r163634442 = r163634440 * r163634441;
double r163634443 = 1.0;
double r163634444 = r163634442 + r163634443;
double r163634445 = z;
double r163634446 = r163634444 * r163634445;
double r163634447 = t;
double r163634448 = r163634446 * r163634447;
double r163634449 = 16.0;
double r163634450 = r163634448 / r163634449;
double r163634451 = cos(r163634450);
double r163634452 = r163634439 * r163634451;
double r163634453 = a;
double r163634454 = r163634453 * r163634441;
double r163634455 = r163634454 + r163634443;
double r163634456 = b;
double r163634457 = r163634455 * r163634456;
double r163634458 = r163634457 * r163634447;
double r163634459 = r163634458 / r163634449;
double r163634460 = cos(r163634459);
double r163634461 = r163634452 * r163634460;
return r163634461;
}
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 r163634462 = x;
return r163634462;
}




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.0 |
|---|---|
| Target | 44.2 |
| Herbie | 44.0 |
Initial program 46.0
Taylor expanded around 0 45.4
Taylor expanded around 0 44.0
Final simplification44.0
herbie shell --seed 2019173 +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))))