Rosa's DopplerBench

Percentage Accurate: 72.1% → 98.3%
Time: 10.4s
Alternatives: 10
Speedup: 1.1×

Specification

?
\[\begin{array}{l} \\ \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))))
double code(double u, double v, double t1) {
	return (-t1 * v) / ((t1 + u) * (t1 + u));
}
real(8) function code(u, v, t1)
    real(8), intent (in) :: u
    real(8), intent (in) :: v
    real(8), intent (in) :: t1
    code = (-t1 * v) / ((t1 + u) * (t1 + u))
end function
public static double code(double u, double v, double t1) {
	return (-t1 * v) / ((t1 + u) * (t1 + u));
}
def code(u, v, t1):
	return (-t1 * v) / ((t1 + u) * (t1 + u))
function code(u, v, t1)
	return Float64(Float64(Float64(-t1) * v) / Float64(Float64(t1 + u) * Float64(t1 + u)))
end
function tmp = code(u, v, t1)
	tmp = (-t1 * v) / ((t1 + u) * (t1 + u));
end
code[u_, v_, t1_] := N[(N[((-t1) * v), $MachinePrecision] / N[(N[(t1 + u), $MachinePrecision] * N[(t1 + u), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\frac{\left(-t1\right) \cdot v}{\left(t1 + u\right) \cdot \left(t1 + u\right)}
\end{array}

Sampling outcomes in binary64 precision:

Local Percentage Accuracy vs ?

The average percentage accuracy by input value. Horizontal axis shows value of an input variable; the variable is choosen in the title. Vertical axis is accuracy; higher is better. Red represent the original program, while blue represents Herbie's suggestion. These can be toggled with buttons below the plot. The line is an average while dots represent individual samples.

Accuracy vs Speed?

Herbie found 10 alternatives:

AlternativeAccuracySpeedup
The accuracy (vertical axis) and speed (horizontal axis) of each alternatives. Up and to the right is better. The red square shows the initial program, and each blue circle shows an alternative.The line shows the best available speed-accuracy tradeoffs.

Initial Program: 72.1% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \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))))
double code(double u, double v, double t1) {
	return (-t1 * v) / ((t1 + u) * (t1 + u));
}
real(8) function code(u, v, t1)
    real(8), intent (in) :: u
    real(8), intent (in) :: v
    real(8), intent (in) :: t1
    code = (-t1 * v) / ((t1 + u) * (t1 + u))
end function
public static double code(double u, double v, double t1) {
	return (-t1 * v) / ((t1 + u) * (t1 + u));
}
def code(u, v, t1):
	return (-t1 * v) / ((t1 + u) * (t1 + u))
function code(u, v, t1)
	return Float64(Float64(Float64(-t1) * v) / Float64(Float64(t1 + u) * Float64(t1 + u)))
end
function tmp = code(u, v, t1)
	tmp = (-t1 * v) / ((t1 + u) * (t1 + u));
end
code[u_, v_, t1_] := N[(N[((-t1) * v), $MachinePrecision] / N[(N[(t1 + u), $MachinePrecision] * N[(t1 + u), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\frac{\left(-t1\right) \cdot v}{\left(t1 + u\right) \cdot \left(t1 + u\right)}
\end{array}

Alternative 1: 98.3% accurate, 0.9× speedup?

\[\begin{array}{l} \\ \frac{t1}{t1 + u} \cdot \left(0 - \frac{v}{t1 + u}\right) \end{array} \]
(FPCore (u v t1)
 :precision binary64
 (* (/ t1 (+ t1 u)) (- 0.0 (/ v (+ t1 u)))))
double code(double u, double v, double t1) {
	return (t1 / (t1 + u)) * (0.0 - (v / (t1 + u)));
}
real(8) function code(u, v, t1)
    real(8), intent (in) :: u
    real(8), intent (in) :: v
    real(8), intent (in) :: t1
    code = (t1 / (t1 + u)) * (0.0d0 - (v / (t1 + u)))
end function
public static double code(double u, double v, double t1) {
	return (t1 / (t1 + u)) * (0.0 - (v / (t1 + u)));
}
def code(u, v, t1):
	return (t1 / (t1 + u)) * (0.0 - (v / (t1 + u)))
function code(u, v, t1)
	return Float64(Float64(t1 / Float64(t1 + u)) * Float64(0.0 - Float64(v / Float64(t1 + u))))
end
function tmp = code(u, v, t1)
	tmp = (t1 / (t1 + u)) * (0.0 - (v / (t1 + u)));
end
code[u_, v_, t1_] := N[(N[(t1 / N[(t1 + u), $MachinePrecision]), $MachinePrecision] * N[(0.0 - N[(v / N[(t1 + u), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\frac{t1}{t1 + u} \cdot \left(0 - \frac{v}{t1 + u}\right)
\end{array}
Derivation
  1. Initial program 70.5%

    \[\frac{\left(-t1\right) \cdot v}{\left(t1 + u\right) \cdot \left(t1 + u\right)} \]
  2. Add Preprocessing
  3. Step-by-step derivation
    1. *-commutativeN/A

      \[\leadsto \frac{v \cdot \left(\mathsf{neg}\left(t1\right)\right)}{\color{blue}{\left(t1 + u\right)} \cdot \left(t1 + u\right)} \]
    2. neg-mul-1N/A

      \[\leadsto \frac{v \cdot \left(-1 \cdot t1\right)}{\left(t1 + \color{blue}{u}\right) \cdot \left(t1 + u\right)} \]
    3. associate-*r*N/A

      \[\leadsto \frac{\left(v \cdot -1\right) \cdot t1}{\color{blue}{\left(t1 + u\right)} \cdot \left(t1 + u\right)} \]
    4. times-fracN/A

      \[\leadsto \frac{v \cdot -1}{t1 + u} \cdot \color{blue}{\frac{t1}{t1 + u}} \]
    5. *-commutativeN/A

      \[\leadsto \frac{-1 \cdot v}{t1 + u} \cdot \frac{t1}{t1 + u} \]
    6. neg-mul-1N/A

      \[\leadsto \frac{\mathsf{neg}\left(v\right)}{t1 + u} \cdot \frac{t1}{t1 + u} \]
    7. *-lowering-*.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\left(\frac{\mathsf{neg}\left(v\right)}{t1 + u}\right), \color{blue}{\left(\frac{t1}{t1 + u}\right)}\right) \]
    8. /-lowering-/.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\left(\mathsf{neg}\left(v\right)\right), \left(t1 + u\right)\right), \left(\frac{\color{blue}{t1}}{t1 + u}\right)\right) \]
    9. neg-sub0N/A

      \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\left(0 - v\right), \left(t1 + u\right)\right), \left(\frac{t1}{t1 + u}\right)\right) \]
    10. --lowering--.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{\_.f64}\left(0, v\right), \left(t1 + u\right)\right), \left(\frac{t1}{t1 + u}\right)\right) \]
    11. +-lowering-+.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{\_.f64}\left(0, v\right), \mathsf{+.f64}\left(t1, u\right)\right), \left(\frac{t1}{t1 + u}\right)\right) \]
    12. /-lowering-/.f64N/A

      \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{\_.f64}\left(0, v\right), \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{/.f64}\left(t1, \color{blue}{\left(t1 + u\right)}\right)\right) \]
    13. +-lowering-+.f6498.3%

      \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{\_.f64}\left(0, v\right), \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{/.f64}\left(t1, \mathsf{+.f64}\left(t1, \color{blue}{u}\right)\right)\right) \]
  4. Applied egg-rr98.3%

    \[\leadsto \color{blue}{\frac{0 - v}{t1 + u} \cdot \frac{t1}{t1 + u}} \]
  5. Final simplification98.3%

    \[\leadsto \frac{t1}{t1 + u} \cdot \left(0 - \frac{v}{t1 + u}\right) \]
  6. Add Preprocessing

Alternative 2: 78.5% accurate, 0.6× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_1 := 0 - \frac{v}{t1 + u}\\ \mathbf{if}\;t1 \leq -2.45 \cdot 10^{-49}:\\ \;\;\;\;t\_1\\ \mathbf{elif}\;t1 \leq 3 \cdot 10^{-129}:\\ \;\;\;\;\frac{v}{0 - \frac{u}{\frac{t1}{u}}}\\ \mathbf{else}:\\ \;\;\;\;t\_1\\ \end{array} \end{array} \]
(FPCore (u v t1)
 :precision binary64
 (let* ((t_1 (- 0.0 (/ v (+ t1 u)))))
   (if (<= t1 -2.45e-49)
     t_1
     (if (<= t1 3e-129) (/ v (- 0.0 (/ u (/ t1 u)))) t_1))))
double code(double u, double v, double t1) {
	double t_1 = 0.0 - (v / (t1 + u));
	double tmp;
	if (t1 <= -2.45e-49) {
		tmp = t_1;
	} else if (t1 <= 3e-129) {
		tmp = v / (0.0 - (u / (t1 / u)));
	} else {
		tmp = t_1;
	}
	return tmp;
}
real(8) function code(u, v, t1)
    real(8), intent (in) :: u
    real(8), intent (in) :: v
    real(8), intent (in) :: t1
    real(8) :: t_1
    real(8) :: tmp
    t_1 = 0.0d0 - (v / (t1 + u))
    if (t1 <= (-2.45d-49)) then
        tmp = t_1
    else if (t1 <= 3d-129) then
        tmp = v / (0.0d0 - (u / (t1 / u)))
    else
        tmp = t_1
    end if
    code = tmp
end function
public static double code(double u, double v, double t1) {
	double t_1 = 0.0 - (v / (t1 + u));
	double tmp;
	if (t1 <= -2.45e-49) {
		tmp = t_1;
	} else if (t1 <= 3e-129) {
		tmp = v / (0.0 - (u / (t1 / u)));
	} else {
		tmp = t_1;
	}
	return tmp;
}
def code(u, v, t1):
	t_1 = 0.0 - (v / (t1 + u))
	tmp = 0
	if t1 <= -2.45e-49:
		tmp = t_1
	elif t1 <= 3e-129:
		tmp = v / (0.0 - (u / (t1 / u)))
	else:
		tmp = t_1
	return tmp
function code(u, v, t1)
	t_1 = Float64(0.0 - Float64(v / Float64(t1 + u)))
	tmp = 0.0
	if (t1 <= -2.45e-49)
		tmp = t_1;
	elseif (t1 <= 3e-129)
		tmp = Float64(v / Float64(0.0 - Float64(u / Float64(t1 / u))));
	else
		tmp = t_1;
	end
	return tmp
end
function tmp_2 = code(u, v, t1)
	t_1 = 0.0 - (v / (t1 + u));
	tmp = 0.0;
	if (t1 <= -2.45e-49)
		tmp = t_1;
	elseif (t1 <= 3e-129)
		tmp = v / (0.0 - (u / (t1 / u)));
	else
		tmp = t_1;
	end
	tmp_2 = tmp;
