\log \left(1 + e^{x}\right) - x \cdot y\sqrt[3]{e^{\left(\left(\sqrt[3]{\sqrt[3]{\log \log \left(1 + e^{x}\right)}} \cdot \sqrt[3]{\sqrt[3]{\log \log \left(1 + e^{x}\right)}}\right) \cdot {\left(\sqrt[3]{\sqrt[3]{\log \log \left(1 + e^{x}\right)}}\right)}^{4}\right) \cdot \left(\sqrt[3]{\log \log \left(1 + e^{x}\right)} \cdot 3\right)}} - x \cdot y(FPCore (x y) :precision binary64 (- (log (+ 1.0 (exp x))) (* x y)))
(FPCore (x y)
:precision binary64
(-
(cbrt
(exp
(*
(*
(*
(cbrt (cbrt (log (log (+ 1.0 (exp x))))))
(cbrt (cbrt (log (log (+ 1.0 (exp x)))))))
(pow (cbrt (cbrt (log (log (+ 1.0 (exp x)))))) 4.0))
(* (cbrt (log (log (+ 1.0 (exp x))))) 3.0))))
(* x y)))double code(double x, double y) {
return log(1.0 + exp(x)) - (x * y);
}
double code(double x, double y) {
return cbrt(exp(((cbrt(cbrt(log(log(1.0 + exp(x))))) * cbrt(cbrt(log(log(1.0 + exp(x)))))) * pow(cbrt(cbrt(log(log(1.0 + exp(x))))), 4.0)) * (cbrt(log(log(1.0 + exp(x)))) * 3.0))) - (x * y);
}




Bits error versus x




Bits error versus y
Results
| Original | 0.5 |
|---|---|
| Target | 0.1 |
| Herbie | 0.6 |
Initial program 0.5
rmApplied add-cbrt-cube_binary640.5
Simplified0.5
rmApplied add-exp-log_binary641.1
Simplified1.1
rmApplied add-cube-cbrt_binary641.1
Applied associate-*l*_binary641.1
Simplified1.1
rmApplied add-cube-cbrt_binary641.1
Applied associate-*l*_binary641.1
Simplified0.6
Final simplification0.6
herbie shell --seed 2020288
(FPCore (x y)
:name "Logistic regression 2"
:precision binary64
: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)))