\left(2 \cdot \sqrt{x}\right) \cdot \cos \left(y - \frac{z \cdot t}{3}\right) - \frac{a}{b \cdot 3}\begin{array}{l}
\mathbf{if}\;y - \frac{z \cdot t}{3} \leq -9.841278127820592 \cdot 10^{+303}:\\
\;\;\;\;2 \cdot \sqrt{x} - \frac{0.3333333333333333 \cdot a}{b}\\
\mathbf{elif}\;y - \frac{z \cdot t}{3} \leq 3.6312880224776764 \cdot 10^{+287}:\\
\;\;\;\;\left(2 \cdot \sqrt{x}\right) \cdot \cos \left(y - \frac{z \cdot t}{3}\right) - \frac{a}{3 \cdot b}\\
\mathbf{else}:\\
\;\;\;\;2 \cdot \sqrt{x} - \frac{a}{3 \cdot b}\\
\end{array}(FPCore (x y z t a b) :precision binary64 (- (* (* 2.0 (sqrt x)) (cos (- y (/ (* z t) 3.0)))) (/ a (* b 3.0))))
(FPCore (x y z t a b)
:precision binary64
(if (<= (- y (/ (* z t) 3.0)) -9.841278127820592e+303)
(- (* 2.0 (sqrt x)) (/ (* 0.3333333333333333 a) b))
(if (<= (- y (/ (* z t) 3.0)) 3.6312880224776764e+287)
(- (* (* 2.0 (sqrt x)) (cos (- y (/ (* z t) 3.0)))) (/ a (* 3.0 b)))
(- (* 2.0 (sqrt x)) (/ a (* 3.0 b))))))double code(double x, double y, double z, double t, double a, double b) {
return ((2.0 * sqrt(x)) * cos(y - ((z * t) / 3.0))) - (a / (b * 3.0));
}
double code(double x, double y, double z, double t, double a, double b) {
double tmp;
if ((y - ((z * t) / 3.0)) <= -9.841278127820592e+303) {
tmp = (2.0 * sqrt(x)) - ((0.3333333333333333 * a) / b);
} else if ((y - ((z * t) / 3.0)) <= 3.6312880224776764e+287) {
tmp = ((2.0 * sqrt(x)) * cos(y - ((z * t) / 3.0))) - (a / (3.0 * b));
} else {
tmp = (2.0 * sqrt(x)) - (a / (3.0 * b));
}
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 | 21.0 |
|---|---|
| Target | 18.8 |
| Herbie | 17.1 |
if (-.f64 y (/.f64 (*.f64 z t) 3)) < -9.84127812782059189e303Initial program 61.2
Taylor expanded around 0 29.4
rmApplied *-un-lft-identity_binary64_1712829.4
Applied times-frac_binary64_1713429.5
rmApplied associate-*l/_binary64_1707129.4
Simplified29.5
Taylor expanded around 0 30.1
if -9.84127812782059189e303 < (-.f64 y (/.f64 (*.f64 z t) 3)) < 3.63128802247767639e287Initial program 14.4
if 3.63128802247767639e287 < (-.f64 y (/.f64 (*.f64 z t) 3)) Initial program 52.5
Taylor expanded around 0 28.8
Taylor expanded around 0 31.9
Final simplification17.1
herbie shell --seed 2021023
(FPCore (x y z t a b)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, K"
:precision binary64
:herbie-target
(if (< z -1.3793337487235141e+129) (- (* (* 2.0 (sqrt x)) (cos (- (/ 1.0 y) (/ (/ 0.3333333333333333 z) t)))) (/ (/ a 3.0) b)) (if (< z 3.516290613555987e+106) (- (* (* (sqrt x) 2.0) (cos (- y (* (/ t 3.0) z)))) (/ (/ a 3.0) b)) (- (* (cos (- y (/ (/ 0.3333333333333333 z) t))) (* 2.0 (sqrt x))) (/ (/ a b) 3.0))))
(- (* (* 2.0 (sqrt x)) (cos (- y (/ (* z t) 3.0)))) (/ a (* b 3.0))))