\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)\cos \left(\frac{0}{16}\right) \cdot xdouble f(double x, double y, double z, double t, double a, double b) {
double r874043 = x;
double r874044 = y;
double r874045 = 2.0;
double r874046 = r874044 * r874045;
double r874047 = 1.0;
double r874048 = r874046 + r874047;
double r874049 = z;
double r874050 = r874048 * r874049;
double r874051 = t;
double r874052 = r874050 * r874051;
double r874053 = 16.0;
double r874054 = r874052 / r874053;
double r874055 = cos(r874054);
double r874056 = r874043 * r874055;
double r874057 = a;
double r874058 = r874057 * r874045;
double r874059 = r874058 + r874047;
double r874060 = b;
double r874061 = r874059 * r874060;
double r874062 = r874061 * r874051;
double r874063 = r874062 / r874053;
double r874064 = cos(r874063);
double r874065 = r874056 * r874064;
return r874065;
}
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 r874066 = 0.0;
double r874067 = 16.0;
double r874068 = r874066 / r874067;
double r874069 = cos(r874068);
double r874070 = x;
double r874071 = r874069 * r874070;
return r874071;
}




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.3 |
|---|---|
| Target | 44.6 |
| Herbie | 44.3 |
Initial program 46.3
Taylor expanded around 0 45.6
Taylor expanded around 0 44.3
Final simplification44.3
herbie shell --seed 2020003
(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))))