
(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(v / Float64(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}
\\
\frac{v}{\left(-t1\right) - u} \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(v / Float64(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 / u)) / Float64(-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}{\left(-t1\right) - 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 -1.05e+154)
t_1
(if (<= t1 -1.1e-130)
t_2
(if (<= t1 1.3e-283)
(/ (* v (/ t1 u)) (- u))
(if (<= t1 5.7e+110) 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 <= -1.05e+154) {
tmp = t_1;
} else if (t1 <= -1.1e-130) {
tmp = t_2;
} else if (t1 <= 1.3e-283) {
tmp = (v * (t1 / u)) / -u;
} else if (t1 <= 5.7e+110) {
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 <= (-1.05d+154)) then
tmp = t_1
else if (t1 <= (-1.1d-130)) then
tmp = t_2
else if (t1 <= 1.3d-283) then
tmp = (v * (t1 / u)) / -u
else if (t1 <= 5.7d+110) 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 <= -1.05e+154) {
tmp = t_1;
} else if (t1 <= -1.1e-130) {
tmp = t_2;
} else if (t1 <= 1.3e-283) {
tmp = (v * (t1 / u)) / -u;
} else if (t1 <= 5.7e+110) {
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 <= -1.05e+154: tmp = t_1 elif t1 <= -1.1e-130: tmp = t_2 elif t1 <= 1.3e-283: tmp = (v * (t1 / u)) / -u elif t1 <= 5.7e+110: tmp = t_2 else: tmp = t_1 return tmp
function code(u, v, t1) t_1 = Float64(v / Float64(Float64(-t1) - u)) t_2 = Float64(v * Float64(Float64(-t1) / Float64(Float64(t1 + u) * Float64(t1 + u)))) tmp = 0.0 if (t1 <= -1.05e+154) tmp = t_1; elseif (t1 <= -1.1e-130) tmp = t_2; elseif (t1 <= 1.3e-283) tmp = Float64(Float64(v * Float64(t1 / u)) / Float64(-u)); elseif (t1 <= 5.7e+110) 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 <= -1.05e+154) tmp = t_1; elseif (t1 <= -1.1e-130) tmp = t_2; elseif (t1 <= 1.3e-283) tmp = (v * (t1 / u)) / -u; elseif (t1 <= 5.7e+110) 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, -1.05e+154], t$95$1, If[LessEqual[t1, -1.1e-130], t$95$2, If[LessEqual[t1, 1.3e-283], N[(N[(v * N[(t1 / u), $MachinePrecision]), $MachinePrecision] / (-u)), $MachinePrecision], If[LessEqual[t1, 5.7e+110], t$95$2, t$95$1]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := \frac{v}{\left(-t1\right) - u}\\
t_2 := v \cdot \frac{-t1}{\left(t1 + u\right) \cdot \left(t1 + u\right)}\\
\mathbf{if}\;t1 \leq -1.05 \cdot 10^{+154}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;t1 \leq -1.1 \cdot 10^{-130}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;t1 \leq 1.3 \cdot 10^{-283}:\\
\;\;\;\;\frac{v \cdot \frac{t1}{u}}{-u}\\
\mathbf{elif}\;t1 \leq 5.7 \cdot 10^{+110}:\\
\;\;\;\;t\_2\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if t1 < -1.04999999999999997e154 or 5.7000000000000002e110 < 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.04999999999999997e154 < t1 < -1.0999999999999999e-130 or 1.3000000000000001e-283 < t1 < 5.7000000000000002e110Initial 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 -1.0999999999999999e-130 < t1 < 1.3000000000000001e-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 -9.5e+153)
t_1
(if (<= t1 -1.1e-130)
t_2
(if (<= t1 1.9e-299)
(* (- (/ t1 u)) (/ v u))
(if (<= t1 1.4e+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 <= -9.5e+153) {
tmp = t_1;
} else if (t1 <= -1.1e-130) {
tmp = t_2;
} else if (t1 <= 1.9e-299) {
tmp = -(t1 / u) * (v / u);
} else if (t1 <= 1.4e+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 <= (-9.5d+153)) then
tmp = t_1
else if (t1 <= (-1.1d-130)) then
tmp = t_2
else if (t1 <= 1.9d-299) then
tmp = -(t1 / u) * (v / u)
else if (t1 <= 1.4d+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 <= -9.5e+153) {
tmp = t_1;
} else if (t1 <= -1.1e-130) {
tmp = t_2;
} else if (t1 <= 1.9e-299) {
tmp = -(t1 / u) * (v / u);
} else if (t1 <= 1.4e+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 <= -9.5e+153: tmp = t_1 elif t1 <= -1.1e-130: tmp = t_2 elif t1 <= 1.9e-299: tmp = -(t1 / u) * (v / u) elif t1 <= 1.4e+112: tmp = t_2 else: tmp = t_1 return tmp
function code(u, v, t1) t_1 = Float64(v / Float64(Float64(-t1) - u)) t_2 = Float64(v * Float64(Float64(-t1) / Float64(Float64(t1 + u) * Float64(t1 + u)))) tmp = 0.0 if (t1 <= -9.5e+153) tmp = t_1; elseif (t1 <= -1.1e-130) tmp = t_2; elseif (t1 <= 1.9e-299) tmp = Float64(Float64(-Float64(t1 / u)) * Float64(v / u)); elseif (t1 <= 1.4e+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 <= -9.5e+153) tmp = t_1; elseif (t1 <= -1.1e-130) tmp = t_2; elseif (t1 <= 1.9e-299) tmp = -(t1 / u) * (v / u); elseif (t1 <= 1.4e+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, -9.5e+153], t$95$1, If[LessEqual[t1, -1.1e-130], t$95$2, If[LessEqual[t1, 1.9e-299], N[((-N[(t1 / u), $MachinePrecision]) * N[(v / u), $MachinePrecision]), $MachinePrecision], If[LessEqual[t1, 1.4e+112], t$95$2, t$95$1]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := \frac{v}{\left(-t1\right) - u}\\
t_2 := v \cdot \frac{-t1}{\left(t1 + u\right) \cdot \left(t1 + u\right)}\\
\mathbf{if}\;t1 \leq -9.5 \cdot 10^{+153}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;t1 \leq -1.1 \cdot 10^{-130}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;t1 \leq 1.9 \cdot 10^{-299}:\\
\;\;\;\;\left(-\frac{t1}{u}\right) \cdot \frac{v}{u}\\
\mathbf{elif}\;t1 \leq 1.4 \cdot 10^{+112}:\\
\;\;\;\;t\_2\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if t1 < -9.4999999999999995e153 or 1.4000000000000001e112 < 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 -9.4999999999999995e153 < t1 < -1.0999999999999999e-130 or 1.9000000000000001e-299 < t1 < 1.4000000000000001e112Initial 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 -1.0999999999999999e-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 -4.5e+153)
t_1
(if (<= t1 1.4e+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 <= -4.5e+153) {
tmp = t_1;
} else if (t1 <= 1.4e+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 <= (-4.5d+153)) then
tmp = t_1
else if (t1 <= 1.4d+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 <= -4.5e+153) {
tmp = t_1;
} else if (t1 <= 1.4e+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 <= -4.5e+153: tmp = t_1 elif t1 <= 1.4e+112: tmp = v * (-t1 / ((t1 + u) * (t1 + u))) else: tmp = t_1 return tmp
function code(u, v, t1) t_1 = Float64(v / Float64(Float64(-t1) - u)) tmp = 0.0 if (t1 <= -4.5e+153) tmp = t_1; elseif (t1 <= 1.4e+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 <= -4.5e+153) tmp = t_1; elseif (t1 <= 1.4e+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, -4.5e+153], t$95$1, If[LessEqual[t1, 1.4e+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}{\left(-t1\right) - u}\\
\mathbf{if}\;t1 \leq -4.5 \cdot 10^{+153}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;t1 \leq 1.4 \cdot 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 < -4.5000000000000001e153 or 1.4000000000000001e112 < 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 -4.5000000000000001e153 < t1 < 1.4000000000000001e112Initial 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 -0.7) t_1 (if (<= u 34000000000.0) (/ v (- t1)) t_1))))
double code(double u, double v, double t1) {
double t_1 = -t1 * ((v / u) / u);
double tmp;
if (u <= -0.7) {
tmp = t_1;
} else if (u <= 34000000000.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 <= (-0.7d0)) then
tmp = t_1
else if (u <= 34000000000.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 <= -0.7) {
tmp = t_1;
} else if (u <= 34000000000.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 <= -0.7: tmp = t_1 elif u <= 34000000000.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 <= -0.7) tmp = t_1; elseif (u <= 34000000000.0) tmp = Float64(v / Float64(-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 <= -0.7) tmp = t_1; elseif (u <= 34000000000.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, -0.7], t$95$1, If[LessEqual[u, 34000000000.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 -0.7:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;u \leq 34000000000:\\
\;\;\;\;\frac{v}{-t1}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if u < -0.69999999999999996 or 3.4e10 < 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 -0.69999999999999996 < u < 3.4e10Initial 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 -1.95e-84)
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 <= -1.95e-84) {
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 <= (-1.95d-84)) 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 <= -1.95e-84) {
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 <= -1.95e-84: 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(v / Float64(Float64(-t1) - u)) tmp = 0.0 if (t1 <= -1.95e-84) tmp = t_1; elseif (t1 <= 1.45e+54) tmp = Float64(t1 * Float64(v / Float64(u * Float64(-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 <= -1.95e-84) 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, -1.95e-84], 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}{\left(-t1\right) - u}\\
\mathbf{if}\;t1 \leq -1.95 \cdot 10^{-84}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;t1 \leq 1.45 \cdot 10^{+54}:\\
\;\;\;\;t1 \cdot \frac{v}{u \cdot \left(-u\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if t1 < -1.95000000000000011e-84 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 -1.95000000000000011e-84 < 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.4e+138) t_1 (if (<= u 3.35e+221) (/ v (- t1)) t_1))))
double code(double u, double v, double t1) {
double t_1 = -(v / u);
double tmp;
if (u <= -1.4e+138) {
tmp = t_1;
} else if (u <= 3.35e+221) {
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.4d+138)) then
tmp = t_1
else if (u <= 3.35d+221) 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.4e+138) {
tmp = t_1;
} else if (u <= 3.35e+221) {
tmp = v / -t1;
} else {
tmp = t_1;
}
return tmp;
}
def code(u, v, t1): t_1 = -(v / u) tmp = 0 if u <= -1.4e+138: tmp = t_1 elif u <= 3.35e+221: tmp = v / -t1 else: tmp = t_1 return tmp
function code(u, v, t1) t_1 = Float64(-Float64(v / u)) tmp = 0.0 if (u <= -1.4e+138) tmp = t_1; elseif (u <= 3.35e+221) tmp = Float64(v / Float64(-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.4e+138) tmp = t_1; elseif (u <= 3.35e+221) 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.4e+138], t$95$1, If[LessEqual[u, 3.35e+221], N[(v / (-t1)), $MachinePrecision], t$95$1]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := -\frac{v}{u}\\
\mathbf{if}\;u \leq -1.4 \cdot 10^{+138}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;u \leq 3.35 \cdot 10^{+221}:\\
\;\;\;\;\frac{v}{-t1}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if u < -1.4e138 or 3.35000000000000008e221 < 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.4e138 < u < 3.35000000000000008e221Initial 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(v / Float64(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}{\left(-t1\right) - 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(-Float64(v / 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%
herbie shell --seed 2024207
(FPCore (u v t1)
:name "Rosa's DopplerBench"
:precision binary64
(/ (* (- t1) v) (* (+ t1 u) (+ t1 u))))