\left(x + y\right) - \frac{\left(z - t\right) \cdot y}{a - t}\begin{array}{l}
\mathbf{if}\;a \le -6.955680798979961680626772729670352712961 \cdot 10^{-126}:\\
\;\;\;\;\left(x + y\right) - \frac{\frac{z - t}{\sqrt[3]{a - t}}}{\sqrt[3]{a - t}} \cdot \frac{y}{\sqrt[3]{a - t}}\\
\mathbf{elif}\;a \le 3.079941655681878287412652690058055952037 \cdot 10^{-104}:\\
\;\;\;\;\frac{z \cdot y}{t} + x\\
\mathbf{else}:\\
\;\;\;\;\left(x + y\right) - \left(\frac{z - t}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}} \cdot \left(\sqrt[3]{\frac{y}{\sqrt[3]{a - t}}} \cdot \sqrt[3]{\frac{y}{\sqrt[3]{a - t}}}\right)\right) \cdot \sqrt[3]{\frac{y}{\sqrt[3]{a - t}}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r520086 = x;
double r520087 = y;
double r520088 = r520086 + r520087;
double r520089 = z;
double r520090 = t;
double r520091 = r520089 - r520090;
double r520092 = r520091 * r520087;
double r520093 = a;
double r520094 = r520093 - r520090;
double r520095 = r520092 / r520094;
double r520096 = r520088 - r520095;
return r520096;
}
double f(double x, double y, double z, double t, double a) {
double r520097 = a;
double r520098 = -6.955680798979962e-126;
bool r520099 = r520097 <= r520098;
double r520100 = x;
double r520101 = y;
double r520102 = r520100 + r520101;
double r520103 = z;
double r520104 = t;
double r520105 = r520103 - r520104;
double r520106 = r520097 - r520104;
double r520107 = cbrt(r520106);
double r520108 = r520105 / r520107;
double r520109 = r520108 / r520107;
double r520110 = r520101 / r520107;
double r520111 = r520109 * r520110;
double r520112 = r520102 - r520111;
double r520113 = 3.079941655681878e-104;
bool r520114 = r520097 <= r520113;
double r520115 = r520103 * r520101;
double r520116 = r520115 / r520104;
double r520117 = r520116 + r520100;
double r520118 = r520107 * r520107;
double r520119 = r520105 / r520118;
double r520120 = cbrt(r520110);
double r520121 = r520120 * r520120;
double r520122 = r520119 * r520121;
double r520123 = r520122 * r520120;
double r520124 = r520102 - r520123;
double r520125 = r520114 ? r520117 : r520124;
double r520126 = r520099 ? r520112 : r520125;
return r520126;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 16.7 |
|---|---|
| Target | 8.6 |
| Herbie | 9.8 |
if a < -6.955680798979962e-126Initial program 15.4
rmApplied add-cube-cbrt15.6
Applied times-frac9.0
rmApplied add-cube-cbrt9.1
Applied times-frac9.1
Applied associate-*l*8.9
rmApplied associate-*r*9.1
Simplified9.0
if -6.955680798979962e-126 < a < 3.079941655681878e-104Initial program 20.4
Taylor expanded around inf 12.1
if 3.079941655681878e-104 < a Initial program 15.2
rmApplied add-cube-cbrt15.3
Applied times-frac8.6
rmApplied add-cube-cbrt8.6
Applied associate-*r*8.6
Final simplification9.8
herbie shell --seed 2019305
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisTick from plot-0.2.3.4, B"
:precision binary64
:herbie-target
(if (< (- (+ x y) (/ (* (- z t) y) (- a t))) -1.3664970889390727e-7) (- (+ y x) (* (* (- z t) (/ 1 (- a t))) y)) (if (< (- (+ x y) (/ (* (- z t) y) (- a t))) 1.47542934445772333e-239) (/ (- (* y (- a z)) (* x t)) (- a t)) (- (+ y x) (* (* (- z t) (/ 1 (- a t))) y))))
(- (+ x y) (/ (* (- z t) y) (- a t))))