\log \left(1 + e^{x}\right) - x \cdot ye^{\mathsf{fma}\left(\frac{x \cdot x}{\log 2}, 0.125 - \frac{0.125}{\log 2}, \mathsf{fma}\left(\frac{x}{\log 2}, 0.5, \log \left(\log 2\right)\right)\right)} - x \cdot ydouble f(double x, double y) {
double r6600316 = 1.0;
double r6600317 = x;
double r6600318 = exp(r6600317);
double r6600319 = r6600316 + r6600318;
double r6600320 = log(r6600319);
double r6600321 = y;
double r6600322 = r6600317 * r6600321;
double r6600323 = r6600320 - r6600322;
return r6600323;
}
double f(double x, double y) {
double r6600324 = x;
double r6600325 = r6600324 * r6600324;
double r6600326 = 2.0;
double r6600327 = log(r6600326);
double r6600328 = r6600325 / r6600327;
double r6600329 = 0.125;
double r6600330 = r6600329 / r6600327;
double r6600331 = r6600329 - r6600330;
double r6600332 = r6600324 / r6600327;
double r6600333 = 0.5;
double r6600334 = log(r6600327);
double r6600335 = fma(r6600332, r6600333, r6600334);
double r6600336 = fma(r6600328, r6600331, r6600335);
double r6600337 = exp(r6600336);
double r6600338 = y;
double r6600339 = r6600324 * r6600338;
double r6600340 = r6600337 - r6600339;
return r6600340;
}




Bits error versus x




Bits error versus y
| Original | 0.5 |
|---|---|
| Target | 0.1 |
| Herbie | 0.6 |
Initial program 0.5
Taylor expanded around 0 14.7
Simplified14.7
rmApplied add-exp-log14.7
Taylor expanded around 0 7.8
Simplified0.6
Final simplification0.6
herbie shell --seed 2019169 +o rules:numerics
(FPCore (x y)
:name "Logistic regression 2"
:herbie-target
(if (<= x 0.0) (- (log (+ 1.0 (exp x))) (* x y)) (- (log (+ 1.0 (exp (- x)))) (* (- x) (- 1.0 y))))
(- (log (+ 1.0 (exp x))) (* x y)))