\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{\left(\sqrt[3]{y \cdot 2 + 1} \cdot \sqrt[3]{y \cdot 2 + 1}\right) \cdot \left(\left(\sqrt[3]{y \cdot 2 + 1} \cdot z\right) \cdot t\right)}{16}\right)double f(double x, double y, double z, double t, double a, double b) {
double r687422 = x;
double r687423 = y;
double r687424 = 2.0;
double r687425 = r687423 * r687424;
double r687426 = 1.0;
double r687427 = r687425 + r687426;
double r687428 = z;
double r687429 = r687427 * r687428;
double r687430 = t;
double r687431 = r687429 * r687430;
double r687432 = 16.0;
double r687433 = r687431 / r687432;
double r687434 = cos(r687433);
double r687435 = r687422 * r687434;
double r687436 = a;
double r687437 = r687436 * r687424;
double r687438 = r687437 + r687426;
double r687439 = b;
double r687440 = r687438 * r687439;
double r687441 = r687440 * r687430;
double r687442 = r687441 / r687432;
double r687443 = cos(r687442);
double r687444 = r687435 * r687443;
return r687444;
}
double f(double x, double y, double z, double t, double __attribute__((unused)) a, double __attribute__((unused)) b) {
double r687445 = x;
double r687446 = y;
double r687447 = 2.0;
double r687448 = r687446 * r687447;
double r687449 = 1.0;
double r687450 = r687448 + r687449;
double r687451 = cbrt(r687450);
double r687452 = r687451 * r687451;
double r687453 = z;
double r687454 = r687451 * r687453;
double r687455 = t;
double r687456 = r687454 * r687455;
double r687457 = r687452 * r687456;
double r687458 = 16.0;
double r687459 = r687457 / r687458;
double r687460 = cos(r687459);
double r687461 = r687445 * r687460;
return r687461;
}




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.2 |
|---|---|
| Target | 44.4 |
| Herbie | 45.2 |
Initial program 46.2
Taylor expanded around 0 45.4
rmApplied add-cube-cbrt45.4
Applied associate-*l*45.4
rmApplied associate-*l*45.2
Final simplification45.2
herbie shell --seed 2019235
(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))))