\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t}\begin{array}{l}
\mathbf{if}\;a \le -3.5542536611877635 \cdot 10^{-199}:\\
\;\;\;\;x + \left(y - \left(\sqrt[3]{\frac{z - t}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}} \cdot \sqrt[3]{\frac{z - t}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}}\right) \cdot \left(\sqrt[3]{\frac{z - t}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}}} \cdot \frac{y}{\sqrt[3]{a - t}}\right)\right)\\
\mathbf{elif}\;a \le 4.417797676349528 \cdot 10^{-36}:\\
\;\;\;\;x + \frac{y \cdot z}{t}\\
\mathbf{else}:\\
\;\;\;\;\left(x + y\right) - \frac{y}{a - t} \cdot \left(z - t\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r10196777 = x;
double r10196778 = y;
double r10196779 = r10196777 + r10196778;
double r10196780 = z;
double r10196781 = t;
double r10196782 = r10196780 - r10196781;
double r10196783 = r10196782 * r10196778;
double r10196784 = a;
double r10196785 = r10196784 - r10196781;
double r10196786 = r10196783 / r10196785;
double r10196787 = r10196779 - r10196786;
return r10196787;
}
double f(double x, double y, double z, double t, double a) {
double r10196788 = a;
double r10196789 = -3.5542536611877635e-199;
bool r10196790 = r10196788 <= r10196789;
double r10196791 = x;
double r10196792 = y;
double r10196793 = z;
double r10196794 = t;
double r10196795 = r10196793 - r10196794;
double r10196796 = r10196788 - r10196794;
double r10196797 = cbrt(r10196796);
double r10196798 = r10196797 * r10196797;
double r10196799 = r10196795 / r10196798;
double r10196800 = cbrt(r10196799);
double r10196801 = r10196800 * r10196800;
double r10196802 = r10196792 / r10196797;
double r10196803 = r10196800 * r10196802;
double r10196804 = r10196801 * r10196803;
double r10196805 = r10196792 - r10196804;
double r10196806 = r10196791 + r10196805;
double r10196807 = 4.417797676349528e-36;
bool r10196808 = r10196788 <= r10196807;
double r10196809 = r10196792 * r10196793;
double r10196810 = r10196809 / r10196794;
double r10196811 = r10196791 + r10196810;
double r10196812 = r10196791 + r10196792;
double r10196813 = r10196792 / r10196796;
double r10196814 = r10196813 * r10196795;
double r10196815 = r10196812 - r10196814;
double r10196816 = r10196808 ? r10196811 : r10196815;
double r10196817 = r10196790 ? r10196806 : r10196816;
return r10196817;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 15.7 |
|---|---|
| Target | 7.9 |
| Herbie | 9.2 |
if a < -3.5542536611877635e-199Initial program 15.2
rmApplied add-cube-cbrt15.4
Applied times-frac9.6
rmApplied associate--l+9.0
rmApplied add-cube-cbrt9.2
Applied associate-*l*9.2
if -3.5542536611877635e-199 < a < 4.417797676349528e-36Initial program 19.6
rmApplied add-cube-cbrt19.8
Applied times-frac18.1
rmApplied associate--l+16.7
Taylor expanded around inf 11.8
if 4.417797676349528e-36 < a Initial program 12.8
rmApplied *-un-lft-identity12.8
Applied times-frac6.8
Simplified6.8
Final simplification9.2
herbie shell --seed 2019156
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTick from plot-0.2.3.4, B"
:herbie-target
(if (< (- (+ x y) (/ (* (- z t) y) (- a t))) -1.3664970889390727e-07) (- (+ y x) (* (* (- z t) (/ 1 (- a t))) y)) (if (< (- (+ x y) (/ (* (- z t) y) (- a t))) 1.4754293444577233e-239) (/ (- (* y (- a z)) (* x t)) (- a t)) (- (+ y x) (* (* (- z t) (/ 1 (- a t))) y))))
(- (+ x y) (/ (* (- z t) y) (- a t))))