\frac{\left(-t1\right) \cdot v}{\left(t1 + u\right) \cdot \left(t1 + u\right)}\begin{array}{l}
\mathbf{if}\;\frac{\left(-t1\right) \cdot v}{\left(t1 + u\right) \cdot \left(t1 + u\right)} \leq 0 \lor \neg \left(\frac{\left(-t1\right) \cdot v}{\left(t1 + u\right) \cdot \left(t1 + u\right)} \leq 1.288430744239899 \cdot 10^{+248}\right):\\
\;\;\;\;\frac{v}{t1 + u} \cdot \frac{1}{-1 - \frac{u}{t1}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-t1\right) \cdot v}{\left(t1 + u\right) \cdot \left(t1 + u\right)}\\
\end{array}(FPCore (u v t1) :precision binary64 (/ (* (- t1) v) (* (+ t1 u) (+ t1 u))))
(FPCore (u v t1)
:precision binary64
(if (or (<= (/ (* (- t1) v) (* (+ t1 u) (+ t1 u))) 0.0)
(not
(<= (/ (* (- t1) v) (* (+ t1 u) (+ t1 u))) 1.288430744239899e+248)))
(* (/ v (+ t1 u)) (/ 1.0 (- -1.0 (/ u t1))))
(/ (* (- t1) v) (* (+ t1 u) (+ t1 u)))))double code(double u, double v, double t1) {
return (-t1 * v) / ((t1 + u) * (t1 + u));
}
double code(double u, double v, double t1) {
double tmp;
if ((((-t1 * v) / ((t1 + u) * (t1 + u))) <= 0.0) || !(((-t1 * v) / ((t1 + u) * (t1 + u))) <= 1.288430744239899e+248)) {
tmp = (v / (t1 + u)) * (1.0 / (-1.0 - (u / t1)));
} else {
tmp = (-t1 * v) / ((t1 + u) * (t1 + u));
}
return tmp;
}



Bits error versus u



Bits error versus v



Bits error versus t1
Results
if (/.f64 (*.f64 (neg.f64 t1) v) (*.f64 (+.f64 t1 u) (+.f64 t1 u))) < -0.0 or 1.28843074423989897e248 < (/.f64 (*.f64 (neg.f64 t1) v) (*.f64 (+.f64 t1 u) (+.f64 t1 u))) Initial program 21.6
Simplified1.3
rmApplied div-inv_binary641.3
if -0.0 < (/.f64 (*.f64 (neg.f64 t1) v) (*.f64 (+.f64 t1 u) (+.f64 t1 u))) < 1.28843074423989897e248Initial program 0.8
Final simplification1.2
herbie shell --seed 2020253
(FPCore (u v t1)
:name "Rosa's DopplerBench"
:precision binary64
(/ (* (- t1) v) (* (+ t1 u) (+ t1 u))))