x + \left(y - x\right) \cdot \frac{z}{t}\begin{array}{l}
\mathbf{if}\;t \le -1.77199671097553032 \cdot 10^{-221} \lor \neg \left(t \le 1.4493129888661283 \cdot 10^{-108}\right):\\
\;\;\;\;x + \left(y - x\right) \cdot \frac{z}{t}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{\left(y - x\right) \cdot \left(\left(\sqrt[3]{1} \cdot \sqrt[3]{\frac{z}{\sqrt[3]{t}}}\right) \cdot \sqrt[3]{z}\right)}{\sqrt[3]{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \sqrt[3]{t}} \cdot \frac{\sqrt[3]{z}}{\sqrt[3]{t}}\\
\end{array}double f(double x, double y, double z, double t) {
double r500205 = x;
double r500206 = y;
double r500207 = r500206 - r500205;
double r500208 = z;
double r500209 = t;
double r500210 = r500208 / r500209;
double r500211 = r500207 * r500210;
double r500212 = r500205 + r500211;
return r500212;
}
double f(double x, double y, double z, double t) {
double r500213 = t;
double r500214 = -1.7719967109755303e-221;
bool r500215 = r500213 <= r500214;
double r500216 = 1.4493129888661283e-108;
bool r500217 = r500213 <= r500216;
double r500218 = !r500217;
bool r500219 = r500215 || r500218;
double r500220 = x;
double r500221 = y;
double r500222 = r500221 - r500220;
double r500223 = z;
double r500224 = r500223 / r500213;
double r500225 = r500222 * r500224;
double r500226 = r500220 + r500225;
double r500227 = 1.0;
double r500228 = cbrt(r500227);
double r500229 = cbrt(r500213);
double r500230 = r500223 / r500229;
double r500231 = cbrt(r500230);
double r500232 = r500228 * r500231;
double r500233 = cbrt(r500223);
double r500234 = r500232 * r500233;
double r500235 = r500222 * r500234;
double r500236 = r500229 * r500229;
double r500237 = cbrt(r500236);
double r500238 = r500237 * r500229;
double r500239 = r500235 / r500238;
double r500240 = r500233 / r500229;
double r500241 = r500239 * r500240;
double r500242 = r500220 + r500241;
double r500243 = r500219 ? r500226 : r500242;
return r500243;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 2.0 |
|---|---|
| Target | 2.0 |
| Herbie | 1.5 |
if t < -1.7719967109755303e-221 or 1.4493129888661283e-108 < t Initial program 1.4
if -1.7719967109755303e-221 < t < 1.4493129888661283e-108Initial program 5.3
rmApplied add-cube-cbrt6.0
Applied associate-*r*6.1
rmApplied cbrt-div6.0
rmApplied add-cube-cbrt6.1
Applied *-un-lft-identity6.1
Applied times-frac6.1
Applied cbrt-prod6.1
rmApplied cbrt-div1.6
Applied cbrt-div1.7
Applied associate-*l/1.6
Applied frac-times1.6
Applied associate-*r/2.2
Final simplification1.5
herbie shell --seed 2020064
(FPCore (x y z t)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:tickPosition from plot-0.2.3.4"
:precision binary64
:herbie-target
(if (< (* (- y x) (/ z t)) -1013646692435.887) (+ x (/ (- y x) (/ t z))) (if (< (* (- y x) (/ z t)) -0.0) (+ x (/ (* (- y x) z) t)) (+ x (/ (- y x) (/ t z)))))
(+ x (* (- y x) (/ z t))))