\log \left(1 + e^{x}\right) - x \cdot y(\left(\sqrt{\log_* (1 + e^{x})}\right) \cdot \left(\sqrt{\log_* (1 + e^{x})}\right) + \left(x \cdot \left(-y\right)\right))_*double f(double x, double y) {
double r5465663 = 1.0;
double r5465664 = x;
double r5465665 = exp(r5465664);
double r5465666 = r5465663 + r5465665;
double r5465667 = log(r5465666);
double r5465668 = y;
double r5465669 = r5465664 * r5465668;
double r5465670 = r5465667 - r5465669;
return r5465670;
}
double f(double x, double y) {
double r5465671 = x;
double r5465672 = exp(r5465671);
double r5465673 = log1p(r5465672);
double r5465674 = sqrt(r5465673);
double r5465675 = y;
double r5465676 = -r5465675;
double r5465677 = r5465671 * r5465676;
double r5465678 = fma(r5465674, r5465674, r5465677);
return r5465678;
}




Bits error versus x




Bits error versus y
| Original | 0.4 |
|---|---|
| Target | 0.1 |
| Herbie | 0.9 |
Initial program 0.4
Simplified0.4
rmApplied add-sqr-sqrt0.9
Applied fma-neg0.9
Final simplification0.9
herbie shell --seed 2019119 +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)))