Average Error: 18.1 → 0.2
Time: 3.5s
Precision: binary64
\[\frac{\left(-t1\right) \cdot v}{\left(t1 + u\right) \cdot \left(t1 + u\right)}\]
\[\begin{array}{l} \mathbf{if}\;u \le -0.0228999540101663783 \lor \neg \left(u \le 1.9216388818596934 \cdot 10^{-10}\right):\\ \;\;\;\;\left(\left(-t1\right) \cdot \frac{v}{t1 + u}\right) \cdot \frac{1}{t1 + u}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{-t1}{t1 + u}}{t1 + u} \cdot v\\ \end{array}\]

Error

Bits error versus u

Bits error versus v

Bits error versus t1

Derivation

  1. Split input into 2 regimes
  2. if u < -0.0228999540101663783 or 1.9216388818596934e-10 < u

    1. Initial program 14.1

      \[\frac{\left(-t1\right) \cdot v}{\left(t1 + u\right) \cdot \left(t1 + u\right)}\]
    2. Using strategy rm
    3. Applied times-frac1.2

      \[\leadsto \color{blue}{\frac{-t1}{t1 + u} \cdot \frac{v}{t1 + u}}\]
    4. Using strategy rm
    5. Applied div-inv1.2

      \[\leadsto \frac{-t1}{t1 + u} \cdot \color{blue}{\left(v \cdot \frac{1}{t1 + u}\right)}\]
    6. Applied associate-*r*1.2

      \[\leadsto \color{blue}{\left(\frac{-t1}{t1 + u} \cdot v\right) \cdot \frac{1}{t1 + u}}\]
    7. Simplified0.2

      \[\leadsto \color{blue}{\left(\left(-t1\right) \cdot \frac{v}{t1 + u}\right)} \cdot \frac{1}{t1 + u}\]

    if -0.0228999540101663783 < u < 1.9216388818596934e-10

    1. Initial program 22.6

      \[\frac{\left(-t1\right) \cdot v}{\left(t1 + u\right) \cdot \left(t1 + u\right)}\]
    2. Using strategy rm
    3. Applied times-frac1.4

      \[\leadsto \color{blue}{\frac{-t1}{t1 + u} \cdot \frac{v}{t1 + u}}\]
    4. Using strategy rm
    5. Applied clear-num1.9

      \[\leadsto \frac{-t1}{t1 + u} \cdot \color{blue}{\frac{1}{\frac{t1 + u}{v}}}\]
    6. Using strategy rm
    7. Applied associate-/r/1.6

      \[\leadsto \frac{-t1}{t1 + u} \cdot \color{blue}{\left(\frac{1}{t1 + u} \cdot v\right)}\]
    8. Applied associate-*r*0.3

      \[\leadsto \color{blue}{\left(\frac{-t1}{t1 + u} \cdot \frac{1}{t1 + u}\right) \cdot v}\]
    9. Simplified0.2

      \[\leadsto \color{blue}{\frac{\frac{-t1}{t1 + u}}{t1 + u}} \cdot v\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.2

    \[\leadsto \begin{array}{l} \mathbf{if}\;u \le -0.0228999540101663783 \lor \neg \left(u \le 1.9216388818596934 \cdot 10^{-10}\right):\\ \;\;\;\;\left(\left(-t1\right) \cdot \frac{v}{t1 + u}\right) \cdot \frac{1}{t1 + u}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{-t1}{t1 + u}}{t1 + u} \cdot v\\ \end{array}\]

Reproduce

herbie shell --seed 2020174 
(FPCore (u v t1)
  :name "Rosa's DopplerBench"
  :precision binary64
  (/ (* (neg t1) v) (* (+ t1 u) (+ t1 u))))