x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\begin{array}{l}
\mathbf{if}\;a \le -3.543954312374929 \cdot 10^{-257}:\\
\;\;\;\;x + \left(y - x\right) \cdot \frac{z - t}{a - t}\\
\mathbf{elif}\;a \le 2.94699012045890585 \cdot 10^{-116}:\\
\;\;\;\;\left(y + \frac{x \cdot z}{t}\right) - \frac{z \cdot y}{t}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{\frac{y - x}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}}{\frac{\sqrt[3]{a - t}}{z - t}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r726073 = x;
double r726074 = y;
double r726075 = r726074 - r726073;
double r726076 = z;
double r726077 = t;
double r726078 = r726076 - r726077;
double r726079 = r726075 * r726078;
double r726080 = a;
double r726081 = r726080 - r726077;
double r726082 = r726079 / r726081;
double r726083 = r726073 + r726082;
return r726083;
}
double f(double x, double y, double z, double t, double a) {
double r726084 = a;
double r726085 = -3.543954312374929e-257;
bool r726086 = r726084 <= r726085;
double r726087 = x;
double r726088 = y;
double r726089 = r726088 - r726087;
double r726090 = z;
double r726091 = t;
double r726092 = r726090 - r726091;
double r726093 = r726084 - r726091;
double r726094 = r726092 / r726093;
double r726095 = r726089 * r726094;
double r726096 = r726087 + r726095;
double r726097 = 2.946990120458906e-116;
bool r726098 = r726084 <= r726097;
double r726099 = r726087 * r726090;
double r726100 = r726099 / r726091;
double r726101 = r726088 + r726100;
double r726102 = r726090 * r726088;
double r726103 = r726102 / r726091;
double r726104 = r726101 - r726103;
double r726105 = cbrt(r726093);
double r726106 = r726105 * r726105;
double r726107 = r726089 / r726106;
double r726108 = r726105 / r726092;
double r726109 = r726107 / r726108;
double r726110 = r726087 + r726109;
double r726111 = r726098 ? r726104 : r726110;
double r726112 = r726086 ? r726096 : r726111;
return r726112;
}




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 | 9.3 |
| Herbie | 11.6 |
if a < -3.543954312374929e-257Initial program 23.5
rmApplied *-un-lft-identity23.5
Applied times-frac11.5
Simplified11.5
if -3.543954312374929e-257 < a < 2.946990120458906e-116Initial program 29.9
Taylor expanded around inf 14.8
if 2.946990120458906e-116 < a Initial program 23.7
rmApplied associate-/l*8.8
rmApplied *-un-lft-identity8.8
Applied add-cube-cbrt9.4
Applied times-frac9.4
Applied associate-/r*10.3
Simplified10.3
Final simplification11.6
herbie shell --seed 2020042
(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))))