\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)\begin{array}{l}
\mathbf{if}\;t \le -1.15995610624310824 \cdot 10^{97}:\\
\;\;\;\;x\\
\mathbf{elif}\;t \le 939077.084066903102:\\
\;\;\;\;\left(x \cdot \cos \left(\frac{\left(y \cdot 2 + 1\right) \cdot \left(z \cdot t\right)}{16}\right)\right) \cdot \cos \left(\frac{\left(\left(a \cdot 2 + 1\right) \cdot b\right) \cdot t}{16}\right)\\
\mathbf{else}:\\
\;\;\;\;\left(x \cdot 1\right) \cdot \cos \left(\frac{a \cdot 2 + 1}{\sqrt[3]{16} \cdot \sqrt[3]{16}} \cdot \frac{b \cdot t}{\sqrt[3]{16}}\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r971594 = x;
double r971595 = y;
double r971596 = 2.0;
double r971597 = r971595 * r971596;
double r971598 = 1.0;
double r971599 = r971597 + r971598;
double r971600 = z;
double r971601 = r971599 * r971600;
double r971602 = t;
double r971603 = r971601 * r971602;
double r971604 = 16.0;
double r971605 = r971603 / r971604;
double r971606 = cos(r971605);
double r971607 = r971594 * r971606;
double r971608 = a;
double r971609 = r971608 * r971596;
double r971610 = r971609 + r971598;
double r971611 = b;
double r971612 = r971610 * r971611;
double r971613 = r971612 * r971602;
double r971614 = r971613 / r971604;
double r971615 = cos(r971614);
double r971616 = r971607 * r971615;
return r971616;
}
double f(double x, double y, double z, double t, double a, double b) {
double r971617 = t;
double r971618 = -1.1599561062431082e+97;
bool r971619 = r971617 <= r971618;
double r971620 = x;
double r971621 = 939077.0840669031;
bool r971622 = r971617 <= r971621;
double r971623 = y;
double r971624 = 2.0;
double r971625 = r971623 * r971624;
double r971626 = 1.0;
double r971627 = r971625 + r971626;
double r971628 = z;
double r971629 = r971628 * r971617;
double r971630 = r971627 * r971629;
double r971631 = 16.0;
double r971632 = r971630 / r971631;
double r971633 = cos(r971632);
double r971634 = r971620 * r971633;
double r971635 = a;
double r971636 = r971635 * r971624;
double r971637 = r971636 + r971626;
double r971638 = b;
double r971639 = r971637 * r971638;
double r971640 = r971639 * r971617;
double r971641 = r971640 / r971631;
double r971642 = cos(r971641);
double r971643 = r971634 * r971642;
double r971644 = 1.0;
double r971645 = r971620 * r971644;
double r971646 = cbrt(r971631);
double r971647 = r971646 * r971646;
double r971648 = r971637 / r971647;
double r971649 = r971638 * r971617;
double r971650 = r971649 / r971646;
double r971651 = r971648 * r971650;
double r971652 = cos(r971651);
double r971653 = r971645 * r971652;
double r971654 = r971622 ? r971643 : r971653;
double r971655 = r971619 ? r971620 : r971654;
return r971655;
}




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.5 |
| Herbie | 44.8 |
if t < -1.1599561062431082e+97Initial program 60.7
Taylor expanded around 0 58.9
Taylor expanded around 0 55.9
if -1.1599561062431082e+97 < t < 939077.0840669031Initial program 36.7
rmApplied associate-*l*36.2
if 939077.0840669031 < t Initial program 58.8
Taylor expanded around 0 57.5
rmApplied associate-*l*57.5
rmApplied add-cube-cbrt57.4
Applied times-frac57.4
Final simplification44.8
herbie shell --seed 2020020
(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))))