x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z}\begin{array}{l}
\mathbf{if}\;a \le -2.5697361957571348 \cdot 10^{-281}:\\
\;\;\;\;\left(\left(\frac{\sqrt[3]{t - x}}{\sqrt[3]{a - z}} \cdot \left(-z\right)\right) \cdot \frac{\sqrt[3]{t - x} \cdot \sqrt[3]{t - x}}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}} + x\right) + \left(\frac{\sqrt[3]{t - x}}{\sqrt[3]{a - z}} \cdot y\right) \cdot \frac{\sqrt[3]{t - x} \cdot \sqrt[3]{t - x}}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}\\
\mathbf{elif}\;a \le 1.4479831597119774 \cdot 10^{-263}:\\
\;\;\;\;t\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\frac{\sqrt[3]{t - x}}{\sqrt[3]{a - z}} \cdot \left(-z\right)\right) \cdot \frac{\sqrt[3]{t - x} \cdot \sqrt[3]{t - x}}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}} + x\right) + \left(\frac{\sqrt[3]{t - x}}{\sqrt[3]{a - z}} \cdot y\right) \cdot \frac{\sqrt[3]{t - x} \cdot \sqrt[3]{t - x}}{\sqrt[3]{a - z} \cdot \sqrt[3]{a - z}}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r11091865 = x;
double r11091866 = y;
double r11091867 = z;
double r11091868 = r11091866 - r11091867;
double r11091869 = t;
double r11091870 = r11091869 - r11091865;
double r11091871 = r11091868 * r11091870;
double r11091872 = a;
double r11091873 = r11091872 - r11091867;
double r11091874 = r11091871 / r11091873;
double r11091875 = r11091865 + r11091874;
return r11091875;
}
double f(double x, double y, double z, double t, double a) {
double r11091876 = a;
double r11091877 = -2.5697361957571348e-281;
bool r11091878 = r11091876 <= r11091877;
double r11091879 = t;
double r11091880 = x;
double r11091881 = r11091879 - r11091880;
double r11091882 = cbrt(r11091881);
double r11091883 = z;
double r11091884 = r11091876 - r11091883;
double r11091885 = cbrt(r11091884);
double r11091886 = r11091882 / r11091885;
double r11091887 = -r11091883;
double r11091888 = r11091886 * r11091887;
double r11091889 = r11091882 * r11091882;
double r11091890 = r11091885 * r11091885;
double r11091891 = r11091889 / r11091890;
double r11091892 = r11091888 * r11091891;
double r11091893 = r11091892 + r11091880;
double r11091894 = y;
double r11091895 = r11091886 * r11091894;
double r11091896 = r11091895 * r11091891;
double r11091897 = r11091893 + r11091896;
double r11091898 = 1.4479831597119774e-263;
bool r11091899 = r11091876 <= r11091898;
double r11091900 = r11091899 ? r11091879 : r11091897;
double r11091901 = r11091878 ? r11091897 : r11091900;
return r11091901;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 23.5 |
|---|---|
| Target | 11.5 |
| Herbie | 12.5 |
if a < -2.5697361957571348e-281 or 1.4479831597119774e-263 < a Initial program 23.1
Simplified14.3
rmApplied fma-udef14.3
rmApplied add-cube-cbrt14.9
Applied add-cube-cbrt15.0
Applied times-frac15.0
Applied associate-*l*11.9
rmApplied sub-neg11.9
Applied distribute-rgt-in11.9
Applied distribute-lft-in11.9
Applied associate-+l+11.6
if -2.5697361957571348e-281 < a < 1.4479831597119774e-263Initial program 30.5
Simplified25.2
Taylor expanded around 0 29.0
Final simplification12.5
herbie shell --seed 2019156 +o rules:numerics
(FPCore (x y z t a)
:name "Graphics.Rendering.Chart.Axis.Types:invLinMap from Chart-1.5.3"
: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))))