
(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 10 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))) (/ t1 (+ t1 u))))
double code(double u, double v, double t1) {
return -(v / (t1 + u)) * (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)) * (t1 / (t1 + u))
end function
public static double code(double u, double v, double t1) {
return -(v / (t1 + u)) * (t1 / (t1 + u));
}
def code(u, v, t1): return -(v / (t1 + u)) * (t1 / (t1 + u))
function code(u, v, t1) return Float64(Float64(-Float64(v / Float64(t1 + u))) * Float64(t1 / Float64(t1 + u))) end
function tmp = code(u, v, t1) tmp = -(v / (t1 + u)) * (t1 / (t1 + u)); end
code[u_, v_, t1_] := N[((-N[(v / N[(t1 + u), $MachinePrecision]), $MachinePrecision]) * N[(t1 / N[(t1 + u), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\left(-\frac{v}{t1 + u}\right) \cdot \frac{t1}{t1 + u}
\end{array}
Initial program 71.8%
lift-neg.f64N/A
lift-+.f64N/A
lift-+.f64N/A
*-commutativeN/A
lift-neg.f64N/A
neg-mul-1N/A
associate-*r*N/A
times-fracN/A
*-commutativeN/A
neg-mul-1N/A
lower-*.f64N/A
lower-/.f64N/A
lower-neg.f64N/A
lower-/.f6498.4
Applied egg-rr98.4%
Final simplification98.4%
(FPCore (u v t1)
:precision binary64
(let* ((t_1 (* (+ t1 u) (+ t1 u))) (t_2 (- (/ v (+ t1 u)))))
(if (<= t1 -1e+154)
t_2
(if (<= t1 -3.35e-130)
(* v (/ (- t1) t_1))
(if (<= t1 1.6e-283)
(/ (* v (/ t1 (- u))) u)
(if (<= t1 1.65e+86) (* t1 (* v (/ -1.0 t_1))) t_2))))))
double code(double u, double v, double t1) {
double t_1 = (t1 + u) * (t1 + u);
double t_2 = -(v / (t1 + u));
double tmp;
if (t1 <= -1e+154) {
tmp = t_2;
} else if (t1 <= -3.35e-130) {
tmp = v * (-t1 / t_1);
} else if (t1 <= 1.6e-283) {
tmp = (v * (t1 / -u)) / u;
} else if (t1 <= 1.65e+86) {
tmp = t1 * (v * (-1.0 / t_1));
} else {
tmp = t_2;
}
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) :: t_2
real(8) :: tmp
t_1 = (t1 + u) * (t1 + u)
t_2 = -(v / (t1 + u))
if (t1 <= (-1d+154)) then
tmp = t_2
else if (t1 <= (-3.35d-130)) then
tmp = v * (-t1 / t_1)
else if (t1 <= 1.6d-283) then
tmp = (v * (t1 / -u)) / u
else if (t1 <= 1.65d+86) then
tmp = t1 * (v * ((-1.0d0) / t_1))
else
tmp = t_2
end if
code = tmp
end function
public static double code(double u, double v, double t1) {
double t_1 = (t1 + u) * (t1 + u);
double t_2 = -(v / (t1 + u));
double tmp;
if (t1 <= -1e+154) {
tmp = t_2;
} else if (t1 <= -3.35e-130) {
tmp = v * (-t1 / t_1);
} else if (t1 <= 1.6e-283) {
tmp = (v * (t1 / -u)) / u;
} else if (t1 <= 1.65e+86) {
tmp = t1 * (v * (-1.0 / t_1));
} else {
tmp = t_2;
}
return tmp;
}
def code(u, v, t1): t_1 = (t1 + u) * (t1 + u) t_2 = -(v / (t1 + u)) tmp = 0 if t1 <= -1e+154: tmp = t_2 elif t1 <= -3.35e-130: tmp = v * (-t1 / t_1) elif t1 <= 1.6e-283: tmp = (v * (t1 / -u)) / u elif t1 <= 1.65e+86: tmp = t1 * (v * (-1.0 / t_1)) else: tmp = t_2 return tmp
function code(u, v, t1) t_1 = Float64(Float64(t1 + u) * Float64(t1 + u)) t_2 = Float64(-Float64(v / Float64(t1 + u))) tmp = 0.0 if (t1 <= -1e+154) tmp = t_2; elseif (t1 <= -3.35e-130) tmp = Float64(v * Float64(Float64(-t1) / t_1)); elseif (t1 <= 1.6e-283) tmp = Float64(Float64(v * Float64(t1 / Float64(-u))) / u); elseif (t1 <= 1.65e+86) tmp = Float64(t1 * Float64(v * Float64(-1.0 / t_1))); else tmp = t_2; end return tmp end
function tmp_2 = code(u, v, t1) t_1 = (t1 + u) * (t1 + u); t_2 = -(v / (t1 + u)); tmp = 0.0; if (t1 <= -1e+154) tmp = t_2; elseif (t1 <= -3.35e-130) tmp = v * (-t1 / t_1); elseif (t1 <= 1.6e-283) tmp = (v * (t1 / -u)) / u; elseif (t1 <= 1.65e+86) tmp = t1 * (v * (-1.0 / t_1)); else tmp = t_2; end tmp_2 = tmp; end
code[u_, v_, t1_] := Block[{t$95$1 = N[(N[(t1 + u), $MachinePrecision] * N[(t1 + u), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = (-N[(v / N[(t1 + u), $MachinePrecision]), $MachinePrecision])}, If[LessEqual[t1, -1e+154], t$95$2, If[LessEqual[t1, -3.35e-130], N[(v * N[((-t1) / t$95$1), $MachinePrecision]), $MachinePrecision], If[LessEqual[t1, 1.6e-283], N[(N[(v * N[(t1 / (-u)), $MachinePrecision]), $MachinePrecision] / u), $MachinePrecision], If[LessEqual[t1, 1.65e+86], N[(t1 * N[(v * N[(-1.0 / t$95$1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$2]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := \left(t1 + u\right) \cdot \left(t1 + u\right)\\
t_2 := -\frac{v}{t1 + u}\\
\mathbf{if}\;t1 \leq -1 \cdot 10^{+154}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;t1 \leq -3.35 \cdot 10^{-130}:\\
\;\;\;\;v \cdot \frac{-t1}{t\_1}\\
\mathbf{elif}\;t1 \leq 1.6 \cdot 10^{-283}:\\
\;\;\;\;\frac{v \cdot \frac{t1}{-u}}{u}\\
\mathbf{elif}\;t1 \leq 1.65 \cdot 10^{+86}:\\
\;\;\;\;t1 \cdot \left(v \cdot \frac{-1}{t\_1}\right)\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if t1 < -1.00000000000000004e154 or 1.65e86 < t1 Initial program 43.1%
lift-neg.f64N/A
lift-+.f64N/A
lift-+.f64N/A
*-commutativeN/A
lift-neg.f64N/A
neg-mul-1N/A
associate-*r*N/A
times-fracN/A
*-commutativeN/A
neg-mul-1N/A
lower-*.f64N/A
lower-/.f64N/A
lower-neg.f64N/A
lower-/.f6499.9
Applied egg-rr99.9%
Taylor expanded in t1 around inf
Simplified88.3%
lift-+.f64N/A
lift-neg.f64N/A
lift-/.f64N/A
*-rgt-identity88.3
Applied egg-rr88.3%
if -1.00000000000000004e154 < t1 < -3.34999999999999993e-130Initial program 77.4%
lift-neg.f64N/A
lift-+.f64N/A
lift-+.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-/l*N/A
*-commutativeN/A
lower-*.f64N/A
lower-/.f6493.7
Applied egg-rr93.7%
if -3.34999999999999993e-130 < t1 < 1.60000000000000006e-283Initial program 81.0%
Taylor expanded in t1 around 0
unpow2N/A
lower-*.f6481.0
Simplified81.0%
lift-neg.f64N/A
lift-*.f64N/A
associate-/r*N/A
lower-/.f64N/A
lower-/.f6486.5
lift-*.f64N/A
*-commutativeN/A
lower-*.f6486.5
Applied egg-rr86.5%
lift-neg.f64N/A
lift-*.f64N/A
frac-2negN/A
lift-neg.f64N/A
lift-*.f64N/A
lift-neg.f64N/A
distribute-rgt-neg-outN/A
remove-double-negN/A
associate-*r/N/A
lift-/.f64N/A
*-commutativeN/A
lower-*.f6490.9
Applied egg-rr90.9%
if 1.60000000000000006e-283 < t1 < 1.65e86Initial program 91.1%
lift-neg.f64N/A
lift-+.f64N/A
lift-+.f64N/A
lift-*.f64N/A
lift-*.f64N/A
frac-2negN/A
div-invN/A
lift-*.f64N/A
lift-neg.f64N/A
distribute-lft-neg-outN/A
remove-double-negN/A
associate-*l*N/A
lower-*.f64N/A
lower-*.f64N/A
neg-mul-1N/A
associate-/r*N/A
metadata-evalN/A
lower-/.f6494.6
Applied egg-rr94.6%
Final simplification91.8%
(FPCore (u v t1)
:precision binary64
(let* ((t_1 (- (/ v (+ t1 u)))) (t_2 (* v (/ (- t1) (* (+ t1 u) (+ t1 u))))))
(if (<= t1 -1e+154)
t_1
(if (<= t1 -3.35e-130)
t_2
(if (<= t1 1.6e-283)
(/ (* v (/ t1 (- u))) u)
(if (<= t1 1e+112) t_2 t_1))))))
double code(double u, double v, double t1) {
double t_1 = -(v / (t1 + u));
double t_2 = v * (-t1 / ((t1 + u) * (t1 + u)));
double tmp;
if (t1 <= -1e+154) {
tmp = t_1;
} else if (t1 <= -3.35e-130) {
tmp = t_2;
} else if (t1 <= 1.6e-283) {
tmp = (v * (t1 / -u)) / u;
} else if (t1 <= 1e+112) {
tmp = t_2;
} 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) :: t_2
real(8) :: tmp
t_1 = -(v / (t1 + u))
t_2 = v * (-t1 / ((t1 + u) * (t1 + u)))
if (t1 <= (-1d+154)) then
tmp = t_1
else if (t1 <= (-3.35d-130)) then
tmp = t_2
else if (t1 <= 1.6d-283) then
tmp = (v * (t1 / -u)) / u
else if (t1 <= 1d+112) then
tmp = t_2
else
tmp = t_1
end if
code = tmp
end function
public static double code(double u, double v, double t1) {
double t_1 = -(v / (t1 + u));
double t_2 = v * (-t1 / ((t1 + u) * (t1 + u)));
double tmp;
if (t1 <= -1e+154) {
tmp = t_1;
} else if (t1 <= -3.35e-130) {
tmp = t_2;
} else if (t1 <= 1.6e-283) {
tmp = (v * (t1 / -u)) / u;
} else if (t1 <= 1e+112) {
tmp = t_2;
} else {
tmp = t_1;
}
return tmp;
}
def code(u, v, t1): t_1 = -(v / (t1 + u)) t_2 = v * (-t1 / ((t1 + u) * (t1 + u))) tmp = 0 if t1 <= -1e+154: tmp = t_1 elif t1 <= -3.35e-130: tmp = t_2 elif t1 <= 1.6e-283: tmp = (v * (t1 / -u)) / u elif t1 <= 1e+112: tmp = t_2 else: tmp = t_1 return tmp
function code(u, v, t1) t_1 = Float64(-Float64(v / Float64(t1 + u))) t_2 = Float64(v * Float64(Float64(-t1) / Float64(Float64(t1 + u) * Float64(t1 + u)))) tmp = 0.0 if (t1 <= -1e+154) tmp = t_1; elseif (t1 <= -3.35e-130) tmp = t_2; elseif (t1 <= 1.6e-283) tmp = Float64(Float64(v * Float64(t1 / Float64(-u))) / u); elseif (t1 <= 1e+112) tmp = t_2; else tmp = t_1; end return tmp end
function tmp_2 = code(u, v, t1) t_1 = -(v / (t1 + u)); t_2 = v * (-t1 / ((t1 + u) * (t1 + u))); tmp = 0.0; if (t1 <= -1e+154) tmp = t_1; elseif (t1 <= -3.35e-130) tmp = t_2; elseif (t1 <= 1.6e-283) tmp = (v * (t1 / -u)) / u; elseif (t1 <= 1e+112) tmp = t_2; else tmp = t_1; end tmp_2 = tmp; end
code[u_, v_, t1_] := Block[{t$95$1 = (-N[(v / N[(t1 + u), $MachinePrecision]), $MachinePrecision])}, Block[{t$95$2 = N[(v * N[((-t1) / N[(N[(t1 + u), $MachinePrecision] * N[(t1 + u), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t1, -1e+154], t$95$1, If[LessEqual[t1, -3.35e-130], t$95$2, If[LessEqual[t1, 1.6e-283], N[(N[(v * N[(t1 / (-u)), $MachinePrecision]), $MachinePrecision] / u), $MachinePrecision], If[LessEqual[t1, 1e+112], t$95$2, t$95$1]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := -\frac{v}{t1 + u}\\
t_2 := v \cdot \frac{-t1}{\left(t1 + u\right) \cdot \left(t1 + u\right)}\\
\mathbf{if}\;t1 \leq -1 \cdot 10^{+154}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;t1 \leq -3.35 \cdot 10^{-130}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;t1 \leq 1.6 \cdot 10^{-283}:\\
\;\;\;\;\frac{v \cdot \frac{t1}{-u}}{u}\\
\mathbf{elif}\;t1 \leq 10^{+112}:\\
\;\;\;\;t\_2\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if t1 < -1.00000000000000004e154 or 9.9999999999999993e111 < t1 Initial program 42.1%
lift-neg.f64N/A
lift-+.f64N/A
lift-+.f64N/A
*-commutativeN/A
lift-neg.f64N/A
neg-mul-1N/A
associate-*r*N/A
times-fracN/A
*-commutativeN/A
neg-mul-1N/A
lower-*.f64N/A
lower-/.f64N/A
lower-neg.f64N/A
lower-/.f6499.9
Applied egg-rr99.9%
Taylor expanded in t1 around inf
Simplified89.2%
lift-+.f64N/A
lift-neg.f64N/A
lift-/.f64N/A
*-rgt-identity89.2
Applied egg-rr89.2%
if -1.00000000000000004e154 < t1 < -3.34999999999999993e-130 or 1.60000000000000006e-283 < t1 < 9.9999999999999993e111Initial program 84.3%
lift-neg.f64N/A
lift-+.f64N/A
lift-+.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-/l*N/A
*-commutativeN/A
lower-*.f64N/A
lower-/.f6493.5
Applied egg-rr93.5%
if -3.34999999999999993e-130 < t1 < 1.60000000000000006e-283Initial program 81.0%
Taylor expanded in t1 around 0
unpow2N/A
lower-*.f6481.0
Simplified81.0%
lift-neg.f64N/A
lift-*.f64N/A
associate-/r*N/A
lower-/.f64N/A
lower-/.f6486.5
lift-*.f64N/A
*-commutativeN/A
lower-*.f6486.5
Applied egg-rr86.5%
lift-neg.f64N/A
lift-*.f64N/A
frac-2negN/A
lift-neg.f64N/A
lift-*.f64N/A
lift-neg.f64N/A
distribute-rgt-neg-outN/A
remove-double-negN/A
associate-*r/N/A
lift-/.f64N/A
*-commutativeN/A
lower-*.f6490.9
Applied egg-rr90.9%
Final simplification91.8%
(FPCore (u v t1)
:precision binary64
(let* ((t_1 (- (/ v (+ t1 u)))) (t_2 (* v (/ (- t1) (* (+ t1 u) (+ t1 u))))))
(if (<= t1 -1e+154)
t_1
(if (<= t1 -3.35e-130)
t_2
(if (<= t1 1.9e-299)
(* (/ t1 (- u)) (/ v u))
(if (<= t1 1e+112) t_2 t_1))))))
double code(double u, double v, double t1) {
double t_1 = -(v / (t1 + u));
double t_2 = v * (-t1 / ((t1 + u) * (t1 + u)));
double tmp;
if (t1 <= -1e+154) {
tmp = t_1;
} else if (t1 <= -3.35e-130) {
tmp = t_2;
} else if (t1 <= 1.9e-299) {
tmp = (t1 / -u) * (v / u);
} else if (t1 <= 1e+112) {
tmp = t_2;
} 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) :: t_2
real(8) :: tmp
t_1 = -(v / (t1 + u))
t_2 = v * (-t1 / ((t1 + u) * (t1 + u)))
if (t1 <= (-1d+154)) then
tmp = t_1
else if (t1 <= (-3.35d-130)) then
tmp = t_2
else if (t1 <= 1.9d-299) then
tmp = (t1 / -u) * (v / u)
else if (t1 <= 1d+112) then
tmp = t_2
else
tmp = t_1
end if
code = tmp
end function
public static double code(double u, double v, double t1) {
double t_1 = -(v / (t1 + u));
double t_2 = v * (-t1 / ((t1 + u) * (t1 + u)));
double tmp;
if (t1 <= -1e+154) {
tmp = t_1;
} else if (t1 <= -3.35e-130) {
tmp = t_2;
} else if (t1 <= 1.9e-299) {
tmp = (t1 / -u) * (v / u);
} else if (t1 <= 1e+112) {
tmp = t_2;
} else {
tmp = t_1;
}
return tmp;
}
def code(u, v, t1): t_1 = -(v / (t1 + u)) t_2 = v * (-t1 / ((t1 + u) * (t1 + u))) tmp = 0 if t1 <= -1e+154: tmp = t_1 elif t1 <= -3.35e-130: tmp = t_2 elif t1 <= 1.9e-299: tmp = (t1 / -u) * (v / u) elif t1 <= 1e+112: tmp = t_2 else: tmp = t_1 return tmp
function code(u, v, t1) t_1 = Float64(-Float64(v / Float64(t1 + u))) t_2 = Float64(v * Float64(Float64(-t1) / Float64(Float64(t1 + u) * Float64(t1 + u)))) tmp = 0.0 if (t1 <= -1e+154) tmp = t_1; elseif (t1 <= -3.35e-130) tmp = t_2; elseif (t1 <= 1.9e-299) tmp = Float64(Float64(t1 / Float64(-u)) * Float64(v / u)); elseif (t1 <= 1e+112) tmp = t_2; else tmp = t_1; end return tmp end
function tmp_2 = code(u, v, t1) t_1 = -(v / (t1 + u)); t_2 = v * (-t1 / ((t1 + u) * (t1 + u))); tmp = 0.0; if (t1 <= -1e+154) tmp = t_1; elseif (t1 <= -3.35e-130) tmp = t_2; elseif (t1 <= 1.9e-299) tmp = (t1 / -u) * (v / u); elseif (t1 <= 1e+112) tmp = t_2; else tmp = t_1; end tmp_2 = tmp; end
code[u_, v_, t1_] := Block[{t$95$1 = (-N[(v / N[(t1 + u), $MachinePrecision]), $MachinePrecision])}, Block[{t$95$2 = N[(v * N[((-t1) / N[(N[(t1 + u), $MachinePrecision] * N[(t1 + u), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t1, -1e+154], t$95$1, If[LessEqual[t1, -3.35e-130], t$95$2, If[LessEqual[t1, 1.9e-299], N[(N[(t1 / (-u)), $MachinePrecision] * N[(v / u), $MachinePrecision]), $MachinePrecision], If[LessEqual[t1, 1e+112], t$95$2, t$95$1]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := -\frac{v}{t1 + u}\\
t_2 := v \cdot \frac{-t1}{\left(t1 + u\right) \cdot \left(t1 + u\right)}\\
\mathbf{if}\;t1 \leq -1 \cdot 10^{+154}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;t1 \leq -3.35 \cdot 10^{-130}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;t1 \leq 1.9 \cdot 10^{-299}:\\
\;\;\;\;\frac{t1}{-u} \cdot \frac{v}{u}\\
\mathbf{elif}\;t1 \leq 10^{+112}:\\
\;\;\;\;t\_2\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if t1 < -1.00000000000000004e154 or 9.9999999999999993e111 < t1 Initial program 42.1%
lift-neg.f64N/A
lift-+.f64N/A
lift-+.f64N/A
*-commutativeN/A
lift-neg.f64N/A
neg-mul-1N/A
associate-*r*N/A
times-fracN/A
*-commutativeN/A
neg-mul-1N/A
lower-*.f64N/A
lower-/.f64N/A
lower-neg.f64N/A
lower-/.f6499.9
Applied egg-rr99.9%
Taylor expanded in t1 around inf
Simplified89.2%
lift-+.f64N/A
lift-neg.f64N/A
lift-/.f64N/A
*-rgt-identity89.2
Applied egg-rr89.2%
if -1.00000000000000004e154 < t1 < -3.34999999999999993e-130 or 1.9000000000000001e-299 < t1 < 9.9999999999999993e111Initial program 84.6%
lift-neg.f64N/A
lift-+.f64N/A
lift-+.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-/l*N/A
*-commutativeN/A
lower-*.f64N/A
lower-/.f6493.6
Applied egg-rr93.6%
if -3.34999999999999993e-130 < t1 < 1.9000000000000001e-299Initial program 80.2%
Taylor expanded in t1 around 0
unpow2N/A
lower-*.f6480.2
Simplified80.2%
distribute-lft-neg-outN/A
*-commutativeN/A
distribute-lft-neg-outN/A
lift-neg.f64N/A
times-fracN/A
lower-*.f64N/A
lower-/.f64N/A
lower-/.f6490.1
Applied egg-rr90.1%
Final simplification91.7%
(FPCore (u v t1)
:precision binary64
(let* ((t_1 (- (/ v (+ t1 u)))))
(if (<= t1 -1e+154)
t_1
(if (<= t1 1e+112) (* v (/ (- t1) (* (+ t1 u) (+ t1 u)))) t_1))))
double code(double u, double v, double t1) {
double t_1 = -(v / (t1 + u));
double tmp;
if (t1 <= -1e+154) {
tmp = t_1;
} else if (t1 <= 1e+112) {
tmp = v * (-t1 / ((t1 + 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 = -(v / (t1 + u))
if (t1 <= (-1d+154)) then
tmp = t_1
else if (t1 <= 1d+112) then
tmp = v * (-t1 / ((t1 + 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 = -(v / (t1 + u));
double tmp;
if (t1 <= -1e+154) {
tmp = t_1;
} else if (t1 <= 1e+112) {
tmp = v * (-t1 / ((t1 + u) * (t1 + u)));
} else {
tmp = t_1;
}
return tmp;
}
def code(u, v, t1): t_1 = -(v / (t1 + u)) tmp = 0 if t1 <= -1e+154: tmp = t_1 elif t1 <= 1e+112: tmp = v * (-t1 / ((t1 + u) * (t1 + u))) else: tmp = t_1 return tmp
function code(u, v, t1) t_1 = Float64(-Float64(v / Float64(t1 + u))) tmp = 0.0 if (t1 <= -1e+154) tmp = t_1; elseif (t1 <= 1e+112) tmp = Float64(v * Float64(Float64(-t1) / Float64(Float64(t1 + u) * Float64(t1 + u)))); else tmp = t_1; end return tmp end
function tmp_2 = code(u, v, t1) t_1 = -(v / (t1 + u)); tmp = 0.0; if (t1 <= -1e+154) tmp = t_1; elseif (t1 <= 1e+112) tmp = v * (-t1 / ((t1 + u) * (t1 + u))); else tmp = t_1; end tmp_2 = tmp; end
code[u_, v_, t1_] := Block[{t$95$1 = (-N[(v / N[(t1 + u), $MachinePrecision]), $MachinePrecision])}, If[LessEqual[t1, -1e+154], t$95$1, If[LessEqual[t1, 1e+112], N[(v * N[((-t1) / N[(N[(t1 + u), $MachinePrecision] * N[(t1 + u), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := -\frac{v}{t1 + u}\\
\mathbf{if}\;t1 \leq -1 \cdot 10^{+154}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;t1 \leq 10^{+112}:\\
\;\;\;\;v \cdot \frac{-t1}{\left(t1 + u\right) \cdot \left(t1 + u\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if t1 < -1.00000000000000004e154 or 9.9999999999999993e111 < t1 Initial program 42.1%
lift-neg.f64N/A
lift-+.f64N/A
lift-+.f64N/A
*-commutativeN/A
lift-neg.f64N/A
neg-mul-1N/A
associate-*r*N/A
times-fracN/A
*-commutativeN/A
neg-mul-1N/A
lower-*.f64N/A
lower-/.f64N/A
lower-neg.f64N/A
lower-/.f6499.9
Applied egg-rr99.9%
Taylor expanded in t1 around inf
Simplified89.2%
lift-+.f64N/A
lift-neg.f64N/A
lift-/.f64N/A
*-rgt-identity89.2
Applied egg-rr89.2%
if -1.00000000000000004e154 < t1 < 9.9999999999999993e111Initial program 83.4%
lift-neg.f64N/A
lift-+.f64N/A
lift-+.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-/l*N/A
*-commutativeN/A
lower-*.f64N/A
lower-/.f6488.2
Applied egg-rr88.2%
Final simplification88.5%
(FPCore (u v t1) :precision binary64 (let* ((t_1 (* (- t1) (/ (/ v u) u)))) (if (<= u -8e-8) t_1 (if (<= u 150000000000.0) (- (/ v t1)) t_1))))
double code(double u, double v, double t1) {
double t_1 = -t1 * ((v / u) / u);
double tmp;
if (u <= -8e-8) {
tmp = t_1;
} else if (u <= 150000000000.0) {
tmp = -(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 = -t1 * ((v / u) / u)
if (u <= (-8d-8)) then
tmp = t_1
else if (u <= 150000000000.0d0) then
tmp = -(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 = -t1 * ((v / u) / u);
double tmp;
if (u <= -8e-8) {
tmp = t_1;
} else if (u <= 150000000000.0) {
tmp = -(v / t1);
} else {
tmp = t_1;
}
return tmp;
}
def code(u, v, t1): t_1 = -t1 * ((v / u) / u) tmp = 0 if u <= -8e-8: tmp = t_1 elif u <= 150000000000.0: tmp = -(v / t1) else: tmp = t_1 return tmp
function code(u, v, t1) t_1 = Float64(Float64(-t1) * Float64(Float64(v / u) / u)) tmp = 0.0 if (u <= -8e-8) tmp = t_1; elseif (u <= 150000000000.0) tmp = Float64(-Float64(v / t1)); else tmp = t_1; end return tmp end
function tmp_2 = code(u, v, t1) t_1 = -t1 * ((v / u) / u); tmp = 0.0; if (u <= -8e-8) tmp = t_1; elseif (u <= 150000000000.0) tmp = -(v / t1); else tmp = t_1; end tmp_2 = tmp; end
code[u_, v_, t1_] := Block[{t$95$1 = N[((-t1) * N[(N[(v / u), $MachinePrecision] / u), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[u, -8e-8], t$95$1, If[LessEqual[u, 150000000000.0], (-N[(v / t1), $MachinePrecision]), t$95$1]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := \left(-t1\right) \cdot \frac{\frac{v}{u}}{u}\\
\mathbf{if}\;u \leq -8 \cdot 10^{-8}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;u \leq 150000000000:\\
\;\;\;\;-\frac{v}{t1}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if u < -8.0000000000000002e-8 or 1.5e11 < u Initial program 77.5%
Taylor expanded in t1 around 0
unpow2N/A
lower-*.f6468.9
Simplified68.9%
distribute-lft-neg-outN/A
lift-*.f64N/A
distribute-frac-negN/A
distribute-frac-neg2N/A
div-invN/A
associate-*l*N/A
lower-*.f64N/A
lower-*.f64N/A
metadata-evalN/A
neg-mul-1N/A
associate-/r*N/A
metadata-evalN/A
metadata-evalN/A
lower-/.f6472.4
Applied egg-rr72.4%
associate-/r*N/A
associate-*r/N/A
frac-2negN/A
metadata-evalN/A
lift-neg.f64N/A
un-div-invN/A
lower-/.f64N/A
lower-/.f6480.0
Applied egg-rr80.0%
if -8.0000000000000002e-8 < u < 1.5e11Initial program 65.0%
Taylor expanded in t1 around inf
associate-*r/N/A
lower-/.f64N/A
mul-1-negN/A
lower-neg.f6480.5
Simplified80.5%
Final simplification80.2%
(FPCore (u v t1)
:precision binary64
(let* ((t_1 (- (/ v (+ t1 u)))))
(if (<= t1 -6.5e-83)
t_1
(if (<= t1 1.45e+54) (- (* t1 (/ v (* u u)))) t_1))))
double code(double u, double v, double t1) {
double t_1 = -(v / (t1 + u));
double tmp;
if (t1 <= -6.5e-83) {
tmp = t_1;
} else if (t1 <= 1.45e+54) {
tmp = -(t1 * (v / (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 = -(v / (t1 + u))
if (t1 <= (-6.5d-83)) then
tmp = t_1
else if (t1 <= 1.45d+54) then
tmp = -(t1 * (v / (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 = -(v / (t1 + u));
double tmp;
if (t1 <= -6.5e-83) {
tmp = t_1;
} else if (t1 <= 1.45e+54) {
tmp = -(t1 * (v / (u * u)));
} else {
tmp = t_1;
}
return tmp;
}
def code(u, v, t1): t_1 = -(v / (t1 + u)) tmp = 0 if t1 <= -6.5e-83: tmp = t_1 elif t1 <= 1.45e+54: tmp = -(t1 * (v / (u * u))) else: tmp = t_1 return tmp
function code(u, v, t1) t_1 = Float64(-Float64(v / Float64(t1 + u))) tmp = 0.0 if (t1 <= -6.5e-83) tmp = t_1; elseif (t1 <= 1.45e+54) tmp = Float64(-Float64(t1 * Float64(v / Float64(u * u)))); else tmp = t_1; end return tmp end
function tmp_2 = code(u, v, t1) t_1 = -(v / (t1 + u)); tmp = 0.0; if (t1 <= -6.5e-83) tmp = t_1; elseif (t1 <= 1.45e+54) tmp = -(t1 * (v / (u * u))); else tmp = t_1; end tmp_2 = tmp; end
code[u_, v_, t1_] := Block[{t$95$1 = (-N[(v / N[(t1 + u), $MachinePrecision]), $MachinePrecision])}, If[LessEqual[t1, -6.5e-83], t$95$1, If[LessEqual[t1, 1.45e+54], (-N[(t1 * N[(v / N[(u * u), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), t$95$1]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := -\frac{v}{t1 + u}\\
\mathbf{if}\;t1 \leq -6.5 \cdot 10^{-83}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;t1 \leq 1.45 \cdot 10^{+54}:\\
\;\;\;\;-t1 \cdot \frac{v}{u \cdot u}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if t1 < -6.5e-83 or 1.4499999999999999e54 < t1 Initial program 56.1%
lift-neg.f64N/A
lift-+.f64N/A
lift-+.f64N/A
*-commutativeN/A
lift-neg.f64N/A
neg-mul-1N/A
associate-*r*N/A
times-fracN/A
*-commutativeN/A
neg-mul-1N/A
lower-*.f64N/A
lower-/.f64N/A
lower-neg.f64N/A
lower-/.f6499.8
Applied egg-rr99.8%
Taylor expanded in t1 around inf
Simplified79.1%
lift-+.f64N/A
lift-neg.f64N/A
lift-/.f64N/A
*-rgt-identity79.1
Applied egg-rr79.1%
if -6.5e-83 < t1 < 1.4499999999999999e54Initial program 87.2%
Taylor expanded in t1 around 0
mul-1-negN/A
associate-/l*N/A
distribute-rgt-neg-inN/A
mul-1-negN/A
lower-*.f64N/A
mul-1-negN/A
distribute-neg-frac2N/A
mul-1-negN/A
lower-/.f64N/A
mul-1-negN/A
unpow2N/A
distribute-rgt-neg-inN/A
lower-*.f64N/A
lower-neg.f6479.4
Simplified79.4%
Final simplification79.3%
(FPCore (u v t1) :precision binary64 (let* ((t_1 (/ v (- u)))) (if (<= u -1.26e+138) t_1 (if (<= u 1.7e+222) (- (/ v t1)) t_1))))
double code(double u, double v, double t1) {
double t_1 = v / -u;
double tmp;
if (u <= -1.26e+138) {
tmp = t_1;
} else if (u <= 1.7e+222) {
tmp = -(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
if (u <= (-1.26d+138)) then
tmp = t_1
else if (u <= 1.7d+222) then
tmp = -(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;
double tmp;
if (u <= -1.26e+138) {
tmp = t_1;
} else if (u <= 1.7e+222) {
tmp = -(v / t1);
} else {
tmp = t_1;
}
return tmp;
}
def code(u, v, t1): t_1 = v / -u tmp = 0 if u <= -1.26e+138: tmp = t_1 elif u <= 1.7e+222: tmp = -(v / t1) else: tmp = t_1 return tmp
function code(u, v, t1) t_1 = Float64(v / Float64(-u)) tmp = 0.0 if (u <= -1.26e+138) tmp = t_1; elseif (u <= 1.7e+222) tmp = Float64(-Float64(v / t1)); else tmp = t_1; end return tmp end
function tmp_2 = code(u, v, t1) t_1 = v / -u; tmp = 0.0; if (u <= -1.26e+138) tmp = t_1; elseif (u <= 1.7e+222) tmp = -(v / t1); else tmp = t_1; end tmp_2 = tmp; end
code[u_, v_, t1_] := Block[{t$95$1 = N[(v / (-u)), $MachinePrecision]}, If[LessEqual[u, -1.26e+138], t$95$1, If[LessEqual[u, 1.7e+222], (-N[(v / t1), $MachinePrecision]), t$95$1]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := \frac{v}{-u}\\
\mathbf{if}\;u \leq -1.26 \cdot 10^{+138}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;u \leq 1.7 \cdot 10^{+222}:\\
\;\;\;\;-\frac{v}{t1}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if u < -1.25999999999999994e138 or 1.70000000000000008e222 < u Initial program 73.3%
lift-neg.f64N/A
lift-+.f64N/A
lift-+.f64N/A
*-commutativeN/A
lift-neg.f64N/A
neg-mul-1N/A
associate-*r*N/A
times-fracN/A
*-commutativeN/A
neg-mul-1N/A
lower-*.f64N/A
lower-/.f64N/A
lower-neg.f64N/A
lower-/.f6499.9
Applied egg-rr99.9%
Taylor expanded in t1 around inf
Simplified39.3%
Taylor expanded in t1 around 0
mul-1-negN/A
lower-neg.f64N/A
lower-/.f6434.7
Simplified34.7%
if -1.25999999999999994e138 < u < 1.70000000000000008e222Initial program 71.5%
Taylor expanded in t1 around inf
associate-*r/N/A
lower-/.f64N/A
mul-1-negN/A
lower-neg.f6459.4
Simplified59.4%
Final simplification54.8%
(FPCore (u v t1) :precision binary64 (- (/ v (+ t1 u))))
double code(double u, double v, double t1) {
return -(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 = -(v / (t1 + u))
end function
public static double code(double u, double v, double t1) {
return -(v / (t1 + u));
}
def code(u, v, t1): return -(v / (t1 + u))
function code(u, v, t1) return Float64(-Float64(v / Float64(t1 + u))) end
function tmp = code(u, v, t1) tmp = -(v / (t1 + u)); end
code[u_, v_, t1_] := (-N[(v / N[(t1 + u), $MachinePrecision]), $MachinePrecision])
\begin{array}{l}
\\
-\frac{v}{t1 + u}
\end{array}
Initial program 71.8%
lift-neg.f64N/A
lift-+.f64N/A
lift-+.f64N/A
*-commutativeN/A
lift-neg.f64N/A
neg-mul-1N/A
associate-*r*N/A
times-fracN/A
*-commutativeN/A
neg-mul-1N/A
lower-*.f64N/A
lower-/.f64N/A
lower-neg.f64N/A
lower-/.f6498.4
Applied egg-rr98.4%
Taylor expanded in t1 around inf
Simplified56.8%
lift-+.f64N/A
lift-neg.f64N/A
lift-/.f64N/A
*-rgt-identity56.8
Applied egg-rr56.8%
Final simplification56.8%
(FPCore (u v t1) :precision binary64 (/ v (- u)))
double code(double u, double v, double t1) {
return v / -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 / -u
end function
public static double code(double u, double v, double t1) {
return v / -u;
}
def code(u, v, t1): return v / -u
function code(u, v, t1) return Float64(v / Float64(-u)) end
function tmp = code(u, v, t1) tmp = v / -u; end
code[u_, v_, t1_] := N[(v / (-u)), $MachinePrecision]
\begin{array}{l}
\\
\frac{v}{-u}
\end{array}
Initial program 71.8%
lift-neg.f64N/A
lift-+.f64N/A
lift-+.f64N/A
*-commutativeN/A
lift-neg.f64N/A
neg-mul-1N/A
associate-*r*N/A
times-fracN/A
*-commutativeN/A
neg-mul-1N/A
lower-*.f64N/A
lower-/.f64N/A
lower-neg.f64N/A
lower-/.f6498.4
Applied egg-rr98.4%
Taylor expanded in t1 around inf
Simplified56.8%
Taylor expanded in t1 around 0
mul-1-negN/A
lower-neg.f64N/A
lower-/.f6415.0
Simplified15.0%
Final simplification15.0%
herbie shell --seed 2024207
(FPCore (u v t1)
:name "Rosa's DopplerBench"
:precision binary64
(/ (* (- t1) v) (* (+ t1 u) (+ t1 u))))