\log \left(1 + e^{x}\right) - x \cdot y\begin{array}{l}
\mathbf{if}\;x \le -9.413547838898711118287877808175068139462 \cdot 10^{-6}:\\
\;\;\;\;\log \left(\sqrt{1 + e^{x}}\right) + \left(\log \left(\sqrt{1 + e^{x}}\right) - x \cdot y\right)\\
\mathbf{else}:\\
\;\;\;\;\sqrt[3]{\frac{{\left(\log 2\right)}^{2} \cdot {x}^{2}}{{2}^{2}} \cdot \frac{-3}{2} + \left({\left(\log 2\right)}^{2} \cdot \left(x \cdot 1.5 + \log 2\right) + \left(0.75 \cdot {x}^{2}\right) \cdot \left(\log 2 + {\left(\log 2\right)}^{2}\right)\right)} - x \cdot y\\
\end{array}double f(double x, double y) {
double r128577 = 1.0;
double r128578 = x;
double r128579 = exp(r128578);
double r128580 = r128577 + r128579;
double r128581 = log(r128580);
double r128582 = y;
double r128583 = r128578 * r128582;
double r128584 = r128581 - r128583;
return r128584;
}
double f(double x, double y) {
double r128585 = x;
double r128586 = -9.413547838898711e-06;
bool r128587 = r128585 <= r128586;
double r128588 = 1.0;
double r128589 = exp(r128585);
double r128590 = r128588 + r128589;
double r128591 = sqrt(r128590);
double r128592 = log(r128591);
double r128593 = y;
double r128594 = r128585 * r128593;
double r128595 = r128592 - r128594;
double r128596 = r128592 + r128595;
double r128597 = 2.0;
double r128598 = log(r128597);
double r128599 = 2.0;
double r128600 = pow(r128598, r128599);
double r128601 = pow(r128585, r128599);
double r128602 = r128600 * r128601;
double r128603 = pow(r128597, r128599);
double r128604 = r128602 / r128603;
double r128605 = -1.5;
double r128606 = r128604 * r128605;
double r128607 = 1.5;
double r128608 = r128585 * r128607;
double r128609 = r128608 + r128598;
double r128610 = r128600 * r128609;
double r128611 = 0.75;
double r128612 = r128611 * r128601;
double r128613 = r128598 + r128600;
double r128614 = r128612 * r128613;
double r128615 = r128610 + r128614;
double r128616 = r128606 + r128615;
double r128617 = cbrt(r128616);
double r128618 = r128617 - r128594;
double r128619 = r128587 ? r128596 : r128618;
return r128619;
}




Bits error versus x




Bits error versus y
Results
| Original | 0.6 |
|---|---|
| Target | 0.1 |
| Herbie | 0.4 |
if x < -9.413547838898711e-06Initial program 0.2
rmApplied add-sqr-sqrt0.2
Applied log-prod0.2
Applied associate--l+0.2
if -9.413547838898711e-06 < x Initial program 0.7
Taylor expanded around 0 0.4
rmApplied add-cbrt-cube0.4
Simplified0.4
Taylor expanded around 0 0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2019325
(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)))