Average Error: 17.3 → 1.7
Time: 5.0s
Precision: binary64
\[\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} \]
\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;
}

Error

Bits error versus u

Bits error versus v

Bits error versus t1

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 3 regimes
  2. if u < 1.0610017015882892e84

    1. Initial program 17.9

      \[\frac{\left(-t1\right) \cdot v}{\left(t1 + u\right) \cdot \left(t1 + u\right)} \]
    2. Applied associate-/r*_binary6411.6

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

      \[\leadsto \frac{\color{blue}{v \cdot \frac{-t1}{t1 + u}}}{t1 + u} \]

    if 1.0610017015882892e84 < u < 2.430746947258446e144

    1. Initial program 10.1

      \[\frac{\left(-t1\right) \cdot v}{\left(t1 + u\right) \cdot \left(t1 + u\right)} \]
    2. Applied associate-/r*_binary646.9

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

    if 2.430746947258446e144 < u

    1. Initial program 16.6

      \[\frac{\left(-t1\right) \cdot v}{\left(t1 + u\right) \cdot \left(t1 + u\right)} \]
    2. Simplified1.2

      \[\leadsto \color{blue}{\frac{\frac{v}{t1 + u}}{-1 - \frac{u}{t1}}} \]
    3. Applied clear-num_binary641.5

      \[\leadsto \color{blue}{\frac{1}{\frac{-1 - \frac{u}{t1}}{\frac{v}{t1 + u}}}} \]
    4. Applied div-inv_binary641.6

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

      \[\leadsto \frac{1}{\left(-1 - \frac{u}{t1}\right) \cdot \color{blue}{\frac{t1 + u}{v}}} \]
  3. Recombined 3 regimes into one program.
  4. Final simplification1.7

    \[\leadsto \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} \]

Reproduce

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