\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\begin{array}{l}
\mathbf{if}\;t \le 1.018025094121265229501382308592741530739 \cdot 10^{-108}:\\
\;\;\;\;\left(x - \frac{\frac{y}{z}}{3}\right) + \frac{\sqrt[3]{t} \cdot \sqrt[3]{t}}{z} \cdot \frac{\frac{\sqrt[3]{t}}{3}}{y}\\
\mathbf{else}:\\
\;\;\;\;\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{z \cdot \left(3 \cdot y\right)}\\
\end{array}double f(double x, double y, double z, double t) {
double r529186 = x;
double r529187 = y;
double r529188 = z;
double r529189 = 3.0;
double r529190 = r529188 * r529189;
double r529191 = r529187 / r529190;
double r529192 = r529186 - r529191;
double r529193 = t;
double r529194 = r529190 * r529187;
double r529195 = r529193 / r529194;
double r529196 = r529192 + r529195;
return r529196;
}
double f(double x, double y, double z, double t) {
double r529197 = t;
double r529198 = 1.0180250941212652e-108;
bool r529199 = r529197 <= r529198;
double r529200 = x;
double r529201 = y;
double r529202 = z;
double r529203 = r529201 / r529202;
double r529204 = 3.0;
double r529205 = r529203 / r529204;
double r529206 = r529200 - r529205;
double r529207 = cbrt(r529197);
double r529208 = r529207 * r529207;
double r529209 = r529208 / r529202;
double r529210 = r529207 / r529204;
double r529211 = r529210 / r529201;
double r529212 = r529209 * r529211;
double r529213 = r529206 + r529212;
double r529214 = r529202 * r529204;
double r529215 = r529201 / r529214;
double r529216 = r529200 - r529215;
double r529217 = r529204 * r529201;
double r529218 = r529202 * r529217;
double r529219 = r529197 / r529218;
double r529220 = r529216 + r529219;
double r529221 = r529199 ? r529213 : r529220;
return r529221;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.7 |
|---|---|
| Target | 1.8 |
| Herbie | 1.3 |
if t < 1.0180250941212652e-108Initial program 4.9
rmApplied associate-/r*1.8
rmApplied associate-/r*1.8
rmApplied *-un-lft-identity1.8
Applied add-cube-cbrt2.1
Applied times-frac2.0
Applied times-frac1.4
Simplified1.4
if 1.0180250941212652e-108 < t Initial program 1.2
rmApplied associate-*l*1.2
Final simplification1.3
herbie shell --seed 2019326 +o rules:numerics
(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))))