\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + \left(a \cdot 27\right) \cdot b
\begin{array}{l}
\mathbf{if}\;t \le 1.551449981725597111445963033522555703704 \cdot 10^{-26}:\\
\;\;\;\;\left(x \cdot 2 - y \cdot \left(\left(z \cdot 9\right) \cdot t\right)\right) + \left(a \cdot 27\right) \cdot b\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(t \cdot \left(z \cdot y\right), -9, 2 \cdot x\right) + \left(a \cdot 27\right) \cdot b\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r449296 = x;
double r449297 = 2.0;
double r449298 = r449296 * r449297;
double r449299 = y;
double r449300 = 9.0;
double r449301 = r449299 * r449300;
double r449302 = z;
double r449303 = r449301 * r449302;
double r449304 = t;
double r449305 = r449303 * r449304;
double r449306 = r449298 - r449305;
double r449307 = a;
double r449308 = 27.0;
double r449309 = r449307 * r449308;
double r449310 = b;
double r449311 = r449309 * r449310;
double r449312 = r449306 + r449311;
return r449312;
}
double f(double x, double y, double z, double t, double a, double b) {
double r449313 = t;
double r449314 = 1.551449981725597e-26;
bool r449315 = r449313 <= r449314;
double r449316 = x;
double r449317 = 2.0;
double r449318 = r449316 * r449317;
double r449319 = y;
double r449320 = z;
double r449321 = 9.0;
double r449322 = r449320 * r449321;
double r449323 = r449322 * r449313;
double r449324 = r449319 * r449323;
double r449325 = r449318 - r449324;
double r449326 = a;
double r449327 = 27.0;
double r449328 = r449326 * r449327;
double r449329 = b;
double r449330 = r449328 * r449329;
double r449331 = r449325 + r449330;
double r449332 = r449320 * r449319;
double r449333 = r449313 * r449332;
double r449334 = -r449321;
double r449335 = r449317 * r449316;
double r449336 = fma(r449333, r449334, r449335);
double r449337 = r449336 + r449330;
double r449338 = r449315 ? r449331 : r449337;
return r449338;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
| Original | 3.6 |
|---|---|
| Target | 2.6 |
| Herbie | 2.0 |
if t < 1.551449981725597e-26Initial program 4.5
rmApplied associate-*l*4.5
Simplified4.5
rmApplied associate-*l*2.4
if 1.551449981725597e-26 < t Initial program 0.7
rmApplied associate-*l*7.2
Simplified7.2
Taylor expanded around inf 0.7
Simplified0.7
Final simplification2.0
herbie shell --seed 2019326 +o rules:numerics
(FPCore (x y z t a b)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, A"
:precision binary64
:herbie-target
(if (< y 7.590524218811189e-161) (+ (- (* x 2) (* (* (* y 9) z) t)) (* a (* 27 b))) (+ (- (* x 2) (* 9 (* y (* t z)))) (* (* a 27) b)))
(+ (- (* x 2) (* (* (* y 9) z) t)) (* (* a 27) b)))