\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 \cdot \cos \left(\frac{0}{16}\right)double f(double x, double y, double z, double t, double a, double b) {
double r1529961 = x;
double r1529962 = y;
double r1529963 = 2.0;
double r1529964 = r1529962 * r1529963;
double r1529965 = 1.0;
double r1529966 = r1529964 + r1529965;
double r1529967 = z;
double r1529968 = r1529966 * r1529967;
double r1529969 = t;
double r1529970 = r1529968 * r1529969;
double r1529971 = 16.0;
double r1529972 = r1529970 / r1529971;
double r1529973 = cos(r1529972);
double r1529974 = r1529961 * r1529973;
double r1529975 = a;
double r1529976 = r1529975 * r1529963;
double r1529977 = r1529976 + r1529965;
double r1529978 = b;
double r1529979 = r1529977 * r1529978;
double r1529980 = r1529979 * r1529969;
double r1529981 = r1529980 / r1529971;
double r1529982 = cos(r1529981);
double r1529983 = r1529974 * r1529982;
return r1529983;
}
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 r1529984 = x;
double r1529985 = 0.0;
double r1529986 = 16.0;
double r1529987 = r1529985 / r1529986;
double r1529988 = cos(r1529987);
double r1529989 = r1529984 * r1529988;
return r1529989;
}




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
Taylor expanded around 0 45.3
Taylor expanded around 0 44.2
Final simplification44.2
herbie shell --seed 2020047
(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))))