\log \left(1 + e^{x}\right) - x \cdot ye^{\left(\log \left(\log 2\right) + 0.5 \cdot \frac{x}{\log 2}\right) - \frac{{x}^{2}}{\log 2} \cdot \left(\left(\frac{0.125}{\log 2} + \frac{\frac{1}{2}}{{2}^{2}}\right) - 0.25\right)} - x \cdot ydouble f(double x, double y) {
double r186565 = 1.0;
double r186566 = x;
double r186567 = exp(r186566);
double r186568 = r186565 + r186567;
double r186569 = log(r186568);
double r186570 = y;
double r186571 = r186566 * r186570;
double r186572 = r186569 - r186571;
return r186572;
}
double f(double x, double y) {
double r186573 = 2.0;
double r186574 = log(r186573);
double r186575 = log(r186574);
double r186576 = 0.5;
double r186577 = x;
double r186578 = r186577 / r186574;
double r186579 = r186576 * r186578;
double r186580 = r186575 + r186579;
double r186581 = 2.0;
double r186582 = pow(r186577, r186581);
double r186583 = r186582 / r186574;
double r186584 = 0.125;
double r186585 = r186584 / r186574;
double r186586 = 0.5;
double r186587 = pow(r186573, r186581);
double r186588 = r186586 / r186587;
double r186589 = r186585 + r186588;
double r186590 = 0.25;
double r186591 = r186589 - r186590;
double r186592 = r186583 * r186591;
double r186593 = r186580 - r186592;
double r186594 = exp(r186593);
double r186595 = y;
double r186596 = r186577 * r186595;
double r186597 = r186594 - r186596;
return r186597;
}




Bits error versus x




Bits error versus y
Results
| Original | 0.6 |
|---|---|
| Target | 0.1 |
| Herbie | 0.5 |
Initial program 0.6
rmApplied add-exp-log0.6
Taylor expanded around 0 7.9
Simplified0.5
Final simplification0.5
herbie shell --seed 2019351
(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)))