\frac{x \cdot \left(y - z\right)}{t - z}\begin{array}{l}
\mathbf{if}\;z \le -1.1082063369415516 \cdot 10^{-245}:\\
\;\;\;\;x \cdot \left(\frac{y}{t - z} - \frac{z}{t - z}\right)\\
\mathbf{elif}\;z \le 1.5991111356517593 \cdot 10^{-135}:\\
\;\;\;\;\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{t - z} \cdot \left(\sqrt[3]{x} \cdot \left(y - z\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{\frac{t - z}{y - z}}\\
\end{array}double f(double x, double y, double z, double t) {
double r28420047 = x;
double r28420048 = y;
double r28420049 = z;
double r28420050 = r28420048 - r28420049;
double r28420051 = r28420047 * r28420050;
double r28420052 = t;
double r28420053 = r28420052 - r28420049;
double r28420054 = r28420051 / r28420053;
return r28420054;
}
double f(double x, double y, double z, double t) {
double r28420055 = z;
double r28420056 = -1.1082063369415516e-245;
bool r28420057 = r28420055 <= r28420056;
double r28420058 = x;
double r28420059 = y;
double r28420060 = t;
double r28420061 = r28420060 - r28420055;
double r28420062 = r28420059 / r28420061;
double r28420063 = r28420055 / r28420061;
double r28420064 = r28420062 - r28420063;
double r28420065 = r28420058 * r28420064;
double r28420066 = 1.5991111356517593e-135;
bool r28420067 = r28420055 <= r28420066;
double r28420068 = cbrt(r28420058);
double r28420069 = r28420068 * r28420068;
double r28420070 = r28420069 / r28420061;
double r28420071 = r28420059 - r28420055;
double r28420072 = r28420068 * r28420071;
double r28420073 = r28420070 * r28420072;
double r28420074 = r28420061 / r28420071;
double r28420075 = r28420058 / r28420074;
double r28420076 = r28420067 ? r28420073 : r28420075;
double r28420077 = r28420057 ? r28420065 : r28420076;
return r28420077;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 10.8 |
|---|---|
| Target | 2.1 |
| Herbie | 1.9 |
if z < -1.1082063369415516e-245Initial program 11.3
rmApplied *-un-lft-identity11.3
Applied times-frac1.7
Simplified1.7
rmApplied div-sub1.7
if -1.1082063369415516e-245 < z < 1.5991111356517593e-135Initial program 5.9
rmApplied associate-/l*5.2
rmApplied div-inv5.2
Applied add-cube-cbrt6.0
Applied times-frac4.2
Simplified4.2
if 1.5991111356517593e-135 < z Initial program 12.8
rmApplied associate-/l*0.9
Final simplification1.9
herbie shell --seed 2019164 +o rules:numerics
(FPCore (x y z t)
:name "Graphics.Rendering.Chart.Plot.AreaSpots:renderAreaSpots4D from Chart-1.5.3"
:herbie-target
(/ x (/ (- t z) (- y z)))
(/ (* x (- y z)) (- t z)))