\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 \leq -7.405353146839985 \cdot 10^{+28}:\\
\;\;\;\;x\\
\mathbf{elif}\;t \leq 1.8640896652451287 \cdot 10^{-71}:\\
\;\;\;\;\left(x \cdot \cos \left(0.0625 \cdot \left(t \cdot z\right)\right)\right) \cdot \cos \left(\sqrt[3]{0.0625 + a \cdot 0.125} \cdot \left(\left(t \cdot b\right) \cdot \left(\sqrt[3]{0.0625 + a \cdot 0.125} \cdot \sqrt[3]{0.0625 + a \cdot 0.125}\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;x\\
\end{array}(FPCore (x y z t a b) :precision binary64 (* (* x (cos (/ (* (* (+ (* y 2.0) 1.0) z) t) 16.0))) (cos (/ (* (* (+ (* a 2.0) 1.0) b) t) 16.0))))
(FPCore (x y z t a b)
:precision binary64
(if (<= t -7.405353146839985e+28)
x
(if (<= t 1.8640896652451287e-71)
(*
(* x (cos (* 0.0625 (* t z))))
(cos
(*
(cbrt (+ 0.0625 (* a 0.125)))
(*
(* t b)
(* (cbrt (+ 0.0625 (* a 0.125))) (cbrt (+ 0.0625 (* a 0.125))))))))
x)))double code(double x, double y, double z, double t, double a, double b) {
return (x * cos(((((y * 2.0) + 1.0) * z) * t) / 16.0)) * cos(((((a * 2.0) + 1.0) * b) * t) / 16.0);
}
double code(double x, double y, double z, double t, double a, double b) {
double tmp;
if (t <= -7.405353146839985e+28) {
tmp = x;
} else if (t <= 1.8640896652451287e-71) {
tmp = (x * cos(0.0625 * (t * z))) * cos(cbrt(0.0625 + (a * 0.125)) * ((t * b) * (cbrt(0.0625 + (a * 0.125)) * cbrt(0.0625 + (a * 0.125)))));
} else {
tmp = x;
}
return tmp;
}




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.7 |
|---|---|
| Target | 44.9 |
| Herbie | 44.3 |
if t < -7.4053531468399852e28 or 1.8640896652451287e-71 < t Initial program 58.0
Simplified58.0
Taylor expanded around 0 57.6
Taylor expanded around 0 54.5
if -7.4053531468399852e28 < t < 1.8640896652451287e-71Initial program 34.1
Simplified32.8
Taylor expanded around 0 32.7
rmApplied add-cube-cbrt_binary64_2057332.8
Applied associate-*r*_binary64_2047832.9
Simplified32.9
Final simplification44.3
herbie shell --seed 2021044
(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.0) (/ t (+ (- 1.0 (* a 2.0)) (pow (* a 2.0) 2.0))))))
(* (* x (cos (/ (* (* (+ (* y 2.0) 1.0) z) t) 16.0))) (cos (/ (* (* (+ (* a 2.0) 1.0) b) t) 16.0))))