
(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 11 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}
v\_m = (fabs.f64 v)
v\_s = (copysign.f64 #s(literal 1 binary64) v)
(FPCore (v_s u v_m t1)
:precision binary64
(let* ((t_1 (/ v_m (+ t1 u))))
(*
v_s
(if (<= v_m 4.1e+167)
(/ t_1 (- -1.0 (/ u t1)))
(* t1 (/ t_1 (- (- 0.0 u) t1)))))))v\_m = fabs(v);
v\_s = copysign(1.0, v);
double code(double v_s, double u, double v_m, double t1) {
double t_1 = v_m / (t1 + u);
double tmp;
if (v_m <= 4.1e+167) {
tmp = t_1 / (-1.0 - (u / t1));
} else {
tmp = t1 * (t_1 / ((0.0 - u) - t1));
}
return v_s * tmp;
}
v\_m = abs(v)
v\_s = copysign(1.0d0, v)
real(8) function code(v_s, u, v_m, t1)
real(8), intent (in) :: v_s
real(8), intent (in) :: u
real(8), intent (in) :: v_m
real(8), intent (in) :: t1
real(8) :: t_1
real(8) :: tmp
t_1 = v_m / (t1 + u)
if (v_m <= 4.1d+167) then
tmp = t_1 / ((-1.0d0) - (u / t1))
else
tmp = t1 * (t_1 / ((0.0d0 - u) - t1))
end if
code = v_s * tmp
end function
v\_m = Math.abs(v);
v\_s = Math.copySign(1.0, v);
public static double code(double v_s, double u, double v_m, double t1) {
double t_1 = v_m / (t1 + u);
double tmp;
if (v_m <= 4.1e+167) {
tmp = t_1 / (-1.0 - (u / t1));
} else {
tmp = t1 * (t_1 / ((0.0 - u) - t1));
}
return v_s * tmp;
}
v\_m = math.fabs(v) v\_s = math.copysign(1.0, v) def code(v_s, u, v_m, t1): t_1 = v_m / (t1 + u) tmp = 0 if v_m <= 4.1e+167: tmp = t_1 / (-1.0 - (u / t1)) else: tmp = t1 * (t_1 / ((0.0 - u) - t1)) return v_s * tmp
v\_m = abs(v) v\_s = copysign(1.0, v) function code(v_s, u, v_m, t1) t_1 = Float64(v_m / Float64(t1 + u)) tmp = 0.0 if (v_m <= 4.1e+167) tmp = Float64(t_1 / Float64(-1.0 - Float64(u / t1))); else tmp = Float64(t1 * Float64(t_1 / Float64(Float64(0.0 - u) - t1))); end return Float64(v_s * tmp) end
v\_m = abs(v); v\_s = sign(v) * abs(1.0); function tmp_2 = code(v_s, u, v_m, t1) t_1 = v_m / (t1 + u); tmp = 0.0; if (v_m <= 4.1e+167) tmp = t_1 / (-1.0 - (u / t1)); else tmp = t1 * (t_1 / ((0.0 - u) - t1)); end tmp_2 = v_s * tmp; end
v\_m = N[Abs[v], $MachinePrecision]
v\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[v]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[v$95$s_, u_, v$95$m_, t1_] := Block[{t$95$1 = N[(v$95$m / N[(t1 + u), $MachinePrecision]), $MachinePrecision]}, N[(v$95$s * If[LessEqual[v$95$m, 4.1e+167], N[(t$95$1 / N[(-1.0 - N[(u / t1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t1 * N[(t$95$1 / N[(N[(0.0 - u), $MachinePrecision] - t1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]), $MachinePrecision]]
\begin{array}{l}
v\_m = \left|v\right|
\\
v\_s = \mathsf{copysign}\left(1, v\right)
\\
\begin{array}{l}
t_1 := \frac{v\_m}{t1 + u}\\
v\_s \cdot \begin{array}{l}
\mathbf{if}\;v\_m \leq 4.1 \cdot 10^{+167}:\\
\;\;\;\;\frac{t\_1}{-1 - \frac{u}{t1}}\\
\mathbf{else}:\\
\;\;\;\;t1 \cdot \frac{t\_1}{\left(0 - u\right) - t1}\\
\end{array}
\end{array}
\end{array}
if v < 4.1e167Initial program 75.6%
*-commutativeN/A
times-fracN/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
frac-2negN/A
remove-double-negN/A
/-lowering-/.f64N/A
neg-sub0N/A
--lowering--.f64N/A
+-lowering-+.f6497.9%
Applied egg-rr97.9%
Taylor expanded in t1 around inf
sub-negN/A
metadata-evalN/A
+-commutativeN/A
mul-1-negN/A
unsub-negN/A
--lowering--.f64N/A
/-lowering-/.f6497.9%
Simplified97.9%
if 4.1e167 < v Initial program 45.4%
associate-/l*N/A
distribute-lft-neg-outN/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
neg-lowering-neg.f64N/A
associate-/r*N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
+-lowering-+.f6495.6%
Applied egg-rr95.6%
Final simplification97.7%
v\_m = (fabs.f64 v)
v\_s = (copysign.f64 #s(literal 1 binary64) v)
(FPCore (v_s u v_m t1)
:precision binary64
(let* ((t_1 (- 0.0 (/ (/ t1 (/ (+ t1 u) v_m)) u))))
(*
v_s
(if (<= u -9e-24)
t_1
(if (<= u 1.65e-26) (* (* t1 (/ v_m (+ t1 u))) (/ -1.0 t1)) t_1)))))v\_m = fabs(v);
v\_s = copysign(1.0, v);
double code(double v_s, double u, double v_m, double t1) {
double t_1 = 0.0 - ((t1 / ((t1 + u) / v_m)) / u);
double tmp;
if (u <= -9e-24) {
tmp = t_1;
} else if (u <= 1.65e-26) {
tmp = (t1 * (v_m / (t1 + u))) * (-1.0 / t1);
} else {
tmp = t_1;
}
return v_s * tmp;
}
v\_m = abs(v)
v\_s = copysign(1.0d0, v)
real(8) function code(v_s, u, v_m, t1)
real(8), intent (in) :: v_s
real(8), intent (in) :: u
real(8), intent (in) :: v_m
real(8), intent (in) :: t1
real(8) :: t_1
real(8) :: tmp
t_1 = 0.0d0 - ((t1 / ((t1 + u) / v_m)) / u)
if (u <= (-9d-24)) then
tmp = t_1
else if (u <= 1.65d-26) then
tmp = (t1 * (v_m / (t1 + u))) * ((-1.0d0) / t1)
else
tmp = t_1
end if
code = v_s * tmp
end function
v\_m = Math.abs(v);
v\_s = Math.copySign(1.0, v);
public static double code(double v_s, double u, double v_m, double t1) {
double t_1 = 0.0 - ((t1 / ((t1 + u) / v_m)) / u);
double tmp;
if (u <= -9e-24) {
tmp = t_1;
} else if (u <= 1.65e-26) {
tmp = (t1 * (v_m / (t1 + u))) * (-1.0 / t1);
} else {
tmp = t_1;
}
return v_s * tmp;
}
v\_m = math.fabs(v) v\_s = math.copysign(1.0, v) def code(v_s, u, v_m, t1): t_1 = 0.0 - ((t1 / ((t1 + u) / v_m)) / u) tmp = 0 if u <= -9e-24: tmp = t_1 elif u <= 1.65e-26: tmp = (t1 * (v_m / (t1 + u))) * (-1.0 / t1) else: tmp = t_1 return v_s * tmp
v\_m = abs(v) v\_s = copysign(1.0, v) function code(v_s, u, v_m, t1) t_1 = Float64(0.0 - Float64(Float64(t1 / Float64(Float64(t1 + u) / v_m)) / u)) tmp = 0.0 if (u <= -9e-24) tmp = t_1; elseif (u <= 1.65e-26) tmp = Float64(Float64(t1 * Float64(v_m / Float64(t1 + u))) * Float64(-1.0 / t1)); else tmp = t_1; end return Float64(v_s * tmp) end
v\_m = abs(v); v\_s = sign(v) * abs(1.0); function tmp_2 = code(v_s, u, v_m, t1) t_1 = 0.0 - ((t1 / ((t1 + u) / v_m)) / u); tmp = 0.0; if (u <= -9e-24) tmp = t_1; elseif (u <= 1.65e-26) tmp = (t1 * (v_m / (t1 + u))) * (-1.0 / t1); else tmp = t_1; end tmp_2 = v_s * tmp; end
v\_m = N[Abs[v], $MachinePrecision]
v\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[v]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[v$95$s_, u_, v$95$m_, t1_] := Block[{t$95$1 = N[(0.0 - N[(N[(t1 / N[(N[(t1 + u), $MachinePrecision] / v$95$m), $MachinePrecision]), $MachinePrecision] / u), $MachinePrecision]), $MachinePrecision]}, N[(v$95$s * If[LessEqual[u, -9e-24], t$95$1, If[LessEqual[u, 1.65e-26], N[(N[(t1 * N[(v$95$m / N[(t1 + u), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(-1.0 / t1), $MachinePrecision]), $MachinePrecision], t$95$1]]), $MachinePrecision]]
\begin{array}{l}
v\_m = \left|v\right|
\\
v\_s = \mathsf{copysign}\left(1, v\right)
\\
\begin{array}{l}
t_1 := 0 - \frac{\frac{t1}{\frac{t1 + u}{v\_m}}}{u}\\
v\_s \cdot \begin{array}{l}
\mathbf{if}\;u \leq -9 \cdot 10^{-24}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;u \leq 1.65 \cdot 10^{-26}:\\
\;\;\;\;\left(t1 \cdot \frac{v\_m}{t1 + u}\right) \cdot \frac{-1}{t1}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
\end{array}
if u < -8.9999999999999995e-24 or 1.6499999999999999e-26 < u Initial program 82.7%
Taylor expanded in t1 around 0
Simplified73.4%
associate-/r*N/A
associate-/l*N/A
distribute-lft-neg-inN/A
distribute-frac-negN/A
neg-lowering-neg.f64N/A
/-lowering-/.f64N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f6486.6%
Applied egg-rr86.6%
if -8.9999999999999995e-24 < u < 1.6499999999999999e-26Initial program 61.8%
remove-double-negN/A
neg-mul-1N/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
distribute-lft-neg-outN/A
remove-double-negN/A
associate-/l*N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f6495.7%
Applied egg-rr95.7%
Taylor expanded in t1 around inf
/-lowering-/.f6482.7%
Simplified82.7%
Final simplification84.8%
v\_m = (fabs.f64 v) v\_s = (copysign.f64 #s(literal 1 binary64) v) (FPCore (v_s u v_m t1) :precision binary64 (let* ((t_1 (- 0.0 (/ (/ t1 (/ (+ t1 u) v_m)) u)))) (* v_s (if (<= u -5e-26) t_1 (if (<= u 7.2e-29) (- 0.0 (/ v_m t1)) t_1)))))
v\_m = fabs(v);
v\_s = copysign(1.0, v);
double code(double v_s, double u, double v_m, double t1) {
double t_1 = 0.0 - ((t1 / ((t1 + u) / v_m)) / u);
double tmp;
if (u <= -5e-26) {
tmp = t_1;
} else if (u <= 7.2e-29) {
tmp = 0.0 - (v_m / t1);
} else {
tmp = t_1;
}
return v_s * tmp;
}
v\_m = abs(v)
v\_s = copysign(1.0d0, v)
real(8) function code(v_s, u, v_m, t1)
real(8), intent (in) :: v_s
real(8), intent (in) :: u
real(8), intent (in) :: v_m
real(8), intent (in) :: t1
real(8) :: t_1
real(8) :: tmp
t_1 = 0.0d0 - ((t1 / ((t1 + u) / v_m)) / u)
if (u <= (-5d-26)) then
tmp = t_1
else if (u <= 7.2d-29) then
tmp = 0.0d0 - (v_m / t1)
else
tmp = t_1
end if
code = v_s * tmp
end function
v\_m = Math.abs(v);
v\_s = Math.copySign(1.0, v);
public static double code(double v_s, double u, double v_m, double t1) {
double t_1 = 0.0 - ((t1 / ((t1 + u) / v_m)) / u);
double tmp;
if (u <= -5e-26) {
tmp = t_1;
} else if (u <= 7.2e-29) {
tmp = 0.0 - (v_m / t1);
} else {
tmp = t_1;
}
return v_s * tmp;
}
v\_m = math.fabs(v) v\_s = math.copysign(1.0, v) def code(v_s, u, v_m, t1): t_1 = 0.0 - ((t1 / ((t1 + u) / v_m)) / u) tmp = 0 if u <= -5e-26: tmp = t_1 elif u <= 7.2e-29: tmp = 0.0 - (v_m / t1) else: tmp = t_1 return v_s * tmp
v\_m = abs(v) v\_s = copysign(1.0, v) function code(v_s, u, v_m, t1) t_1 = Float64(0.0 - Float64(Float64(t1 / Float64(Float64(t1 + u) / v_m)) / u)) tmp = 0.0 if (u <= -5e-26) tmp = t_1; elseif (u <= 7.2e-29) tmp = Float64(0.0 - Float64(v_m / t1)); else tmp = t_1; end return Float64(v_s * tmp) end
v\_m = abs(v); v\_s = sign(v) * abs(1.0); function tmp_2 = code(v_s, u, v_m, t1) t_1 = 0.0 - ((t1 / ((t1 + u) / v_m)) / u); tmp = 0.0; if (u <= -5e-26) tmp = t_1; elseif (u <= 7.2e-29) tmp = 0.0 - (v_m / t1); else tmp = t_1; end tmp_2 = v_s * tmp; end
v\_m = N[Abs[v], $MachinePrecision]
v\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[v]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[v$95$s_, u_, v$95$m_, t1_] := Block[{t$95$1 = N[(0.0 - N[(N[(t1 / N[(N[(t1 + u), $MachinePrecision] / v$95$m), $MachinePrecision]), $MachinePrecision] / u), $MachinePrecision]), $MachinePrecision]}, N[(v$95$s * If[LessEqual[u, -5e-26], t$95$1, If[LessEqual[u, 7.2e-29], N[(0.0 - N[(v$95$m / t1), $MachinePrecision]), $MachinePrecision], t$95$1]]), $MachinePrecision]]
\begin{array}{l}
v\_m = \left|v\right|
\\
v\_s = \mathsf{copysign}\left(1, v\right)
\\
\begin{array}{l}
t_1 := 0 - \frac{\frac{t1}{\frac{t1 + u}{v\_m}}}{u}\\
v\_s \cdot \begin{array}{l}
\mathbf{if}\;u \leq -5 \cdot 10^{-26}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;u \leq 7.2 \cdot 10^{-29}:\\
\;\;\;\;0 - \frac{v\_m}{t1}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
\end{array}
if u < -5.00000000000000019e-26 or 7.19999999999999948e-29 < u Initial program 82.7%
Taylor expanded in t1 around 0
Simplified73.4%
associate-/r*N/A
associate-/l*N/A
distribute-lft-neg-inN/A
distribute-frac-negN/A
neg-lowering-neg.f64N/A
/-lowering-/.f64N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f6486.6%
Applied egg-rr86.6%
if -5.00000000000000019e-26 < u < 7.19999999999999948e-29Initial program 61.8%
Taylor expanded in t1 around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f64N/A
/-lowering-/.f6482.2%
Simplified82.2%
sub0-negN/A
neg-lowering-neg.f64N/A
/-lowering-/.f6482.2%
Applied egg-rr82.2%
Final simplification84.6%
v\_m = (fabs.f64 v)
v\_s = (copysign.f64 #s(literal 1 binary64) v)
(FPCore (v_s u v_m t1)
:precision binary64
(let* ((t_1 (/ (/ t1 (/ u v_m)) (- 0.0 u))))
(*
v_s
(if (<= u -1.55e-22) t_1 (if (<= u 8.8e-28) (- 0.0 (/ v_m t1)) t_1)))))v\_m = fabs(v);
v\_s = copysign(1.0, v);
double code(double v_s, double u, double v_m, double t1) {
double t_1 = (t1 / (u / v_m)) / (0.0 - u);
double tmp;
if (u <= -1.55e-22) {
tmp = t_1;
} else if (u <= 8.8e-28) {
tmp = 0.0 - (v_m / t1);
} else {
tmp = t_1;
}
return v_s * tmp;
}
v\_m = abs(v)
v\_s = copysign(1.0d0, v)
real(8) function code(v_s, u, v_m, t1)
real(8), intent (in) :: v_s
real(8), intent (in) :: u
real(8), intent (in) :: v_m
real(8), intent (in) :: t1
real(8) :: t_1
real(8) :: tmp
t_1 = (t1 / (u / v_m)) / (0.0d0 - u)
if (u <= (-1.55d-22)) then
tmp = t_1
else if (u <= 8.8d-28) then
tmp = 0.0d0 - (v_m / t1)
else
tmp = t_1
end if
code = v_s * tmp
end function
v\_m = Math.abs(v);
v\_s = Math.copySign(1.0, v);
public static double code(double v_s, double u, double v_m, double t1) {
double t_1 = (t1 / (u / v_m)) / (0.0 - u);
double tmp;
if (u <= -1.55e-22) {
tmp = t_1;
} else if (u <= 8.8e-28) {
tmp = 0.0 - (v_m / t1);
} else {
tmp = t_1;
}
return v_s * tmp;
}
v\_m = math.fabs(v) v\_s = math.copysign(1.0, v) def code(v_s, u, v_m, t1): t_1 = (t1 / (u / v_m)) / (0.0 - u) tmp = 0 if u <= -1.55e-22: tmp = t_1 elif u <= 8.8e-28: tmp = 0.0 - (v_m / t1) else: tmp = t_1 return v_s * tmp
v\_m = abs(v) v\_s = copysign(1.0, v) function code(v_s, u, v_m, t1) t_1 = Float64(Float64(t1 / Float64(u / v_m)) / Float64(0.0 - u)) tmp = 0.0 if (u <= -1.55e-22) tmp = t_1; elseif (u <= 8.8e-28) tmp = Float64(0.0 - Float64(v_m / t1)); else tmp = t_1; end return Float64(v_s * tmp) end
v\_m = abs(v); v\_s = sign(v) * abs(1.0); function tmp_2 = code(v_s, u, v_m, t1) t_1 = (t1 / (u / v_m)) / (0.0 - u); tmp = 0.0; if (u <= -1.55e-22) tmp = t_1; elseif (u <= 8.8e-28) tmp = 0.0 - (v_m / t1); else tmp = t_1; end tmp_2 = v_s * tmp; end
v\_m = N[Abs[v], $MachinePrecision]
v\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[v]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[v$95$s_, u_, v$95$m_, t1_] := Block[{t$95$1 = N[(N[(t1 / N[(u / v$95$m), $MachinePrecision]), $MachinePrecision] / N[(0.0 - u), $MachinePrecision]), $MachinePrecision]}, N[(v$95$s * If[LessEqual[u, -1.55e-22], t$95$1, If[LessEqual[u, 8.8e-28], N[(0.0 - N[(v$95$m / t1), $MachinePrecision]), $MachinePrecision], t$95$1]]), $MachinePrecision]]
\begin{array}{l}
v\_m = \left|v\right|
\\
v\_s = \mathsf{copysign}\left(1, v\right)
\\
\begin{array}{l}
t_1 := \frac{\frac{t1}{\frac{u}{v\_m}}}{0 - u}\\
v\_s \cdot \begin{array}{l}
\mathbf{if}\;u \leq -1.55 \cdot 10^{-22}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;u \leq 8.8 \cdot 10^{-28}:\\
\;\;\;\;0 - \frac{v\_m}{t1}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
\end{array}
if u < -1.55000000000000006e-22 or 8.79999999999999984e-28 < u Initial program 82.7%
Taylor expanded in t1 around 0
Simplified73.4%
associate-/r*N/A
associate-/l*N/A
distribute-lft-neg-inN/A
distribute-frac-negN/A
neg-lowering-neg.f64N/A
/-lowering-/.f64N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f6486.6%
Applied egg-rr86.6%
Taylor expanded in t1 around 0
Simplified82.5%
if -1.55000000000000006e-22 < u < 8.79999999999999984e-28Initial program 61.8%
Taylor expanded in t1 around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f64N/A
/-lowering-/.f6482.2%
Simplified82.2%
sub0-negN/A
neg-lowering-neg.f64N/A
/-lowering-/.f6482.2%
Applied egg-rr82.2%
Final simplification82.4%
v\_m = (fabs.f64 v)
v\_s = (copysign.f64 #s(literal 1 binary64) v)
(FPCore (v_s u v_m t1)
:precision binary64
(let* ((t_1 (/ v_m (- (- 0.0 u) t1))))
(*
v_s
(if (<= t1 -2.8e-39)
t_1
(if (<= t1 2.7e+50) (/ (- 0.0 v_m) (/ u (/ t1 u))) t_1)))))v\_m = fabs(v);
v\_s = copysign(1.0, v);
double code(double v_s, double u, double v_m, double t1) {
double t_1 = v_m / ((0.0 - u) - t1);
double tmp;
if (t1 <= -2.8e-39) {
tmp = t_1;
} else if (t1 <= 2.7e+50) {
tmp = (0.0 - v_m) / (u / (t1 / u));
} else {
tmp = t_1;
}
return v_s * tmp;
}
v\_m = abs(v)
v\_s = copysign(1.0d0, v)
real(8) function code(v_s, u, v_m, t1)
real(8), intent (in) :: v_s
real(8), intent (in) :: u
real(8), intent (in) :: v_m
real(8), intent (in) :: t1
real(8) :: t_1
real(8) :: tmp
t_1 = v_m / ((0.0d0 - u) - t1)
if (t1 <= (-2.8d-39)) then
tmp = t_1
else if (t1 <= 2.7d+50) then
tmp = (0.0d0 - v_m) / (u / (t1 / u))
else
tmp = t_1
end if
code = v_s * tmp
end function
v\_m = Math.abs(v);
v\_s = Math.copySign(1.0, v);
public static double code(double v_s, double u, double v_m, double t1) {
double t_1 = v_m / ((0.0 - u) - t1);
double tmp;
if (t1 <= -2.8e-39) {
tmp = t_1;
} else if (t1 <= 2.7e+50) {
tmp = (0.0 - v_m) / (u / (t1 / u));
} else {
tmp = t_1;
}
return v_s * tmp;
}
v\_m = math.fabs(v) v\_s = math.copysign(1.0, v) def code(v_s, u, v_m, t1): t_1 = v_m / ((0.0 - u) - t1) tmp = 0 if t1 <= -2.8e-39: tmp = t_1 elif t1 <= 2.7e+50: tmp = (0.0 - v_m) / (u / (t1 / u)) else: tmp = t_1 return v_s * tmp
v\_m = abs(v) v\_s = copysign(1.0, v) function code(v_s, u, v_m, t1) t_1 = Float64(v_m / Float64(Float64(0.0 - u) - t1)) tmp = 0.0 if (t1 <= -2.8e-39) tmp = t_1; elseif (t1 <= 2.7e+50) tmp = Float64(Float64(0.0 - v_m) / Float64(u / Float64(t1 / u))); else tmp = t_1; end return Float64(v_s * tmp) end
v\_m = abs(v); v\_s = sign(v) * abs(1.0); function tmp_2 = code(v_s, u, v_m, t1) t_1 = v_m / ((0.0 - u) - t1); tmp = 0.0; if (t1 <= -2.8e-39) tmp = t_1; elseif (t1 <= 2.7e+50) tmp = (0.0 - v_m) / (u / (t1 / u)); else tmp = t_1; end tmp_2 = v_s * tmp; end
v\_m = N[Abs[v], $MachinePrecision]
v\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[v]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[v$95$s_, u_, v$95$m_, t1_] := Block[{t$95$1 = N[(v$95$m / N[(N[(0.0 - u), $MachinePrecision] - t1), $MachinePrecision]), $MachinePrecision]}, N[(v$95$s * If[LessEqual[t1, -2.8e-39], t$95$1, If[LessEqual[t1, 2.7e+50], N[(N[(0.0 - v$95$m), $MachinePrecision] / N[(u / N[(t1 / u), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]), $MachinePrecision]]
\begin{array}{l}
v\_m = \left|v\right|
\\
v\_s = \mathsf{copysign}\left(1, v\right)
\\
\begin{array}{l}
t_1 := \frac{v\_m}{\left(0 - u\right) - t1}\\
v\_s \cdot \begin{array}{l}
\mathbf{if}\;t1 \leq -2.8 \cdot 10^{-39}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;t1 \leq 2.7 \cdot 10^{+50}:\\
\;\;\;\;\frac{0 - v\_m}{\frac{u}{\frac{t1}{u}}}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
\end{array}
if t1 < -2.8000000000000001e-39 or 2.7e50 < t1 Initial program 54.0%
remove-double-negN/A
neg-mul-1N/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
distribute-lft-neg-outN/A
remove-double-negN/A
associate-/l*N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f6499.8%
Applied egg-rr99.8%
Taylor expanded in t1 around inf
Simplified85.0%
associate-*l/N/A
neg-mul-1N/A
distribute-neg-fracN/A
neg-lowering-neg.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f6485.2%
Applied egg-rr85.2%
if -2.8000000000000001e-39 < t1 < 2.7e50Initial program 89.3%
Taylor expanded in t1 around 0
mul-1-negN/A
neg-sub0N/A
--lowering--.f64N/A
*-commutativeN/A
associate-/l*N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6473.0%
Simplified73.0%
sub0-negN/A
neg-lowering-neg.f64N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
clear-numN/A
associate-/r*N/A
clear-numN/A
/-lowering-/.f64N/A
/-lowering-/.f6475.4%
Applied egg-rr75.4%
Final simplification80.0%
v\_m = (fabs.f64 v)
v\_s = (copysign.f64 #s(literal 1 binary64) v)
(FPCore (v_s u v_m t1)
:precision binary64
(*
v_s
(if (<= u -1.8e+228)
(- 0.0 (/ v_m u))
(if (<= u 8.5e+178) (- 0.0 (/ v_m t1)) (/ -1.0 (/ u v_m))))))v\_m = fabs(v);
v\_s = copysign(1.0, v);
double code(double v_s, double u, double v_m, double t1) {
double tmp;
if (u <= -1.8e+228) {
tmp = 0.0 - (v_m / u);
} else if (u <= 8.5e+178) {
tmp = 0.0 - (v_m / t1);
} else {
tmp = -1.0 / (u / v_m);
}
return v_s * tmp;
}
v\_m = abs(v)
v\_s = copysign(1.0d0, v)
real(8) function code(v_s, u, v_m, t1)
real(8), intent (in) :: v_s
real(8), intent (in) :: u
real(8), intent (in) :: v_m
real(8), intent (in) :: t1
real(8) :: tmp
if (u <= (-1.8d+228)) then
tmp = 0.0d0 - (v_m / u)
else if (u <= 8.5d+178) then
tmp = 0.0d0 - (v_m / t1)
else
tmp = (-1.0d0) / (u / v_m)
end if
code = v_s * tmp
end function
v\_m = Math.abs(v);
v\_s = Math.copySign(1.0, v);
public static double code(double v_s, double u, double v_m, double t1) {
double tmp;
if (u <= -1.8e+228) {
tmp = 0.0 - (v_m / u);
} else if (u <= 8.5e+178) {
tmp = 0.0 - (v_m / t1);
} else {
tmp = -1.0 / (u / v_m);
}
return v_s * tmp;
}
v\_m = math.fabs(v) v\_s = math.copysign(1.0, v) def code(v_s, u, v_m, t1): tmp = 0 if u <= -1.8e+228: tmp = 0.0 - (v_m / u) elif u <= 8.5e+178: tmp = 0.0 - (v_m / t1) else: tmp = -1.0 / (u / v_m) return v_s * tmp
v\_m = abs(v) v\_s = copysign(1.0, v) function code(v_s, u, v_m, t1) tmp = 0.0 if (u <= -1.8e+228) tmp = Float64(0.0 - Float64(v_m / u)); elseif (u <= 8.5e+178) tmp = Float64(0.0 - Float64(v_m / t1)); else tmp = Float64(-1.0 / Float64(u / v_m)); end return Float64(v_s * tmp) end
v\_m = abs(v); v\_s = sign(v) * abs(1.0); function tmp_2 = code(v_s, u, v_m, t1) tmp = 0.0; if (u <= -1.8e+228) tmp = 0.0 - (v_m / u); elseif (u <= 8.5e+178) tmp = 0.0 - (v_m / t1); else tmp = -1.0 / (u / v_m); end tmp_2 = v_s * tmp; end
v\_m = N[Abs[v], $MachinePrecision]
v\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[v]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[v$95$s_, u_, v$95$m_, t1_] := N[(v$95$s * If[LessEqual[u, -1.8e+228], N[(0.0 - N[(v$95$m / u), $MachinePrecision]), $MachinePrecision], If[LessEqual[u, 8.5e+178], N[(0.0 - N[(v$95$m / t1), $MachinePrecision]), $MachinePrecision], N[(-1.0 / N[(u / v$95$m), $MachinePrecision]), $MachinePrecision]]]), $MachinePrecision]
\begin{array}{l}
v\_m = \left|v\right|
\\
v\_s = \mathsf{copysign}\left(1, v\right)
\\
v\_s \cdot \begin{array}{l}
\mathbf{if}\;u \leq -1.8 \cdot 10^{+228}:\\
\;\;\;\;0 - \frac{v\_m}{u}\\
\mathbf{elif}\;u \leq 8.5 \cdot 10^{+178}:\\
\;\;\;\;0 - \frac{v\_m}{t1}\\
\mathbf{else}:\\
\;\;\;\;\frac{-1}{\frac{u}{v\_m}}\\
\end{array}
\end{array}
if u < -1.8e228Initial program 82.6%
Taylor expanded in t1 around 0
Simplified82.6%
associate-/r*N/A
associate-/l*N/A
distribute-lft-neg-inN/A
distribute-frac-negN/A
neg-lowering-neg.f64N/A
/-lowering-/.f64N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f64100.0%
Applied egg-rr100.0%
Taylor expanded in t1 around inf
/-lowering-/.f6457.6%
Simplified57.6%
if -1.8e228 < u < 8.49999999999999991e178Initial program 71.7%
Taylor expanded in t1 around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f64N/A
/-lowering-/.f6458.0%
Simplified58.0%
sub0-negN/A
neg-lowering-neg.f64N/A
/-lowering-/.f6458.0%
Applied egg-rr58.0%
if 8.49999999999999991e178 < u Initial program 80.0%
Taylor expanded in t1 around 0
Simplified80.0%
associate-/r*N/A
associate-/l*N/A
distribute-lft-neg-inN/A
distribute-frac-negN/A
neg-lowering-neg.f64N/A
/-lowering-/.f64N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f6499.9%
Applied egg-rr99.9%
Taylor expanded in t1 around inf
/-lowering-/.f6462.8%
Simplified62.8%
neg-mul-1N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
div-invN/A
clear-numN/A
clear-numN/A
metadata-evalN/A
distribute-neg-fracN/A
un-div-invN/A
/-lowering-/.f64N/A
distribute-frac-neg2N/A
frac-2negN/A
metadata-evalN/A
remove-double-divN/A
remove-double-neg62.8%
Applied egg-rr62.8%
Final simplification58.4%
v\_m = (fabs.f64 v)
v\_s = (copysign.f64 #s(literal 1 binary64) v)
(FPCore (v_s u v_m t1)
:precision binary64
(let* ((t_1 (- 0.0 (/ v_m u))))
(*
v_s
(if (<= u -1.8e+228) t_1 (if (<= u 2.5e+178) (- 0.0 (/ v_m t1)) t_1)))))v\_m = fabs(v);
v\_s = copysign(1.0, v);
double code(double v_s, double u, double v_m, double t1) {
double t_1 = 0.0 - (v_m / u);
double tmp;
if (u <= -1.8e+228) {
tmp = t_1;
} else if (u <= 2.5e+178) {
tmp = 0.0 - (v_m / t1);
} else {
tmp = t_1;
}
return v_s * tmp;
}
v\_m = abs(v)
v\_s = copysign(1.0d0, v)
real(8) function code(v_s, u, v_m, t1)
real(8), intent (in) :: v_s
real(8), intent (in) :: u
real(8), intent (in) :: v_m
real(8), intent (in) :: t1
real(8) :: t_1
real(8) :: tmp
t_1 = 0.0d0 - (v_m / u)
if (u <= (-1.8d+228)) then
tmp = t_1
else if (u <= 2.5d+178) then
tmp = 0.0d0 - (v_m / t1)
else
tmp = t_1
end if
code = v_s * tmp
end function
v\_m = Math.abs(v);
v\_s = Math.copySign(1.0, v);
public static double code(double v_s, double u, double v_m, double t1) {
double t_1 = 0.0 - (v_m / u);
double tmp;
if (u <= -1.8e+228) {
tmp = t_1;
} else if (u <= 2.5e+178) {
tmp = 0.0 - (v_m / t1);
} else {
tmp = t_1;
}
return v_s * tmp;
}
v\_m = math.fabs(v) v\_s = math.copysign(1.0, v) def code(v_s, u, v_m, t1): t_1 = 0.0 - (v_m / u) tmp = 0 if u <= -1.8e+228: tmp = t_1 elif u <= 2.5e+178: tmp = 0.0 - (v_m / t1) else: tmp = t_1 return v_s * tmp
v\_m = abs(v) v\_s = copysign(1.0, v) function code(v_s, u, v_m, t1) t_1 = Float64(0.0 - Float64(v_m / u)) tmp = 0.0 if (u <= -1.8e+228) tmp = t_1; elseif (u <= 2.5e+178) tmp = Float64(0.0 - Float64(v_m / t1)); else tmp = t_1; end return Float64(v_s * tmp) end
v\_m = abs(v); v\_s = sign(v) * abs(1.0); function tmp_2 = code(v_s, u, v_m, t1) t_1 = 0.0 - (v_m / u); tmp = 0.0; if (u <= -1.8e+228) tmp = t_1; elseif (u <= 2.5e+178) tmp = 0.0 - (v_m / t1); else tmp = t_1; end tmp_2 = v_s * tmp; end
v\_m = N[Abs[v], $MachinePrecision]
v\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[v]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[v$95$s_, u_, v$95$m_, t1_] := Block[{t$95$1 = N[(0.0 - N[(v$95$m / u), $MachinePrecision]), $MachinePrecision]}, N[(v$95$s * If[LessEqual[u, -1.8e+228], t$95$1, If[LessEqual[u, 2.5e+178], N[(0.0 - N[(v$95$m / t1), $MachinePrecision]), $MachinePrecision], t$95$1]]), $MachinePrecision]]
\begin{array}{l}
v\_m = \left|v\right|
\\
v\_s = \mathsf{copysign}\left(1, v\right)
\\
\begin{array}{l}
t_1 := 0 - \frac{v\_m}{u}\\
v\_s \cdot \begin{array}{l}
\mathbf{if}\;u \leq -1.8 \cdot 10^{+228}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;u \leq 2.5 \cdot 10^{+178}:\\
\;\;\;\;0 - \frac{v\_m}{t1}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
\end{array}
if u < -1.8e228 or 2.49999999999999995e178 < u Initial program 80.8%
Taylor expanded in t1 around 0
Simplified80.8%
associate-/r*N/A
associate-/l*N/A
distribute-lft-neg-inN/A
distribute-frac-negN/A
neg-lowering-neg.f64N/A
/-lowering-/.f64N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f64100.0%
Applied egg-rr100.0%
Taylor expanded in t1 around inf
/-lowering-/.f6461.1%
Simplified61.1%
if -1.8e228 < u < 2.49999999999999995e178Initial program 71.7%
Taylor expanded in t1 around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f64N/A
/-lowering-/.f6458.0%
Simplified58.0%
sub0-negN/A
neg-lowering-neg.f64N/A
/-lowering-/.f6458.0%
Applied egg-rr58.0%
Final simplification58.4%
v\_m = (fabs.f64 v) v\_s = (copysign.f64 #s(literal 1 binary64) v) (FPCore (v_s u v_m t1) :precision binary64 (* v_s (* (/ -1.0 (+ t1 u)) (* t1 (/ v_m (+ t1 u))))))
v\_m = fabs(v);
v\_s = copysign(1.0, v);
double code(double v_s, double u, double v_m, double t1) {
return v_s * ((-1.0 / (t1 + u)) * (t1 * (v_m / (t1 + u))));
}
v\_m = abs(v)
v\_s = copysign(1.0d0, v)
real(8) function code(v_s, u, v_m, t1)
real(8), intent (in) :: v_s
real(8), intent (in) :: u
real(8), intent (in) :: v_m
real(8), intent (in) :: t1
code = v_s * (((-1.0d0) / (t1 + u)) * (t1 * (v_m / (t1 + u))))
end function
v\_m = Math.abs(v);
v\_s = Math.copySign(1.0, v);
public static double code(double v_s, double u, double v_m, double t1) {
return v_s * ((-1.0 / (t1 + u)) * (t1 * (v_m / (t1 + u))));
}
v\_m = math.fabs(v) v\_s = math.copysign(1.0, v) def code(v_s, u, v_m, t1): return v_s * ((-1.0 / (t1 + u)) * (t1 * (v_m / (t1 + u))))
v\_m = abs(v) v\_s = copysign(1.0, v) function code(v_s, u, v_m, t1) return Float64(v_s * Float64(Float64(-1.0 / Float64(t1 + u)) * Float64(t1 * Float64(v_m / Float64(t1 + u))))) end
v\_m = abs(v); v\_s = sign(v) * abs(1.0); function tmp = code(v_s, u, v_m, t1) tmp = v_s * ((-1.0 / (t1 + u)) * (t1 * (v_m / (t1 + u)))); end
v\_m = N[Abs[v], $MachinePrecision]
v\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[v]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[v$95$s_, u_, v$95$m_, t1_] := N[(v$95$s * N[(N[(-1.0 / N[(t1 + u), $MachinePrecision]), $MachinePrecision] * N[(t1 * N[(v$95$m / N[(t1 + u), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
v\_m = \left|v\right|
\\
v\_s = \mathsf{copysign}\left(1, v\right)
\\
v\_s \cdot \left(\frac{-1}{t1 + u} \cdot \left(t1 \cdot \frac{v\_m}{t1 + u}\right)\right)
\end{array}
Initial program 72.9%
remove-double-negN/A
neg-mul-1N/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
distribute-lft-neg-outN/A
remove-double-negN/A
associate-/l*N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f6497.7%
Applied egg-rr97.7%
v\_m = (fabs.f64 v) v\_s = (copysign.f64 #s(literal 1 binary64) v) (FPCore (v_s u v_m t1) :precision binary64 (* v_s (/ (/ v_m (+ t1 u)) (- -1.0 (/ u t1)))))
v\_m = fabs(v);
v\_s = copysign(1.0, v);
double code(double v_s, double u, double v_m, double t1) {
return v_s * ((v_m / (t1 + u)) / (-1.0 - (u / t1)));
}
v\_m = abs(v)
v\_s = copysign(1.0d0, v)
real(8) function code(v_s, u, v_m, t1)
real(8), intent (in) :: v_s
real(8), intent (in) :: u
real(8), intent (in) :: v_m
real(8), intent (in) :: t1
code = v_s * ((v_m / (t1 + u)) / ((-1.0d0) - (u / t1)))
end function
v\_m = Math.abs(v);
v\_s = Math.copySign(1.0, v);
public static double code(double v_s, double u, double v_m, double t1) {
return v_s * ((v_m / (t1 + u)) / (-1.0 - (u / t1)));
}
v\_m = math.fabs(v) v\_s = math.copysign(1.0, v) def code(v_s, u, v_m, t1): return v_s * ((v_m / (t1 + u)) / (-1.0 - (u / t1)))
v\_m = abs(v) v\_s = copysign(1.0, v) function code(v_s, u, v_m, t1) return Float64(v_s * Float64(Float64(v_m / Float64(t1 + u)) / Float64(-1.0 - Float64(u / t1)))) end
v\_m = abs(v); v\_s = sign(v) * abs(1.0); function tmp = code(v_s, u, v_m, t1) tmp = v_s * ((v_m / (t1 + u)) / (-1.0 - (u / t1))); end
v\_m = N[Abs[v], $MachinePrecision]
v\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[v]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[v$95$s_, u_, v$95$m_, t1_] := N[(v$95$s * N[(N[(v$95$m / N[(t1 + u), $MachinePrecision]), $MachinePrecision] / N[(-1.0 - N[(u / t1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
v\_m = \left|v\right|
\\
v\_s = \mathsf{copysign}\left(1, v\right)
\\
v\_s \cdot \frac{\frac{v\_m}{t1 + u}}{-1 - \frac{u}{t1}}
\end{array}
Initial program 72.9%
*-commutativeN/A
times-fracN/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
frac-2negN/A
remove-double-negN/A
/-lowering-/.f64N/A
neg-sub0N/A
--lowering--.f64N/A
+-lowering-+.f6496.2%
Applied egg-rr96.2%
Taylor expanded in t1 around inf
sub-negN/A
metadata-evalN/A
+-commutativeN/A
mul-1-negN/A
unsub-negN/A
--lowering--.f64N/A
/-lowering-/.f6496.3%
Simplified96.3%
v\_m = (fabs.f64 v) v\_s = (copysign.f64 #s(literal 1 binary64) v) (FPCore (v_s u v_m t1) :precision binary64 (* v_s (/ v_m (- (- 0.0 u) t1))))
v\_m = fabs(v);
v\_s = copysign(1.0, v);
double code(double v_s, double u, double v_m, double t1) {
return v_s * (v_m / ((0.0 - u) - t1));
}
v\_m = abs(v)
v\_s = copysign(1.0d0, v)
real(8) function code(v_s, u, v_m, t1)
real(8), intent (in) :: v_s
real(8), intent (in) :: u
real(8), intent (in) :: v_m
real(8), intent (in) :: t1
code = v_s * (v_m / ((0.0d0 - u) - t1))
end function
v\_m = Math.abs(v);
v\_s = Math.copySign(1.0, v);
public static double code(double v_s, double u, double v_m, double t1) {
return v_s * (v_m / ((0.0 - u) - t1));
}
v\_m = math.fabs(v) v\_s = math.copysign(1.0, v) def code(v_s, u, v_m, t1): return v_s * (v_m / ((0.0 - u) - t1))
v\_m = abs(v) v\_s = copysign(1.0, v) function code(v_s, u, v_m, t1) return Float64(v_s * Float64(v_m / Float64(Float64(0.0 - u) - t1))) end
v\_m = abs(v); v\_s = sign(v) * abs(1.0); function tmp = code(v_s, u, v_m, t1) tmp = v_s * (v_m / ((0.0 - u) - t1)); end
v\_m = N[Abs[v], $MachinePrecision]
v\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[v]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[v$95$s_, u_, v$95$m_, t1_] := N[(v$95$s * N[(v$95$m / N[(N[(0.0 - u), $MachinePrecision] - t1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
v\_m = \left|v\right|
\\
v\_s = \mathsf{copysign}\left(1, v\right)
\\
v\_s \cdot \frac{v\_m}{\left(0 - u\right) - t1}
\end{array}
Initial program 72.9%
remove-double-negN/A
neg-mul-1N/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
distribute-lft-neg-outN/A
remove-double-negN/A
associate-/l*N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f6497.7%
Applied egg-rr97.7%
Taylor expanded in t1 around inf
Simplified58.6%
associate-*l/N/A
neg-mul-1N/A
distribute-neg-fracN/A
neg-lowering-neg.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f6458.7%
Applied egg-rr58.7%
Final simplification58.7%
v\_m = (fabs.f64 v) v\_s = (copysign.f64 #s(literal 1 binary64) v) (FPCore (v_s u v_m t1) :precision binary64 (* v_s (- 0.0 (/ v_m t1))))
v\_m = fabs(v);
v\_s = copysign(1.0, v);
double code(double v_s, double u, double v_m, double t1) {
return v_s * (0.0 - (v_m / t1));
}
v\_m = abs(v)
v\_s = copysign(1.0d0, v)
real(8) function code(v_s, u, v_m, t1)
real(8), intent (in) :: v_s
real(8), intent (in) :: u
real(8), intent (in) :: v_m
real(8), intent (in) :: t1
code = v_s * (0.0d0 - (v_m / t1))
end function
v\_m = Math.abs(v);
v\_s = Math.copySign(1.0, v);
public static double code(double v_s, double u, double v_m, double t1) {
return v_s * (0.0 - (v_m / t1));
}
v\_m = math.fabs(v) v\_s = math.copysign(1.0, v) def code(v_s, u, v_m, t1): return v_s * (0.0 - (v_m / t1))
v\_m = abs(v) v\_s = copysign(1.0, v) function code(v_s, u, v_m, t1) return Float64(v_s * Float64(0.0 - Float64(v_m / t1))) end
v\_m = abs(v); v\_s = sign(v) * abs(1.0); function tmp = code(v_s, u, v_m, t1) tmp = v_s * (0.0 - (v_m / t1)); end
v\_m = N[Abs[v], $MachinePrecision]
v\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[v]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[v$95$s_, u_, v$95$m_, t1_] := N[(v$95$s * N[(0.0 - N[(v$95$m / t1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
v\_m = \left|v\right|
\\
v\_s = \mathsf{copysign}\left(1, v\right)
\\
v\_s \cdot \left(0 - \frac{v\_m}{t1}\right)
\end{array}
Initial program 72.9%
Taylor expanded in t1 around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f64N/A
/-lowering-/.f6453.4%
Simplified53.4%
sub0-negN/A
neg-lowering-neg.f64N/A
/-lowering-/.f6453.4%
Applied egg-rr53.4%
Final simplification53.4%
herbie shell --seed 2024185
(FPCore (u v t1)
:name "Rosa's DopplerBench"
:precision binary64
(/ (* (- t1) v) (* (+ t1 u) (+ t1 u))))