\log \left(1 + e^{x}\right) - x \cdot ye^{\mathsf{fma}\left(\frac{1}{8}, \left(\frac{x}{\log 2} - \frac{\frac{x}{\log 2}}{\log 2}\right) \cdot x, \mathsf{fma}\left(\frac{1}{2}, \frac{x}{\log 2}, \log \left(\log 2\right)\right)\right)} - x \cdot ydouble f(double x, double y) {
double r4239078 = 1.0;
double r4239079 = x;
double r4239080 = exp(r4239079);
double r4239081 = r4239078 + r4239080;
double r4239082 = log(r4239081);
double r4239083 = y;
double r4239084 = r4239079 * r4239083;
double r4239085 = r4239082 - r4239084;
return r4239085;
}
double f(double x, double y) {
double r4239086 = 0.125;
double r4239087 = x;
double r4239088 = 2.0;
double r4239089 = log(r4239088);
double r4239090 = r4239087 / r4239089;
double r4239091 = r4239090 / r4239089;
double r4239092 = r4239090 - r4239091;
double r4239093 = r4239092 * r4239087;
double r4239094 = 0.5;
double r4239095 = log(r4239089);
double r4239096 = fma(r4239094, r4239090, r4239095);
double r4239097 = fma(r4239086, r4239093, r4239096);
double r4239098 = exp(r4239097);
double r4239099 = y;
double r4239100 = r4239087 * r4239099;
double r4239101 = r4239098 - r4239100;
return r4239101;
}




Bits error versus x




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