\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 := \frac{a}{3 \cdot b}\\
t_2 := 2 \cdot \sqrt{x}\\
t_3 := t_2 \cdot \cos y - t_1\\
t_4 := y - \frac{z \cdot t}{3}\\
\mathbf{if}\;t_4 \leq -\infty:\\
\;\;\;\;t_3\\
\mathbf{elif}\;t_4 \leq 4.4498753054159406 \cdot 10^{+287}:\\
\;\;\;\;\begin{array}{l}
t_5 := z \cdot \frac{t}{3}\\
t_6 := \cos t_5\\
t_7 := -\frac{t}{3}\\
t_8 := \sin \left(z \cdot t_7\right)\\
t_9 := \mathsf{fma}\left(t_7, z, t_5\right)\\
t_2 \cdot \left(\left(\cos y \cdot t_6 - \sin y \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(t_8\right)\right)\right) \cdot \cos t_9 - \left(t_6 \cdot \sin y + \cos y \cdot t_8\right) \cdot \sin t_9\right) - t_1
\end{array}\\
\mathbf{else}:\\
\;\;\;\;t_3\\
\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 (/ a (* 3.0 b)))
(t_2 (* 2.0 (sqrt x)))
(t_3 (- (* t_2 (cos y)) t_1))
(t_4 (- y (/ (* z t) 3.0))))
(if (<= t_4 (- INFINITY))
t_3
(if (<= t_4 4.4498753054159406e+287)
(let* ((t_5 (* z (/ t 3.0)))
(t_6 (cos t_5))
(t_7 (- (/ t 3.0)))
(t_8 (sin (* z t_7)))
(t_9 (fma t_7 z t_5)))
(-
(*
t_2
(-
(* (- (* (cos y) t_6) (* (sin y) (expm1 (log1p t_8)))) (cos t_9))
(* (+ (* t_6 (sin y)) (* (cos y) t_8)) (sin t_9))))
t_1))
t_3))))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 = a / (3.0 * b);
double t_2 = 2.0 * sqrt(x);
double t_3 = (t_2 * cos(y)) - t_1;
double t_4 = y - ((z * t) / 3.0);
double tmp;
if (t_4 <= -((double) INFINITY)) {
tmp = t_3;
} else if (t_4 <= 4.4498753054159406e+287) {
double t_5 = z * (t / 3.0);
double t_6 = cos(t_5);
double t_7 = -(t / 3.0);
double t_8 = sin(z * t_7);
double t_9 = fma(t_7, z, t_5);
tmp = (t_2 * ((((cos(y) * t_6) - (sin(y) * expm1(log1p(t_8)))) * cos(t_9)) - (((t_6 * sin(y)) + (cos(y) * t_8)) * sin(t_9)))) - t_1;
} else {
tmp = t_3;
}
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 | 21.1 |
|---|---|
| Target | 19.1 |
| Herbie | 12.5 |
if (-.f64 y (/.f64 (*.f64 z t) 3)) < -inf.0 or 4.44987530541594057e287 < (-.f64 y (/.f64 (*.f64 z t) 3)) Initial program 57.9
Taylor expanded in z around 0 31.3
if -inf.0 < (-.f64 y (/.f64 (*.f64 z t) 3)) < 4.44987530541594057e287Initial program 14.4
Applied *-un-lft-identity_binary6414.4
Applied times-frac_binary6414.4
Applied *-un-lft-identity_binary6414.4
Applied prod-diff_binary6414.4
Applied cos-sum_binary6412.1
Applied fma-udef_binary6412.1
Applied cos-sum_binary6411.5
Simplified11.5
Simplified11.5
Applied fma-udef_binary6411.5
Applied sin-sum_binary649.1
Simplified9.1
Simplified9.1
Applied expm1-log1p-u_binary649.1
Final simplification12.5
herbie shell --seed 2022096
(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))))