\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\begin{array}{l}
\mathbf{if}\;t \le -5.63380401175012114 \cdot 10^{26} \lor \neg \left(t \le 2.41708142255612862 \cdot 10^{-32}\right):\\
\;\;\;\;\left(x - \frac{\frac{y}{z}}{3}\right) + 0.333333333333333315 \cdot \frac{t}{z \cdot y}\\
\mathbf{else}:\\
\;\;\;\;\left(x - \frac{\frac{y}{z}}{3}\right) + \frac{1}{z} \cdot \frac{\frac{t}{3}}{y}\\
\end{array}double f(double x, double y, double z, double t) {
double r731102 = x;
double r731103 = y;
double r731104 = z;
double r731105 = 3.0;
double r731106 = r731104 * r731105;
double r731107 = r731103 / r731106;
double r731108 = r731102 - r731107;
double r731109 = t;
double r731110 = r731106 * r731103;
double r731111 = r731109 / r731110;
double r731112 = r731108 + r731111;
return r731112;
}
double f(double x, double y, double z, double t) {
double r731113 = t;
double r731114 = -5.633804011750121e+26;
bool r731115 = r731113 <= r731114;
double r731116 = 2.4170814225561286e-32;
bool r731117 = r731113 <= r731116;
double r731118 = !r731117;
bool r731119 = r731115 || r731118;
double r731120 = x;
double r731121 = y;
double r731122 = z;
double r731123 = r731121 / r731122;
double r731124 = 3.0;
double r731125 = r731123 / r731124;
double r731126 = r731120 - r731125;
double r731127 = 0.3333333333333333;
double r731128 = r731122 * r731121;
double r731129 = r731113 / r731128;
double r731130 = r731127 * r731129;
double r731131 = r731126 + r731130;
double r731132 = 1.0;
double r731133 = r731132 / r731122;
double r731134 = r731113 / r731124;
double r731135 = r731134 / r731121;
double r731136 = r731133 * r731135;
double r731137 = r731126 + r731136;
double r731138 = r731119 ? r731131 : r731137;
return r731138;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.8 |
|---|---|
| Target | 1.8 |
| Herbie | 0.4 |
if t < -5.633804011750121e+26 or 2.4170814225561286e-32 < t Initial program 0.6
rmApplied associate-/r*2.4
rmApplied associate-/r*2.4
Taylor expanded around 0 0.7
if -5.633804011750121e+26 < t < 2.4170814225561286e-32Initial program 6.1
rmApplied associate-/r*1.3
rmApplied associate-/r*1.3
rmApplied *-un-lft-identity1.3
Applied *-un-lft-identity1.3
Applied times-frac1.3
Applied times-frac0.3
Simplified0.3
Final simplification0.4
herbie shell --seed 2020036
(FPCore (x y z t)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, H"
:precision binary64
:herbie-target
(+ (- x (/ y (* z 3))) (/ (/ t (* z 3)) y))
(+ (- x (/ y (* z 3))) (/ t (* (* z 3) y))))