
(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:
Herbie found 14 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(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}
(FPCore (u v t1) :precision binary64 (/ (/ v (/ (+ t1 u) (- 0.0 t1))) (+ t1 u)))
double code(double u, double v, double t1) {
return (v / ((t1 + u) / (0.0 - t1))) / (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 = (v / ((t1 + u) / (0.0d0 - t1))) / (t1 + u)
end function
public static double code(double u, double v, double t1) {
return (v / ((t1 + u) / (0.0 - t1))) / (t1 + u);
}
def code(u, v, t1): return (v / ((t1 + u) / (0.0 - t1))) / (t1 + u)
function code(u, v, t1) return Float64(Float64(v / Float64(Float64(t1 + u) / Float64(0.0 - t1))) / Float64(t1 + u)) end
function tmp = code(u, v, t1) tmp = (v / ((t1 + u) / (0.0 - t1))) / (t1 + u); end
code[u_, v_, t1_] := N[(N[(v / N[(N[(t1 + u), $MachinePrecision] / N[(0.0 - t1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(t1 + u), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{\frac{v}{\frac{t1 + u}{0 - t1}}}{t1 + u}
\end{array}
Initial program 78.6%
Taylor expanded in v around 0
associate-*r/N/A
unpow2N/A
associate-/r*N/A
/-lowering-/.f64N/A
associate-*r*N/A
*-commutativeN/A
associate-/l*N/A
mul-1-negN/A
distribute-frac-negN/A
*-lowering-*.f64N/A
distribute-frac-negN/A
mul-1-negN/A
*-commutativeN/A
associate-/l*N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
+-commutativeN/A
+-lowering-+.f64N/A
+-commutativeN/A
+-lowering-+.f6498.7%
Simplified98.7%
*-commutativeN/A
+-commutativeN/A
associate-*l/N/A
neg-mul-1N/A
clear-numN/A
distribute-neg-frac2N/A
div-invN/A
remove-double-negN/A
frac-2negN/A
/-lowering-/.f64N/A
neg-sub0N/A
--lowering--.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f6498.8%
Applied egg-rr98.8%
Final simplification98.8%
(FPCore (u v t1)
:precision binary64
(let* ((t_1 (/ 1.0 (/ (- (* u -2.0) t1) v))))
(if (<= t1 -1.65e-73)
t_1
(if (<= t1 2.9e+55) (/ (- 0.0 (/ (* v t1) u)) u) t_1))))
double code(double u, double v, double t1) {
double t_1 = 1.0 / (((u * -2.0) - t1) / v);
double tmp;
if (t1 <= -1.65e-73) {
tmp = t_1;
} else if (t1 <= 2.9e+55) {
tmp = (0.0 - ((v * t1) / u)) / 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 = 1.0d0 / (((u * (-2.0d0)) - t1) / v)
if (t1 <= (-1.65d-73)) then
tmp = t_1
else if (t1 <= 2.9d+55) then
tmp = (0.0d0 - ((v * t1) / u)) / u
else
tmp = t_1
end if
code = tmp
end function
public static double code(double u, double v, double t1) {
double t_1 = 1.0 / (((u * -2.0) - t1) / v);
double tmp;
if (t1 <= -1.65e-73) {
tmp = t_1;
} else if (t1 <= 2.9e+55) {
tmp = (0.0 - ((v * t1) / u)) / u;
} else {
tmp = t_1;
}
return tmp;
}
def code(u, v, t1): t_1 = 1.0 / (((u * -2.0) - t1) / v) tmp = 0 if t1 <= -1.65e-73: tmp = t_1 elif t1 <= 2.9e+55: tmp = (0.0 - ((v * t1) / u)) / u else: tmp = t_1 return tmp
function code(u, v, t1) t_1 = Float64(1.0 / Float64(Float64(Float64(u * -2.0) - t1) / v)) tmp = 0.0 if (t1 <= -1.65e-73) tmp = t_1; elseif (t1 <= 2.9e+55) tmp = Float64(Float64(0.0 - Float64(Float64(v * t1) / u)) / u); else tmp = t_1; end return tmp end
function tmp_2 = code(u, v, t1) t_1 = 1.0 / (((u * -2.0) - t1) / v); tmp = 0.0; if (t1 <= -1.65e-73) tmp = t_1; elseif (t1 <= 2.9e+55) tmp = (0.0 - ((v * t1) / u)) / u; else tmp = t_1; end tmp_2 = tmp; end
code[u_, v_, t1_] := Block[{t$95$1 = N[(1.0 / N[(N[(N[(u * -2.0), $MachinePrecision] - t1), $MachinePrecision] / v), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t1, -1.65e-73], t$95$1, If[LessEqual[t1, 2.9e+55], N[(N[(0.0 - N[(N[(v * t1), $MachinePrecision] / u), $MachinePrecision]), $MachinePrecision] / u), $MachinePrecision], t$95$1]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := \frac{1}{\frac{u \cdot -2 - t1}{v}}\\
\mathbf{if}\;t1 \leq -1.65 \cdot 10^{-73}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;t1 \leq 2.9 \cdot 10^{+55}:\\
\;\;\;\;\frac{0 - \frac{v \cdot t1}{u}}{u}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if t1 < -1.65000000000000002e-73 or 2.8999999999999999e55 < t1 Initial program 68.3%
times-fracN/A
clear-numN/A
frac-timesN/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
distribute-frac-neg2N/A
neg-lowering-neg.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
+-lowering-+.f6498.1%
Applied egg-rr98.1%
Taylor expanded in u around 0
mul-1-negN/A
unsub-negN/A
--lowering--.f64N/A
*-commutativeN/A
*-lowering-*.f6485.9%
Simplified85.9%
clear-numN/A
/-lowering-/.f64N/A
*-lft-identityN/A
/-lowering-/.f64N/A
--lowering--.f64N/A
*-lowering-*.f6486.3%
Applied egg-rr86.3%
if -1.65000000000000002e-73 < t1 < 2.8999999999999999e55Initial program 90.3%
Taylor expanded in v around 0
associate-*r/N/A
unpow2N/A
associate-/r*N/A
/-lowering-/.f64N/A
associate-*r*N/A
*-commutativeN/A
associate-/l*N/A
mul-1-negN/A
distribute-frac-negN/A
*-lowering-*.f64N/A
distribute-frac-negN/A
mul-1-negN/A
*-commutativeN/A
associate-/l*N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
+-commutativeN/A
+-lowering-+.f64N/A
+-commutativeN/A
+-lowering-+.f6497.4%
Simplified97.4%
Taylor expanded in t1 around 0
associate-*r/N/A
/-lowering-/.f64N/A
mul-1-negN/A
neg-sub0N/A
--lowering--.f64N/A
*-lowering-*.f6476.3%
Simplified76.3%
Taylor expanded in u around inf
Simplified80.8%
Final simplification83.8%
(FPCore (u v t1)
:precision binary64
(let* ((t_1 (/ 1.0 (/ (- (* u -2.0) t1) v))))
(if (<= t1 -1.95e-73)
t_1
(if (<= t1 0.042) (/ -1.0 (* u (/ u (* v t1)))) t_1))))
double code(double u, double v, double t1) {
double t_1 = 1.0 / (((u * -2.0) - t1) / v);
double tmp;
if (t1 <= -1.95e-73) {
tmp = t_1;
} else if (t1 <= 0.042) {
tmp = -1.0 / (u * (u / (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 = 1.0d0 / (((u * (-2.0d0)) - t1) / v)
if (t1 <= (-1.95d-73)) then
tmp = t_1
else if (t1 <= 0.042d0) then
tmp = (-1.0d0) / (u * (u / (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 = 1.0 / (((u * -2.0) - t1) / v);
double tmp;
if (t1 <= -1.95e-73) {
tmp = t_1;
} else if (t1 <= 0.042) {
tmp = -1.0 / (u * (u / (v * t1)));
} else {
tmp = t_1;
}
return tmp;
}
def code(u, v, t1): t_1 = 1.0 / (((u * -2.0) - t1) / v) tmp = 0 if t1 <= -1.95e-73: tmp = t_1 elif t1 <= 0.042: tmp = -1.0 / (u * (u / (v * t1))) else: tmp = t_1 return tmp
function code(u, v, t1) t_1 = Float64(1.0 / Float64(Float64(Float64(u * -2.0) - t1) / v)) tmp = 0.0 if (t1 <= -1.95e-73) tmp = t_1; elseif (t1 <= 0.042) tmp = Float64(-1.0 / Float64(u * Float64(u / Float64(v * t1)))); else tmp = t_1; end return tmp end
function tmp_2 = code(u, v, t1) t_1 = 1.0 / (((u * -2.0) - t1) / v); tmp = 0.0; if (t1 <= -1.95e-73) tmp = t_1; elseif (t1 <= 0.042) tmp = -1.0 / (u * (u / (v * t1))); else tmp = t_1; end tmp_2 = tmp; end
code[u_, v_, t1_] := Block[{t$95$1 = N[(1.0 / N[(N[(N[(u * -2.0), $MachinePrecision] - t1), $MachinePrecision] / v), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t1, -1.95e-73], t$95$1, If[LessEqual[t1, 0.042], N[(-1.0 / N[(u * N[(u / N[(v * t1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := \frac{1}{\frac{u \cdot -2 - t1}{v}}\\
\mathbf{if}\;t1 \leq -1.95 \cdot 10^{-73}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;t1 \leq 0.042:\\
\;\;\;\;\frac{-1}{u \cdot \frac{u}{v \cdot t1}}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if t1 < -1.94999999999999991e-73 or 0.0420000000000000026 < t1 Initial program 68.9%
times-fracN/A
clear-numN/A
frac-timesN/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
distribute-frac-neg2N/A
neg-lowering-neg.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
+-lowering-+.f6495.8%
Applied egg-rr95.8%
Taylor expanded in u around 0
mul-1-negN/A
unsub-negN/A
--lowering--.f64N/A
*-commutativeN/A
*-lowering-*.f6483.2%
Simplified83.2%
clear-numN/A
/-lowering-/.f64N/A
*-lft-identityN/A
/-lowering-/.f64N/A
--lowering--.f64N/A
*-lowering-*.f6483.9%
Applied egg-rr83.9%
if -1.94999999999999991e-73 < t1 < 0.0420000000000000026Initial program 92.6%
Taylor expanded in v around 0
associate-*r/N/A
unpow2N/A
associate-/r*N/A
/-lowering-/.f64N/A
associate-*r*N/A
*-commutativeN/A
associate-/l*N/A
mul-1-negN/A
distribute-frac-negN/A
*-lowering-*.f64N/A
distribute-frac-negN/A
mul-1-negN/A
*-commutativeN/A
associate-/l*N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
+-commutativeN/A
+-lowering-+.f64N/A
+-commutativeN/A
+-lowering-+.f6497.1%
Simplified97.1%
Taylor expanded in t1 around 0
associate-*r/N/A
/-lowering-/.f64N/A
mul-1-negN/A
neg-sub0N/A
--lowering--.f64N/A
*-lowering-*.f6478.4%
Simplified78.4%
clear-numN/A
frac-2negN/A
metadata-evalN/A
/-lowering-/.f64N/A
div-invN/A
clear-numN/A
distribute-rgt-neg-inN/A
sub0-negN/A
distribute-frac-neg2N/A
remove-double-negN/A
*-lowering-*.f64N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f6477.7%
Applied egg-rr77.7%
Taylor expanded in t1 around 0
Simplified82.8%
(FPCore (u v t1)
:precision binary64
(let* ((t_1 (/ v (- (* u -2.0) t1))))
(if (<= t1 -1.9e-74)
t_1
(if (<= t1 2.9e+55) (/ -1.0 (* u (/ u (* v t1)))) t_1))))
double code(double u, double v, double t1) {
double t_1 = v / ((u * -2.0) - t1);
double tmp;
if (t1 <= -1.9e-74) {
tmp = t_1;
} else if (t1 <= 2.9e+55) {
tmp = -1.0 / (u * (u / (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 * (-2.0d0)) - t1)
if (t1 <= (-1.9d-74)) then
tmp = t_1
else if (t1 <= 2.9d+55) then
tmp = (-1.0d0) / (u * (u / (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 * -2.0) - t1);
double tmp;
if (t1 <= -1.9e-74) {
tmp = t_1;
} else if (t1 <= 2.9e+55) {
tmp = -1.0 / (u * (u / (v * t1)));
} else {
tmp = t_1;
}
return tmp;
}
def code(u, v, t1): t_1 = v / ((u * -2.0) - t1) tmp = 0 if t1 <= -1.9e-74: tmp = t_1 elif t1 <= 2.9e+55: tmp = -1.0 / (u * (u / (v * t1))) else: tmp = t_1 return tmp
function code(u, v, t1) t_1 = Float64(v / Float64(Float64(u * -2.0) - t1)) tmp = 0.0 if (t1 <= -1.9e-74) tmp = t_1; elseif (t1 <= 2.9e+55) tmp = Float64(-1.0 / Float64(u * Float64(u / Float64(v * t1)))); else tmp = t_1; end return tmp end
function tmp_2 = code(u, v, t1) t_1 = v / ((u * -2.0) - t1); tmp = 0.0; if (t1 <= -1.9e-74) tmp = t_1; elseif (t1 <= 2.9e+55) tmp = -1.0 / (u * (u / (v * t1))); else tmp = t_1; end tmp_2 = tmp; end
code[u_, v_, t1_] := Block[{t$95$1 = N[(v / N[(N[(u * -2.0), $MachinePrecision] - t1), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t1, -1.9e-74], t$95$1, If[LessEqual[t1, 2.9e+55], N[(-1.0 / N[(u * N[(u / N[(v * t1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := \frac{v}{u \cdot -2 - t1}\\
\mathbf{if}\;t1 \leq -1.9 \cdot 10^{-74}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;t1 \leq 2.9 \cdot 10^{+55}:\\
\;\;\;\;\frac{-1}{u \cdot \frac{u}{v \cdot t1}}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if t1 < -1.8999999999999998e-74 or 2.8999999999999999e55 < t1 Initial program 68.3%
times-fracN/A
clear-numN/A
frac-timesN/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
distribute-frac-neg2N/A
neg-lowering-neg.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
+-lowering-+.f6498.1%
Applied egg-rr98.1%
Taylor expanded in u around 0
mul-1-negN/A
unsub-negN/A
--lowering--.f64N/A
*-commutativeN/A
*-lowering-*.f6485.9%
Simplified85.9%
*-lft-identityN/A
/-lowering-/.f64N/A
--lowering--.f64N/A
*-lowering-*.f6485.9%
Applied egg-rr85.9%
if -1.8999999999999998e-74 < t1 < 2.8999999999999999e55Initial program 90.3%
Taylor expanded in v around 0
associate-*r/N/A
unpow2N/A
associate-/r*N/A
/-lowering-/.f64N/A
associate-*r*N/A
*-commutativeN/A
associate-/l*N/A
mul-1-negN/A
distribute-frac-negN/A
*-lowering-*.f64N/A
distribute-frac-negN/A
mul-1-negN/A
*-commutativeN/A
associate-/l*N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
+-commutativeN/A
+-lowering-+.f64N/A
+-commutativeN/A
+-lowering-+.f6497.4%
Simplified97.4%
Taylor expanded in t1 around 0
associate-*r/N/A
/-lowering-/.f64N/A
mul-1-negN/A
neg-sub0N/A
--lowering--.f64N/A
*-lowering-*.f6476.3%
Simplified76.3%
clear-numN/A
frac-2negN/A
metadata-evalN/A
/-lowering-/.f64N/A
div-invN/A
clear-numN/A
distribute-rgt-neg-inN/A
sub0-negN/A
distribute-frac-neg2N/A
remove-double-negN/A
*-lowering-*.f64N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f6475.6%
Applied egg-rr75.6%
Taylor expanded in t1 around 0
Simplified80.1%
(FPCore (u v t1)
:precision binary64
(let* ((t_1 (/ v (- (* u -2.0) t1))))
(if (<= t1 -1.1e-73)
t_1
(if (<= t1 2.25e-5) (/ (* v t1) (* u (- 0.0 u))) t_1))))
double code(double u, double v, double t1) {
double t_1 = v / ((u * -2.0) - t1);
double tmp;
if (t1 <= -1.1e-73) {
tmp = t_1;
} else if (t1 <= 2.25e-5) {
tmp = (v * t1) / (u * (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 = v / ((u * (-2.0d0)) - t1)
if (t1 <= (-1.1d-73)) then
tmp = t_1
else if (t1 <= 2.25d-5) then
tmp = (v * t1) / (u * (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 = v / ((u * -2.0) - t1);
double tmp;
if (t1 <= -1.1e-73) {
tmp = t_1;
} else if (t1 <= 2.25e-5) {
tmp = (v * t1) / (u * (0.0 - u));
} else {
tmp = t_1;
}
return tmp;
}
def code(u, v, t1): t_1 = v / ((u * -2.0) - t1) tmp = 0 if t1 <= -1.1e-73: tmp = t_1 elif t1 <= 2.25e-5: tmp = (v * t1) / (u * (0.0 - u)) else: tmp = t_1 return tmp
function code(u, v, t1) t_1 = Float64(v / Float64(Float64(u * -2.0) - t1)) tmp = 0.0 if (t1 <= -1.1e-73) tmp = t_1; elseif (t1 <= 2.25e-5) tmp = Float64(Float64(v * t1) / Float64(u * Float64(0.0 - u))); else tmp = t_1; end return tmp end
function tmp_2 = code(u, v, t1) t_1 = v / ((u * -2.0) - t1); tmp = 0.0; if (t1 <= -1.1e-73) tmp = t_1; elseif (t1 <= 2.25e-5) tmp = (v * t1) / (u * (0.0 - u)); else tmp = t_1; end tmp_2 = tmp; end
code[u_, v_, t1_] := Block[{t$95$1 = N[(v / N[(N[(u * -2.0), $MachinePrecision] - t1), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t1, -1.1e-73], t$95$1, If[LessEqual[t1, 2.25e-5], N[(N[(v * t1), $MachinePrecision] / N[(u * N[(0.0 - u), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := \frac{v}{u \cdot -2 - t1}\\
\mathbf{if}\;t1 \leq -1.1 \cdot 10^{-73}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;t1 \leq 2.25 \cdot 10^{-5}:\\
\;\;\;\;\frac{v \cdot t1}{u \cdot \left(0 - u\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if t1 < -1.1e-73 or 2.25000000000000014e-5 < t1 Initial program 68.9%
times-fracN/A
clear-numN/A
frac-timesN/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
distribute-frac-neg2N/A
neg-lowering-neg.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
+-lowering-+.f6495.8%
Applied egg-rr95.8%
Taylor expanded in u around 0
mul-1-negN/A
unsub-negN/A
--lowering--.f64N/A
*-commutativeN/A
*-lowering-*.f6483.2%
Simplified83.2%
*-lft-identityN/A
/-lowering-/.f64N/A
--lowering--.f64N/A
*-lowering-*.f6483.2%
Applied egg-rr83.2%
if -1.1e-73 < t1 < 2.25000000000000014e-5Initial program 92.6%
Taylor expanded in t1 around 0
unpow2N/A
*-lowering-*.f6480.0%
Simplified80.0%
Final simplification81.9%
(FPCore (u v t1) :precision binary64 (let* ((t_1 (/ -1.0 (/ u v)))) (if (<= u -3e+237) t_1 (if (<= u 5.8e+153) (- 0.0 (/ v t1)) t_1))))
double code(double u, double v, double t1) {
double t_1 = -1.0 / (u / v);
double tmp;
if (u <= -3e+237) {
tmp = t_1;
} else if (u <= 5.8e+153) {
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 = (-1.0d0) / (u / v)
if (u <= (-3d+237)) then
tmp = t_1
else if (u <= 5.8d+153) 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 = -1.0 / (u / v);
double tmp;
if (u <= -3e+237) {
tmp = t_1;
} else if (u <= 5.8e+153) {
tmp = 0.0 - (v / t1);
} else {
tmp = t_1;
}
return tmp;
}
def code(u, v, t1): t_1 = -1.0 / (u / v) tmp = 0 if u <= -3e+237: tmp = t_1 elif u <= 5.8e+153: tmp = 0.0 - (v / t1) else: tmp = t_1 return tmp
function code(u, v, t1) t_1 = Float64(-1.0 / Float64(u / v)) tmp = 0.0 if (u <= -3e+237) tmp = t_1; elseif (u <= 5.8e+153) tmp = Float64(0.0 - Float64(v / t1)); else tmp = t_1; end return tmp end
function tmp_2 = code(u, v, t1) t_1 = -1.0 / (u / v); tmp = 0.0; if (u <= -3e+237) tmp = t_1; elseif (u <= 5.8e+153) tmp = 0.0 - (v / t1); else tmp = t_1; end tmp_2 = tmp; end
code[u_, v_, t1_] := Block[{t$95$1 = N[(-1.0 / N[(u / v), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[u, -3e+237], t$95$1, If[LessEqual[u, 5.8e+153], N[(0.0 - N[(v / t1), $MachinePrecision]), $MachinePrecision], t$95$1]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := \frac{-1}{\frac{u}{v}}\\
\mathbf{if}\;u \leq -3 \cdot 10^{+237}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;u \leq 5.8 \cdot 10^{+153}:\\
\;\;\;\;0 - \frac{v}{t1}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if u < -3e237 or 5.80000000000000004e153 < u Initial program 83.0%
Taylor expanded in v around 0
associate-*r/N/A
unpow2N/A
associate-/r*N/A
/-lowering-/.f64N/A
associate-*r*N/A
*-commutativeN/A
associate-/l*N/A
mul-1-negN/A
distribute-frac-negN/A
*-lowering-*.f64N/A
distribute-frac-negN/A
mul-1-negN/A
*-commutativeN/A
associate-/l*N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
+-commutativeN/A
+-lowering-+.f64N/A
+-commutativeN/A
+-lowering-+.f6499.8%
Simplified99.8%
Taylor expanded in t1 around 0
associate-*r/N/A
/-lowering-/.f64N/A
mul-1-negN/A
neg-sub0N/A
--lowering--.f64N/A
*-lowering-*.f6494.1%
Simplified94.1%
clear-numN/A
frac-2negN/A
metadata-evalN/A
/-lowering-/.f64N/A
div-invN/A
clear-numN/A
distribute-rgt-neg-inN/A
sub0-negN/A
distribute-frac-neg2N/A
remove-double-negN/A
*-lowering-*.f64N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f6494.0%
Applied egg-rr94.0%
Taylor expanded in t1 around inf
/-lowering-/.f6455.5%
Simplified55.5%
if -3e237 < u < 5.80000000000000004e153Initial program 77.5%
Taylor expanded in t1 around inf
mul-1-negN/A
distribute-neg-frac2N/A
mul-1-negN/A
/-lowering-/.f64N/A
mul-1-negN/A
neg-sub0N/A
--lowering--.f6462.7%
Simplified62.7%
neg-sub0N/A
neg-lowering-neg.f6462.7%
Applied egg-rr62.7%
Final simplification61.3%
(FPCore (u v t1) :precision binary64 (let* ((t_1 (* (/ v u) -0.5))) (if (<= u -3e+237) t_1 (if (<= u 2.9e+154) (- 0.0 (/ v t1)) t_1))))
double code(double u, double v, double t1) {
double t_1 = (v / u) * -0.5;
double tmp;
if (u <= -3e+237) {
tmp = t_1;
} else if (u <= 2.9e+154) {
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) * (-0.5d0)
if (u <= (-3d+237)) then
tmp = t_1
else if (u <= 2.9d+154) 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) * -0.5;
double tmp;
if (u <= -3e+237) {
tmp = t_1;
} else if (u <= 2.9e+154) {
tmp = 0.0 - (v / t1);
} else {
tmp = t_1;
}
return tmp;
}
def code(u, v, t1): t_1 = (v / u) * -0.5 tmp = 0 if u <= -3e+237: tmp = t_1 elif u <= 2.9e+154: tmp = 0.0 - (v / t1) else: tmp = t_1 return tmp
function code(u, v, t1) t_1 = Float64(Float64(v / u) * -0.5) tmp = 0.0 if (u <= -3e+237) tmp = t_1; elseif (u <= 2.9e+154) 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) * -0.5; tmp = 0.0; if (u <= -3e+237) tmp = t_1; elseif (u <= 2.9e+154) 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] * -0.5), $MachinePrecision]}, If[LessEqual[u, -3e+237], t$95$1, If[LessEqual[u, 2.9e+154], N[(0.0 - N[(v / t1), $MachinePrecision]), $MachinePrecision], t$95$1]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := \frac{v}{u} \cdot -0.5\\
\mathbf{if}\;u \leq -3 \cdot 10^{+237}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;u \leq 2.9 \cdot 10^{+154}:\\
\;\;\;\;0 - \frac{v}{t1}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if u < -3e237 or 2.89999999999999979e154 < u Initial program 83.0%
Taylor expanded in t1 around 0
+-commutativeN/A
unpow2N/A
associate-*r*N/A
distribute-rgt-inN/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f6483.0%
Simplified83.0%
Taylor expanded in t1 around inf
*-commutativeN/A
*-lowering-*.f64N/A
/-lowering-/.f6452.7%
Simplified52.7%
if -3e237 < u < 2.89999999999999979e154Initial program 77.5%
Taylor expanded in t1 around inf
mul-1-negN/A
distribute-neg-frac2N/A
mul-1-negN/A
/-lowering-/.f64N/A
mul-1-negN/A
neg-sub0N/A
--lowering--.f6462.7%
Simplified62.7%
neg-sub0N/A
neg-lowering-neg.f6462.7%
Applied egg-rr62.7%
Final simplification60.7%
(FPCore (u v t1) :precision binary64 (/ (* v (* t1 (/ -1.0 (+ t1 u)))) (+ t1 u)))
double code(double u, double v, double t1) {
return (v * (t1 * (-1.0 / (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 = (v * (t1 * ((-1.0d0) / (t1 + u)))) / (t1 + u)
end function
public static double code(double u, double v, double t1) {
return (v * (t1 * (-1.0 / (t1 + u)))) / (t1 + u);
}
def code(u, v, t1): return (v * (t1 * (-1.0 / (t1 + u)))) / (t1 + u)
function code(u, v, t1) return Float64(Float64(v * Float64(t1 * Float64(-1.0 / Float64(t1 + u)))) / Float64(t1 + u)) end
function tmp = code(u, v, t1) tmp = (v * (t1 * (-1.0 / (t1 + u)))) / (t1 + u); end
code[u_, v_, t1_] := N[(N[(v * N[(t1 * N[(-1.0 / N[(t1 + u), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(t1 + u), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{v \cdot \left(t1 \cdot \frac{-1}{t1 + u}\right)}{t1 + u}
\end{array}
Initial program 78.6%
Taylor expanded in v around 0
associate-*r/N/A
unpow2N/A
associate-/r*N/A
/-lowering-/.f64N/A
associate-*r*N/A
*-commutativeN/A
associate-/l*N/A
mul-1-negN/A
distribute-frac-negN/A
*-lowering-*.f64N/A
distribute-frac-negN/A
mul-1-negN/A
*-commutativeN/A
associate-/l*N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
+-commutativeN/A
+-lowering-+.f64N/A
+-commutativeN/A
+-lowering-+.f6498.7%
Simplified98.7%
Final simplification98.7%
(FPCore (u v t1) :precision binary64 (/ (/ v (- 0.0 (+ t1 u))) (/ (+ t1 u) t1)))
double code(double u, double v, double t1) {
return (v / (0.0 - (t1 + u))) / ((t1 + 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 / (0.0d0 - (t1 + u))) / ((t1 + u) / t1)
end function
public static double code(double u, double v, double t1) {
return (v / (0.0 - (t1 + u))) / ((t1 + u) / t1);
}
def code(u, v, t1): return (v / (0.0 - (t1 + u))) / ((t1 + u) / t1)
function code(u, v, t1) return Float64(Float64(v / Float64(0.0 - Float64(t1 + u))) / Float64(Float64(t1 + u) / t1)) end
function tmp = code(u, v, t1) tmp = (v / (0.0 - (t1 + u))) / ((t1 + u) / t1); end
code[u_, v_, t1_] := N[(N[(v / N[(0.0 - N[(t1 + u), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[(t1 + u), $MachinePrecision] / t1), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{\frac{v}{0 - \left(t1 + u\right)}}{\frac{t1 + u}{t1}}
\end{array}
Initial program 78.6%
*-commutativeN/A
times-fracN/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
distribute-frac-neg2N/A
neg-lowering-neg.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f6497.0%
Applied egg-rr97.0%
Final simplification97.0%
(FPCore (u v t1) :precision binary64 (* (/ v (+ t1 u)) (/ t1 (- 0.0 (+ t1 u)))))
double code(double u, double v, double t1) {
return (v / (t1 + u)) * (t1 / (0.0 - (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 = (v / (t1 + u)) * (t1 / (0.0d0 - (t1 + u)))
end function
public static double code(double u, double v, double t1) {
return (v / (t1 + u)) * (t1 / (0.0 - (t1 + u)));
}
def code(u, v, t1): return (v / (t1 + u)) * (t1 / (0.0 - (t1 + u)))
function code(u, v, t1) return Float64(Float64(v / Float64(t1 + u)) * Float64(t1 / Float64(0.0 - Float64(t1 + u)))) end
function tmp = code(u, v, t1) tmp = (v / (t1 + u)) * (t1 / (0.0 - (t1 + u))); end
code[u_, v_, t1_] := N[(N[(v / N[(t1 + u), $MachinePrecision]), $MachinePrecision] * N[(t1 / N[(0.0 - N[(t1 + u), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{v}{t1 + u} \cdot \frac{t1}{0 - \left(t1 + u\right)}
\end{array}
Initial program 78.6%
Taylor expanded in v around 0
associate-*r/N/A
unpow2N/A
associate-/r*N/A
/-lowering-/.f64N/A
associate-*r*N/A
*-commutativeN/A
associate-/l*N/A
mul-1-negN/A
distribute-frac-negN/A
*-lowering-*.f64N/A
distribute-frac-negN/A
mul-1-negN/A
*-commutativeN/A
associate-/l*N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
+-commutativeN/A
+-lowering-+.f64N/A
+-commutativeN/A
+-lowering-+.f6498.7%
Simplified98.7%
*-commutativeN/A
+-commutativeN/A
associate-/l*N/A
*-commutativeN/A
*-commutativeN/A
+-commutativeN/A
associate-*l/N/A
neg-mul-1N/A
distribute-frac-negN/A
distribute-rgt-neg-outN/A
neg-lowering-neg.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f6497.0%
Applied egg-rr97.0%
Final simplification97.0%
(FPCore (u v t1) :precision binary64 (/ v (- (* u -2.0) t1)))
double code(double u, double v, double t1) {
return v / ((u * -2.0) - 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 / ((u * (-2.0d0)) - t1)
end function
public static double code(double u, double v, double t1) {
return v / ((u * -2.0) - t1);
}
def code(u, v, t1): return v / ((u * -2.0) - t1)
function code(u, v, t1) return Float64(v / Float64(Float64(u * -2.0) - t1)) end
function tmp = code(u, v, t1) tmp = v / ((u * -2.0) - t1); end
code[u_, v_, t1_] := N[(v / N[(N[(u * -2.0), $MachinePrecision] - t1), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{v}{u \cdot -2 - t1}
\end{array}
Initial program 78.6%
times-fracN/A
clear-numN/A
frac-timesN/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
distribute-frac-neg2N/A
neg-lowering-neg.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
+-lowering-+.f6494.6%
Applied egg-rr94.6%
Taylor expanded in u around 0
mul-1-negN/A
unsub-negN/A
--lowering--.f64N/A
*-commutativeN/A
*-lowering-*.f6463.8%
Simplified63.8%
*-lft-identityN/A
/-lowering-/.f64N/A
--lowering--.f64N/A
*-lowering-*.f6463.8%
Applied egg-rr63.8%
(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}
Initial program 78.6%
Taylor expanded in v around 0
associate-*r/N/A
unpow2N/A
associate-/r*N/A
/-lowering-/.f64N/A
associate-*r*N/A
*-commutativeN/A
associate-/l*N/A
mul-1-negN/A
distribute-frac-negN/A
*-lowering-*.f64N/A
distribute-frac-negN/A
mul-1-negN/A
*-commutativeN/A
associate-/l*N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
+-commutativeN/A
+-lowering-+.f64N/A
+-commutativeN/A
+-lowering-+.f6498.7%
Simplified98.7%
Taylor expanded in t1 around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6462.9%
Simplified62.9%
clear-numN/A
frac-2negN/A
metadata-evalN/A
sub0-negN/A
distribute-frac-neg2N/A
remove-double-negN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
+-commutativeN/A
+-lowering-+.f6463.4%
Applied egg-rr63.4%
(FPCore (u v t1) :precision binary64 (/ v (- 0.0 (+ t1 u))))
double code(double u, double v, double t1) {
return v / (0.0 - (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 = v / (0.0d0 - (t1 + u))
end function
public static double code(double u, double v, double t1) {
return v / (0.0 - (t1 + u));
}
def code(u, v, t1): return v / (0.0 - (t1 + u))
function code(u, v, t1) return Float64(v / Float64(0.0 - Float64(t1 + u))) end
function tmp = code(u, v, t1) tmp = v / (0.0 - (t1 + u)); end
code[u_, v_, t1_] := N[(v / N[(0.0 - N[(t1 + u), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{v}{0 - \left(t1 + u\right)}
\end{array}
Initial program 78.6%
Taylor expanded in v around 0
associate-*r/N/A
unpow2N/A
associate-/r*N/A
/-lowering-/.f64N/A
associate-*r*N/A
*-commutativeN/A
associate-/l*N/A
mul-1-negN/A
distribute-frac-negN/A
*-lowering-*.f64N/A
distribute-frac-negN/A
mul-1-negN/A
*-commutativeN/A
associate-/l*N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
+-commutativeN/A
+-lowering-+.f64N/A
+-commutativeN/A
+-lowering-+.f6498.7%
Simplified98.7%
Taylor expanded in t1 around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6462.9%
Simplified62.9%
sub0-negN/A
neg-lowering-neg.f6462.9%
Applied egg-rr62.9%
Final simplification62.9%
(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}
Initial program 78.6%
Taylor expanded in t1 around inf
mul-1-negN/A
distribute-neg-frac2N/A
mul-1-negN/A
/-lowering-/.f64N/A
mul-1-negN/A
neg-sub0N/A
--lowering--.f6455.1%
Simplified55.1%
neg-sub0N/A
neg-lowering-neg.f6455.1%
Applied egg-rr55.1%
Final simplification55.1%
herbie shell --seed 2024156
(FPCore (u v t1)
:name "Rosa's DopplerBench"
:precision binary64
(/ (* (- t1) v) (* (+ t1 u) (+ t1 u))))