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 r761044 = x;
double r761045 = y;
double r761046 = r761045 - r761044;
double r761047 = z;
double r761048 = t;
double r761049 = r761047 - r761048;
double r761050 = r761046 * r761049;
double r761051 = a;
double r761052 = r761051 - r761048;
double r761053 = r761050 / r761052;
double r761054 = r761044 + r761053;
return r761054;
}
double f(double x, double y, double z, double t, double a) {
double r761055 = a;
double r761056 = -3.543954312374929e-257;
bool r761057 = r761055 <= r761056;
double r761058 = x;
double r761059 = y;
double r761060 = r761059 - r761058;
double r761061 = z;
double r761062 = t;
double r761063 = r761061 - r761062;
double r761064 = r761055 - r761062;
double r761065 = r761063 / r761064;
double r761066 = r761060 * r761065;
double r761067 = r761058 + r761066;
double r761068 = 2.946990120458906e-116;
bool r761069 = r761055 <= r761068;
double r761070 = r761058 * r761061;
double r761071 = r761070 / r761062;
double r761072 = r761059 + r761071;
double r761073 = r761061 * r761059;
double r761074 = r761073 / r761062;
double r761075 = r761072 - r761074;
double r761076 = cbrt(r761064);
double r761077 = r761076 * r761076;
double r761078 = r761060 / r761077;
double r761079 = r761076 / r761063;
double r761080 = r761078 / r761079;
double r761081 = r761058 + r761080;
double r761082 = r761069 ? r761075 : r761081;
double r761083 = r761057 ? r761067 : r761082;
return r761083;
}




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))))