Average Error: 0.1 → 0.1
Time: 1.1s
Precision: binary64
\[\frac{1}{\sqrt{1 + \left(\left(-\mathsf{min}\left(\mathsf{max}\left(alphax, 0.0\right), 2\right)\right) \cdot \mathsf{min}\left(\mathsf{max}\left(alphax, 0.0\right), 2\right)\right) \cdot \log \left(1 - \mathsf{min}\left(\mathsf{max}\left(u, 0.0\right), 0.999999900000000053\right)\right)}}\]
\[\frac{1}{\sqrt{1 + \left(\left(-\mathsf{min}\left(\mathsf{max}\left(alphax, 0.0\right), 2\right)\right) \cdot \mathsf{min}\left(\mathsf{max}\left(alphax, 0.0\right), 2\right)\right) \cdot \log \left(1 - \mathsf{min}\left(\mathsf{max}\left(u, 0.0\right), 0.999999900000000053\right)\right)}}\]

Error

Bits error versus alphax

Bits error versus u

Derivation

  1. Initial program 0.1

    \[\frac{1}{\sqrt{1 + \left(\left(-\mathsf{min}\left(\mathsf{max}\left(alphax, 0.0\right), 2\right)\right) \cdot \mathsf{min}\left(\mathsf{max}\left(alphax, 0.0\right), 2\right)\right) \cdot \log \left(1 - \mathsf{min}\left(\mathsf{max}\left(u, 0.0\right), 0.999999900000000053\right)\right)}}\]
  2. Final simplification0.1

    \[\leadsto \frac{1}{\sqrt{1 + \left(\left(-\mathsf{min}\left(\mathsf{max}\left(alphax, 0.0\right), 2\right)\right) \cdot \mathsf{min}\left(\mathsf{max}\left(alphax, 0.0\right), 2\right)\right) \cdot \log \left(1 - \mathsf{min}\left(\mathsf{max}\left(u, 0.0\right), 0.999999900000000053\right)\right)}}\]

Reproduce

herbie shell --seed 2020152 
(FPCore (alphax u)
  :name "(/ 1 (sqrt (+ 1 (* (* (- (fmin (fmax alphax 0) 2)) (fmin (fmax alphax 0) 2)) (log (- 1 (fmin (fmax u 0) 0.9999999)))))))"
  :precision binary64
  (/ 1.0 (sqrt (+ 1.0 (* (* (neg (fmin (fmax alphax 0.0) 2.0)) (fmin (fmax alphax 0.0) 2.0)) (log (- 1.0 (fmin (fmax u 0.0) 0.9999999))))))))