\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 r905210 = x;
double r905211 = y;
double r905212 = 2.0;
double r905213 = r905211 * r905212;
double r905214 = 1.0;
double r905215 = r905213 + r905214;
double r905216 = z;
double r905217 = r905215 * r905216;
double r905218 = t;
double r905219 = r905217 * r905218;
double r905220 = 16.0;
double r905221 = r905219 / r905220;
double r905222 = cos(r905221);
double r905223 = r905210 * r905222;
double r905224 = a;
double r905225 = r905224 * r905212;
double r905226 = r905225 + r905214;
double r905227 = b;
double r905228 = r905226 * r905227;
double r905229 = r905228 * r905218;
double r905230 = r905229 / r905220;
double r905231 = cos(r905230);
double r905232 = r905223 * r905231;
return r905232;
}
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 r905233 = x;
return r905233;
}




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 +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))))