\frac{x \cdot y - \left(z \cdot 9\right) \cdot t}{a \cdot 2}\begin{array}{l}
\mathbf{if}\;\left(z \cdot 9\right) \cdot t \le -1.508242470936290470296324392538488250699 \cdot 10^{83} \lor \neg \left(\left(z \cdot 9\right) \cdot t \le 6.940538148906954006462762148490763180159 \cdot 10^{247}\right):\\
\;\;\;\;0.5 \cdot \left(\frac{x}{\sqrt[3]{a} \cdot \sqrt[3]{a}} \cdot \frac{y}{\sqrt[3]{a}}\right) - 4.5 \cdot \left(t \cdot \frac{z}{a}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{x \cdot y - z \cdot \left(9 \cdot t\right)}{a \cdot 2}\\
\end{array}double f(double x, double y, double z, double t, double a) {
double r527821 = x;
double r527822 = y;
double r527823 = r527821 * r527822;
double r527824 = z;
double r527825 = 9.0;
double r527826 = r527824 * r527825;
double r527827 = t;
double r527828 = r527826 * r527827;
double r527829 = r527823 - r527828;
double r527830 = a;
double r527831 = 2.0;
double r527832 = r527830 * r527831;
double r527833 = r527829 / r527832;
return r527833;
}
double f(double x, double y, double z, double t, double a) {
double r527834 = z;
double r527835 = 9.0;
double r527836 = r527834 * r527835;
double r527837 = t;
double r527838 = r527836 * r527837;
double r527839 = -1.5082424709362905e+83;
bool r527840 = r527838 <= r527839;
double r527841 = 6.940538148906954e+247;
bool r527842 = r527838 <= r527841;
double r527843 = !r527842;
bool r527844 = r527840 || r527843;
double r527845 = 0.5;
double r527846 = x;
double r527847 = a;
double r527848 = cbrt(r527847);
double r527849 = r527848 * r527848;
double r527850 = r527846 / r527849;
double r527851 = y;
double r527852 = r527851 / r527848;
double r527853 = r527850 * r527852;
double r527854 = r527845 * r527853;
double r527855 = 4.5;
double r527856 = r527834 / r527847;
double r527857 = r527837 * r527856;
double r527858 = r527855 * r527857;
double r527859 = r527854 - r527858;
double r527860 = r527846 * r527851;
double r527861 = r527835 * r527837;
double r527862 = r527834 * r527861;
double r527863 = r527860 - r527862;
double r527864 = 2.0;
double r527865 = r527847 * r527864;
double r527866 = r527863 / r527865;
double r527867 = r527844 ? r527859 : r527866;
return r527867;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a
Results
| Original | 7.8 |
|---|---|
| Target | 5.8 |
| Herbie | 4.0 |
if (* (* z 9.0) t) < -1.5082424709362905e+83 or 6.940538148906954e+247 < (* (* z 9.0) t) Initial program 23.8
Taylor expanded around 0 23.5
rmApplied add-cube-cbrt23.6
Applied times-frac21.6
rmApplied *-un-lft-identity21.6
Applied times-frac3.4
Simplified3.4
if -1.5082424709362905e+83 < (* (* z 9.0) t) < 6.940538148906954e+247Initial program 4.1
rmApplied associate-*l*4.1
Final simplification4.0
herbie shell --seed 2019297
(FPCore (x y z t a)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, I"
:precision binary64
:herbie-target
(if (< a -2.090464557976709e86) (- (* 0.5 (/ (* y x) a)) (* 4.5 (/ t (/ a z)))) (if (< a 2.14403070783397609e99) (/ (- (* x y) (* z (* 9 t))) (* a 2)) (- (* (/ y a) (* x 0.5)) (* (/ t a) (* z 4.5)))))
(/ (- (* x y) (* (* z 9) t)) (* a 2)))