x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\begin{array}{l}
\mathbf{if}\;a \le -2.3213324956078207 \cdot 10^{-103} \lor \neg \left(a \le 3.43843681074411541 \cdot 10^{-136}\right):\\
\;\;\;\;\mathsf{fma}\left(\frac{z - t}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}, \frac{y - x}{\sqrt[3]{a - t}}, x\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{x}{t}, z, y - \frac{z \cdot y}{t}\right)\\
\end{array}double code(double x, double y, double z, double t, double a) {
return (x + (((y - x) * (z - t)) / (a - t)));
}
double code(double x, double y, double z, double t, double a) {
double temp;
if (((a <= -2.3213324956078207e-103) || !(a <= 3.4384368107441154e-136))) {
temp = fma(((z - t) / (cbrt((a - t)) * cbrt((a - t)))), ((y - x) / cbrt((a - t))), x);
} else {
temp = fma((x / t), z, (y - ((z * y) / t)));
}
return temp;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.2 |
|---|---|
| Target | 9.3 |
| Herbie | 10.7 |
if a < -2.3213324956078207e-103 or 3.4384368107441154e-136 < a Initial program 21.9
Simplified10.9
rmApplied div-inv11.0
rmApplied fma-udef11.0
Simplified11.0
rmApplied add-cube-cbrt11.4
Applied *-un-lft-identity11.4
Applied times-frac11.4
Applied associate-*r*9.3
Simplified9.3
rmApplied fma-def9.3
if -2.3213324956078207e-103 < a < 3.4384368107441154e-136Initial program 30.3
Simplified25.0
rmApplied div-inv25.1
rmApplied fma-udef25.1
Simplified25.0
Taylor expanded around inf 15.1
Simplified14.6
Final simplification10.7
herbie shell --seed 2020066 +o rules:numerics
(FPCore (x y z t a)
:name "Graphics.Rendering.Chart.Axis.Types:linMap from Chart-1.5.3"
:precision binary64
:herbie-target
(if (< a -1.6153062845442575e-142) (+ x (* (/ (- y x) 1) (/ (- z t) (- a t)))) (if (< a 3.774403170083174e-182) (- y (* (/ z t) (- y x))) (+ x (* (/ (- y x) 1) (/ (- z t) (- a t))))))
(+ x (/ (* (- y x) (- z t)) (- a t))))