x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\begin{array}{l}
\mathbf{if}\;a \le -7.49023383034006197850477955032889900172 \cdot 10^{-237}:\\
\;\;\;\;x + \left(y - x\right) \cdot \frac{z - t}{a - t}\\
\mathbf{elif}\;a \le 3.51743693093827941234487472362134671118 \cdot 10^{-112}:\\
\;\;\;\;\left(y + \frac{x \cdot z}{t}\right) - \frac{z \cdot y}{t}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{\sqrt[3]{y - x} \cdot \sqrt[3]{y - x}}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}} \cdot \frac{\sqrt[3]{y - x}}{\frac{\sqrt[3]{a - t}}{z - t}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r446456 = x;
double r446457 = y;
double r446458 = r446457 - r446456;
double r446459 = z;
double r446460 = t;
double r446461 = r446459 - r446460;
double r446462 = r446458 * r446461;
double r446463 = a;
double r446464 = r446463 - r446460;
double r446465 = r446462 / r446464;
double r446466 = r446456 + r446465;
return r446466;
}
double f(double x, double y, double z, double t, double a) {
double r446467 = a;
double r446468 = -7.490233830340062e-237;
bool r446469 = r446467 <= r446468;
double r446470 = x;
double r446471 = y;
double r446472 = r446471 - r446470;
double r446473 = z;
double r446474 = t;
double r446475 = r446473 - r446474;
double r446476 = r446467 - r446474;
double r446477 = r446475 / r446476;
double r446478 = r446472 * r446477;
double r446479 = r446470 + r446478;
double r446480 = 3.5174369309382794e-112;
bool r446481 = r446467 <= r446480;
double r446482 = r446470 * r446473;
double r446483 = r446482 / r446474;
double r446484 = r446471 + r446483;
double r446485 = r446473 * r446471;
double r446486 = r446485 / r446474;
double r446487 = r446484 - r446486;
double r446488 = cbrt(r446472);
double r446489 = r446488 * r446488;
double r446490 = cbrt(r446476);
double r446491 = r446490 * r446490;
double r446492 = r446489 / r446491;
double r446493 = r446490 / r446475;
double r446494 = r446488 / r446493;
double r446495 = r446492 * r446494;
double r446496 = r446470 + r446495;
double r446497 = r446481 ? r446487 : r446496;
double r446498 = r446469 ? r446479 : r446497;
return r446498;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 23.9 |
|---|---|
| Target | 9.4 |
| Herbie | 10.8 |
if a < -7.490233830340062e-237Initial program 23.5
rmApplied *-un-lft-identity23.5
Applied times-frac10.5
Simplified10.5
if -7.490233830340062e-237 < a < 3.5174369309382794e-112Initial program 27.8
Taylor expanded around inf 14.4
if 3.5174369309382794e-112 < a Initial program 22.2
rmApplied associate-/l*8.9
rmApplied *-un-lft-identity8.9
Applied add-cube-cbrt9.5
Applied times-frac9.5
Applied add-cube-cbrt9.6
Applied times-frac9.3
Simplified9.3
Final simplification10.8
herbie shell --seed 2019325
(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))))