\log \left(1 + e^{x}\right) - x \cdot y\mathsf{fma}\left(y, -x, \left(\log \left(\mathsf{fma}\left(1, 1, e^{x} \cdot \left(e^{x} - 1\right)\right)\right) + \log \left(1 + e^{x}\right)\right) - \log \left(\mathsf{fma}\left(1, 1, e^{x} \cdot \left(e^{x} - 1\right)\right)\right)\right)double f(double x, double y) {
double r96605 = 1.0;
double r96606 = x;
double r96607 = exp(r96606);
double r96608 = r96605 + r96607;
double r96609 = log(r96608);
double r96610 = y;
double r96611 = r96606 * r96610;
double r96612 = r96609 - r96611;
return r96612;
}
double f(double x, double y) {
double r96613 = y;
double r96614 = x;
double r96615 = -r96614;
double r96616 = 1.0;
double r96617 = exp(r96614);
double r96618 = r96617 - r96616;
double r96619 = r96617 * r96618;
double r96620 = fma(r96616, r96616, r96619);
double r96621 = log(r96620);
double r96622 = r96616 + r96617;
double r96623 = log(r96622);
double r96624 = r96621 + r96623;
double r96625 = r96624 - r96621;
double r96626 = fma(r96613, r96615, r96625);
return r96626;
}




Bits error versus x




Bits error versus y
| Original | 0.5 |
|---|---|
| Target | 0.1 |
| Herbie | 0.5 |
Initial program 0.5
rmApplied *-un-lft-identity0.5
Applied log-prod0.5
Applied associate--l+0.5
Simplified0.5
rmApplied flip3-+0.5
Applied log-div0.5
Simplified0.5
rmApplied sum-cubes0.5
Applied log-prod0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2019303 +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)))