\log \left(1 + e^{x}\right) - x \cdot y\mathsf{fma}\left(x, -y, e^{\log \left(\log \left(1 + e^{x}\right)\right)}\right)double f(double x, double y) {
double r141553 = 1.0;
double r141554 = x;
double r141555 = exp(r141554);
double r141556 = r141553 + r141555;
double r141557 = log(r141556);
double r141558 = y;
double r141559 = r141554 * r141558;
double r141560 = r141557 - r141559;
return r141560;
}
double f(double x, double y) {
double r141561 = x;
double r141562 = y;
double r141563 = -r141562;
double r141564 = 1.0;
double r141565 = exp(r141561);
double r141566 = r141564 + r141565;
double r141567 = log(r141566);
double r141568 = log(r141567);
double r141569 = exp(r141568);
double r141570 = fma(r141561, r141563, r141569);
return r141570;
}




Bits error versus x




Bits error versus y
| Original | 0.5 |
|---|---|
| Target | 0.1 |
| Herbie | 0.5 |
Initial program 0.5
Taylor expanded around inf 0.5
Simplified0.5
rmApplied add-exp-log0.5
Final simplification0.5
herbie shell --seed 2019304 +o rules:numerics
(FPCore (x y)
:name "Logistic regression 2"
:precision binary64
:herbie-target
(if (<= x 0.0) (- (log (+ 1 (exp x))) (* x y)) (- (log (+ 1 (exp (- x)))) (* (- x) (- 1 y))))
(- (log (+ 1 (exp x))) (* x y)))