\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 r641127 = x;
double r641128 = y;
double r641129 = 2.0;
double r641130 = r641128 * r641129;
double r641131 = 1.0;
double r641132 = r641130 + r641131;
double r641133 = z;
double r641134 = r641132 * r641133;
double r641135 = t;
double r641136 = r641134 * r641135;
double r641137 = 16.0;
double r641138 = r641136 / r641137;
double r641139 = cos(r641138);
double r641140 = r641127 * r641139;
double r641141 = a;
double r641142 = r641141 * r641129;
double r641143 = r641142 + r641131;
double r641144 = b;
double r641145 = r641143 * r641144;
double r641146 = r641145 * r641135;
double r641147 = r641146 / r641137;
double r641148 = cos(r641147);
double r641149 = r641140 * r641148;
return r641149;
}
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 r641150 = x;
return r641150;
}




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
Taylor expanded around 0 45.6
Taylor expanded around 0 44.3
Final simplification44.3
herbie shell --seed 2019347 +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))))