\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)\left(x \cdot \cos \left(\frac{\left(\sqrt[3]{\left(y \cdot 2 + 1\right) \cdot \left(z \cdot t\right)} \cdot \sqrt[3]{\left(y \cdot 2 + 1\right) \cdot \left(z \cdot t\right)}\right) \cdot \left(\sqrt[3]{y \cdot 2 + 1} \cdot \sqrt[3]{z \cdot t}\right)}{16}\right)\right) \cdot \cos \left(\frac{\left(a \cdot 2 + 1\right) \cdot \left(b \cdot t\right)}{16}\right)double f(double x, double y, double z, double t, double a, double b) {
double r899566 = x;
double r899567 = y;
double r899568 = 2.0;
double r899569 = r899567 * r899568;
double r899570 = 1.0;
double r899571 = r899569 + r899570;
double r899572 = z;
double r899573 = r899571 * r899572;
double r899574 = t;
double r899575 = r899573 * r899574;
double r899576 = 16.0;
double r899577 = r899575 / r899576;
double r899578 = cos(r899577);
double r899579 = r899566 * r899578;
double r899580 = a;
double r899581 = r899580 * r899568;
double r899582 = r899581 + r899570;
double r899583 = b;
double r899584 = r899582 * r899583;
double r899585 = r899584 * r899574;
double r899586 = r899585 / r899576;
double r899587 = cos(r899586);
double r899588 = r899579 * r899587;
return r899588;
}
double f(double x, double y, double z, double t, double a, double b) {
double r899589 = x;
double r899590 = y;
double r899591 = 2.0;
double r899592 = r899590 * r899591;
double r899593 = 1.0;
double r899594 = r899592 + r899593;
double r899595 = z;
double r899596 = t;
double r899597 = r899595 * r899596;
double r899598 = r899594 * r899597;
double r899599 = cbrt(r899598);
double r899600 = r899599 * r899599;
double r899601 = cbrt(r899594);
double r899602 = cbrt(r899597);
double r899603 = r899601 * r899602;
double r899604 = r899600 * r899603;
double r899605 = 16.0;
double r899606 = r899604 / r899605;
double r899607 = cos(r899606);
double r899608 = r899589 * r899607;
double r899609 = a;
double r899610 = r899609 * r899591;
double r899611 = r899610 + r899593;
double r899612 = b;
double r899613 = r899612 * r899596;
double r899614 = r899611 * r899613;
double r899615 = r899614 / r899605;
double r899616 = cos(r899615);
double r899617 = r899608 * r899616;
return r899617;
}




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.6 |
| Herbie | 45.9 |
Initial program 46.4
rmApplied associate-*l*46.1
rmApplied associate-*l*45.8
rmApplied add-cube-cbrt45.8
rmApplied cbrt-prod45.9
Final simplification45.9
herbie shell --seed 2020039
(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))))