\frac{\left(-t1\right) \cdot v}{\left(t1 + u\right) \cdot \left(t1 + u\right)}
\begin{array}{l}
\mathbf{if}\;u \leq 1.0610017015882892 \cdot 10^{+84}:\\
\;\;\;\;\frac{v \cdot \frac{-t1}{u + t1}}{u + t1}\\
\mathbf{elif}\;u \leq 2.430746947258446 \cdot 10^{+144}:\\
\;\;\;\;\frac{\frac{v \cdot \left(-t1\right)}{u + t1}}{u + t1}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\left(-1 - \frac{u}{t1}\right) \cdot \frac{u + t1}{v}}\\
\end{array}
(FPCore (u v t1) :precision binary64 (/ (* (- t1) v) (* (+ t1 u) (+ t1 u))))
(FPCore (u v t1)
:precision binary64
(if (<= u 1.0610017015882892e+84)
(/ (* v (/ (- t1) (+ u t1))) (+ u t1))
(if (<= u 2.430746947258446e+144)
(/ (/ (* v (- t1)) (+ u t1)) (+ u t1))
(/ 1.0 (* (- -1.0 (/ u t1)) (/ (+ u t1) v))))))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 (u <= 1.0610017015882892e+84) {
tmp = (v * (-t1 / (u + t1))) / (u + t1);
} else if (u <= 2.430746947258446e+144) {
tmp = ((v * -t1) / (u + t1)) / (u + t1);
} else {
tmp = 1.0 / ((-1.0 - (u / t1)) * ((u + t1) / v));
}
return tmp;
}



Bits error versus u



Bits error versus v



Bits error versus t1
Results
if u < 1.0610017015882892e84Initial program 17.9
Applied associate-/r*_binary6411.6
Simplified1.3
if 1.0610017015882892e84 < u < 2.430746947258446e144Initial program 10.1
Applied associate-/r*_binary646.9
if 2.430746947258446e144 < u Initial program 16.6
Simplified1.2
Applied clear-num_binary641.5
Applied div-inv_binary641.6
Simplified1.6
Final simplification1.7
herbie shell --seed 2022004
(FPCore (u v t1)
:name "Rosa's DopplerBench"
:precision binary64
(/ (* (- t1) v) (* (+ t1 u) (+ t1 u))))