end
code[u_, v_, t1_] := Block[{t$95$1 = N[(0.0 - N[(v / N[(t1 + u), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t1, -2.45e-49], t$95$1, If[LessEqual[t1, 3e-129], N[(v / N[(0.0 - N[(u / N[(t1 / u), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]
\begin{array}{l}

\\
\begin{array}{l}
t_1 := 0 - \frac{v}{t1 + u}\\
\mathbf{if}\;t1 \leq -2.45 \cdot 10^{-49}:\\
\;\;\;\;t\_1\\

\mathbf{elif}\;t1 \leq 3 \cdot 10^{-129}:\\
\;\;\;\;\frac{v}{0 - \frac{u}{\frac{t1}{u}}}\\

\mathbf{else}:\\
\;\;\;\;t\_1\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if t1 < -2.4500000000000001e-49 or 2.9999999999999998e-129 < t1

    1. Initial program 67.8%

      \[\frac{\left(-t1\right) \cdot v}{\left(t1 + u\right) \cdot \left(t1 + u\right)} \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. *-commutativeN/A

        \[\leadsto \frac{v \cdot \left(\mathsf{neg}\left(t1\right)\right)}{\color{blue}{\left(t1 + u\right)} \cdot \left(t1 + u\right)} \]
      2. neg-mul-1N/A

        \[\leadsto \frac{v \cdot \left(-1 \cdot t1\right)}{\left(t1 + \color{blue}{u}\right) \cdot \left(t1 + u\right)} \]
      3. associate-*r*N/A

        \[\leadsto \frac{\left(v \cdot -1\right) \cdot t1}{\color{blue}{\left(t1 + u\right)} \cdot \left(t1 + u\right)} \]
      4. times-fracN/A

        \[\leadsto \frac{v \cdot -1}{t1 + u} \cdot \color{blue}{\frac{t1}{t1 + u}} \]
      5. *-commutativeN/A

        \[\leadsto \frac{-1 \cdot v}{t1 + u} \cdot \frac{t1}{t1 + u} \]
      6. neg-mul-1N/A

        \[\leadsto \frac{\mathsf{neg}\left(v\right)}{t1 + u} \cdot \frac{t1}{t1 + u} \]
      7. *-lowering-*.f64N/A

        \[\leadsto \mathsf{*.f64}\left(\left(\frac{\mathsf{neg}\left(v\right)}{t1 + u}\right), \color{blue}{\left(\frac{t1}{t1 + u}\right)}\right) \]
      8. /-lowering-/.f64N/A

        \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\left(\mathsf{neg}\left(v\right)\right), \left(t1 + u\right)\right), \left(\frac{\color{blue}{t1}}{t1 + u}\right)\right) \]
      9. neg-sub0N/A

        \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\left(0 - v\right), \left(t1 + u\right)\right), \left(\frac{t1}{t1 + u}\right)\right) \]
      10. --lowering--.f64N/A

        \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{\_.f64}\left(0, v\right), \left(t1 + u\right)\right), \left(\frac{t1}{t1 + u}\right)\right) \]
      11. +-lowering-+.f64N/A

        \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{\_.f64}\left(0, v\right), \mathsf{+.f64}\left(t1, u\right)\right), \left(\frac{t1}{t1 + u}\right)\right) \]
      12. /-lowering-/.f64N/A

        \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{\_.f64}\left(0, v\right), \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{/.f64}\left(t1, \color{blue}{\left(t1 + u\right)}\right)\right) \]
      13. +-lowering-+.f6499.9%

        \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{\_.f64}\left(0, v\right), \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{/.f64}\left(t1, \mathsf{+.f64}\left(t1, \color{blue}{u}\right)\right)\right) \]
    4. Applied egg-rr99.9%

      \[\leadsto \color{blue}{\frac{0 - v}{t1 + u} \cdot \frac{t1}{t1 + u}} \]
    5. Step-by-step derivation
      1. clear-numN/A

        \[\leadsto \frac{0 - v}{t1 + u} \cdot \frac{1}{\color{blue}{\frac{t1 + u}{t1}}} \]
      2. un-div-invN/A

        \[\leadsto \frac{\frac{0 - v}{t1 + u}}{\color{blue}{\frac{t1 + u}{t1}}} \]
      3. sub0-negN/A

        \[\leadsto \frac{\frac{\mathsf{neg}\left(v\right)}{t1 + u}}{\frac{\color{blue}{t1} + u}{t1}} \]
      4. distribute-frac-negN/A

        \[\leadsto \frac{\mathsf{neg}\left(\frac{v}{t1 + u}\right)}{\frac{\color{blue}{t1 + u}}{t1}} \]
      5. frac-2negN/A

        \[\leadsto \frac{\mathsf{neg}\left(\left(\mathsf{neg}\left(\frac{v}{t1 + u}\right)\right)\right)}{\color{blue}{\mathsf{neg}\left(\frac{t1 + u}{t1}\right)}} \]
      6. distribute-frac-neg2N/A

        \[\leadsto \frac{\mathsf{neg}\left(\frac{v}{\mathsf{neg}\left(\left(t1 + u\right)\right)}\right)}{\mathsf{neg}\left(\frac{\color{blue}{t1 + u}}{t1}\right)} \]
      7. distribute-frac-negN/A

        \[\leadsto \frac{\frac{\mathsf{neg}\left(v\right)}{\mathsf{neg}\left(\left(t1 + u\right)\right)}}{\mathsf{neg}\left(\color{blue}{\frac{t1 + u}{t1}}\right)} \]
      8. frac-2negN/A

        \[\leadsto \frac{\frac{v}{t1 + u}}{\mathsf{neg}\left(\color{blue}{\frac{t1 + u}{t1}}\right)} \]
      9. /-lowering-/.f64N/A

        \[\leadsto \mathsf{/.f64}\left(\left(\frac{v}{t1 + u}\right), \color{blue}{\left(\mathsf{neg}\left(\frac{t1 + u}{t1}\right)\right)}\right) \]
      10. /-lowering-/.f64N/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \left(t1 + u\right)\right), \left(\mathsf{neg}\left(\color{blue}{\frac{t1 + u}{t1}}\right)\right)\right) \]
      11. +-lowering-+.f64N/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \left(\mathsf{neg}\left(\frac{t1 + u}{\color{blue}{t1}}\right)\right)\right) \]
      12. neg-lowering-neg.f64N/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{neg.f64}\left(\left(\frac{t1 + u}{t1}\right)\right)\right) \]
      13. /-lowering-/.f64N/A

        \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{neg.f64}\left(\mathsf{/.f64}\left(\left(t1 + u\right), t1\right)\right)\right) \]
      14. +-lowering-+.f6499.9%

        \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{neg.f64}\left(\mathsf{/.f64}\left(\mathsf{+.f64}\left(t1, u\right), t1\right)\right)\right) \]
    6. Applied egg-rr99.9%

      \[\leadsto \color{blue}{\frac{\frac{v}{t1 + u}}{-\frac{t1 + u}{t1}}} \]
    7. Taylor expanded in t1 around inf

      \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \color{blue}{-1}\right) \]
    8. Step-by-step derivation
      1. Simplified83.9%

        \[\leadsto \frac{\frac{v}{t1 + u}}{\color{blue}{-1}} \]
      2. Step-by-step derivation
        1. frac-2negN/A

          \[\leadsto \frac{\mathsf{neg}\left(\frac{v}{t1 + u}\right)}{\color{blue}{\mathsf{neg}\left(-1\right)}} \]
        2. metadata-evalN/A

          \[\leadsto \frac{\mathsf{neg}\left(\frac{v}{t1 + u}\right)}{1} \]
        3. /-rgt-identityN/A

          \[\leadsto \mathsf{neg}\left(\frac{v}{t1 + u}\right) \]
        4. neg-lowering-neg.f64N/A

          \[\leadsto \mathsf{neg.f64}\left(\left(\frac{v}{t1 + u}\right)\right) \]
        5. /-lowering-/.f64N/A

          \[\leadsto \mathsf{neg.f64}\left(\mathsf{/.f64}\left(v, \left(t1 + u\right)\right)\right) \]
        6. +-lowering-+.f6483.9%

          \[\leadsto \mathsf{neg.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right)\right) \]
      3. Applied egg-rr83.9%

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

      if -2.4500000000000001e-49 < t1 < 2.9999999999999998e-129

      1. Initial program 75.2%

        \[\frac{\left(-t1\right) \cdot v}{\left(t1 + u\right) \cdot \left(t1 + u\right)} \]
      2. Add Preprocessing
      3. Taylor expanded in t1 around 0

        \[\leadsto \color{blue}{-1 \cdot \frac{t1 \cdot v}{{u}^{2}}} \]
      4. Step-by-step derivation
        1. mul-1-negN/A

          \[\leadsto \mathsf{neg}\left(\frac{t1 \cdot v}{{u}^{2}}\right) \]
        2. neg-sub0N/A

          \[\leadsto 0 - \color{blue}{\frac{t1 \cdot v}{{u}^{2}}} \]
        3. --lowering--.f64N/A

          \[\leadsto \mathsf{\_.f64}\left(0, \color{blue}{\left(\frac{t1 \cdot v}{{u}^{2}}\right)}\right) \]
        4. *-commutativeN/A

          \[\leadsto \mathsf{\_.f64}\left(0, \left(\frac{v \cdot t1}{{\color{blue}{u}}^{2}}\right)\right) \]
        5. associate-/l*N/A

          \[\leadsto \mathsf{\_.f64}\left(0, \left(v \cdot \color{blue}{\frac{t1}{{u}^{2}}}\right)\right) \]
        6. *-lowering-*.f64N/A

          \[\leadsto \mathsf{\_.f64}\left(0, \mathsf{*.f64}\left(v, \color{blue}{\left(\frac{t1}{{u}^{2}}\right)}\right)\right) \]
        7. /-lowering-/.f64N/A

          \[\leadsto \mathsf{\_.f64}\left(0, \mathsf{*.f64}\left(v, \mathsf{/.f64}\left(t1, \color{blue}{\left({u}^{2}\right)}\right)\right)\right) \]
        8. unpow2N/A

          \[\leadsto \mathsf{\_.f64}\left(0, \mathsf{*.f64}\left(v, \mathsf{/.f64}\left(t1, \left(u \cdot \color{blue}{u}\right)\right)\right)\right) \]
        9. *-lowering-*.f6477.8%

          \[\leadsto \mathsf{\_.f64}\left(0, \mathsf{*.f64}\left(v, \mathsf{/.f64}\left(t1, \mathsf{*.f64}\left(u, \color{blue}{u}\right)\right)\right)\right) \]
      5. Simplified77.8%

        \[\leadsto \color{blue}{0 - v \cdot \frac{t1}{u \cdot u}} \]
      6. Step-by-step derivation
        1. cancel-sign-sub-invN/A

          \[\leadsto 0 + \color{blue}{\left(\mathsf{neg}\left(v\right)\right) \cdot \frac{t1}{u \cdot u}} \]
        2. +-lft-identityN/A

          \[\leadsto \left(\mathsf{neg}\left(v\right)\right) \cdot \color{blue}{\frac{t1}{u \cdot u}} \]
        3. sub0-negN/A

          \[\leadsto \left(0 - v\right) \cdot \frac{\color{blue}{t1}}{u \cdot u} \]
        4. clear-numN/A

          \[\leadsto \left(0 - v\right) \cdot \frac{1}{\color{blue}{\frac{u \cdot u}{t1}}} \]
        5. un-div-invN/A

          \[\leadsto \frac{0 - v}{\color{blue}{\frac{u \cdot u}{t1}}} \]
        6. frac-2negN/A

          \[\leadsto \frac{\mathsf{neg}\left(\left(0 - v\right)\right)}{\color{blue}{\mathsf{neg}\left(\frac{u \cdot u}{t1}\right)}} \]
        7. sub0-negN/A

          \[\leadsto \frac{\mathsf{neg}\left(\left(\mathsf{neg}\left(v\right)\right)\right)}{\mathsf{neg}\left(\frac{\color{blue}{u \cdot u}}{t1}\right)} \]
        8. remove-double-negN/A

          \[\leadsto \frac{v}{\mathsf{neg}\left(\color{blue}{\frac{u \cdot u}{t1}}\right)} \]
        9. /-lowering-/.f64N/A

          \[\leadsto \mathsf{/.f64}\left(v, \color{blue}{\left(\mathsf{neg}\left(\frac{u \cdot u}{t1}\right)\right)}\right) \]
        10. neg-lowering-neg.f64N/A

          \[\leadsto \mathsf{/.f64}\left(v, \mathsf{neg.f64}\left(\left(\frac{u \cdot u}{t1}\right)\right)\right) \]
        11. clear-numN/A

          \[\leadsto \mathsf{/.f64}\left(v, \mathsf{neg.f64}\left(\left(\frac{1}{\frac{t1}{u \cdot u}}\right)\right)\right) \]
        12. associate-/r*N/A

          \[\leadsto \mathsf{/.f64}\left(v, \mathsf{neg.f64}\left(\left(\frac{1}{\frac{\frac{t1}{u}}{u}}\right)\right)\right) \]
        13. clear-numN/A

          \[\leadsto \mathsf{/.f64}\left(v, \mathsf{neg.f64}\left(\left(\frac{u}{\frac{t1}{u}}\right)\right)\right) \]
        14. /-lowering-/.f64N/A

          \[\leadsto \mathsf{/.f64}\left(v, \mathsf{neg.f64}\left(\mathsf{/.f64}\left(u, \left(\frac{t1}{u}\right)\right)\right)\right) \]
        15. /-lowering-/.f6491.4%

          \[\leadsto \mathsf{/.f64}\left(v, \mathsf{neg.f64}\left(\mathsf{/.f64}\left(u, \mathsf{/.f64}\left(t1, u\right)\right)\right)\right) \]
      7. Applied egg-rr91.4%

        \[\leadsto \color{blue}{\frac{v}{-\frac{u}{\frac{t1}{u}}}} \]
    9. Recombined 2 regimes into one program.
    10. Final simplification85.8%

      \[\leadsto \begin{array}{l} \mathbf{if}\;t1 \leq -2.45 \cdot 10^{-49}:\\ \;\;\;\;0 - \frac{v}{t1 + u}\\ \mathbf{elif}\;t1 \leq 3 \cdot 10^{-129}:\\ \;\;\;\;\frac{v}{0 - \frac{u}{\frac{t1}{u}}}\\ \mathbf{else}:\\ \;\;\;\;0 - \frac{v}{t1 + u}\\ \end{array} \]
    11. Add Preprocessing

    Alternative 3: 78.8% accurate, 0.6× speedup?

    \[\begin{array}{l} \\ \begin{array}{l} t_1 := 0 - \frac{v}{t1 + u}\\ \mathbf{if}\;t1 \leq -1.8 \cdot 10^{-47}:\\ \;\;\;\;t\_1\\ \mathbf{elif}\;t1 \leq 3.9 \cdot 10^{-128}:\\ \;\;\;\;\frac{v}{u \cdot \frac{u}{0 - t1}}\\ \mathbf{else}:\\ \;\;\;\;t\_1\\ \end{array} \end{array} \]
    (FPCore (u v t1)
     :precision binary64
     (let* ((t_1 (- 0.0 (/ v (+ t1 u)))))
       (if (<= t1 -1.8e-47)
         t_1
         (if (<= t1 3.9e-128) (/ v (* u (/ u (- 0.0 t1)))) t_1))))
    double code(double u, double v, double t1) {
    	double t_1 = 0.0 - (v / (t1 + u));
    	double tmp;
    	if (t1 <= -1.8e-47) {
    		tmp = t_1;
    	} else if (t1 <= 3.9e-128) {
    		tmp = v / (u * (u / (0.0 - t1)));
    	} else {
    		tmp = t_1;
    	}
    	return tmp;
    }
    
    real(8) function code(u, v, t1)
        real(8), intent (in) :: u
        real(8), intent (in) :: v
        real(8), intent (in) :: t1
        real(8) :: t_1
        real(8) :: tmp
        t_1 = 0.0d0 - (v / (t1 + u))
        if (t1 <= (-1.8d-47)) then
            tmp = t_1
        else if (t1 <= 3.9d-128) then
            tmp = v / (u * (u / (0.0d0 - t1)))
        else
            tmp = t_1
        end if
        code = tmp
    end function
    
    public static double code(double u, double v, double t1) {
    	double t_1 = 0.0 - (v / (t1 + u));
    	double tmp;
    	if (t1 <= -1.8e-47) {
    		tmp = t_1;
    	} else if (t1 <= 3.9e-128) {
    		tmp = v / (u * (u / (0.0 - t1)));
    	} else {
    		tmp = t_1;
    	}
    	return tmp;
    }
    
    def code(u, v, t1):
    	t_1 = 0.0 - (v / (t1 + u))
    	tmp = 0
    	if t1 <= -1.8e-47:
    		tmp = t_1
    	elif t1 <= 3.9e-128:
    		tmp = v / (u * (u / (0.0 - t1)))
    	else:
    		tmp = t_1
    	return tmp
    
    function code(u, v, t1)
    	t_1 = Float64(0.0 - Float64(v / Float64(t1 + u)))
    	tmp = 0.0
    	if (t1 <= -1.8e-47)
    		tmp = t_1;
    	elseif (t1 <= 3.9e-128)
    		tmp = Float64(v / Float64(u * Float64(u / Float64(0.0 - t1))));
    	else
    		tmp = t_1;
    	end
    	return tmp
    end
    
    function tmp_2 = code(u, v, t1)
    	t_1 = 0.0 - (v / (t1 + u));
    	tmp = 0.0;
    	if (t1 <= -1.8e-47)
    		tmp = t_1;
    	elseif (t1 <= 3.9e-128)
    		tmp = v / (u * (u / (0.0 - t1)));
    	else
    		tmp = t_1;
    	end
    	tmp_2 = tmp;
    end
    
    code[u_, v_, t1_] := Block[{t$95$1 = N[(0.0 - N[(v / N[(t1 + u), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t1, -1.8e-47], t$95$1, If[LessEqual[t1, 3.9e-128], N[(v / N[(u * N[(u / N[(0.0 - t1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]
    
    \begin{array}{l}
    
    \\
    \begin{array}{l}
    t_1 := 0 - \frac{v}{t1 + u}\\
    \mathbf{if}\;t1 \leq -1.8 \cdot 10^{-47}:\\
    \;\;\;\;t\_1\\
    
    \mathbf{elif}\;t1 \leq 3.9 \cdot 10^{-128}:\\
    \;\;\;\;\frac{v}{u \cdot \frac{u}{0 - t1}}\\
    
    \mathbf{else}:\\
    \;\;\;\;t\_1\\
    
    
    \end{array}
    \end{array}
    
    Derivation
    1. Split input into 2 regimes
    2. if t1 < -1.79999999999999995e-47 or 3.89999999999999997e-128 < t1

      1. Initial program 67.8%

        \[\frac{\left(-t1\right) \cdot v}{\left(t1 + u\right) \cdot \left(t1 + u\right)} \]
      2. Add Preprocessing
      3. Step-by-step derivation
        1. *-commutativeN/A

          \[\leadsto \frac{v \cdot \left(\mathsf{neg}\left(t1\right)\right)}{\color{blue}{\left(t1 + u\right)} \cdot \left(t1 + u\right)} \]
        2. neg-mul-1N/A

          \[\leadsto \frac{v \cdot \left(-1 \cdot t1\right)}{\left(t1 + \color{blue}{u}\right) \cdot \left(t1 + u\right)} \]
        3. associate-*r*N/A

          \[\leadsto \frac{\left(v \cdot -1\right) \cdot t1}{\color{blue}{\left(t1 + u\right)} \cdot \left(t1 + u\right)} \]
        4. times-fracN/A

          \[\leadsto \frac{v \cdot -1}{t1 + u} \cdot \color{blue}{\frac{t1}{t1 + u}} \]
        5. *-commutativeN/A

          \[\leadsto \frac{-1 \cdot v}{t1 + u} \cdot \frac{t1}{t1 + u} \]
        6. neg-mul-1N/A

          \[\leadsto \frac{\mathsf{neg}\left(v\right)}{t1 + u} \cdot \frac{t1}{t1 + u} \]
        7. *-lowering-*.f64N/A

          \[\leadsto \mathsf{*.f64}\left(\left(\frac{\mathsf{neg}\left(v\right)}{t1 + u}\right), \color{blue}{\left(\frac{t1}{t1 + u}\right)}\right) \]
        8. /-lowering-/.f64N/A

          \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\left(\mathsf{neg}\left(v\right)\right), \left(t1 + u\right)\right), \left(\frac{\color{blue}{t1}}{t1 + u}\right)\right) \]
        9. neg-sub0N/A

          \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\left(0 - v\right), \left(t1 + u\right)\right), \left(\frac{t1}{t1 + u}\right)\right) \]
        10. --lowering--.f64N/A

          \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{\_.f64}\left(0, v\right), \left(t1 + u\right)\right), \left(\frac{t1}{t1 + u}\right)\right) \]
        11. +-lowering-+.f64N/A

          \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{\_.f64}\left(0, v\right), \mathsf{+.f64}\left(t1, u\right)\right), \left(\frac{t1}{t1 + u}\right)\right) \]
        12. /-lowering-/.f64N/A

          \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{\_.f64}\left(0, v\right), \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{/.f64}\left(t1, \color{blue}{\left(t1 + u\right)}\right)\right) \]
        13. +-lowering-+.f6499.9%

          \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{\_.f64}\left(0, v\right), \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{/.f64}\left(t1, \mathsf{+.f64}\left(t1, \color{blue}{u}\right)\right)\right) \]
      4. Applied egg-rr99.9%

        \[\leadsto \color{blue}{\frac{0 - v}{t1 + u} \cdot \frac{t1}{t1 + u}} \]
      5. Step-by-step derivation
        1. clear-numN/A

          \[\leadsto \frac{0 - v}{t1 + u} \cdot \frac{1}{\color{blue}{\frac{t1 + u}{t1}}} \]
        2. un-div-invN/A

          \[\leadsto \frac{\frac{0 - v}{t1 + u}}{\color{blue}{\frac{t1 + u}{t1}}} \]
        3. sub0-negN/A

          \[\leadsto \frac{\frac{\mathsf{neg}\left(v\right)}{t1 + u}}{\frac{\color{blue}{t1} + u}{t1}} \]
        4. distribute-frac-negN/A

          \[\leadsto \frac{\mathsf{neg}\left(\frac{v}{t1 + u}\right)}{\frac{\color{blue}{t1 + u}}{t1}} \]
        5. frac-2negN/A

          \[\leadsto \frac{\mathsf{neg}\left(\left(\mathsf{neg}\left(\frac{v}{t1 + u}\right)\right)\right)}{\color{blue}{\mathsf{neg}\left(\frac{t1 + u}{t1}\right)}} \]
        6. distribute-frac-neg2N/A

          \[\leadsto \frac{\mathsf{neg}\left(\frac{v}{\mathsf{neg}\left(\left(t1 + u\right)\right)}\right)}{\mathsf{neg}\left(\frac{\color{blue}{t1 + u}}{t1}\right)} \]
        7. distribute-frac-negN/A

          \[\leadsto \frac{\frac{\mathsf{neg}\left(v\right)}{\mathsf{neg}\left(\left(t1 + u\right)\right)}}{\mathsf{neg}\left(\color{blue}{\frac{t1 + u}{t1}}\right)} \]
        8. frac-2negN/A

          \[\leadsto \frac{\frac{v}{t1 + u}}{\mathsf{neg}\left(\color{blue}{\frac{t1 + u}{t1}}\right)} \]
        9. /-lowering-/.f64N/A

          \[\leadsto \mathsf{/.f64}\left(\left(\frac{v}{t1 + u}\right), \color{blue}{\left(\mathsf{neg}\left(\frac{t1 + u}{t1}\right)\right)}\right) \]
        10. /-lowering-/.f64N/A

          \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \left(t1 + u\right)\right), \left(\mathsf{neg}\left(\color{blue}{\frac{t1 + u}{t1}}\right)\right)\right) \]
        11. +-lowering-+.f64N/A

          \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \left(\mathsf{neg}\left(\frac{t1 + u}{\color{blue}{t1}}\right)\right)\right) \]
        12. neg-lowering-neg.f64N/A

          \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{neg.f64}\left(\left(\frac{t1 + u}{t1}\right)\right)\right) \]
        13. /-lowering-/.f64N/A

          \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{neg.f64}\left(\mathsf{/.f64}\left(\left(t1 + u\right), t1\right)\right)\right) \]
        14. +-lowering-+.f6499.9%

          \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{neg.f64}\left(\mathsf{/.f64}\left(\mathsf{+.f64}\left(t1, u\right), t1\right)\right)\right) \]
      6. Applied egg-rr99.9%

        \[\leadsto \color{blue}{\frac{\frac{v}{t1 + u}}{-\frac{t1 + u}{t1}}} \]
      7. Taylor expanded in t1 around inf

        \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \color{blue}{-1}\right) \]
      8. Step-by-step derivation
        1. Simplified83.9%

          \[\leadsto \frac{\frac{v}{t1 + u}}{\color{blue}{-1}} \]
        2. Step-by-step derivation
          1. frac-2negN/A

            \[\leadsto \frac{\mathsf{neg}\left(\frac{v}{t1 + u}\right)}{\color{blue}{\mathsf{neg}\left(-1\right)}} \]
          2. metadata-evalN/A

            \[\leadsto \frac{\mathsf{neg}\left(\frac{v}{t1 + u}\right)}{1} \]
          3. /-rgt-identityN/A

            \[\leadsto \mathsf{neg}\left(\frac{v}{t1 + u}\right) \]
          4. neg-lowering-neg.f64N/A

            \[\leadsto \mathsf{neg.f64}\left(\left(\frac{v}{t1 + u}\right)\right) \]
          5. /-lowering-/.f64N/A

            \[\leadsto \mathsf{neg.f64}\left(\mathsf{/.f64}\left(v, \left(t1 + u\right)\right)\right) \]
          6. +-lowering-+.f6483.9%

            \[\leadsto \mathsf{neg.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right)\right) \]
        3. Applied egg-rr83.9%

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

        if -1.79999999999999995e-47 < t1 < 3.89999999999999997e-128

        1. Initial program 75.2%

          \[\frac{\left(-t1\right) \cdot v}{\left(t1 + u\right) \cdot \left(t1 + u\right)} \]
        2. Add Preprocessing
        3. Taylor expanded in t1 around 0

          \[\leadsto \color{blue}{-1 \cdot \frac{t1 \cdot v}{{u}^{2}}} \]
        4. Step-by-step derivation
          1. mul-1-negN/A

            \[\leadsto \mathsf{neg}\left(\frac{t1 \cdot v}{{u}^{2}}\right) \]
          2. neg-sub0N/A

            \[\leadsto 0 - \color{blue}{\frac{t1 \cdot v}{{u}^{2}}} \]
          3. --lowering--.f64N/A

            \[\leadsto \mathsf{\_.f64}\left(0, \color{blue}{\left(\frac{t1 \cdot v}{{u}^{2}}\right)}\right) \]
          4. *-commutativeN/A

            \[\leadsto \mathsf{\_.f64}\left(0, \left(\frac{v \cdot t1}{{\color{blue}{u}}^{2}}\right)\right) \]
          5. associate-/l*N/A

            \[\leadsto \mathsf{\_.f64}\left(0, \left(v \cdot \color{blue}{\frac{t1}{{u}^{2}}}\right)\right) \]
          6. *-lowering-*.f64N/A

            \[\leadsto \mathsf{\_.f64}\left(0, \mathsf{*.f64}\left(v, \color{blue}{\left(\frac{t1}{{u}^{2}}\right)}\right)\right) \]
          7. /-lowering-/.f64N/A

            \[\leadsto \mathsf{\_.f64}\left(0, \mathsf{*.f64}\left(v, \mathsf{/.f64}\left(t1, \color{blue}{\left({u}^{2}\right)}\right)\right)\right) \]
          8. unpow2N/A

            \[\leadsto \mathsf{\_.f64}\left(0, \mathsf{*.f64}\left(v, \mathsf{/.f64}\left(t1, \left(u \cdot \color{blue}{u}\right)\right)\right)\right) \]
          9. *-lowering-*.f6477.8%

            \[\leadsto \mathsf{\_.f64}\left(0, \mathsf{*.f64}\left(v, \mathsf{/.f64}\left(t1, \mathsf{*.f64}\left(u, \color{blue}{u}\right)\right)\right)\right) \]
        5. Simplified77.8%

          \[\leadsto \color{blue}{0 - v \cdot \frac{t1}{u \cdot u}} \]
        6. Step-by-step derivation
          1. cancel-sign-sub-invN/A

            \[\leadsto 0 + \color{blue}{\left(\mathsf{neg}\left(v\right)\right) \cdot \frac{t1}{u \cdot u}} \]
          2. +-lft-identityN/A

            \[\leadsto \left(\mathsf{neg}\left(v\right)\right) \cdot \color{blue}{\frac{t1}{u \cdot u}} \]
          3. sub0-negN/A

            \[\leadsto \left(0 - v\right) \cdot \frac{\color{blue}{t1}}{u \cdot u} \]
          4. clear-numN/A

            \[\leadsto \left(0 - v\right) \cdot \frac{1}{\color{blue}{\frac{u \cdot u}{t1}}} \]
          5. un-div-invN/A

            \[\leadsto \frac{0 - v}{\color{blue}{\frac{u \cdot u}{t1}}} \]
          6. frac-2negN/A

            \[\leadsto \frac{\mathsf{neg}\left(\left(0 - v\right)\right)}{\color{blue}{\mathsf{neg}\left(\frac{u \cdot u}{t1}\right)}} \]
          7. sub0-negN/A

            \[\leadsto \frac{\mathsf{neg}\left(\left(\mathsf{neg}\left(v\right)\right)\right)}{\mathsf{neg}\left(\frac{\color{blue}{u \cdot u}}{t1}\right)} \]
          8. remove-double-negN/A

            \[\leadsto \frac{v}{\mathsf{neg}\left(\color{blue}{\frac{u \cdot u}{t1}}\right)} \]
          9. /-lowering-/.f64N/A

            \[\leadsto \mathsf{/.f64}\left(v, \color{blue}{\left(\mathsf{neg}\left(\frac{u \cdot u}{t1}\right)\right)}\right) \]
          10. neg-lowering-neg.f64N/A

            \[\leadsto \mathsf{/.f64}\left(v, \mathsf{neg.f64}\left(\left(\frac{u \cdot u}{t1}\right)\right)\right) \]
          11. clear-numN/A

            \[\leadsto \mathsf{/.f64}\left(v, \mathsf{neg.f64}\left(\left(\frac{1}{\frac{t1}{u \cdot u}}\right)\right)\right) \]
          12. associate-/r*N/A

            \[\leadsto \mathsf{/.f64}\left(v, \mathsf{neg.f64}\left(\left(\frac{1}{\frac{\frac{t1}{u}}{u}}\right)\right)\right) \]
          13. clear-numN/A

            \[\leadsto \mathsf{/.f64}\left(v, \mathsf{neg.f64}\left(\left(\frac{u}{\frac{t1}{u}}\right)\right)\right) \]
          14. /-lowering-/.f64N/A

            \[\leadsto \mathsf{/.f64}\left(v, \mathsf{neg.f64}\left(\mathsf{/.f64}\left(u, \left(\frac{t1}{u}\right)\right)\right)\right) \]
          15. /-lowering-/.f6491.4%

            \[\leadsto \mathsf{/.f64}\left(v, \mathsf{neg.f64}\left(\mathsf{/.f64}\left(u, \mathsf{/.f64}\left(t1, u\right)\right)\right)\right) \]
        7. Applied egg-rr91.4%

          \[\leadsto \color{blue}{\frac{v}{-\frac{u}{\frac{t1}{u}}}} \]
        8. Step-by-step derivation
          1. associate-/r/N/A

            \[\leadsto \mathsf{/.f64}\left(v, \mathsf{neg.f64}\left(\left(\frac{u}{t1} \cdot u\right)\right)\right) \]
          2. *-lowering-*.f64N/A

            \[\leadsto \mathsf{/.f64}\left(v, \mathsf{neg.f64}\left(\mathsf{*.f64}\left(\left(\frac{u}{t1}\right), u\right)\right)\right) \]
          3. /-lowering-/.f6491.2%

            \[\leadsto \mathsf{/.f64}\left(v, \mathsf{neg.f64}\left(\mathsf{*.f64}\left(\mathsf{/.f64}\left(u, t1\right), u\right)\right)\right) \]
        9. Applied egg-rr91.2%

          \[\leadsto \frac{v}{-\color{blue}{\frac{u}{t1} \cdot u}} \]
      9. Recombined 2 regimes into one program.
      10. Final simplification86.6%

        \[\leadsto \begin{array}{l} \mathbf{if}\;t1 \leq -1.8 \cdot 10^{-47}:\\ \;\;\;\;0 - \frac{v}{t1 + u}\\ \mathbf{elif}\;t1 \leq 3.9 \cdot 10^{-128}:\\ \;\;\;\;\frac{v}{u \cdot \frac{u}{0 - t1}}\\ \mathbf{else}:\\ \;\;\;\;0 - \frac{v}{t1 + u}\\ \end{array} \]
      11. Add Preprocessing

      Alternative 4: 79.5% accurate, 0.6× speedup?

      \[\begin{array}{l} \\ \begin{array}{l} t_1 := 0 - \frac{v}{t1 + u}\\ \mathbf{if}\;t1 \leq -7.5 \cdot 10^{-50}:\\ \;\;\;\;t\_1\\ \mathbf{elif}\;t1 \leq 4.5 \cdot 10^{-129}:\\ \;\;\;\;\frac{t1}{u} \cdot \frac{v}{0 - u}\\ \mathbf{else}:\\ \;\;\;\;t\_1\\ \end{array} \end{array} \]
      (FPCore (u v t1)
       :precision binary64
       (let* ((t_1 (- 0.0 (/ v (+ t1 u)))))
         (if (<= t1 -7.5e-50)
           t_1
           (if (<= t1 4.5e-129) (* (/ t1 u) (/ v (- 0.0 u))) t_1))))
      double code(double u, double v, double t1) {
      	double t_1 = 0.0 - (v / (t1 + u));
      	double tmp;
      	if (t1 <= -7.5e-50) {
      		tmp = t_1;
      	} else if (t1 <= 4.5e-129) {
      		tmp = (t1 / u) * (v / (0.0 - u));
      	} else {
      		tmp = t_1;
      	}
      	return tmp;
      }
      
      real(8) function code(u, v, t1)
          real(8), intent (in) :: u
          real(8), intent (in) :: v
          real(8), intent (in) :: t1
          real(8) :: t_1
          real(8) :: tmp
          t_1 = 0.0d0 - (v / (t1 + u))
          if (t1 <= (-7.5d-50)) then
              tmp = t_1
          else if (t1 <= 4.5d-129) then
              tmp = (t1 / u) * (v / (0.0d0 - u))
          else
              tmp = t_1
          end if
          code = tmp
      end function
      
      public static double code(double u, double v, double t1) {
      	double t_1 = 0.0 - (v / (t1 + u));
      	double tmp;
      	if (t1 <= -7.5e-50) {
      		tmp = t_1;
      	} else if (t1 <= 4.5e-129) {
      		tmp = (t1 / u) * (v / (0.0 - u));
      	} else {
      		tmp = t_1;
      	}
      	return tmp;
      }
      
      def code(u, v, t1):
      	t_1 = 0.0 - (v / (t1 + u))
      	tmp = 0
      	if t1 <= -7.5e-50:
      		tmp = t_1
      	elif t1 <= 4.5e-129:
      		tmp = (t1 / u) * (v / (0.0 - u))
      	else:
      		tmp = t_1
      	return tmp
      
      function code(u, v, t1)
      	t_1 = Float64(0.0 - Float64(v / Float64(t1 + u)))
      	tmp = 0.0
      	if (t1 <= -7.5e-50)
      		tmp = t_1;
      	elseif (t1 <= 4.5e-129)
      		tmp = Float64(Float64(t1 / u) * Float64(v / Float64(0.0 - u)));
      	else
      		tmp = t_1;
      	end
      	return tmp
      end
      
      function tmp_2 = code(u, v, t1)
      	t_1 = 0.0 - (v / (t1 + u));
      	tmp = 0.0;
      	if (t1 <= -7.5e-50)
      		tmp = t_1;
      	elseif (t1 <= 4.5e-129)
      		tmp = (t1 / u) * (v / (0.0 - u));
      	else
      		tmp = t_1;
      	end
      	tmp_2 = tmp;
      end
      
      code[u_, v_, t1_] := Block[{t$95$1 = N[(0.0 - N[(v / N[(t1 + u), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t1, -7.5e-50], t$95$1, If[LessEqual[t1, 4.5e-129], N[(N[(t1 / u), $MachinePrecision] * N[(v / N[(0.0 - u), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]
      
      \begin{array}{l}
      
      \\
      \begin{array}{l}
      t_1 := 0 - \frac{v}{t1 + u}\\
      \mathbf{if}\;t1 \leq -7.5 \cdot 10^{-50}:\\
      \;\;\;\;t\_1\\
      
      \mathbf{elif}\;t1 \leq 4.5 \cdot 10^{-129}:\\
      \;\;\;\;\frac{t1}{u} \cdot \frac{v}{0 - u}\\
      
      \mathbf{else}:\\
      \;\;\;\;t\_1\\
      
      
      \end{array}
      \end{array}
      
      Derivation
      1. Split input into 2 regimes
      2. if t1 < -7.5e-50 or 4.50000000000000031e-129 < t1

        1. Initial program 67.8%

          \[\frac{\left(-t1\right) \cdot v}{\left(t1 + u\right) \cdot \left(t1 + u\right)} \]
        2. Add Preprocessing
        3. Step-by-step derivation
          1. *-commutativeN/A

            \[\leadsto \frac{v \cdot \left(\mathsf{neg}\left(t1\right)\right)}{\color{blue}{\left(t1 + u\right)} \cdot \left(t1 + u\right)} \]
          2. neg-mul-1N/A

            \[\leadsto \frac{v \cdot \left(-1 \cdot t1\right)}{\left(t1 + \color{blue}{u}\right) \cdot \left(t1 + u\right)} \]
          3. associate-*r*N/A

            \[\leadsto \frac{\left(v \cdot -1\right) \cdot t1}{\color{blue}{\left(t1 + u\right)} \cdot \left(t1 + u\right)} \]
          4. times-fracN/A

            \[\leadsto \frac{v \cdot -1}{t1 + u} \cdot \color{blue}{\frac{t1}{t1 + u}} \]
          5. *-commutativeN/A

            \[\leadsto \frac{-1 \cdot v}{t1 + u} \cdot \frac{t1}{t1 + u} \]
          6. neg-mul-1N/A

            \[\leadsto \frac{\mathsf{neg}\left(v\right)}{t1 + u} \cdot \frac{t1}{t1 + u} \]
          7. *-lowering-*.f64N/A

            \[\leadsto \mathsf{*.f64}\left(\left(\frac{\mathsf{neg}\left(v\right)}{t1 + u}\right), \color{blue}{\left(\frac{t1}{t1 + u}\right)}\right) \]
          8. /-lowering-/.f64N/A

            \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\left(\mathsf{neg}\left(v\right)\right), \left(t1 + u\right)\right), \left(\frac{\color{blue}{t1}}{t1 + u}\right)\right) \]
          9. neg-sub0N/A

            \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\left(0 - v\right), \left(t1 + u\right)\right), \left(\frac{t1}{t1 + u}\right)\right) \]
          10. --lowering--.f64N/A

            \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{\_.f64}\left(0, v\right), \left(t1 + u\right)\right), \left(\frac{t1}{t1 + u}\right)\right) \]
          11. +-lowering-+.f64N/A

            \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{\_.f64}\left(0, v\right), \mathsf{+.f64}\left(t1, u\right)\right), \left(\frac{t1}{t1 + u}\right)\right) \]
          12. /-lowering-/.f64N/A

            \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{\_.f64}\left(0, v\right), \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{/.f64}\left(t1, \color{blue}{\left(t1 + u\right)}\right)\right) \]
          13. +-lowering-+.f6499.9%

            \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{\_.f64}\left(0, v\right), \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{/.f64}\left(t1, \mathsf{+.f64}\left(t1, \color{blue}{u}\right)\right)\right) \]
        4. Applied egg-rr99.9%

          \[\leadsto \color{blue}{\frac{0 - v}{t1 + u} \cdot \frac{t1}{t1 + u}} \]
        5. Step-by-step derivation
          1. clear-numN/A

            \[\leadsto \frac{0 - v}{t1 + u} \cdot \frac{1}{\color{blue}{\frac{t1 + u}{t1}}} \]
          2. un-div-invN/A

            \[\leadsto \frac{\frac{0 - v}{t1 + u}}{\color{blue}{\frac{t1 + u}{t1}}} \]
          3. sub0-negN/A

            \[\leadsto \frac{\frac{\mathsf{neg}\left(v\right)}{t1 + u}}{\frac{\color{blue}{t1} + u}{t1}} \]
          4. distribute-frac-negN/A

            \[\leadsto \frac{\mathsf{neg}\left(\frac{v}{t1 + u}\right)}{\frac{\color{blue}{t1 + u}}{t1}} \]
          5. frac-2negN/A

            \[\leadsto \frac{\mathsf{neg}\left(\left(\mathsf{neg}\left(\frac{v}{t1 + u}\right)\right)\right)}{\color{blue}{\mathsf{neg}\left(\frac{t1 + u}{t1}\right)}} \]
          6. distribute-frac-neg2N/A

            \[\leadsto \frac{\mathsf{neg}\left(\frac{v}{\mathsf{neg}\left(\left(t1 + u\right)\right)}\right)}{\mathsf{neg}\left(\frac{\color{blue}{t1 + u}}{t1}\right)} \]
          7. distribute-frac-negN/A

            \[\leadsto \frac{\frac{\mathsf{neg}\left(v\right)}{\mathsf{neg}\left(\left(t1 + u\right)\right)}}{\mathsf{neg}\left(\color{blue}{\frac{t1 + u}{t1}}\right)} \]
          8. frac-2negN/A

            \[\leadsto \frac{\frac{v}{t1 + u}}{\mathsf{neg}\left(\color{blue}{\frac{t1 + u}{t1}}\right)} \]
          9. /-lowering-/.f64N/A

            \[\leadsto \mathsf{/.f64}\left(\left(\frac{v}{t1 + u}\right), \color{blue}{\left(\mathsf{neg}\left(\frac{t1 + u}{t1}\right)\right)}\right) \]
          10. /-lowering-/.f64N/A

            \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \left(t1 + u\right)\right), \left(\mathsf{neg}\left(\color{blue}{\frac{t1 + u}{t1}}\right)\right)\right) \]
          11. +-lowering-+.f64N/A

            \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \left(\mathsf{neg}\left(\frac{t1 + u}{\color{blue}{t1}}\right)\right)\right) \]
          12. neg-lowering-neg.f64N/A

            \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{neg.f64}\left(\left(\frac{t1 + u}{t1}\right)\right)\right) \]
          13. /-lowering-/.f64N/A

            \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{neg.f64}\left(\mathsf{/.f64}\left(\left(t1 + u\right), t1\right)\right)\right) \]
          14. +-lowering-+.f6499.9%

            \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{neg.f64}\left(\mathsf{/.f64}\left(\mathsf{+.f64}\left(t1, u\right), t1\right)\right)\right) \]
        6. Applied egg-rr99.9%

          \[\leadsto \color{blue}{\frac{\frac{v}{t1 + u}}{-\frac{t1 + u}{t1}}} \]
        7. Taylor expanded in t1 around inf

          \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \color{blue}{-1}\right) \]
        8. Step-by-step derivation
          1. Simplified83.9%

            \[\leadsto \frac{\frac{v}{t1 + u}}{\color{blue}{-1}} \]
          2. Step-by-step derivation
            1. frac-2negN/A

              \[\leadsto \frac{\mathsf{neg}\left(\frac{v}{t1 + u}\right)}{\color{blue}{\mathsf{neg}\left(-1\right)}} \]
            2. metadata-evalN/A

              \[\leadsto \frac{\mathsf{neg}\left(\frac{v}{t1 + u}\right)}{1} \]
            3. /-rgt-identityN/A

              \[\leadsto \mathsf{neg}\left(\frac{v}{t1 + u}\right) \]
            4. neg-lowering-neg.f64N/A

              \[\leadsto \mathsf{neg.f64}\left(\left(\frac{v}{t1 + u}\right)\right) \]
            5. /-lowering-/.f64N/A

              \[\leadsto \mathsf{neg.f64}\left(\mathsf{/.f64}\left(v, \left(t1 + u\right)\right)\right) \]
            6. +-lowering-+.f6483.9%

              \[\leadsto \mathsf{neg.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right)\right) \]
          3. Applied egg-rr83.9%

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

          if -7.5e-50 < t1 < 4.50000000000000031e-129

          1. Initial program 75.2%

            \[\frac{\left(-t1\right) \cdot v}{\left(t1 + u\right) \cdot \left(t1 + u\right)} \]
          2. Add Preprocessing
          3. Taylor expanded in t1 around 0

            \[\leadsto \color{blue}{-1 \cdot \frac{t1 \cdot v}{{u}^{2}}} \]
          4. Step-by-step derivation
            1. mul-1-negN/A

              \[\leadsto \mathsf{neg}\left(\frac{t1 \cdot v}{{u}^{2}}\right) \]
            2. neg-sub0N/A

              \[\leadsto 0 - \color{blue}{\frac{t1 \cdot v}{{u}^{2}}} \]
            3. --lowering--.f64N/A

              \[\leadsto \mathsf{\_.f64}\left(0, \color{blue}{\left(\frac{t1 \cdot v}{{u}^{2}}\right)}\right) \]
            4. *-commutativeN/A

              \[\leadsto \mathsf{\_.f64}\left(0, \left(\frac{v \cdot t1}{{\color{blue}{u}}^{2}}\right)\right) \]
            5. associate-/l*N/A

              \[\leadsto \mathsf{\_.f64}\left(0, \left(v \cdot \color{blue}{\frac{t1}{{u}^{2}}}\right)\right) \]
            6. *-lowering-*.f64N/A

              \[\leadsto \mathsf{\_.f64}\left(0, \mathsf{*.f64}\left(v, \color{blue}{\left(\frac{t1}{{u}^{2}}\right)}\right)\right) \]
            7. /-lowering-/.f64N/A

              \[\leadsto \mathsf{\_.f64}\left(0, \mathsf{*.f64}\left(v, \mathsf{/.f64}\left(t1, \color{blue}{\left({u}^{2}\right)}\right)\right)\right) \]
            8. unpow2N/A

              \[\leadsto \mathsf{\_.f64}\left(0, \mathsf{*.f64}\left(v, \mathsf{/.f64}\left(t1, \left(u \cdot \color{blue}{u}\right)\right)\right)\right) \]
            9. *-lowering-*.f6477.8%

              \[\leadsto \mathsf{\_.f64}\left(0, \mathsf{*.f64}\left(v, \mathsf{/.f64}\left(t1, \mathsf{*.f64}\left(u, \color{blue}{u}\right)\right)\right)\right) \]
          5. Simplified77.8%

            \[\leadsto \color{blue}{0 - v \cdot \frac{t1}{u \cdot u}} \]
          6. Step-by-step derivation
            1. sub0-negN/A

              \[\leadsto \mathsf{neg}\left(v \cdot \frac{t1}{u \cdot u}\right) \]
            2. associate-*r/N/A

              \[\leadsto \mathsf{neg}\left(\frac{v \cdot t1}{u \cdot u}\right) \]
            3. distribute-neg-frac2N/A

              \[\leadsto \frac{v \cdot t1}{\color{blue}{\mathsf{neg}\left(u \cdot u\right)}} \]
            4. distribute-lft-neg-inN/A

              \[\leadsto \frac{v \cdot t1}{\left(\mathsf{neg}\left(u\right)\right) \cdot \color{blue}{u}} \]
            5. times-fracN/A

              \[\leadsto \frac{v}{\mathsf{neg}\left(u\right)} \cdot \color{blue}{\frac{t1}{u}} \]
            6. *-lowering-*.f64N/A

              \[\leadsto \mathsf{*.f64}\left(\left(\frac{v}{\mathsf{neg}\left(u\right)}\right), \color{blue}{\left(\frac{t1}{u}\right)}\right) \]
            7. /-lowering-/.f64N/A

              \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(v, \left(\mathsf{neg}\left(u\right)\right)\right), \left(\frac{\color{blue}{t1}}{u}\right)\right) \]
            8. neg-lowering-neg.f64N/A

              \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(v, \mathsf{neg.f64}\left(u\right)\right), \left(\frac{t1}{u}\right)\right) \]
            9. /-lowering-/.f6489.4%

              \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(v, \mathsf{neg.f64}\left(u\right)\right), \mathsf{/.f64}\left(t1, \color{blue}{u}\right)\right) \]
          7. Applied egg-rr89.4%

            \[\leadsto \color{blue}{\frac{v}{-u} \cdot \frac{t1}{u}} \]
        9. Recombined 2 regimes into one program.
        10. Final simplification85.9%

          \[\leadsto \begin{array}{l} \mathbf{if}\;t1 \leq -7.5 \cdot 10^{-50}:\\ \;\;\;\;0 - \frac{v}{t1 + u}\\ \mathbf{elif}\;t1 \leq 4.5 \cdot 10^{-129}:\\ \;\;\;\;\frac{t1}{u} \cdot \frac{v}{0 - u}\\ \mathbf{else}:\\ \;\;\;\;0 - \frac{v}{t1 + u}\\ \end{array} \]
        11. Add Preprocessing

        Alternative 5: 58.9% accurate, 0.8× speedup?

        \[\begin{array}{l} \\ \begin{array}{l} t_1 := \frac{\frac{v}{u}}{-1}\\ \mathbf{if}\;u \leq -3.1 \cdot 10^{+209}:\\ \;\;\;\;t\_1\\ \mathbf{elif}\;u \leq 1.8 \cdot 10^{+127}:\\ \;\;\;\;0 - \frac{v}{t1}\\ \mathbf{else}:\\ \;\;\;\;t\_1\\ \end{array} \end{array} \]
        (FPCore (u v t1)
         :precision binary64
         (let* ((t_1 (/ (/ v u) -1.0)))
           (if (<= u -3.1e+209) t_1 (if (<= u 1.8e+127) (- 0.0 (/ v t1)) t_1))))
        double code(double u, double v, double t1) {
        	double t_1 = (v / u) / -1.0;
        	double tmp;
        	if (u <= -3.1e+209) {
        		tmp = t_1;
        	} else if (u <= 1.8e+127) {
        		tmp = 0.0 - (v / t1);
        	} else {
        		tmp = t_1;
        	}
        	return tmp;
        }
        
        real(8) function code(u, v, t1)
            real(8), intent (in) :: u
            real(8), intent (in) :: v
            real(8), intent (in) :: t1
            real(8) :: t_1
            real(8) :: tmp
            t_1 = (v / u) / (-1.0d0)
            if (u <= (-3.1d+209)) then
                tmp = t_1
            else if (u <= 1.8d+127) then
                tmp = 0.0d0 - (v / t1)
            else
                tmp = t_1
            end if
            code = tmp
        end function
        
        public static double code(double u, double v, double t1) {
        	double t_1 = (v / u) / -1.0;
        	double tmp;
        	if (u <= -3.1e+209) {
        		tmp = t_1;
        	} else if (u <= 1.8e+127) {
        		tmp = 0.0 - (v / t1);
        	} else {
        		tmp = t_1;
        	}
        	return tmp;
        }
        
        def code(u, v, t1):
        	t_1 = (v / u) / -1.0
        	tmp = 0
        	if u <= -3.1e+209:
        		tmp = t_1
        	elif u <= 1.8e+127:
        		tmp = 0.0 - (v / t1)
        	else:
        		tmp = t_1
        	return tmp
        
        function code(u, v, t1)
        	t_1 = Float64(Float64(v / u) / -1.0)
        	tmp = 0.0
        	if (u <= -3.1e+209)
        		tmp = t_1;
        	elseif (u <= 1.8e+127)
        		tmp = Float64(0.0 - Float64(v / t1));
        	else
        		tmp = t_1;
        	end
        	return tmp
        end
        
        function tmp_2 = code(u, v, t1)
        	t_1 = (v / u) / -1.0;
        	tmp = 0.0;
        	if (u <= -3.1e+209)
        		tmp = t_1;
        	elseif (u <= 1.8e+127)
        		tmp = 0.0 - (v / t1);
        	else
        		tmp = t_1;
        	end
        	tmp_2 = tmp;
        end
        
        code[u_, v_, t1_] := Block[{t$95$1 = N[(N[(v / u), $MachinePrecision] / -1.0), $MachinePrecision]}, If[LessEqual[u, -3.1e+209], t$95$1, If[LessEqual[u, 1.8e+127], N[(0.0 - N[(v / t1), $MachinePrecision]), $MachinePrecision], t$95$1]]]
        
        \begin{array}{l}
        
        \\
        \begin{array}{l}
        t_1 := \frac{\frac{v}{u}}{-1}\\
        \mathbf{if}\;u \leq -3.1 \cdot 10^{+209}:\\
        \;\;\;\;t\_1\\
        
        \mathbf{elif}\;u \leq 1.8 \cdot 10^{+127}:\\
        \;\;\;\;0 - \frac{v}{t1}\\
        
        \mathbf{else}:\\
        \;\;\;\;t\_1\\
        
        
        \end{array}
        \end{array}
        
        Derivation
        1. Split input into 2 regimes
        2. if u < -3.1000000000000001e209 or 1.79999999999999989e127 < u

          1. Initial program 79.0%

            \[\frac{\left(-t1\right) \cdot v}{\left(t1 + u\right) \cdot \left(t1 + u\right)} \]
          2. Add Preprocessing
          3. Step-by-step derivation
            1. *-commutativeN/A

              \[\leadsto \frac{v \cdot \left(\mathsf{neg}\left(t1\right)\right)}{\color{blue}{\left(t1 + u\right)} \cdot \left(t1 + u\right)} \]
            2. neg-mul-1N/A

              \[\leadsto \frac{v \cdot \left(-1 \cdot t1\right)}{\left(t1 + \color{blue}{u}\right) \cdot \left(t1 + u\right)} \]
            3. associate-*r*N/A

              \[\leadsto \frac{\left(v \cdot -1\right) \cdot t1}{\color{blue}{\left(t1 + u\right)} \cdot \left(t1 + u\right)} \]
            4. times-fracN/A

              \[\leadsto \frac{v \cdot -1}{t1 + u} \cdot \color{blue}{\frac{t1}{t1 + u}} \]
            5. *-commutativeN/A

              \[\leadsto \frac{-1 \cdot v}{t1 + u} \cdot \frac{t1}{t1 + u} \]
            6. neg-mul-1N/A

              \[\leadsto \frac{\mathsf{neg}\left(v\right)}{t1 + u} \cdot \frac{t1}{t1 + u} \]
            7. *-lowering-*.f64N/A

              \[\leadsto \mathsf{*.f64}\left(\left(\frac{\mathsf{neg}\left(v\right)}{t1 + u}\right), \color{blue}{\left(\frac{t1}{t1 + u}\right)}\right) \]
            8. /-lowering-/.f64N/A

              \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\left(\mathsf{neg}\left(v\right)\right), \left(t1 + u\right)\right), \left(\frac{\color{blue}{t1}}{t1 + u}\right)\right) \]
            9. neg-sub0N/A

              \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\left(0 - v\right), \left(t1 + u\right)\right), \left(\frac{t1}{t1 + u}\right)\right) \]
            10. --lowering--.f64N/A

              \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{\_.f64}\left(0, v\right), \left(t1 + u\right)\right), \left(\frac{t1}{t1 + u}\right)\right) \]
            11. +-lowering-+.f64N/A

              \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{\_.f64}\left(0, v\right), \mathsf{+.f64}\left(t1, u\right)\right), \left(\frac{t1}{t1 + u}\right)\right) \]
            12. /-lowering-/.f64N/A

              \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{\_.f64}\left(0, v\right), \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{/.f64}\left(t1, \color{blue}{\left(t1 + u\right)}\right)\right) \]
            13. +-lowering-+.f6499.0%

              \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{\_.f64}\left(0, v\right), \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{/.f64}\left(t1, \mathsf{+.f64}\left(t1, \color{blue}{u}\right)\right)\right) \]
          4. Applied egg-rr99.0%

            \[\leadsto \color{blue}{\frac{0 - v}{t1 + u} \cdot \frac{t1}{t1 + u}} \]
          5. Step-by-step derivation
            1. clear-numN/A

              \[\leadsto \frac{0 - v}{t1 + u} \cdot \frac{1}{\color{blue}{\frac{t1 + u}{t1}}} \]
            2. un-div-invN/A

              \[\leadsto \frac{\frac{0 - v}{t1 + u}}{\color{blue}{\frac{t1 + u}{t1}}} \]
            3. sub0-negN/A

              \[\leadsto \frac{\frac{\mathsf{neg}\left(v\right)}{t1 + u}}{\frac{\color{blue}{t1} + u}{t1}} \]
            4. distribute-frac-negN/A

              \[\leadsto \frac{\mathsf{neg}\left(\frac{v}{t1 + u}\right)}{\frac{\color{blue}{t1 + u}}{t1}} \]
            5. frac-2negN/A

              \[\leadsto \frac{\mathsf{neg}\left(\left(\mathsf{neg}\left(\frac{v}{t1 + u}\right)\right)\right)}{\color{blue}{\mathsf{neg}\left(\frac{t1 + u}{t1}\right)}} \]
            6. distribute-frac-neg2N/A

              \[\leadsto \frac{\mathsf{neg}\left(\frac{v}{\mathsf{neg}\left(\left(t1 + u\right)\right)}\right)}{\mathsf{neg}\left(\frac{\color{blue}{t1 + u}}{t1}\right)} \]
            7. distribute-frac-negN/A

              \[\leadsto \frac{\frac{\mathsf{neg}\left(v\right)}{\mathsf{neg}\left(\left(t1 + u\right)\right)}}{\mathsf{neg}\left(\color{blue}{\frac{t1 + u}{t1}}\right)} \]
            8. frac-2negN/A

              \[\leadsto \frac{\frac{v}{t1 + u}}{\mathsf{neg}\left(\color{blue}{\frac{t1 + u}{t1}}\right)} \]
            9. /-lowering-/.f64N/A

              \[\leadsto \mathsf{/.f64}\left(\left(\frac{v}{t1 + u}\right), \color{blue}{\left(\mathsf{neg}\left(\frac{t1 + u}{t1}\right)\right)}\right) \]
            10. /-lowering-/.f64N/A

              \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \left(t1 + u\right)\right), \left(\mathsf{neg}\left(\color{blue}{\frac{t1 + u}{t1}}\right)\right)\right) \]
            11. +-lowering-+.f64N/A

              \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \left(\mathsf{neg}\left(\frac{t1 + u}{\color{blue}{t1}}\right)\right)\right) \]
            12. neg-lowering-neg.f64N/A

              \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{neg.f64}\left(\left(\frac{t1 + u}{t1}\right)\right)\right) \]
            13. /-lowering-/.f64N/A

              \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{neg.f64}\left(\mathsf{/.f64}\left(\left(t1 + u\right), t1\right)\right)\right) \]
            14. +-lowering-+.f6499.0%

              \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{neg.f64}\left(\mathsf{/.f64}\left(\mathsf{+.f64}\left(t1, u\right), t1\right)\right)\right) \]
          6. Applied egg-rr99.0%

            \[\leadsto \color{blue}{\frac{\frac{v}{t1 + u}}{-\frac{t1 + u}{t1}}} \]
          7. Taylor expanded in t1 around inf

            \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \color{blue}{-1}\right) \]
          8. Step-by-step derivation
            1. Simplified51.4%

              \[\leadsto \frac{\frac{v}{t1 + u}}{\color{blue}{-1}} \]
            2. Taylor expanded in t1 around 0

              \[\leadsto \mathsf{/.f64}\left(\color{blue}{\left(\frac{v}{u}\right)}, -1\right) \]
            3. Step-by-step derivation
              1. /-lowering-/.f6448.7%

                \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, u\right), -1\right) \]
            4. Simplified48.7%

              \[\leadsto \frac{\color{blue}{\frac{v}{u}}}{-1} \]

            if -3.1000000000000001e209 < u < 1.79999999999999989e127

            1. Initial program 68.5%

              \[\frac{\left(-t1\right) \cdot v}{\left(t1 + u\right) \cdot \left(t1 + u\right)} \]
            2. Add Preprocessing
            3. Taylor expanded in t1 around inf

              \[\leadsto \color{blue}{-1 \cdot \frac{v}{t1}} \]
            4. Step-by-step derivation
              1. mul-1-negN/A

                \[\leadsto \mathsf{neg}\left(\frac{v}{t1}\right) \]
              2. neg-sub0N/A

                \[\leadsto 0 - \color{blue}{\frac{v}{t1}} \]
              3. --lowering--.f64N/A

                \[\leadsto \mathsf{\_.f64}\left(0, \color{blue}{\left(\frac{v}{t1}\right)}\right) \]
              4. /-lowering-/.f6466.0%

                \[\leadsto \mathsf{\_.f64}\left(0, \mathsf{/.f64}\left(v, \color{blue}{t1}\right)\right) \]
            5. Simplified66.0%

              \[\leadsto \color{blue}{0 - \frac{v}{t1}} \]
            6. Step-by-step derivation
              1. sub0-negN/A

                \[\leadsto \mathsf{neg}\left(\frac{v}{t1}\right) \]
              2. neg-lowering-neg.f64N/A

                \[\leadsto \mathsf{neg.f64}\left(\left(\frac{v}{t1}\right)\right) \]
              3. /-lowering-/.f6466.0%

                \[\leadsto \mathsf{neg.f64}\left(\mathsf{/.f64}\left(v, t1\right)\right) \]
            7. Applied egg-rr66.0%

              \[\leadsto \color{blue}{-\frac{v}{t1}} \]
          9. Recombined 2 regimes into one program.
          10. Final simplification62.8%

            \[\leadsto \begin{array}{l} \mathbf{if}\;u \leq -3.1 \cdot 10^{+209}:\\ \;\;\;\;\frac{\frac{v}{u}}{-1}\\ \mathbf{elif}\;u \leq 1.8 \cdot 10^{+127}:\\ \;\;\;\;0 - \frac{v}{t1}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{v}{u}}{-1}\\ \end{array} \]
          11. Add Preprocessing

          Alternative 6: 98.1% accurate, 1.1× speedup?

          \[\begin{array}{l} \\ \frac{\frac{v}{t1 + u}}{-1 - \frac{u}{t1}} \end{array} \]
          (FPCore (u v t1) :precision binary64 (/ (/ v (+ t1 u)) (- -1.0 (/ u t1))))
          double code(double u, double v, double t1) {
          	return (v / (t1 + u)) / (-1.0 - (u / t1));
          }
          
          real(8) function code(u, v, t1)
              real(8), intent (in) :: u
              real(8), intent (in) :: v
              real(8), intent (in) :: t1
              code = (v / (t1 + u)) / ((-1.0d0) - (u / t1))
          end function
          
          public static double code(double u, double v, double t1) {
          	return (v / (t1 + u)) / (-1.0 - (u / t1));
          }
          
          def code(u, v, t1):
          	return (v / (t1 + u)) / (-1.0 - (u / t1))
          
          function code(u, v, t1)
          	return Float64(Float64(v / Float64(t1 + u)) / Float64(-1.0 - Float64(u / t1)))
          end
          
          function tmp = code(u, v, t1)
          	tmp = (v / (t1 + u)) / (-1.0 - (u / t1));
          end
          
          code[u_, v_, t1_] := N[(N[(v / N[(t1 + u), $MachinePrecision]), $MachinePrecision] / N[(-1.0 - N[(u / t1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
          
          \begin{array}{l}
          
          \\
          \frac{\frac{v}{t1 + u}}{-1 - \frac{u}{t1}}
          \end{array}
          
          Derivation
          1. Initial program 70.5%

            \[\frac{\left(-t1\right) \cdot v}{\left(t1 + u\right) \cdot \left(t1 + u\right)} \]
          2. Add Preprocessing
          3. Step-by-step derivation
            1. *-commutativeN/A

              \[\leadsto \frac{v \cdot \left(\mathsf{neg}\left(t1\right)\right)}{\color{blue}{\left(t1 + u\right)} \cdot \left(t1 + u\right)} \]
            2. neg-mul-1N/A

              \[\leadsto \frac{v \cdot \left(-1 \cdot t1\right)}{\left(t1 + \color{blue}{u}\right) \cdot \left(t1 + u\right)} \]
            3. associate-*r*N/A

              \[\leadsto \frac{\left(v \cdot -1\right) \cdot t1}{\color{blue}{\left(t1 + u\right)} \cdot \left(t1 + u\right)} \]
            4. times-fracN/A

              \[\leadsto \frac{v \cdot -1}{t1 + u} \cdot \color{blue}{\frac{t1}{t1 + u}} \]
            5. *-commutativeN/A

              \[\leadsto \frac{-1 \cdot v}{t1 + u} \cdot \frac{t1}{t1 + u} \]
            6. neg-mul-1N/A

              \[\leadsto \frac{\mathsf{neg}\left(v\right)}{t1 + u} \cdot \frac{t1}{t1 + u} \]
            7. *-lowering-*.f64N/A

              \[\leadsto \mathsf{*.f64}\left(\left(\frac{\mathsf{neg}\left(v\right)}{t1 + u}\right), \color{blue}{\left(\frac{t1}{t1 + u}\right)}\right) \]
            8. /-lowering-/.f64N/A

              \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\left(\mathsf{neg}\left(v\right)\right), \left(t1 + u\right)\right), \left(\frac{\color{blue}{t1}}{t1 + u}\right)\right) \]
            9. neg-sub0N/A

              \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\left(0 - v\right), \left(t1 + u\right)\right), \left(\frac{t1}{t1 + u}\right)\right) \]
            10. --lowering--.f64N/A

              \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{\_.f64}\left(0, v\right), \left(t1 + u\right)\right), \left(\frac{t1}{t1 + u}\right)\right) \]
            11. +-lowering-+.f64N/A

              \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{\_.f64}\left(0, v\right), \mathsf{+.f64}\left(t1, u\right)\right), \left(\frac{t1}{t1 + u}\right)\right) \]
            12. /-lowering-/.f64N/A

              \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{\_.f64}\left(0, v\right), \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{/.f64}\left(t1, \color{blue}{\left(t1 + u\right)}\right)\right) \]
            13. +-lowering-+.f6498.3%

              \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{\_.f64}\left(0, v\right), \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{/.f64}\left(t1, \mathsf{+.f64}\left(t1, \color{blue}{u}\right)\right)\right) \]
          4. Applied egg-rr98.3%

            \[\leadsto \color{blue}{\frac{0 - v}{t1 + u} \cdot \frac{t1}{t1 + u}} \]
          5. Step-by-step derivation
            1. clear-numN/A

              \[\leadsto \frac{0 - v}{t1 + u} \cdot \frac{1}{\color{blue}{\frac{t1 + u}{t1}}} \]
            2. un-div-invN/A

              \[\leadsto \frac{\frac{0 - v}{t1 + u}}{\color{blue}{\frac{t1 + u}{t1}}} \]
            3. sub0-negN/A

              \[\leadsto \frac{\frac{\mathsf{neg}\left(v\right)}{t1 + u}}{\frac{\color{blue}{t1} + u}{t1}} \]
            4. distribute-frac-negN/A

              \[\leadsto \frac{\mathsf{neg}\left(\frac{v}{t1 + u}\right)}{\frac{\color{blue}{t1 + u}}{t1}} \]
            5. frac-2negN/A

              \[\leadsto \frac{\mathsf{neg}\left(\left(\mathsf{neg}\left(\frac{v}{t1 + u}\right)\right)\right)}{\color{blue}{\mathsf{neg}\left(\frac{t1 + u}{t1}\right)}} \]
            6. distribute-frac-neg2N/A

              \[\leadsto \frac{\mathsf{neg}\left(\frac{v}{\mathsf{neg}\left(\left(t1 + u\right)\right)}\right)}{\mathsf{neg}\left(\frac{\color{blue}{t1 + u}}{t1}\right)} \]
            7. distribute-frac-negN/A

              \[\leadsto \frac{\frac{\mathsf{neg}\left(v\right)}{\mathsf{neg}\left(\left(t1 + u\right)\right)}}{\mathsf{neg}\left(\color{blue}{\frac{t1 + u}{t1}}\right)} \]
            8. frac-2negN/A

              \[\leadsto \frac{\frac{v}{t1 + u}}{\mathsf{neg}\left(\color{blue}{\frac{t1 + u}{t1}}\right)} \]
            9. /-lowering-/.f64N/A

              \[\leadsto \mathsf{/.f64}\left(\left(\frac{v}{t1 + u}\right), \color{blue}{\left(\mathsf{neg}\left(\frac{t1 + u}{t1}\right)\right)}\right) \]
            10. /-lowering-/.f64N/A

              \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \left(t1 + u\right)\right), \left(\mathsf{neg}\left(\color{blue}{\frac{t1 + u}{t1}}\right)\right)\right) \]
            11. +-lowering-+.f64N/A

              \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \left(\mathsf{neg}\left(\frac{t1 + u}{\color{blue}{t1}}\right)\right)\right) \]
            12. neg-lowering-neg.f64N/A

              \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{neg.f64}\left(\left(\frac{t1 + u}{t1}\right)\right)\right) \]
            13. /-lowering-/.f64N/A

              \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{neg.f64}\left(\mathsf{/.f64}\left(\left(t1 + u\right), t1\right)\right)\right) \]
            14. +-lowering-+.f6498.3%

              \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{neg.f64}\left(\mathsf{/.f64}\left(\mathsf{+.f64}\left(t1, u\right), t1\right)\right)\right) \]
          6. Applied egg-rr98.3%

            \[\leadsto \color{blue}{\frac{\frac{v}{t1 + u}}{-\frac{t1 + u}{t1}}} \]
          7. Taylor expanded in t1 around 0

            \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \color{blue}{\left(\frac{-1 \cdot t1 - u}{t1}\right)}\right) \]
          8. Step-by-step derivation
            1. div-subN/A

              \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \left(\frac{-1 \cdot t1}{t1} - \color{blue}{\frac{u}{t1}}\right)\right) \]
            2. associate-/l*N/A

              \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \left(-1 \cdot \frac{t1}{t1} - \frac{\color{blue}{u}}{t1}\right)\right) \]
            3. *-inversesN/A

              \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \left(-1 \cdot 1 - \frac{u}{t1}\right)\right) \]
            4. metadata-evalN/A

              \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \left(-1 - \frac{\color{blue}{u}}{t1}\right)\right) \]
            5. --lowering--.f64N/A

              \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{\_.f64}\left(-1, \color{blue}{\left(\frac{u}{t1}\right)}\right)\right) \]
            6. /-lowering-/.f6498.3%

              \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{\_.f64}\left(-1, \mathsf{/.f64}\left(u, \color{blue}{t1}\right)\right)\right) \]
          9. Simplified98.3%

            \[\leadsto \frac{\frac{v}{t1 + u}}{\color{blue}{-1 - \frac{u}{t1}}} \]
          10. Add Preprocessing

          Alternative 7: 62.1% accurate, 1.7× speedup?

          \[\begin{array}{l} \\ \frac{-1}{\frac{t1 + u}{v}} \end{array} \]
          (FPCore (u v t1) :precision binary64 (/ -1.0 (/ (+ t1 u) v)))
          double code(double u, double v, double t1) {
          	return -1.0 / ((t1 + u) / v);
          }
          
          real(8) function code(u, v, t1)
              real(8), intent (in) :: u
              real(8), intent (in) :: v
              real(8), intent (in) :: t1
              code = (-1.0d0) / ((t1 + u) / v)
          end function
          
          public static double code(double u, double v, double t1) {
          	return -1.0 / ((t1 + u) / v);
          }
          
          def code(u, v, t1):
          	return -1.0 / ((t1 + u) / v)
          
          function code(u, v, t1)
          	return Float64(-1.0 / Float64(Float64(t1 + u) / v))
          end
          
          function tmp = code(u, v, t1)
          	tmp = -1.0 / ((t1 + u) / v);
          end
          
          code[u_, v_, t1_] := N[(-1.0 / N[(N[(t1 + u), $MachinePrecision] / v), $MachinePrecision]), $MachinePrecision]
          
          \begin{array}{l}
          
          \\
          \frac{-1}{\frac{t1 + u}{v}}
          \end{array}
          
          Derivation
          1. Initial program 70.5%

            \[\frac{\left(-t1\right) \cdot v}{\left(t1 + u\right) \cdot \left(t1 + u\right)} \]
          2. Add Preprocessing
          3. Step-by-step derivation
            1. *-commutativeN/A

              \[\leadsto \frac{v \cdot \left(\mathsf{neg}\left(t1\right)\right)}{\color{blue}{\left(t1 + u\right)} \cdot \left(t1 + u\right)} \]
            2. neg-mul-1N/A

              \[\leadsto \frac{v \cdot \left(-1 \cdot t1\right)}{\left(t1 + \color{blue}{u}\right) \cdot \left(t1 + u\right)} \]
            3. associate-*r*N/A

              \[\leadsto \frac{\left(v \cdot -1\right) \cdot t1}{\color{blue}{\left(t1 + u\right)} \cdot \left(t1 + u\right)} \]
            4. times-fracN/A

              \[\leadsto \frac{v \cdot -1}{t1 + u} \cdot \color{blue}{\frac{t1}{t1 + u}} \]
            5. *-commutativeN/A

              \[\leadsto \frac{-1 \cdot v}{t1 + u} \cdot \frac{t1}{t1 + u} \]
            6. neg-mul-1N/A

              \[\leadsto \frac{\mathsf{neg}\left(v\right)}{t1 + u} \cdot \frac{t1}{t1 + u} \]
            7. *-lowering-*.f64N/A

              \[\leadsto \mathsf{*.f64}\left(\left(\frac{\mathsf{neg}\left(v\right)}{t1 + u}\right), \color{blue}{\left(\frac{t1}{t1 + u}\right)}\right) \]
            8. /-lowering-/.f64N/A

              \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\left(\mathsf{neg}\left(v\right)\right), \left(t1 + u\right)\right), \left(\frac{\color{blue}{t1}}{t1 + u}\right)\right) \]
            9. neg-sub0N/A

              \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\left(0 - v\right), \left(t1 + u\right)\right), \left(\frac{t1}{t1 + u}\right)\right) \]
            10. --lowering--.f64N/A

              \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{\_.f64}\left(0, v\right), \left(t1 + u\right)\right), \left(\frac{t1}{t1 + u}\right)\right) \]
            11. +-lowering-+.f64N/A

              \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{\_.f64}\left(0, v\right), \mathsf{+.f64}\left(t1, u\right)\right), \left(\frac{t1}{t1 + u}\right)\right) \]
            12. /-lowering-/.f64N/A

              \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{\_.f64}\left(0, v\right), \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{/.f64}\left(t1, \color{blue}{\left(t1 + u\right)}\right)\right) \]
            13. +-lowering-+.f6498.3%

              \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{\_.f64}\left(0, v\right), \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{/.f64}\left(t1, \mathsf{+.f64}\left(t1, \color{blue}{u}\right)\right)\right) \]
          4. Applied egg-rr98.3%

            \[\leadsto \color{blue}{\frac{0 - v}{t1 + u} \cdot \frac{t1}{t1 + u}} \]
          5. Step-by-step derivation
            1. clear-numN/A

              \[\leadsto \frac{0 - v}{t1 + u} \cdot \frac{1}{\color{blue}{\frac{t1 + u}{t1}}} \]
            2. un-div-invN/A

              \[\leadsto \frac{\frac{0 - v}{t1 + u}}{\color{blue}{\frac{t1 + u}{t1}}} \]
            3. sub0-negN/A

              \[\leadsto \frac{\frac{\mathsf{neg}\left(v\right)}{t1 + u}}{\frac{\color{blue}{t1} + u}{t1}} \]
            4. distribute-frac-negN/A

              \[\leadsto \frac{\mathsf{neg}\left(\frac{v}{t1 + u}\right)}{\frac{\color{blue}{t1 + u}}{t1}} \]
            5. frac-2negN/A

              \[\leadsto \frac{\mathsf{neg}\left(\left(\mathsf{neg}\left(\frac{v}{t1 + u}\right)\right)\right)}{\color{blue}{\mathsf{neg}\left(\frac{t1 + u}{t1}\right)}} \]
            6. distribute-frac-neg2N/A

              \[\leadsto \frac{\mathsf{neg}\left(\frac{v}{\mathsf{neg}\left(\left(t1 + u\right)\right)}\right)}{\mathsf{neg}\left(\frac{\color{blue}{t1 + u}}{t1}\right)} \]
            7. distribute-frac-negN/A

              \[\leadsto \frac{\frac{\mathsf{neg}\left(v\right)}{\mathsf{neg}\left(\left(t1 + u\right)\right)}}{\mathsf{neg}\left(\color{blue}{\frac{t1 + u}{t1}}\right)} \]
            8. frac-2negN/A

              \[\leadsto \frac{\frac{v}{t1 + u}}{\mathsf{neg}\left(\color{blue}{\frac{t1 + u}{t1}}\right)} \]
            9. /-lowering-/.f64N/A

              \[\leadsto \mathsf{/.f64}\left(\left(\frac{v}{t1 + u}\right), \color{blue}{\left(\mathsf{neg}\left(\frac{t1 + u}{t1}\right)\right)}\right) \]
            10. /-lowering-/.f64N/A

              \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \left(t1 + u\right)\right), \left(\mathsf{neg}\left(\color{blue}{\frac{t1 + u}{t1}}\right)\right)\right) \]
            11. +-lowering-+.f64N/A

              \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \left(\mathsf{neg}\left(\frac{t1 + u}{\color{blue}{t1}}\right)\right)\right) \]
            12. neg-lowering-neg.f64N/A

              \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{neg.f64}\left(\left(\frac{t1 + u}{t1}\right)\right)\right) \]
            13. /-lowering-/.f64N/A

              \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{neg.f64}\left(\mathsf{/.f64}\left(\left(t1 + u\right), t1\right)\right)\right) \]
            14. +-lowering-+.f6498.3%

              \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{neg.f64}\left(\mathsf{/.f64}\left(\mathsf{+.f64}\left(t1, u\right), t1\right)\right)\right) \]
          6. Applied egg-rr98.3%

            \[\leadsto \color{blue}{\frac{\frac{v}{t1 + u}}{-\frac{t1 + u}{t1}}} \]
          7. Taylor expanded in t1 around inf

            \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \color{blue}{-1}\right) \]
          8. Step-by-step derivation
            1. Simplified64.5%

              \[\leadsto \frac{\frac{v}{t1 + u}}{\color{blue}{-1}} \]
            2. Step-by-step derivation
              1. div-invN/A

                \[\leadsto \frac{v}{t1 + u} \cdot \color{blue}{\frac{1}{-1}} \]
              2. metadata-evalN/A

                \[\leadsto \frac{v}{t1 + u} \cdot -1 \]
              3. *-commutativeN/A

                \[\leadsto -1 \cdot \color{blue}{\frac{v}{t1 + u}} \]
              4. clear-numN/A

                \[\leadsto -1 \cdot \frac{1}{\color{blue}{\frac{t1 + u}{v}}} \]
              5. div-invN/A

                \[\leadsto \frac{-1}{\color{blue}{\frac{t1 + u}{v}}} \]
              6. /-lowering-/.f64N/A

                \[\leadsto \mathsf{/.f64}\left(-1, \color{blue}{\left(\frac{t1 + u}{v}\right)}\right) \]
              7. /-lowering-/.f64N/A

                \[\leadsto \mathsf{/.f64}\left(-1, \mathsf{/.f64}\left(\left(t1 + u\right), \color{blue}{v}\right)\right) \]
              8. +-lowering-+.f6464.7%

                \[\leadsto \mathsf{/.f64}\left(-1, \mathsf{/.f64}\left(\mathsf{+.f64}\left(t1, u\right), v\right)\right) \]
            3. Applied egg-rr64.7%

              \[\leadsto \color{blue}{\frac{-1}{\frac{t1 + u}{v}}} \]
            4. Add Preprocessing

            Alternative 8: 62.4% accurate, 1.7× speedup?

            \[\begin{array}{l} \\ 0 - \frac{v}{t1 + u} \end{array} \]
            (FPCore (u v t1) :precision binary64 (- 0.0 (/ v (+ t1 u))))
            double code(double u, double v, double t1) {
            	return 0.0 - (v / (t1 + u));
            }
            
            real(8) function code(u, v, t1)
                real(8), intent (in) :: u
                real(8), intent (in) :: v
                real(8), intent (in) :: t1
                code = 0.0d0 - (v / (t1 + u))
            end function
            
            public static double code(double u, double v, double t1) {
            	return 0.0 - (v / (t1 + u));
            }
            
            def code(u, v, t1):
            	return 0.0 - (v / (t1 + u))
            
            function code(u, v, t1)
            	return Float64(0.0 - Float64(v / Float64(t1 + u)))
            end
            
            function tmp = code(u, v, t1)
            	tmp = 0.0 - (v / (t1 + u));
            end
            
            code[u_, v_, t1_] := N[(0.0 - N[(v / N[(t1 + u), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
            
            \begin{array}{l}
            
            \\
            0 - \frac{v}{t1 + u}
            \end{array}
            
            Derivation
            1. Initial program 70.5%

              \[\frac{\left(-t1\right) \cdot v}{\left(t1 + u\right) \cdot \left(t1 + u\right)} \]
            2. Add Preprocessing
            3. Step-by-step derivation
              1. *-commutativeN/A

                \[\leadsto \frac{v \cdot \left(\mathsf{neg}\left(t1\right)\right)}{\color{blue}{\left(t1 + u\right)} \cdot \left(t1 + u\right)} \]
              2. neg-mul-1N/A

                \[\leadsto \frac{v \cdot \left(-1 \cdot t1\right)}{\left(t1 + \color{blue}{u}\right) \cdot \left(t1 + u\right)} \]
              3. associate-*r*N/A

                \[\leadsto \frac{\left(v \cdot -1\right) \cdot t1}{\color{blue}{\left(t1 + u\right)} \cdot \left(t1 + u\right)} \]
              4. times-fracN/A

                \[\leadsto \frac{v \cdot -1}{t1 + u} \cdot \color{blue}{\frac{t1}{t1 + u}} \]
              5. *-commutativeN/A

                \[\leadsto \frac{-1 \cdot v}{t1 + u} \cdot \frac{t1}{t1 + u} \]
              6. neg-mul-1N/A

                \[\leadsto \frac{\mathsf{neg}\left(v\right)}{t1 + u} \cdot \frac{t1}{t1 + u} \]
              7. *-lowering-*.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\left(\frac{\mathsf{neg}\left(v\right)}{t1 + u}\right), \color{blue}{\left(\frac{t1}{t1 + u}\right)}\right) \]
              8. /-lowering-/.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\left(\mathsf{neg}\left(v\right)\right), \left(t1 + u\right)\right), \left(\frac{\color{blue}{t1}}{t1 + u}\right)\right) \]
              9. neg-sub0N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\left(0 - v\right), \left(t1 + u\right)\right), \left(\frac{t1}{t1 + u}\right)\right) \]
              10. --lowering--.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{\_.f64}\left(0, v\right), \left(t1 + u\right)\right), \left(\frac{t1}{t1 + u}\right)\right) \]
              11. +-lowering-+.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{\_.f64}\left(0, v\right), \mathsf{+.f64}\left(t1, u\right)\right), \left(\frac{t1}{t1 + u}\right)\right) \]
              12. /-lowering-/.f64N/A

                \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{\_.f64}\left(0, v\right), \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{/.f64}\left(t1, \color{blue}{\left(t1 + u\right)}\right)\right) \]
              13. +-lowering-+.f6498.3%

                \[\leadsto \mathsf{*.f64}\left(\mathsf{/.f64}\left(\mathsf{\_.f64}\left(0, v\right), \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{/.f64}\left(t1, \mathsf{+.f64}\left(t1, \color{blue}{u}\right)\right)\right) \]
            4. Applied egg-rr98.3%

              \[\leadsto \color{blue}{\frac{0 - v}{t1 + u} \cdot \frac{t1}{t1 + u}} \]
            5. Step-by-step derivation
              1. clear-numN/A

                \[\leadsto \frac{0 - v}{t1 + u} \cdot \frac{1}{\color{blue}{\frac{t1 + u}{t1}}} \]
              2. un-div-invN/A

                \[\leadsto \frac{\frac{0 - v}{t1 + u}}{\color{blue}{\frac{t1 + u}{t1}}} \]
              3. sub0-negN/A

                \[\leadsto \frac{\frac{\mathsf{neg}\left(v\right)}{t1 + u}}{\frac{\color{blue}{t1} + u}{t1}} \]
              4. distribute-frac-negN/A

                \[\leadsto \frac{\mathsf{neg}\left(\frac{v}{t1 + u}\right)}{\frac{\color{blue}{t1 + u}}{t1}} \]
              5. frac-2negN/A

                \[\leadsto \frac{\mathsf{neg}\left(\left(\mathsf{neg}\left(\frac{v}{t1 + u}\right)\right)\right)}{\color{blue}{\mathsf{neg}\left(\frac{t1 + u}{t1}\right)}} \]
              6. distribute-frac-neg2N/A

                \[\leadsto \frac{\mathsf{neg}\left(\frac{v}{\mathsf{neg}\left(\left(t1 + u\right)\right)}\right)}{\mathsf{neg}\left(\frac{\color{blue}{t1 + u}}{t1}\right)} \]
              7. distribute-frac-negN/A

                \[\leadsto \frac{\frac{\mathsf{neg}\left(v\right)}{\mathsf{neg}\left(\left(t1 + u\right)\right)}}{\mathsf{neg}\left(\color{blue}{\frac{t1 + u}{t1}}\right)} \]
              8. frac-2negN/A

                \[\leadsto \frac{\frac{v}{t1 + u}}{\mathsf{neg}\left(\color{blue}{\frac{t1 + u}{t1}}\right)} \]
              9. /-lowering-/.f64N/A

                \[\leadsto \mathsf{/.f64}\left(\left(\frac{v}{t1 + u}\right), \color{blue}{\left(\mathsf{neg}\left(\frac{t1 + u}{t1}\right)\right)}\right) \]
              10. /-lowering-/.f64N/A

                \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \left(t1 + u\right)\right), \left(\mathsf{neg}\left(\color{blue}{\frac{t1 + u}{t1}}\right)\right)\right) \]
              11. +-lowering-+.f64N/A

                \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \left(\mathsf{neg}\left(\frac{t1 + u}{\color{blue}{t1}}\right)\right)\right) \]
              12. neg-lowering-neg.f64N/A

                \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{neg.f64}\left(\left(\frac{t1 + u}{t1}\right)\right)\right) \]
              13. /-lowering-/.f64N/A

                \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{neg.f64}\left(\mathsf{/.f64}\left(\left(t1 + u\right), t1\right)\right)\right) \]
              14. +-lowering-+.f6498.3%

                \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \mathsf{neg.f64}\left(\mathsf{/.f64}\left(\mathsf{+.f64}\left(t1, u\right), t1\right)\right)\right) \]
            6. Applied egg-rr98.3%

              \[\leadsto \color{blue}{\frac{\frac{v}{t1 + u}}{-\frac{t1 + u}{t1}}} \]
            7. Taylor expanded in t1 around inf

              \[\leadsto \mathsf{/.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right), \color{blue}{-1}\right) \]
            8. Step-by-step derivation
              1. Simplified64.5%

                \[\leadsto \frac{\frac{v}{t1 + u}}{\color{blue}{-1}} \]
              2. Step-by-step derivation
                1. frac-2negN/A

                  \[\leadsto \frac{\mathsf{neg}\left(\frac{v}{t1 + u}\right)}{\color{blue}{\mathsf{neg}\left(-1\right)}} \]
                2. metadata-evalN/A

                  \[\leadsto \frac{\mathsf{neg}\left(\frac{v}{t1 + u}\right)}{1} \]
                3. /-rgt-identityN/A

                  \[\leadsto \mathsf{neg}\left(\frac{v}{t1 + u}\right) \]
                4. neg-lowering-neg.f64N/A

                  \[\leadsto \mathsf{neg.f64}\left(\left(\frac{v}{t1 + u}\right)\right) \]
                5. /-lowering-/.f64N/A

                  \[\leadsto \mathsf{neg.f64}\left(\mathsf{/.f64}\left(v, \left(t1 + u\right)\right)\right) \]
                6. +-lowering-+.f6464.5%

                  \[\leadsto \mathsf{neg.f64}\left(\mathsf{/.f64}\left(v, \mathsf{+.f64}\left(t1, u\right)\right)\right) \]
              3. Applied egg-rr64.5%

                \[\leadsto \color{blue}{-\frac{v}{t1 + u}} \]
              4. Final simplification64.5%

                \[\leadsto 0 - \frac{v}{t1 + u} \]
              5. Add Preprocessing

              Alternative 9: 54.6% accurate, 2.4× speedup?

              \[\begin{array}{l} \\ \frac{-1}{\frac{t1}{v}} \end{array} \]
              (FPCore (u v t1) :precision binary64 (/ -1.0 (/ t1 v)))
              double code(double u, double v, double t1) {
              	return -1.0 / (t1 / v);
              }
              
              real(8) function code(u, v, t1)
                  real(8), intent (in) :: u
                  real(8), intent (in) :: v
                  real(8), intent (in) :: t1
                  code = (-1.0d0) / (t1 / v)
              end function
              
              public static double code(double u, double v, double t1) {
              	return -1.0 / (t1 / v);
              }
              
              def code(u, v, t1):
              	return -1.0 / (t1 / v)
              
              function code(u, v, t1)
              	return Float64(-1.0 / Float64(t1 / v))
              end
              
              function tmp = code(u, v, t1)
              	tmp = -1.0 / (t1 / v);
              end
              
              code[u_, v_, t1_] := N[(-1.0 / N[(t1 / v), $MachinePrecision]), $MachinePrecision]
              
              \begin{array}{l}
              
              \\
              \frac{-1}{\frac{t1}{v}}
              \end{array}
              
              Derivation
              1. Initial program 70.5%

                \[\frac{\left(-t1\right) \cdot v}{\left(t1 + u\right) \cdot \left(t1 + u\right)} \]
              2. Add Preprocessing
              3. Taylor expanded in t1 around inf

                \[\leadsto \color{blue}{-1 \cdot \frac{v}{t1}} \]
              4. Step-by-step derivation
                1. mul-1-negN/A

                  \[\leadsto \mathsf{neg}\left(\frac{v}{t1}\right) \]
                2. neg-sub0N/A

                  \[\leadsto 0 - \color{blue}{\frac{v}{t1}} \]
                3. --lowering--.f64N/A

                  \[\leadsto \mathsf{\_.f64}\left(0, \color{blue}{\left(\frac{v}{t1}\right)}\right) \]
                4. /-lowering-/.f6457.2%

                  \[\leadsto \mathsf{\_.f64}\left(0, \mathsf{/.f64}\left(v, \color{blue}{t1}\right)\right) \]
              5. Simplified57.2%

                \[\leadsto \color{blue}{0 - \frac{v}{t1}} \]
              6. Step-by-step derivation
                1. sub0-negN/A

                  \[\leadsto \mathsf{neg}\left(\frac{v}{t1}\right) \]
                2. clear-numN/A

                  \[\leadsto \mathsf{neg}\left(\frac{1}{\frac{t1}{v}}\right) \]
                3. distribute-neg-fracN/A

                  \[\leadsto \frac{\mathsf{neg}\left(1\right)}{\color{blue}{\frac{t1}{v}}} \]
                4. metadata-evalN/A

                  \[\leadsto \frac{-1}{\frac{\color{blue}{t1}}{v}} \]
                5. /-lowering-/.f64N/A

                  \[\leadsto \mathsf{/.f64}\left(-1, \color{blue}{\left(\frac{t1}{v}\right)}\right) \]
                6. /-lowering-/.f6457.3%

                  \[\leadsto \mathsf{/.f64}\left(-1, \mathsf{/.f64}\left(t1, \color{blue}{v}\right)\right) \]
              7. Applied egg-rr57.3%

                \[\leadsto \color{blue}{\frac{-1}{\frac{t1}{v}}} \]
              8. Add Preprocessing

              Alternative 10: 55.1% accurate, 2.4× speedup?

              \[\begin{array}{l} \\ 0 - \frac{v}{t1} \end{array} \]
              (FPCore (u v t1) :precision binary64 (- 0.0 (/ v t1)))
              double code(double u, double v, double t1) {
              	return 0.0 - (v / t1);
              }
              
              real(8) function code(u, v, t1)
                  real(8), intent (in) :: u
                  real(8), intent (in) :: v
                  real(8), intent (in) :: t1
                  code = 0.0d0 - (v / t1)
              end function
              
              public static double code(double u, double v, double t1) {
              	return 0.0 - (v / t1);
              }
              
              def code(u, v, t1):
              	return 0.0 - (v / t1)
              
              function code(u, v, t1)
              	return Float64(0.0 - Float64(v / t1))
              end
              
              function tmp = code(u, v, t1)
              	tmp = 0.0 - (v / t1);
              end
              
              code[u_, v_, t1_] := N[(0.0 - N[(v / t1), $MachinePrecision]), $MachinePrecision]
              
              \begin{array}{l}
              
              \\
              0 - \frac{v}{t1}
              \end{array}
              
              Derivation
              1. Initial program 70.5%

                \[\frac{\left(-t1\right) \cdot v}{\left(t1 + u\right) \cdot \left(t1 + u\right)} \]
              2. Add Preprocessing
              3. Taylor expanded in t1 around inf

                \[\leadsto \color{blue}{-1 \cdot \frac{v}{t1}} \]
              4. Step-by-step derivation
                1. mul-1-negN/A

                  \[\leadsto \mathsf{neg}\left(\frac{v}{t1}\right) \]
                2. neg-sub0N/A

                  \[\leadsto 0 - \color{blue}{\frac{v}{t1}} \]
                3. --lowering--.f64N/A

                  \[\leadsto \mathsf{\_.f64}\left(0, \color{blue}{\left(\frac{v}{t1}\right)}\right) \]
                4. /-lowering-/.f6457.2%

                  \[\leadsto \mathsf{\_.f64}\left(0, \mathsf{/.f64}\left(v, \color{blue}{t1}\right)\right) \]
              5. Simplified57.2%

                \[\leadsto \color{blue}{0 - \frac{v}{t1}} \]
              6. Step-by-step derivation
                1. sub0-negN/A

                  \[\leadsto \mathsf{neg}\left(\frac{v}{t1}\right) \]
                2. neg-lowering-neg.f64N/A

                  \[\leadsto \mathsf{neg.f64}\left(\left(\frac{v}{t1}\right)\right) \]
                3. /-lowering-/.f6457.2%

                  \[\leadsto \mathsf{neg.f64}\left(\mathsf{/.f64}\left(v, t1\right)\right) \]
              7. Applied egg-rr57.2%

                \[\leadsto \color{blue}{-\frac{v}{t1}} \]
              8. Final simplification57.2%

                \[\leadsto 0 - \frac{v}{t1} \]
              9. Add Preprocessing

              Reproduce

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