\log \left(1 + e^{x}\right) - x \cdot y\log \left({1}^{3} + {\left(e^{x}\right)}^{3}\right) - \mathsf{fma}\left(x, y, \log \left(1 \cdot 1 + \left(e^{x} \cdot e^{x} - 1 \cdot e^{x}\right)\right)\right)double f(double x, double y) {
double r162536 = 1.0;
double r162537 = x;
double r162538 = exp(r162537);
double r162539 = r162536 + r162538;
double r162540 = log(r162539);
double r162541 = y;
double r162542 = r162537 * r162541;
double r162543 = r162540 - r162542;
return r162543;
}
double f(double x, double y) {
double r162544 = 1.0;
double r162545 = 3.0;
double r162546 = pow(r162544, r162545);
double r162547 = x;
double r162548 = exp(r162547);
double r162549 = pow(r162548, r162545);
double r162550 = r162546 + r162549;
double r162551 = log(r162550);
double r162552 = y;
double r162553 = r162544 * r162544;
double r162554 = r162548 * r162548;
double r162555 = r162544 * r162548;
double r162556 = r162554 - r162555;
double r162557 = r162553 + r162556;
double r162558 = log(r162557);
double r162559 = fma(r162547, r162552, r162558);
double r162560 = r162551 - r162559;
return r162560;
}




Bits error versus x




Bits error versus y
| Original | 0.5 |
|---|---|
| Target | 0.0 |
| Herbie | 0.6 |
Initial program 0.5
rmApplied flip3-+0.6
Applied log-div0.6
Applied associate--l-0.6
Simplified0.6
Final simplification0.6
herbie shell --seed 2020024 +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)))