\left(2 \cdot \sqrt{x}\right) \cdot \cos \left(y - \frac{z \cdot t}{3}\right) - \frac{a}{b \cdot 3}
\begin{array}{l}
t_1 := 2 \cdot \sqrt{x}\\
t_2 := \frac{a}{b \cdot 3}\\
t_3 := \frac{z \cdot t}{3}\\
\mathbf{if}\;z \cdot t \leq -2.1488931442503473 \cdot 10^{+34}:\\
\;\;\;\;\mathsf{fma}\left(a, \frac{-0.3333333333333333}{b}, t_1\right)\\
\mathbf{elif}\;z \cdot t \leq 4.50876227333934 \cdot 10^{+210}:\\
\;\;\;\;t_1 \cdot \mathsf{fma}\left(\cos y, \cos t_3, \sin y \cdot \sin t_3\right) - t_2\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\sqrt[3]{x \cdot 4}, \cos y \cdot \sqrt[3]{t_1}, -t_2\right)\\
\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
(let* ((t_1 (* 2.0 (sqrt x))) (t_2 (/ a (* b 3.0))) (t_3 (/ (* z t) 3.0)))
(if (<= (* z t) -2.1488931442503473e+34)
(fma a (/ -0.3333333333333333 b) t_1)
(if (<= (* z t) 4.50876227333934e+210)
(- (* t_1 (fma (cos y) (cos t_3) (* (sin y) (sin t_3)))) t_2)
(fma (cbrt (* x 4.0)) (* (cos y) (cbrt t_1)) (- t_2))))))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 t_1 = 2.0 * sqrt(x);
double t_2 = a / (b * 3.0);
double t_3 = (z * t) / 3.0;
double tmp;
if ((z * t) <= -2.1488931442503473e+34) {
tmp = fma(a, (-0.3333333333333333 / b), t_1);
} else if ((z * t) <= 4.50876227333934e+210) {
tmp = (t_1 * fma(cos(y), cos(t_3), (sin(y) * sin(t_3)))) - t_2;
} else {
tmp = fma(cbrt((x * 4.0)), (cos(y) * cbrt(t_1)), -t_2);
}
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
| Original | 20.4 |
|---|---|
| Target | 18.5 |
| Herbie | 16.2 |
if (*.f64 z t) < -2.1488931442503473e34Initial program 41.9
Taylor expanded in z around 0 33.6
Applied egg-rr33.6
Taylor expanded in y around 0 33.3
if -2.1488931442503473e34 < (*.f64 z t) < 4.50876227333934e210Initial program 8.3
Applied egg-rr7.7
if 4.50876227333934e210 < (*.f64 z t) Initial program 51.2
Taylor expanded in z around 0 33.8
Applied egg-rr33.8
Final simplification16.2
herbie shell --seed 2022130
(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))))