x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z}\begin{array}{l}
\mathbf{if}\;a \le -2.539948061879685885855032855033011702154 \cdot 10^{-148}:\\
\;\;\;\;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]{\sqrt[3]{a - z}}}\right) \cdot \frac{\sqrt[3]{t - x}}{\sqrt[3]{\sqrt[3]{a - z}}}\\
\mathbf{elif}\;a \le 3.054635075798593907340137283511447687969 \cdot 10^{-123}:\\
\;\;\;\;t + y \cdot \left(\frac{x}{z} - \frac{t}{z}\right)\\
\mathbf{elif}\;a \le 3.05405425692396826370940695944003935665 \cdot 10^{-110}:\\
\;\;\;\;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]{\sqrt[3]{a - z}}}\right) \cdot \frac{\left(\sqrt[3]{\sqrt[3]{t - x}} \cdot \sqrt[3]{\sqrt[3]{t - x}}\right) \cdot \sqrt[3]{\sqrt[3]{t - x}}}{\sqrt[3]{\sqrt[3]{a - z}}}\\
\mathbf{elif}\;a \le 3.982205837801958980801400706269410995069 \cdot 10^{-64}:\\
\;\;\;\;t + y \cdot \left(\frac{x}{z} - \frac{t}{z}\right)\\
\mathbf{else}:\\
\;\;\;\;x + \frac{\sqrt[3]{y - z} \cdot \sqrt[3]{y - z}}{\sqrt[3]{a - z}} \cdot \left(\frac{\sqrt[3]{y - z}}{\sqrt[3]{a - z}} \cdot \frac{t - x}{\sqrt[3]{a - z}}\right)\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r612177 = x;
double r612178 = y;
double r612179 = z;
double r612180 = r612178 - r612179;
double r612181 = t;
double r612182 = r612181 - r612177;
double r612183 = r612180 * r612182;
double r612184 = a;
double r612185 = r612184 - r612179;
double r612186 = r612183 / r612185;
double r612187 = r612177 + r612186;
return r612187;
}
double f(double x, double y, double z, double t, double a) {
double r612188 = a;
double r612189 = -2.539948061879686e-148;
bool r612190 = r612188 <= r612189;
double r612191 = x;
double r612192 = y;
double r612193 = z;
double r612194 = r612192 - r612193;
double r612195 = r612188 - r612193;
double r612196 = cbrt(r612195);
double r612197 = r612196 * r612196;
double r612198 = r612194 / r612197;
double r612199 = t;
double r612200 = r612199 - r612191;
double r612201 = cbrt(r612200);
double r612202 = r612201 * r612201;
double r612203 = cbrt(r612196);
double r612204 = r612203 * r612203;
double r612205 = r612202 / r612204;
double r612206 = r612198 * r612205;
double r612207 = r612201 / r612203;
double r612208 = r612206 * r612207;
double r612209 = r612191 + r612208;
double r612210 = 3.054635075798594e-123;
bool r612211 = r612188 <= r612210;
double r612212 = r612191 / r612193;
double r612213 = r612199 / r612193;
double r612214 = r612212 - r612213;
double r612215 = r612192 * r612214;
double r612216 = r612199 + r612215;
double r612217 = 3.054054256923968e-110;
bool r612218 = r612188 <= r612217;
double r612219 = cbrt(r612201);
double r612220 = r612219 * r612219;
double r612221 = r612220 * r612219;
double r612222 = r612221 / r612203;
double r612223 = r612206 * r612222;
double r612224 = r612191 + r612223;
double r612225 = 3.982205837801959e-64;
bool r612226 = r612188 <= r612225;
double r612227 = cbrt(r612194);
double r612228 = r612227 * r612227;
double r612229 = r612228 / r612196;
double r612230 = r612227 / r612196;
double r612231 = r612200 / r612196;
double r612232 = r612230 * r612231;
double r612233 = r612229 * r612232;
double r612234 = r612191 + r612233;
double r612235 = r612226 ? r612216 : r612234;
double r612236 = r612218 ? r612224 : r612235;
double r612237 = r612211 ? r612216 : r612236;
double r612238 = r612190 ? r612209 : r612237;
return r612238;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 24.3 |
|---|---|
| Target | 11.6 |
| Herbie | 10.2 |
if a < -2.539948061879686e-148Initial program 22.9
rmApplied add-cube-cbrt23.4
Applied times-frac9.6
rmApplied add-cube-cbrt9.8
Applied add-cube-cbrt9.9
Applied times-frac9.9
Applied associate-*r*9.6
if -2.539948061879686e-148 < a < 3.054635075798594e-123 or 3.054054256923968e-110 < a < 3.982205837801959e-64Initial program 28.8
rmApplied add-cube-cbrt29.4
Applied times-frac20.9
rmApplied add-cube-cbrt21.2
Applied add-cube-cbrt21.3
Applied times-frac21.3
Applied associate-*r*20.2
Taylor expanded around inf 16.1
Simplified13.7
if 3.054635075798594e-123 < a < 3.054054256923968e-110Initial program 22.6
rmApplied add-cube-cbrt23.2
Applied times-frac20.4
rmApplied add-cube-cbrt20.5
Applied add-cube-cbrt20.7
Applied times-frac20.7
Applied associate-*r*17.3
rmApplied add-cube-cbrt17.6
if 3.982205837801959e-64 < a Initial program 22.0
rmApplied add-cube-cbrt22.4
Applied times-frac7.9
rmApplied add-cube-cbrt7.9
Applied times-frac7.9
Applied associate-*l*7.7
Final simplification10.2
herbie shell --seed 2019354
(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.2536131056095036e+188) (- t (* (/ y z) (- t x))) (if (< z 4.446702369113811e+64) (+ x (/ (- y z) (/ (- a z) (- t x)))) (- t (* (/ y z) (- t x)))))
(+ x (/ (* (- y z) (- t x)) (- a z))))