Average Error: 15.2 → 15.2
Time: 7.1s
Precision: binary64
\[y \cdot \log \left(\frac{p}{1 + e^{-x}}\right) + \left(1 - y\right) \cdot \log \left(1 - \frac{p}{1 + e^{-x}}\right)\]
\[y \cdot \log \left(\frac{p}{1 + e^{-x}}\right) + \left(1 - y\right) \cdot \log \left(1 - \frac{p}{1 + e^{-x}}\right)\]

Error

Bits error versus y

Bits error versus p

Bits error versus x

Derivation

  1. Initial program 15.2

    \[y \cdot \log \left(\frac{p}{1 + e^{-x}}\right) + \left(1 - y\right) \cdot \log \left(1 - \frac{p}{1 + e^{-x}}\right)\]
  2. Final simplification15.2

    \[\leadsto y \cdot \log \left(\frac{p}{1 + e^{-x}}\right) + \left(1 - y\right) \cdot \log \left(1 - \frac{p}{1 + e^{-x}}\right)\]

Reproduce

herbie shell --seed 2020153 
(FPCore (y p x)
  :name "(+ (* y (log (/ p (+ 1 (exp (- x)))))) (* (- 1 y) (log (- 1 (/ p (+ 1 (exp (- x))))))))"
  :precision binary64
  (+ (* y (log (/ p (+ 1.0 (exp (neg x)))))) (* (- 1.0 y) (log (- 1.0 (/ p (+ 1.0 (exp (neg x)))))))))