\left(x - \frac{y}{z \cdot 3}\right) + \frac{t}{\left(z \cdot 3\right) \cdot y}\begin{array}{l}
\mathbf{if}\;t \le -590899592270418110820309280073564815360:\\
\;\;\;\;\frac{\frac{t}{3}}{y \cdot z} + \left(x - \frac{y}{z \cdot 3}\right)\\
\mathbf{elif}\;t \le 1.835348449183070959810035931972584701578 \cdot 10^{-76}:\\
\;\;\;\;x + \left(\frac{0}{z \cdot 3} - \left(\frac{y}{z \cdot 3} - \frac{\frac{t}{y}}{z \cdot 3}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;x + \left(\frac{\frac{-y}{z}}{3} + \frac{\frac{t}{z \cdot 3}}{y}\right)\\
\end{array}double f(double x, double y, double z, double t) {
double r605231 = x;
double r605232 = y;
double r605233 = z;
double r605234 = 3.0;
double r605235 = r605233 * r605234;
double r605236 = r605232 / r605235;
double r605237 = r605231 - r605236;
double r605238 = t;
double r605239 = r605235 * r605232;
double r605240 = r605238 / r605239;
double r605241 = r605237 + r605240;
return r605241;
}
double f(double x, double y, double z, double t) {
double r605242 = t;
double r605243 = -5.908995922704181e+38;
bool r605244 = r605242 <= r605243;
double r605245 = 3.0;
double r605246 = r605242 / r605245;
double r605247 = y;
double r605248 = z;
double r605249 = r605247 * r605248;
double r605250 = r605246 / r605249;
double r605251 = x;
double r605252 = r605248 * r605245;
double r605253 = r605247 / r605252;
double r605254 = r605251 - r605253;
double r605255 = r605250 + r605254;
double r605256 = 1.835348449183071e-76;
bool r605257 = r605242 <= r605256;
double r605258 = 0.0;
double r605259 = r605258 / r605252;
double r605260 = r605242 / r605247;
double r605261 = r605260 / r605252;
double r605262 = r605253 - r605261;
double r605263 = r605259 - r605262;
double r605264 = r605251 + r605263;
double r605265 = -r605247;
double r605266 = r605265 / r605248;
double r605267 = r605266 / r605245;
double r605268 = r605242 / r605252;
double r605269 = r605268 / r605247;
double r605270 = r605267 + r605269;
double r605271 = r605251 + r605270;
double r605272 = r605257 ? r605264 : r605271;
double r605273 = r605244 ? r605255 : r605272;
return r605273;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 3.6 |
|---|---|
| Target | 1.6 |
| Herbie | 0.7 |
if t < -5.908995922704181e+38Initial program 0.7
Simplified0.7
rmApplied *-un-lft-identity0.7
Applied times-frac3.2
Simplified3.1
rmApplied frac-times0.6
Simplified0.6
Simplified0.6
if -5.908995922704181e+38 < t < 1.835348449183071e-76Initial program 6.0
Simplified6.0
rmApplied *-un-lft-identity6.0
Applied times-frac1.1
Simplified1.1
rmApplied sub-neg1.1
Applied associate-+l+1.1
Simplified1.0
rmApplied neg-sub01.0
Applied div-sub1.0
Applied associate-+l-1.0
Simplified0.2
if 1.835348449183071e-76 < t Initial program 0.9
Simplified0.9
rmApplied *-un-lft-identity0.9
Applied times-frac1.8
Simplified1.7
rmApplied sub-neg1.7
Applied associate-+l+1.7
Simplified1.8
rmApplied associate-/r*1.8
Final simplification0.7
herbie shell --seed 2019174
(FPCore (x y z t)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, H"
:herbie-target
(+ (- x (/ y (* z 3.0))) (/ (/ t (* z 3.0)) y))
(+ (- x (/ y (* z 3.0))) (/ t (* (* z 3.0) y))))