Average Error: 22.5 → 22.5
Time: 3.3s
Precision: binary64
\[\frac{\frac{\left(1 + a\right) - \left(1 + b\right) \cdot e^{-\left(b - a\right)}}{-\mathsf{expm1}\left(-\left(b - a\right)\right)}}{r}\]
\[\frac{\frac{\left(1 + a\right) - \frac{1 + b}{e^{b - a}}}{-r}}{\mathsf{expm1}\left(-\left(b - a\right)\right)}\]

Error

Bits error versus a

Bits error versus b

Bits error versus r

Derivation

  1. Initial program 22.5

    \[\frac{\frac{\left(1 + a\right) - \left(1 + b\right) \cdot e^{-\left(b - a\right)}}{-\mathsf{expm1}\left(-\left(b - a\right)\right)}}{r}\]
  2. Simplified22.5

    \[\leadsto \color{blue}{\frac{\frac{\left(1 + a\right) - \frac{1 + b}{e^{b - a}}}{-r}}{\mathsf{expm1}\left(-\left(b - a\right)\right)}}\]
  3. Final simplification22.5

    \[\leadsto \frac{\frac{\left(1 + a\right) - \frac{1 + b}{e^{b - a}}}{-r}}{\mathsf{expm1}\left(-\left(b - a\right)\right)}\]

Reproduce

herbie shell --seed 2020152 
(FPCore (a b r)
  :name "(/ (/ (- (+ 1 a) (* (+ 1 b) (exp (- (- b a))))) (- (expm1 (- (- b a))))) r)"
  :precision binary64
  (/ (/ (- (+ 1.0 a) (* (+ 1.0 b) (exp (neg (- b a))))) (neg (expm1 (neg (- b a))))) r))