x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z}\begin{array}{l}
\mathbf{if}\;a \le -2.633616276830335413590453346604292115931 \cdot 10^{-121}:\\
\;\;\;\;x + \left(\frac{\sqrt[3]{y - z} \cdot \sqrt[3]{y - z}}{\sqrt[3]{a - z}} \cdot \left(\frac{\sqrt[3]{\sqrt[3]{y - z} \cdot \sqrt[3]{y - z}} \cdot \sqrt[3]{\sqrt[3]{y - z}}}{\sqrt[3]{a - z}} \cdot \frac{\sqrt[3]{t - x} \cdot \sqrt[3]{t - x}}{\sqrt[3]{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}}\right)\right) \cdot \frac{\sqrt[3]{t - x}}{\sqrt[3]{\sqrt[3]{a - z}}}\\
\mathbf{elif}\;a \le 4.729195189423035262987500931496199209529 \cdot 10^{-132}:\\
\;\;\;\;t + y \cdot \left(\frac{x}{z} - \frac{t}{z}\right)\\
\mathbf{elif}\;a \le 1.78284390037396212007432488537063711439 \cdot 10^{-32}:\\
\;\;\;\;x + \left(\frac{y - z}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}} \cdot \frac{\sqrt[3]{t - x} \cdot \sqrt[3]{t - x}}{\sqrt[3]{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}}\right) \cdot \frac{\sqrt[3]{t - x}}{\sqrt[3]{\sqrt[3]{a - z}}}\\
\mathbf{elif}\;a \le 7.829350447579144764528227594397742646553 \cdot 10^{-17}:\\
\;\;\;\;t + y \cdot \left(\frac{x}{z} - \frac{t}{z}\right)\\
\mathbf{else}:\\
\;\;\;\;x + \frac{y - z}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}} \cdot \frac{t - x}{\sqrt[3]{a - z}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r428203 = x;
double r428204 = y;
double r428205 = z;
double r428206 = r428204 - r428205;
double r428207 = t;
double r428208 = r428207 - r428203;
double r428209 = r428206 * r428208;
double r428210 = a;
double r428211 = r428210 - r428205;
double r428212 = r428209 / r428211;
double r428213 = r428203 + r428212;
return r428213;
}
double f(double x, double y, double z, double t, double a) {
double r428214 = a;
double r428215 = -2.6336162768303354e-121;
bool r428216 = r428214 <= r428215;
double r428217 = x;
double r428218 = y;
double r428219 = z;
double r428220 = r428218 - r428219;
double r428221 = cbrt(r428220);
double r428222 = r428221 * r428221;
double r428223 = r428214 - r428219;
double r428224 = cbrt(r428223);
double r428225 = r428222 / r428224;
double r428226 = cbrt(r428222);
double r428227 = cbrt(r428221);
double r428228 = r428226 * r428227;
double r428229 = r428228 / r428224;
double r428230 = t;
double r428231 = r428230 - r428217;
double r428232 = cbrt(r428231);
double r428233 = r428232 * r428232;
double r428234 = r428224 * r428224;
double r428235 = cbrt(r428234);
double r428236 = r428233 / r428235;
double r428237 = r428229 * r428236;
double r428238 = r428225 * r428237;
double r428239 = cbrt(r428224);
double r428240 = r428232 / r428239;
double r428241 = r428238 * r428240;
double r428242 = r428217 + r428241;
double r428243 = 4.729195189423035e-132;
bool r428244 = r428214 <= r428243;
double r428245 = r428217 / r428219;
double r428246 = r428230 / r428219;
double r428247 = r428245 - r428246;
double r428248 = r428218 * r428247;
double r428249 = r428230 + r428248;
double r428250 = 1.782843900373962e-32;
bool r428251 = r428214 <= r428250;
double r428252 = r428220 / r428234;
double r428253 = r428252 * r428236;
double r428254 = r428253 * r428240;
double r428255 = r428217 + r428254;
double r428256 = 7.829350447579145e-17;
bool r428257 = r428214 <= r428256;
double r428258 = r428231 / r428224;
double r428259 = r428252 * r428258;
double r428260 = r428217 + r428259;
double r428261 = r428257 ? r428249 : r428260;
double r428262 = r428251 ? r428255 : r428261;
double r428263 = r428244 ? r428249 : r428262;
double r428264 = r428216 ? r428242 : r428263;
return r428264;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.2 |
|---|---|
| Target | 11.9 |
| Herbie | 10.3 |
if a < -2.6336162768303354e-121Initial program 23.8
rmApplied add-cube-cbrt24.2
Applied times-frac9.8
rmApplied add-cube-cbrt9.9
Applied cbrt-prod9.9
Applied add-cube-cbrt10.0
Applied times-frac10.0
Applied associate-*r*9.6
rmApplied add-cube-cbrt9.6
Applied times-frac9.6
Applied associate-*l*9.4
rmApplied add-cube-cbrt9.4
Applied cbrt-prod9.4
if -2.6336162768303354e-121 < a < 4.729195189423035e-132 or 1.782843900373962e-32 < a < 7.829350447579145e-17Initial program 28.2
rmApplied add-cube-cbrt28.9
Applied times-frac21.1
rmApplied add-cube-cbrt21.1
Applied cbrt-prod21.2
Applied add-cube-cbrt21.3
Applied times-frac21.3
Applied associate-*r*20.0
rmApplied add-cube-cbrt20.0
Applied times-frac20.0
Applied associate-*l*19.5
Taylor expanded around inf 14.9
Simplified13.0
if 4.729195189423035e-132 < a < 1.782843900373962e-32Initial program 24.1
rmApplied add-cube-cbrt24.8
Applied times-frac16.5
rmApplied add-cube-cbrt16.5
Applied cbrt-prod16.6
Applied add-cube-cbrt16.7
Applied times-frac16.7
Applied associate-*r*15.9
if 7.829350447579145e-17 < a Initial program 21.0
rmApplied add-cube-cbrt21.3
Applied times-frac7.3
Final simplification10.3
herbie shell --seed 2019304
(FPCore (x y z t a)
:name "Graphics.Rendering.Chart.Axis.Types:invLinMap from Chart-1.5.3"
:precision binary64
:herbie-target
(if (< z -1.25361310560950359e188) (- t (* (/ y z) (- t x))) (if (< z 4.44670236911381103e64) (+ x (/ (- y z) (/ (- a z) (- t x)))) (- t (* (/ y z) (- t x)))))
(+ x (/ (* (- y z) (- t x)) (- a z))))