\frac{x}{x} - \frac{1}{x} \cdot \sqrt{x \cdot x}2 \cdot \log \left(\sqrt[3]{e^{\mathsf{fma}\left(-\frac{1}{x}, \left|x\right|, 1\right)}}\right) + \log \left(\sqrt[3]{e^{\mathsf{fma}\left(-\frac{1}{x}, \left|x\right|, 1\right)}}\right)double f(double x) {
double r180457 = x;
double r180458 = r180457 / r180457;
double r180459 = 1.0;
double r180460 = r180459 / r180457;
double r180461 = r180457 * r180457;
double r180462 = sqrt(r180461);
double r180463 = r180460 * r180462;
double r180464 = r180458 - r180463;
return r180464;
}
double f(double x) {
double r180465 = 2.0;
double r180466 = 1.0;
double r180467 = x;
double r180468 = r180466 / r180467;
double r180469 = -r180468;
double r180470 = fabs(r180467);
double r180471 = 1.0;
double r180472 = fma(r180469, r180470, r180471);
double r180473 = exp(r180472);
double r180474 = cbrt(r180473);
double r180475 = log(r180474);
double r180476 = r180465 * r180475;
double r180477 = r180476 + r180475;
return r180477;
}




Bits error versus x
| Original | 32.8 |
|---|---|
| Target | 0 |
| Herbie | 0.0 |
Initial program 32.8
Simplified30.7
rmApplied add-log-exp4.5
rmApplied add-cube-cbrt0.0
Applied log-prod0.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2020002 +o rules:numerics
(FPCore (x)
:name "sqrt sqr"
:precision binary64
:herbie-target
(if (< x 0.0) 2 0.0)
(- (/ x x) (* (/ 1 x) (sqrt (* x x)))))