x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z}\begin{array}{l}
\mathbf{if}\;a \le -7.943644488630814077813993760926733416479 \cdot 10^{-127}:\\
\;\;\;\;x + \left(\left(\frac{y - z}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}} \cdot \left(\sqrt[3]{t - x} \cdot \sqrt[3]{t - x}\right)\right) \cdot \frac{1}{\sqrt[3]{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}}\right) \cdot \frac{\sqrt[3]{t - x}}{\sqrt[3]{\sqrt[3]{a - z}}}\\
\mathbf{elif}\;a \le 1.256764066685756904154398536886782773552 \cdot 10^{-108}:\\
\;\;\;\;\left(\frac{x \cdot y}{z} + t\right) - \frac{t \cdot y}{z}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{y - z}{\sqrt[3]{a - z} \cdot \left(\sqrt[3]{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}} \cdot \sqrt[3]{\sqrt[3]{a - z}}\right)} \cdot \frac{t - x}{\sqrt[3]{a - z}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r716563 = x;
double r716564 = y;
double r716565 = z;
double r716566 = r716564 - r716565;
double r716567 = t;
double r716568 = r716567 - r716563;
double r716569 = r716566 * r716568;
double r716570 = a;
double r716571 = r716570 - r716565;
double r716572 = r716569 / r716571;
double r716573 = r716563 + r716572;
return r716573;
}
double f(double x, double y, double z, double t, double a) {
double r716574 = a;
double r716575 = -7.943644488630814e-127;
bool r716576 = r716574 <= r716575;
double r716577 = x;
double r716578 = y;
double r716579 = z;
double r716580 = r716578 - r716579;
double r716581 = r716574 - r716579;
double r716582 = cbrt(r716581);
double r716583 = r716582 * r716582;
double r716584 = r716580 / r716583;
double r716585 = t;
double r716586 = r716585 - r716577;
double r716587 = cbrt(r716586);
double r716588 = r716587 * r716587;
double r716589 = r716584 * r716588;
double r716590 = 1.0;
double r716591 = cbrt(r716583);
double r716592 = r716590 / r716591;
double r716593 = r716589 * r716592;
double r716594 = cbrt(r716582);
double r716595 = r716587 / r716594;
double r716596 = r716593 * r716595;
double r716597 = r716577 + r716596;
double r716598 = 1.2567640666857569e-108;
bool r716599 = r716574 <= r716598;
double r716600 = r716577 * r716578;
double r716601 = r716600 / r716579;
double r716602 = r716601 + r716585;
double r716603 = r716585 * r716578;
double r716604 = r716603 / r716579;
double r716605 = r716602 - r716604;
double r716606 = r716591 * r716594;
double r716607 = r716582 * r716606;
double r716608 = r716580 / r716607;
double r716609 = r716586 / r716582;
double r716610 = r716608 * r716609;
double r716611 = r716577 + r716610;
double r716612 = r716599 ? r716605 : r716611;
double r716613 = r716576 ? r716597 : r716612;
return r716613;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.4 |
|---|---|
| Target | 11.9 |
| Herbie | 11.0 |
if a < -7.943644488630814e-127Initial program 23.5
rmApplied add-cube-cbrt23.9
Applied times-frac9.8
rmApplied add-cube-cbrt9.8
Applied cbrt-prod9.8
Applied add-cube-cbrt10.0
Applied times-frac10.0
Applied associate-*r*9.5
rmApplied div-inv9.5
Applied associate-*r*9.5
if -7.943644488630814e-127 < a < 1.2567640666857569e-108Initial program 27.4
Taylor expanded around inf 14.7
if 1.2567640666857569e-108 < a Initial program 23.0
rmApplied add-cube-cbrt23.3
Applied times-frac9.8
rmApplied add-cube-cbrt9.8
Applied cbrt-prod9.8
Final simplification11.0
herbie shell --seed 2020001
(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))))