x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z}\begin{array}{l}
\mathbf{if}\;a \le -3.6771152743398664 \cdot 10^{-164}:\\
\;\;\;\;x + \left(\sqrt[3]{\frac{y - z}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}} \cdot \frac{t - x}{\sqrt[3]{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}} \cdot \sqrt[3]{\sqrt[3]{a - z}}}} \cdot \sqrt[3]{\frac{y - z}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}} \cdot \frac{t - x}{\sqrt[3]{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}} \cdot \sqrt[3]{\sqrt[3]{a - z}}}}\right) \cdot \sqrt[3]{\frac{y - z}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}} \cdot \frac{t - x}{\sqrt[3]{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}} \cdot \sqrt[3]{\sqrt[3]{a - z}}}}\\
\mathbf{elif}\;a \le 2.5546992440117739 \cdot 10^{-147}:\\
\;\;\;\;\left(\frac{x \cdot y}{z} + t\right) - \frac{t \cdot y}{z}\\
\mathbf{else}:\\
\;\;\;\;x + \left(\left(\sqrt[3]{t - x} \cdot \sqrt[3]{t - x}\right) \cdot \frac{y - z}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}\right) \cdot \frac{\sqrt[3]{t - x}}{\sqrt[3]{a - z}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r353297 = x;
double r353298 = y;
double r353299 = z;
double r353300 = r353298 - r353299;
double r353301 = t;
double r353302 = r353301 - r353297;
double r353303 = r353300 * r353302;
double r353304 = a;
double r353305 = r353304 - r353299;
double r353306 = r353303 / r353305;
double r353307 = r353297 + r353306;
return r353307;
}
double f(double x, double y, double z, double t, double a) {
double r353308 = a;
double r353309 = -3.6771152743398664e-164;
bool r353310 = r353308 <= r353309;
double r353311 = x;
double r353312 = y;
double r353313 = z;
double r353314 = r353312 - r353313;
double r353315 = r353308 - r353313;
double r353316 = cbrt(r353315);
double r353317 = r353316 * r353316;
double r353318 = r353314 / r353317;
double r353319 = t;
double r353320 = r353319 - r353311;
double r353321 = cbrt(r353317);
double r353322 = cbrt(r353316);
double r353323 = r353321 * r353322;
double r353324 = r353320 / r353323;
double r353325 = r353318 * r353324;
double r353326 = cbrt(r353325);
double r353327 = r353326 * r353326;
double r353328 = r353327 * r353326;
double r353329 = r353311 + r353328;
double r353330 = 2.554699244011774e-147;
bool r353331 = r353308 <= r353330;
double r353332 = r353311 * r353312;
double r353333 = r353332 / r353313;
double r353334 = r353333 + r353319;
double r353335 = r353319 * r353312;
double r353336 = r353335 / r353313;
double r353337 = r353334 - r353336;
double r353338 = cbrt(r353320);
double r353339 = r353338 * r353338;
double r353340 = r353339 * r353318;
double r353341 = r353338 / r353316;
double r353342 = r353340 * r353341;
double r353343 = r353311 + r353342;
double r353344 = r353331 ? r353337 : r353343;
double r353345 = r353310 ? r353329 : r353344;
return r353345;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.6 |
|---|---|
| Target | 11.6 |
| Herbie | 10.8 |
if a < -3.6771152743398664e-164Initial program 22.4
rmApplied add-cube-cbrt22.7
Applied times-frac10.5
rmApplied add-cube-cbrt10.5
Applied cbrt-prod10.6
rmApplied add-cube-cbrt10.7
if -3.6771152743398664e-164 < a < 2.554699244011774e-147Initial program 30.2
Taylor expanded around inf 13.0
if 2.554699244011774e-147 < a Initial program 23.8
rmApplied add-cube-cbrt24.2
Applied times-frac9.8
rmApplied *-un-lft-identity9.8
Applied cbrt-prod9.8
Applied add-cube-cbrt10.0
Applied times-frac10.0
Applied associate-*r*9.6
Simplified9.6
Final simplification10.8
herbie shell --seed 2020042
(FPCore (x y z t a)
:name "Graphics.Rendering.Chart.Axis.Types:invLinMap from Chart-1.5.3"
:precision binary64
:herbie-target
(if (< z -1.2536131056095036e+188) (- t (* (/ y z) (- t x))) (if (< z 4.446702369113811e+64) (+ x (/ (- y z) (/ (- a z) (- t x)))) (- t (* (/ y z) (- t x)))))
(+ x (/ (* (- y z) (- t x)) (- a z))))