
(FPCore (c0 w h D d M) :precision binary64 (let* ((t_0 (/ (* c0 (* d d)) (* (* w h) (* D D))))) (* (/ c0 (* 2.0 w)) (+ t_0 (sqrt (- (* t_0 t_0) (* M M)))))))
double code(double c0, double w, double h, double D, double d, double M) {
double t_0 = (c0 * (d * d)) / ((w * h) * (D * D));
return (c0 / (2.0 * w)) * (t_0 + sqrt(((t_0 * t_0) - (M * M))));
}
real(8) function code(c0, w, h, d, d_1, m)
real(8), intent (in) :: c0
real(8), intent (in) :: w
real(8), intent (in) :: h
real(8), intent (in) :: d
real(8), intent (in) :: d_1
real(8), intent (in) :: m
real(8) :: t_0
t_0 = (c0 * (d_1 * d_1)) / ((w * h) * (d * d))
code = (c0 / (2.0d0 * w)) * (t_0 + sqrt(((t_0 * t_0) - (m * m))))
end function
public static double code(double c0, double w, double h, double D, double d, double M) {
double t_0 = (c0 * (d * d)) / ((w * h) * (D * D));
return (c0 / (2.0 * w)) * (t_0 + Math.sqrt(((t_0 * t_0) - (M * M))));
}
def code(c0, w, h, D, d, M): t_0 = (c0 * (d * d)) / ((w * h) * (D * D)) return (c0 / (2.0 * w)) * (t_0 + math.sqrt(((t_0 * t_0) - (M * M))))
function code(c0, w, h, D, d, M) t_0 = Float64(Float64(c0 * Float64(d * d)) / Float64(Float64(w * h) * Float64(D * D))) return Float64(Float64(c0 / Float64(2.0 * w)) * Float64(t_0 + sqrt(Float64(Float64(t_0 * t_0) - Float64(M * M))))) end
function tmp = code(c0, w, h, D, d, M) t_0 = (c0 * (d * d)) / ((w * h) * (D * D)); tmp = (c0 / (2.0 * w)) * (t_0 + sqrt(((t_0 * t_0) - (M * M)))); end
code[c0_, w_, h_, D_, d_, M_] := Block[{t$95$0 = N[(N[(c0 * N[(d * d), $MachinePrecision]), $MachinePrecision] / N[(N[(w * h), $MachinePrecision] * N[(D * D), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, N[(N[(c0 / N[(2.0 * w), $MachinePrecision]), $MachinePrecision] * N[(t$95$0 + N[Sqrt[N[(N[(t$95$0 * t$95$0), $MachinePrecision] - N[(M * M), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{c0 \cdot \left(d \cdot d\right)}{\left(w \cdot h\right) \cdot \left(D \cdot D\right)}\\
\frac{c0}{2 \cdot w} \cdot \left(t\_0 + \sqrt{t\_0 \cdot t\_0 - M \cdot M}\right)
\end{array}
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 8 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (c0 w h D d M) :precision binary64 (let* ((t_0 (/ (* c0 (* d d)) (* (* w h) (* D D))))) (* (/ c0 (* 2.0 w)) (+ t_0 (sqrt (- (* t_0 t_0) (* M M)))))))
double code(double c0, double w, double h, double D, double d, double M) {
double t_0 = (c0 * (d * d)) / ((w * h) * (D * D));
return (c0 / (2.0 * w)) * (t_0 + sqrt(((t_0 * t_0) - (M * M))));
}
real(8) function code(c0, w, h, d, d_1, m)
real(8), intent (in) :: c0
real(8), intent (in) :: w
real(8), intent (in) :: h
real(8), intent (in) :: d
real(8), intent (in) :: d_1
real(8), intent (in) :: m
real(8) :: t_0
t_0 = (c0 * (d_1 * d_1)) / ((w * h) * (d * d))
code = (c0 / (2.0d0 * w)) * (t_0 + sqrt(((t_0 * t_0) - (m * m))))
end function
public static double code(double c0, double w, double h, double D, double d, double M) {
double t_0 = (c0 * (d * d)) / ((w * h) * (D * D));
return (c0 / (2.0 * w)) * (t_0 + Math.sqrt(((t_0 * t_0) - (M * M))));
}
def code(c0, w, h, D, d, M): t_0 = (c0 * (d * d)) / ((w * h) * (D * D)) return (c0 / (2.0 * w)) * (t_0 + math.sqrt(((t_0 * t_0) - (M * M))))
function code(c0, w, h, D, d, M) t_0 = Float64(Float64(c0 * Float64(d * d)) / Float64(Float64(w * h) * Float64(D * D))) return Float64(Float64(c0 / Float64(2.0 * w)) * Float64(t_0 + sqrt(Float64(Float64(t_0 * t_0) - Float64(M * M))))) end
function tmp = code(c0, w, h, D, d, M) t_0 = (c0 * (d * d)) / ((w * h) * (D * D)); tmp = (c0 / (2.0 * w)) * (t_0 + sqrt(((t_0 * t_0) - (M * M)))); end
code[c0_, w_, h_, D_, d_, M_] := Block[{t$95$0 = N[(N[(c0 * N[(d * d), $MachinePrecision]), $MachinePrecision] / N[(N[(w * h), $MachinePrecision] * N[(D * D), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, N[(N[(c0 / N[(2.0 * w), $MachinePrecision]), $MachinePrecision] * N[(t$95$0 + N[Sqrt[N[(N[(t$95$0 * t$95$0), $MachinePrecision] - N[(M * M), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{c0 \cdot \left(d \cdot d\right)}{\left(w \cdot h\right) \cdot \left(D \cdot D\right)}\\
\frac{c0}{2 \cdot w} \cdot \left(t\_0 + \sqrt{t\_0 \cdot t\_0 - M \cdot M}\right)
\end{array}
\end{array}
(FPCore (c0 w h D d M)
:precision binary64
(let* ((t_0 (/ (* c0 (* d d)) (* (* w h) (* D D)))) (t_1 (/ (* c0 d) D)))
(if (<=
(* (/ c0 (* 2.0 w)) (+ t_0 (sqrt (- (* t_0 t_0) (* M M)))))
INFINITY)
(* t_1 (/ (/ t_1 (* w h)) w))
(/ (* 0.25 (* D (* D (* h (* M M))))) (* d d)))))
double code(double c0, double w, double h, double D, double d, double M) {
double t_0 = (c0 * (d * d)) / ((w * h) * (D * D));
double t_1 = (c0 * d) / D;
double tmp;
if (((c0 / (2.0 * w)) * (t_0 + sqrt(((t_0 * t_0) - (M * M))))) <= ((double) INFINITY)) {
tmp = t_1 * ((t_1 / (w * h)) / w);
} else {
tmp = (0.25 * (D * (D * (h * (M * M))))) / (d * d);
}
return tmp;
}
public static double code(double c0, double w, double h, double D, double d, double M) {
double t_0 = (c0 * (d * d)) / ((w * h) * (D * D));
double t_1 = (c0 * d) / D;
double tmp;
if (((c0 / (2.0 * w)) * (t_0 + Math.sqrt(((t_0 * t_0) - (M * M))))) <= Double.POSITIVE_INFINITY) {
tmp = t_1 * ((t_1 / (w * h)) / w);
} else {
tmp = (0.25 * (D * (D * (h * (M * M))))) / (d * d);
}
return tmp;
}
def code(c0, w, h, D, d, M): t_0 = (c0 * (d * d)) / ((w * h) * (D * D)) t_1 = (c0 * d) / D tmp = 0 if ((c0 / (2.0 * w)) * (t_0 + math.sqrt(((t_0 * t_0) - (M * M))))) <= math.inf: tmp = t_1 * ((t_1 / (w * h)) / w) else: tmp = (0.25 * (D * (D * (h * (M * M))))) / (d * d) return tmp
function code(c0, w, h, D, d, M) t_0 = Float64(Float64(c0 * Float64(d * d)) / Float64(Float64(w * h) * Float64(D * D))) t_1 = Float64(Float64(c0 * d) / D) tmp = 0.0 if (Float64(Float64(c0 / Float64(2.0 * w)) * Float64(t_0 + sqrt(Float64(Float64(t_0 * t_0) - Float64(M * M))))) <= Inf) tmp = Float64(t_1 * Float64(Float64(t_1 / Float64(w * h)) / w)); else tmp = Float64(Float64(0.25 * Float64(D * Float64(D * Float64(h * Float64(M * M))))) / Float64(d * d)); end return tmp end
function tmp_2 = code(c0, w, h, D, d, M) t_0 = (c0 * (d * d)) / ((w * h) * (D * D)); t_1 = (c0 * d) / D; tmp = 0.0; if (((c0 / (2.0 * w)) * (t_0 + sqrt(((t_0 * t_0) - (M * M))))) <= Inf) tmp = t_1 * ((t_1 / (w * h)) / w); else tmp = (0.25 * (D * (D * (h * (M * M))))) / (d * d); end tmp_2 = tmp; end
code[c0_, w_, h_, D_, d_, M_] := Block[{t$95$0 = N[(N[(c0 * N[(d * d), $MachinePrecision]), $MachinePrecision] / N[(N[(w * h), $MachinePrecision] * N[(D * D), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(c0 * d), $MachinePrecision] / D), $MachinePrecision]}, If[LessEqual[N[(N[(c0 / N[(2.0 * w), $MachinePrecision]), $MachinePrecision] * N[(t$95$0 + N[Sqrt[N[(N[(t$95$0 * t$95$0), $MachinePrecision] - N[(M * M), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], Infinity], N[(t$95$1 * N[(N[(t$95$1 / N[(w * h), $MachinePrecision]), $MachinePrecision] / w), $MachinePrecision]), $MachinePrecision], N[(N[(0.25 * N[(D * N[(D * N[(h * N[(M * M), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(d * d), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{c0 \cdot \left(d \cdot d\right)}{\left(w \cdot h\right) \cdot \left(D \cdot D\right)}\\
t_1 := \frac{c0 \cdot d}{D}\\
\mathbf{if}\;\frac{c0}{2 \cdot w} \cdot \left(t\_0 + \sqrt{t\_0 \cdot t\_0 - M \cdot M}\right) \leq \infty:\\
\;\;\;\;t\_1 \cdot \frac{\frac{t\_1}{w \cdot h}}{w}\\
\mathbf{else}:\\
\;\;\;\;\frac{0.25 \cdot \left(D \cdot \left(D \cdot \left(h \cdot \left(M \cdot M\right)\right)\right)\right)}{d \cdot d}\\
\end{array}
\end{array}
if (*.f64 (/.f64 c0 (*.f64 #s(literal 2 binary64) w)) (+.f64 (/.f64 (*.f64 c0 (*.f64 d d)) (*.f64 (*.f64 w h) (*.f64 D D))) (sqrt.f64 (-.f64 (*.f64 (/.f64 (*.f64 c0 (*.f64 d d)) (*.f64 (*.f64 w h) (*.f64 D D))) (/.f64 (*.f64 c0 (*.f64 d d)) (*.f64 (*.f64 w h) (*.f64 D D)))) (*.f64 M M))))) < +inf.0Initial program 69.8%
Taylor expanded in c0 around inf
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6453.5%
Simplified53.5%
*-commutativeN/A
swap-sqrN/A
associate-*l*N/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f6472.9%
Applied egg-rr72.9%
associate-/r*N/A
*-commutativeN/A
associate-/r*N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f6480.3%
Applied egg-rr80.3%
if +inf.0 < (*.f64 (/.f64 c0 (*.f64 #s(literal 2 binary64) w)) (+.f64 (/.f64 (*.f64 c0 (*.f64 d d)) (*.f64 (*.f64 w h) (*.f64 D D))) (sqrt.f64 (-.f64 (*.f64 (/.f64 (*.f64 c0 (*.f64 d d)) (*.f64 (*.f64 w h) (*.f64 D D))) (/.f64 (*.f64 c0 (*.f64 d d)) (*.f64 (*.f64 w h) (*.f64 D D)))) (*.f64 M M))))) Initial program 0.0%
Taylor expanded in c0 around -inf
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
Simplified15.7%
Taylor expanded in c0 around 0
associate-*r/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6451.5%
Simplified51.5%
(FPCore (c0 w h D d M)
:precision binary64
(let* ((t_0 (* (/ c0 D) (* (/ (* c0 d) D) (/ (/ d w) (* w h))))))
(if (<= w -2e+110)
0.0
(if (<= w -7.2e+25)
t_0
(if (<= w -6e-130)
(/ (* 0.25 (* D (* D (* h (* M M))))) (* d d))
(if (<= w 5.5e+126) t_0 0.0))))))
double code(double c0, double w, double h, double D, double d, double M) {
double t_0 = (c0 / D) * (((c0 * d) / D) * ((d / w) / (w * h)));
double tmp;
if (w <= -2e+110) {
tmp = 0.0;
} else if (w <= -7.2e+25) {
tmp = t_0;
} else if (w <= -6e-130) {
tmp = (0.25 * (D * (D * (h * (M * M))))) / (d * d);
} else if (w <= 5.5e+126) {
tmp = t_0;
} else {
tmp = 0.0;
}
return tmp;
}
real(8) function code(c0, w, h, d, d_1, m)
real(8), intent (in) :: c0
real(8), intent (in) :: w
real(8), intent (in) :: h
real(8), intent (in) :: d
real(8), intent (in) :: d_1
real(8), intent (in) :: m
real(8) :: t_0
real(8) :: tmp
t_0 = (c0 / d) * (((c0 * d_1) / d) * ((d_1 / w) / (w * h)))
if (w <= (-2d+110)) then
tmp = 0.0d0
else if (w <= (-7.2d+25)) then
tmp = t_0
else if (w <= (-6d-130)) then
tmp = (0.25d0 * (d * (d * (h * (m * m))))) / (d_1 * d_1)
else if (w <= 5.5d+126) then
tmp = t_0
else
tmp = 0.0d0
end if
code = tmp
end function
public static double code(double c0, double w, double h, double D, double d, double M) {
double t_0 = (c0 / D) * (((c0 * d) / D) * ((d / w) / (w * h)));
double tmp;
if (w <= -2e+110) {
tmp = 0.0;
} else if (w <= -7.2e+25) {
tmp = t_0;
} else if (w <= -6e-130) {
tmp = (0.25 * (D * (D * (h * (M * M))))) / (d * d);
} else if (w <= 5.5e+126) {
tmp = t_0;
} else {
tmp = 0.0;
}
return tmp;
}
def code(c0, w, h, D, d, M): t_0 = (c0 / D) * (((c0 * d) / D) * ((d / w) / (w * h))) tmp = 0 if w <= -2e+110: tmp = 0.0 elif w <= -7.2e+25: tmp = t_0 elif w <= -6e-130: tmp = (0.25 * (D * (D * (h * (M * M))))) / (d * d) elif w <= 5.5e+126: tmp = t_0 else: tmp = 0.0 return tmp
function code(c0, w, h, D, d, M) t_0 = Float64(Float64(c0 / D) * Float64(Float64(Float64(c0 * d) / D) * Float64(Float64(d / w) / Float64(w * h)))) tmp = 0.0 if (w <= -2e+110) tmp = 0.0; elseif (w <= -7.2e+25) tmp = t_0; elseif (w <= -6e-130) tmp = Float64(Float64(0.25 * Float64(D * Float64(D * Float64(h * Float64(M * M))))) / Float64(d * d)); elseif (w <= 5.5e+126) tmp = t_0; else tmp = 0.0; end return tmp end
function tmp_2 = code(c0, w, h, D, d, M) t_0 = (c0 / D) * (((c0 * d) / D) * ((d / w) / (w * h))); tmp = 0.0; if (w <= -2e+110) tmp = 0.0; elseif (w <= -7.2e+25) tmp = t_0; elseif (w <= -6e-130) tmp = (0.25 * (D * (D * (h * (M * M))))) / (d * d); elseif (w <= 5.5e+126) tmp = t_0; else tmp = 0.0; end tmp_2 = tmp; end
code[c0_, w_, h_, D_, d_, M_] := Block[{t$95$0 = N[(N[(c0 / D), $MachinePrecision] * N[(N[(N[(c0 * d), $MachinePrecision] / D), $MachinePrecision] * N[(N[(d / w), $MachinePrecision] / N[(w * h), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[w, -2e+110], 0.0, If[LessEqual[w, -7.2e+25], t$95$0, If[LessEqual[w, -6e-130], N[(N[(0.25 * N[(D * N[(D * N[(h * N[(M * M), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(d * d), $MachinePrecision]), $MachinePrecision], If[LessEqual[w, 5.5e+126], t$95$0, 0.0]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{c0}{D} \cdot \left(\frac{c0 \cdot d}{D} \cdot \frac{\frac{d}{w}}{w \cdot h}\right)\\
\mathbf{if}\;w \leq -2 \cdot 10^{+110}:\\
\;\;\;\;0\\
\mathbf{elif}\;w \leq -7.2 \cdot 10^{+25}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;w \leq -6 \cdot 10^{-130}:\\
\;\;\;\;\frac{0.25 \cdot \left(D \cdot \left(D \cdot \left(h \cdot \left(M \cdot M\right)\right)\right)\right)}{d \cdot d}\\
\mathbf{elif}\;w \leq 5.5 \cdot 10^{+126}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;0\\
\end{array}
\end{array}
if w < -2e110 or 5.5000000000000004e126 < w Initial program 9.8%
associate-*l/N/A
/-lowering-/.f64N/A
Simplified9.6%
Taylor expanded in c0 around -inf
associate-*r*N/A
mul-1-negN/A
distribute-lft1-inN/A
metadata-evalN/A
mul0-lftN/A
metadata-evalN/A
distribute-lft-neg-inN/A
distribute-rgt-neg-inN/A
metadata-evalN/A
metadata-evalN/A
metadata-evalN/A
*-lowering-*.f64N/A
metadata-eval56.1%
Simplified56.1%
mul0-rgtN/A
mul0-rgtN/A
div056.1%
Applied egg-rr56.1%
if -2e110 < w < -7.20000000000000031e25 or -5.99999999999999972e-130 < w < 5.5000000000000004e126Initial program 27.5%
Taylor expanded in c0 around inf
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6430.2%
Simplified30.2%
*-commutativeN/A
swap-sqrN/A
associate-*l*N/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f6450.8%
Applied egg-rr50.8%
*-commutativeN/A
times-fracN/A
associate-*l*N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
associate-/r*N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f6452.3%
Applied egg-rr52.3%
if -7.20000000000000031e25 < w < -5.99999999999999972e-130Initial program 9.4%
Taylor expanded in c0 around -inf
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
Simplified17.9%
Taylor expanded in c0 around 0
associate-*r/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6456.5%
Simplified56.5%
Final simplification53.8%
(FPCore (c0 w h D d M)
:precision binary64
(let* ((t_0 (/ (* c0 d) D)))
(if (<= d 5.5e-21)
(* t_0 (* (/ c0 w) (/ (/ d D) (* w h))))
(if (<= d 2.6e+183)
(/ (* 0.25 (* D (* D (* h (* M M))))) (* d d))
(if (<= d 1.62e+299) (* t_0 (/ (* c0 d) (* w (* h (* w D))))) 0.0)))))
double code(double c0, double w, double h, double D, double d, double M) {
double t_0 = (c0 * d) / D;
double tmp;
if (d <= 5.5e-21) {
tmp = t_0 * ((c0 / w) * ((d / D) / (w * h)));
} else if (d <= 2.6e+183) {
tmp = (0.25 * (D * (D * (h * (M * M))))) / (d * d);
} else if (d <= 1.62e+299) {
tmp = t_0 * ((c0 * d) / (w * (h * (w * D))));
} else {
tmp = 0.0;
}
return tmp;
}
real(8) function code(c0, w, h, d, d_1, m)
real(8), intent (in) :: c0
real(8), intent (in) :: w
real(8), intent (in) :: h
real(8), intent (in) :: d
real(8), intent (in) :: d_1
real(8), intent (in) :: m
real(8) :: t_0
real(8) :: tmp
t_0 = (c0 * d_1) / d
if (d_1 <= 5.5d-21) then
tmp = t_0 * ((c0 / w) * ((d_1 / d) / (w * h)))
else if (d_1 <= 2.6d+183) then
tmp = (0.25d0 * (d * (d * (h * (m * m))))) / (d_1 * d_1)
else if (d_1 <= 1.62d+299) then
tmp = t_0 * ((c0 * d_1) / (w * (h * (w * d))))
else
tmp = 0.0d0
end if
code = tmp
end function
public static double code(double c0, double w, double h, double D, double d, double M) {
double t_0 = (c0 * d) / D;
double tmp;
if (d <= 5.5e-21) {
tmp = t_0 * ((c0 / w) * ((d / D) / (w * h)));
} else if (d <= 2.6e+183) {
tmp = (0.25 * (D * (D * (h * (M * M))))) / (d * d);
} else if (d <= 1.62e+299) {
tmp = t_0 * ((c0 * d) / (w * (h * (w * D))));
} else {
tmp = 0.0;
}
return tmp;
}
def code(c0, w, h, D, d, M): t_0 = (c0 * d) / D tmp = 0 if d <= 5.5e-21: tmp = t_0 * ((c0 / w) * ((d / D) / (w * h))) elif d <= 2.6e+183: tmp = (0.25 * (D * (D * (h * (M * M))))) / (d * d) elif d <= 1.62e+299: tmp = t_0 * ((c0 * d) / (w * (h * (w * D)))) else: tmp = 0.0 return tmp
function code(c0, w, h, D, d, M) t_0 = Float64(Float64(c0 * d) / D) tmp = 0.0 if (d <= 5.5e-21) tmp = Float64(t_0 * Float64(Float64(c0 / w) * Float64(Float64(d / D) / Float64(w * h)))); elseif (d <= 2.6e+183) tmp = Float64(Float64(0.25 * Float64(D * Float64(D * Float64(h * Float64(M * M))))) / Float64(d * d)); elseif (d <= 1.62e+299) tmp = Float64(t_0 * Float64(Float64(c0 * d) / Float64(w * Float64(h * Float64(w * D))))); else tmp = 0.0; end return tmp end
function tmp_2 = code(c0, w, h, D, d, M) t_0 = (c0 * d) / D; tmp = 0.0; if (d <= 5.5e-21) tmp = t_0 * ((c0 / w) * ((d / D) / (w * h))); elseif (d <= 2.6e+183) tmp = (0.25 * (D * (D * (h * (M * M))))) / (d * d); elseif (d <= 1.62e+299) tmp = t_0 * ((c0 * d) / (w * (h * (w * D)))); else tmp = 0.0; end tmp_2 = tmp; end
code[c0_, w_, h_, D_, d_, M_] := Block[{t$95$0 = N[(N[(c0 * d), $MachinePrecision] / D), $MachinePrecision]}, If[LessEqual[d, 5.5e-21], N[(t$95$0 * N[(N[(c0 / w), $MachinePrecision] * N[(N[(d / D), $MachinePrecision] / N[(w * h), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[d, 2.6e+183], N[(N[(0.25 * N[(D * N[(D * N[(h * N[(M * M), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(d * d), $MachinePrecision]), $MachinePrecision], If[LessEqual[d, 1.62e+299], N[(t$95$0 * N[(N[(c0 * d), $MachinePrecision] / N[(w * N[(h * N[(w * D), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 0.0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{c0 \cdot d}{D}\\
\mathbf{if}\;d \leq 5.5 \cdot 10^{-21}:\\
\;\;\;\;t\_0 \cdot \left(\frac{c0}{w} \cdot \frac{\frac{d}{D}}{w \cdot h}\right)\\
\mathbf{elif}\;d \leq 2.6 \cdot 10^{+183}:\\
\;\;\;\;\frac{0.25 \cdot \left(D \cdot \left(D \cdot \left(h \cdot \left(M \cdot M\right)\right)\right)\right)}{d \cdot d}\\
\mathbf{elif}\;d \leq 1.62 \cdot 10^{+299}:\\
\;\;\;\;t\_0 \cdot \frac{c0 \cdot d}{w \cdot \left(h \cdot \left(w \cdot D\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;0\\
\end{array}
\end{array}
if d < 5.49999999999999977e-21Initial program 19.2%
Taylor expanded in c0 around inf
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6421.9%
Simplified21.9%
*-commutativeN/A
swap-sqrN/A
associate-*l*N/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f6444.2%
Applied egg-rr44.2%
associate-/r*N/A
associate-/l*N/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f6441.1%
Applied egg-rr41.1%
if 5.49999999999999977e-21 < d < 2.5999999999999999e183Initial program 27.1%
Taylor expanded in c0 around -inf
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
Simplified6.0%
Taylor expanded in c0 around 0
associate-*r/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6441.3%
Simplified41.3%
if 2.5999999999999999e183 < d < 1.62000000000000009e299Initial program 22.2%
Taylor expanded in c0 around inf
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6430.3%
Simplified30.3%
*-commutativeN/A
swap-sqrN/A
associate-*l*N/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f6463.9%
Applied egg-rr63.9%
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f6460.3%
Applied egg-rr60.3%
if 1.62000000000000009e299 < d Initial program 0.0%
associate-*l/N/A
/-lowering-/.f64N/A
Simplified0.0%
Taylor expanded in c0 around -inf
associate-*r*N/A
mul-1-negN/A
distribute-lft1-inN/A
metadata-evalN/A
mul0-lftN/A
metadata-evalN/A
distribute-lft-neg-inN/A
distribute-rgt-neg-inN/A
metadata-evalN/A
metadata-evalN/A
metadata-evalN/A
*-lowering-*.f64N/A
metadata-eval100.0%
Simplified100.0%
mul0-rgtN/A
mul0-rgtN/A
div0100.0%
Applied egg-rr100.0%
Final simplification43.8%
(FPCore (c0 w h D d M)
:precision binary64
(let* ((t_0 (/ (* c0 d) D)))
(if (<= d 5.2e-21)
(* t_0 (* (/ c0 w) (/ (/ d D) (* w h))))
(if (<= d 8.4e+219)
(/ (* 0.25 (* D (* D (* h (* M M))))) (* d d))
(if (<= d 2.35e+299) (* t_0 (/ (* c0 d) (* D (* w (* w h))))) 0.0)))))
double code(double c0, double w, double h, double D, double d, double M) {
double t_0 = (c0 * d) / D;
double tmp;
if (d <= 5.2e-21) {
tmp = t_0 * ((c0 / w) * ((d / D) / (w * h)));
} else if (d <= 8.4e+219) {
tmp = (0.25 * (D * (D * (h * (M * M))))) / (d * d);
} else if (d <= 2.35e+299) {
tmp = t_0 * ((c0 * d) / (D * (w * (w * h))));
} else {
tmp = 0.0;
}
return tmp;
}
real(8) function code(c0, w, h, d, d_1, m)
real(8), intent (in) :: c0
real(8), intent (in) :: w
real(8), intent (in) :: h
real(8), intent (in) :: d
real(8), intent (in) :: d_1
real(8), intent (in) :: m
real(8) :: t_0
real(8) :: tmp
t_0 = (c0 * d_1) / d
if (d_1 <= 5.2d-21) then
tmp = t_0 * ((c0 / w) * ((d_1 / d) / (w * h)))
else if (d_1 <= 8.4d+219) then
tmp = (0.25d0 * (d * (d * (h * (m * m))))) / (d_1 * d_1)
else if (d_1 <= 2.35d+299) then
tmp = t_0 * ((c0 * d_1) / (d * (w * (w * h))))
else
tmp = 0.0d0
end if
code = tmp
end function
public static double code(double c0, double w, double h, double D, double d, double M) {
double t_0 = (c0 * d) / D;
double tmp;
if (d <= 5.2e-21) {
tmp = t_0 * ((c0 / w) * ((d / D) / (w * h)));
} else if (d <= 8.4e+219) {
tmp = (0.25 * (D * (D * (h * (M * M))))) / (d * d);
} else if (d <= 2.35e+299) {
tmp = t_0 * ((c0 * d) / (D * (w * (w * h))));
} else {
tmp = 0.0;
}
return tmp;
}
def code(c0, w, h, D, d, M): t_0 = (c0 * d) / D tmp = 0 if d <= 5.2e-21: tmp = t_0 * ((c0 / w) * ((d / D) / (w * h))) elif d <= 8.4e+219: tmp = (0.25 * (D * (D * (h * (M * M))))) / (d * d) elif d <= 2.35e+299: tmp = t_0 * ((c0 * d) / (D * (w * (w * h)))) else: tmp = 0.0 return tmp
function code(c0, w, h, D, d, M) t_0 = Float64(Float64(c0 * d) / D) tmp = 0.0 if (d <= 5.2e-21) tmp = Float64(t_0 * Float64(Float64(c0 / w) * Float64(Float64(d / D) / Float64(w * h)))); elseif (d <= 8.4e+219) tmp = Float64(Float64(0.25 * Float64(D * Float64(D * Float64(h * Float64(M * M))))) / Float64(d * d)); elseif (d <= 2.35e+299) tmp = Float64(t_0 * Float64(Float64(c0 * d) / Float64(D * Float64(w * Float64(w * h))))); else tmp = 0.0; end return tmp end
function tmp_2 = code(c0, w, h, D, d, M) t_0 = (c0 * d) / D; tmp = 0.0; if (d <= 5.2e-21) tmp = t_0 * ((c0 / w) * ((d / D) / (w * h))); elseif (d <= 8.4e+219) tmp = (0.25 * (D * (D * (h * (M * M))))) / (d * d); elseif (d <= 2.35e+299) tmp = t_0 * ((c0 * d) / (D * (w * (w * h)))); else tmp = 0.0; end tmp_2 = tmp; end
code[c0_, w_, h_, D_, d_, M_] := Block[{t$95$0 = N[(N[(c0 * d), $MachinePrecision] / D), $MachinePrecision]}, If[LessEqual[d, 5.2e-21], N[(t$95$0 * N[(N[(c0 / w), $MachinePrecision] * N[(N[(d / D), $MachinePrecision] / N[(w * h), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[d, 8.4e+219], N[(N[(0.25 * N[(D * N[(D * N[(h * N[(M * M), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(d * d), $MachinePrecision]), $MachinePrecision], If[LessEqual[d, 2.35e+299], N[(t$95$0 * N[(N[(c0 * d), $MachinePrecision] / N[(D * N[(w * N[(w * h), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 0.0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{c0 \cdot d}{D}\\
\mathbf{if}\;d \leq 5.2 \cdot 10^{-21}:\\
\;\;\;\;t\_0 \cdot \left(\frac{c0}{w} \cdot \frac{\frac{d}{D}}{w \cdot h}\right)\\
\mathbf{elif}\;d \leq 8.4 \cdot 10^{+219}:\\
\;\;\;\;\frac{0.25 \cdot \left(D \cdot \left(D \cdot \left(h \cdot \left(M \cdot M\right)\right)\right)\right)}{d \cdot d}\\
\mathbf{elif}\;d \leq 2.35 \cdot 10^{+299}:\\
\;\;\;\;t\_0 \cdot \frac{c0 \cdot d}{D \cdot \left(w \cdot \left(w \cdot h\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;0\\
\end{array}
\end{array}
if d < 5.20000000000000035e-21Initial program 19.2%
Taylor expanded in c0 around inf
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6421.9%
Simplified21.9%
*-commutativeN/A
swap-sqrN/A
associate-*l*N/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f6444.2%
Applied egg-rr44.2%
associate-/r*N/A
associate-/l*N/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f6441.1%
Applied egg-rr41.1%
if 5.20000000000000035e-21 < d < 8.39999999999999952e219Initial program 26.7%
Taylor expanded in c0 around -inf
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
Simplified5.0%
Taylor expanded in c0 around 0
associate-*r/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6440.8%
Simplified40.8%
if 8.39999999999999952e219 < d < 2.35e299Initial program 21.1%
Taylor expanded in c0 around inf
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6432.3%
Simplified32.3%
*-commutativeN/A
swap-sqrN/A
associate-*l*N/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f6463.9%
Applied egg-rr63.9%
if 2.35e299 < d Initial program 0.0%
associate-*l/N/A
/-lowering-/.f64N/A
Simplified0.0%
Taylor expanded in c0 around -inf
associate-*r*N/A
mul-1-negN/A
distribute-lft1-inN/A
metadata-evalN/A
mul0-lftN/A
metadata-evalN/A
distribute-lft-neg-inN/A
distribute-rgt-neg-inN/A
metadata-evalN/A
metadata-evalN/A
metadata-evalN/A
*-lowering-*.f64N/A
metadata-eval100.0%
Simplified100.0%
mul0-rgtN/A
mul0-rgtN/A
div0100.0%
Applied egg-rr100.0%
(FPCore (c0 w h D d M)
:precision binary64
(let* ((t_0 (/ (* c0 d) D)))
(if (<= d 1.1e-20)
(* t_0 (* (/ c0 w) (/ (/ d D) (* w h))))
(if (<= d 7.5e+219)
(/ (* 0.25 (* D (* D (* h (* M M))))) (* d d))
(if (<= d 1.46e+299) (* (/ c0 D) (* t_0 (/ (/ d w) (* w h)))) 0.0)))))
double code(double c0, double w, double h, double D, double d, double M) {
double t_0 = (c0 * d) / D;
double tmp;
if (d <= 1.1e-20) {
tmp = t_0 * ((c0 / w) * ((d / D) / (w * h)));
} else if (d <= 7.5e+219) {
tmp = (0.25 * (D * (D * (h * (M * M))))) / (d * d);
} else if (d <= 1.46e+299) {
tmp = (c0 / D) * (t_0 * ((d / w) / (w * h)));
} else {
tmp = 0.0;
}
return tmp;
}
real(8) function code(c0, w, h, d, d_1, m)
real(8), intent (in) :: c0
real(8), intent (in) :: w
real(8), intent (in) :: h
real(8), intent (in) :: d
real(8), intent (in) :: d_1
real(8), intent (in) :: m
real(8) :: t_0
real(8) :: tmp
t_0 = (c0 * d_1) / d
if (d_1 <= 1.1d-20) then
tmp = t_0 * ((c0 / w) * ((d_1 / d) / (w * h)))
else if (d_1 <= 7.5d+219) then
tmp = (0.25d0 * (d * (d * (h * (m * m))))) / (d_1 * d_1)
else if (d_1 <= 1.46d+299) then
tmp = (c0 / d) * (t_0 * ((d_1 / w) / (w * h)))
else
tmp = 0.0d0
end if
code = tmp
end function
public static double code(double c0, double w, double h, double D, double d, double M) {
double t_0 = (c0 * d) / D;
double tmp;
if (d <= 1.1e-20) {
tmp = t_0 * ((c0 / w) * ((d / D) / (w * h)));
} else if (d <= 7.5e+219) {
tmp = (0.25 * (D * (D * (h * (M * M))))) / (d * d);
} else if (d <= 1.46e+299) {
tmp = (c0 / D) * (t_0 * ((d / w) / (w * h)));
} else {
tmp = 0.0;
}
return tmp;
}
def code(c0, w, h, D, d, M): t_0 = (c0 * d) / D tmp = 0 if d <= 1.1e-20: tmp = t_0 * ((c0 / w) * ((d / D) / (w * h))) elif d <= 7.5e+219: tmp = (0.25 * (D * (D * (h * (M * M))))) / (d * d) elif d <= 1.46e+299: tmp = (c0 / D) * (t_0 * ((d / w) / (w * h))) else: tmp = 0.0 return tmp
function code(c0, w, h, D, d, M) t_0 = Float64(Float64(c0 * d) / D) tmp = 0.0 if (d <= 1.1e-20) tmp = Float64(t_0 * Float64(Float64(c0 / w) * Float64(Float64(d / D) / Float64(w * h)))); elseif (d <= 7.5e+219) tmp = Float64(Float64(0.25 * Float64(D * Float64(D * Float64(h * Float64(M * M))))) / Float64(d * d)); elseif (d <= 1.46e+299) tmp = Float64(Float64(c0 / D) * Float64(t_0 * Float64(Float64(d / w) / Float64(w * h)))); else tmp = 0.0; end return tmp end
function tmp_2 = code(c0, w, h, D, d, M) t_0 = (c0 * d) / D; tmp = 0.0; if (d <= 1.1e-20) tmp = t_0 * ((c0 / w) * ((d / D) / (w * h))); elseif (d <= 7.5e+219) tmp = (0.25 * (D * (D * (h * (M * M))))) / (d * d); elseif (d <= 1.46e+299) tmp = (c0 / D) * (t_0 * ((d / w) / (w * h))); else tmp = 0.0; end tmp_2 = tmp; end
code[c0_, w_, h_, D_, d_, M_] := Block[{t$95$0 = N[(N[(c0 * d), $MachinePrecision] / D), $MachinePrecision]}, If[LessEqual[d, 1.1e-20], N[(t$95$0 * N[(N[(c0 / w), $MachinePrecision] * N[(N[(d / D), $MachinePrecision] / N[(w * h), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[d, 7.5e+219], N[(N[(0.25 * N[(D * N[(D * N[(h * N[(M * M), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(d * d), $MachinePrecision]), $MachinePrecision], If[LessEqual[d, 1.46e+299], N[(N[(c0 / D), $MachinePrecision] * N[(t$95$0 * N[(N[(d / w), $MachinePrecision] / N[(w * h), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 0.0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{c0 \cdot d}{D}\\
\mathbf{if}\;d \leq 1.1 \cdot 10^{-20}:\\
\;\;\;\;t\_0 \cdot \left(\frac{c0}{w} \cdot \frac{\frac{d}{D}}{w \cdot h}\right)\\
\mathbf{elif}\;d \leq 7.5 \cdot 10^{+219}:\\
\;\;\;\;\frac{0.25 \cdot \left(D \cdot \left(D \cdot \left(h \cdot \left(M \cdot M\right)\right)\right)\right)}{d \cdot d}\\
\mathbf{elif}\;d \leq 1.46 \cdot 10^{+299}:\\
\;\;\;\;\frac{c0}{D} \cdot \left(t\_0 \cdot \frac{\frac{d}{w}}{w \cdot h}\right)\\
\mathbf{else}:\\
\;\;\;\;0\\
\end{array}
\end{array}
if d < 1.09999999999999995e-20Initial program 19.2%
Taylor expanded in c0 around inf
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6421.9%
Simplified21.9%
*-commutativeN/A
swap-sqrN/A
associate-*l*N/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f6444.2%
Applied egg-rr44.2%
associate-/r*N/A
associate-/l*N/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f6441.1%
Applied egg-rr41.1%
if 1.09999999999999995e-20 < d < 7.5000000000000006e219Initial program 26.7%
Taylor expanded in c0 around -inf
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
Simplified5.0%
Taylor expanded in c0 around 0
associate-*r/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6440.8%
Simplified40.8%
if 7.5000000000000006e219 < d < 1.45999999999999995e299Initial program 21.1%
Taylor expanded in c0 around inf
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6432.3%
Simplified32.3%
*-commutativeN/A
swap-sqrN/A
associate-*l*N/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f6463.9%
Applied egg-rr63.9%
*-commutativeN/A
times-fracN/A
associate-*l*N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
associate-/r*N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f6458.8%
Applied egg-rr58.8%
if 1.45999999999999995e299 < d Initial program 0.0%
associate-*l/N/A
/-lowering-/.f64N/A
Simplified0.0%
Taylor expanded in c0 around -inf
associate-*r*N/A
mul-1-negN/A
distribute-lft1-inN/A
metadata-evalN/A
mul0-lftN/A
metadata-evalN/A
distribute-lft-neg-inN/A
distribute-rgt-neg-inN/A
metadata-evalN/A
metadata-evalN/A
metadata-evalN/A
*-lowering-*.f64N/A
metadata-eval100.0%
Simplified100.0%
mul0-rgtN/A
mul0-rgtN/A
div0100.0%
Applied egg-rr100.0%
Final simplification43.0%
(FPCore (c0 w h D d M) :precision binary64 (if (<= (* M M) 4.8e+232) (/ (* 0.25 (* D (* D (* h (* M M))))) (* d d)) (* (* c0 d) (/ (* c0 d) (* (* w h) (* D (* w D)))))))
double code(double c0, double w, double h, double D, double d, double M) {
double tmp;
if ((M * M) <= 4.8e+232) {
tmp = (0.25 * (D * (D * (h * (M * M))))) / (d * d);
} else {
tmp = (c0 * d) * ((c0 * d) / ((w * h) * (D * (w * D))));
}
return tmp;
}
real(8) function code(c0, w, h, d, d_1, m)
real(8), intent (in) :: c0
real(8), intent (in) :: w
real(8), intent (in) :: h
real(8), intent (in) :: d
real(8), intent (in) :: d_1
real(8), intent (in) :: m
real(8) :: tmp
if ((m * m) <= 4.8d+232) then
tmp = (0.25d0 * (d * (d * (h * (m * m))))) / (d_1 * d_1)
else
tmp = (c0 * d_1) * ((c0 * d_1) / ((w * h) * (d * (w * d))))
end if
code = tmp
end function
public static double code(double c0, double w, double h, double D, double d, double M) {
double tmp;
if ((M * M) <= 4.8e+232) {
tmp = (0.25 * (D * (D * (h * (M * M))))) / (d * d);
} else {
tmp = (c0 * d) * ((c0 * d) / ((w * h) * (D * (w * D))));
}
return tmp;
}
def code(c0, w, h, D, d, M): tmp = 0 if (M * M) <= 4.8e+232: tmp = (0.25 * (D * (D * (h * (M * M))))) / (d * d) else: tmp = (c0 * d) * ((c0 * d) / ((w * h) * (D * (w * D)))) return tmp
function code(c0, w, h, D, d, M) tmp = 0.0 if (Float64(M * M) <= 4.8e+232) tmp = Float64(Float64(0.25 * Float64(D * Float64(D * Float64(h * Float64(M * M))))) / Float64(d * d)); else tmp = Float64(Float64(c0 * d) * Float64(Float64(c0 * d) / Float64(Float64(w * h) * Float64(D * Float64(w * D))))); end return tmp end
function tmp_2 = code(c0, w, h, D, d, M) tmp = 0.0; if ((M * M) <= 4.8e+232) tmp = (0.25 * (D * (D * (h * (M * M))))) / (d * d); else tmp = (c0 * d) * ((c0 * d) / ((w * h) * (D * (w * D)))); end tmp_2 = tmp; end
code[c0_, w_, h_, D_, d_, M_] := If[LessEqual[N[(M * M), $MachinePrecision], 4.8e+232], N[(N[(0.25 * N[(D * N[(D * N[(h * N[(M * M), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(d * d), $MachinePrecision]), $MachinePrecision], N[(N[(c0 * d), $MachinePrecision] * N[(N[(c0 * d), $MachinePrecision] / N[(N[(w * h), $MachinePrecision] * N[(D * N[(w * D), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;M \cdot M \leq 4.8 \cdot 10^{+232}:\\
\;\;\;\;\frac{0.25 \cdot \left(D \cdot \left(D \cdot \left(h \cdot \left(M \cdot M\right)\right)\right)\right)}{d \cdot d}\\
\mathbf{else}:\\
\;\;\;\;\left(c0 \cdot d\right) \cdot \frac{c0 \cdot d}{\left(w \cdot h\right) \cdot \left(D \cdot \left(w \cdot D\right)\right)}\\
\end{array}
\end{array}
if (*.f64 M M) < 4.8000000000000003e232Initial program 22.0%
Taylor expanded in c0 around -inf
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
Simplified17.9%
Taylor expanded in c0 around 0
associate-*r/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6446.5%
Simplified46.5%
if 4.8000000000000003e232 < (*.f64 M M) Initial program 16.5%
Taylor expanded in c0 around inf
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6432.3%
Simplified32.3%
*-commutativeN/A
swap-sqrN/A
associate-*l*N/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f6457.3%
Applied egg-rr57.3%
frac-timesN/A
associate-/l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
associate-*r*N/A
associate-*r*N/A
associate-*l*N/A
*-lowering-*.f64N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f6454.4%
Applied egg-rr54.4%
Final simplification48.7%
(FPCore (c0 w h D d M) :precision binary64 (if (<= (* d d) 2.65e+302) (/ (* 0.25 (* D (* D (* h (* M M))))) (* d d)) 0.0))
double code(double c0, double w, double h, double D, double d, double M) {
double tmp;
if ((d * d) <= 2.65e+302) {
tmp = (0.25 * (D * (D * (h * (M * M))))) / (d * d);
} else {
tmp = 0.0;
}
return tmp;
}
real(8) function code(c0, w, h, d, d_1, m)
real(8), intent (in) :: c0
real(8), intent (in) :: w
real(8), intent (in) :: h
real(8), intent (in) :: d
real(8), intent (in) :: d_1
real(8), intent (in) :: m
real(8) :: tmp
if ((d_1 * d_1) <= 2.65d+302) then
tmp = (0.25d0 * (d * (d * (h * (m * m))))) / (d_1 * d_1)
else
tmp = 0.0d0
end if
code = tmp
end function
public static double code(double c0, double w, double h, double D, double d, double M) {
double tmp;
if ((d * d) <= 2.65e+302) {
tmp = (0.25 * (D * (D * (h * (M * M))))) / (d * d);
} else {
tmp = 0.0;
}
return tmp;
}
def code(c0, w, h, D, d, M): tmp = 0 if (d * d) <= 2.65e+302: tmp = (0.25 * (D * (D * (h * (M * M))))) / (d * d) else: tmp = 0.0 return tmp
function code(c0, w, h, D, d, M) tmp = 0.0 if (Float64(d * d) <= 2.65e+302) tmp = Float64(Float64(0.25 * Float64(D * Float64(D * Float64(h * Float64(M * M))))) / Float64(d * d)); else tmp = 0.0; end return tmp end
function tmp_2 = code(c0, w, h, D, d, M) tmp = 0.0; if ((d * d) <= 2.65e+302) tmp = (0.25 * (D * (D * (h * (M * M))))) / (d * d); else tmp = 0.0; end tmp_2 = tmp; end
code[c0_, w_, h_, D_, d_, M_] := If[LessEqual[N[(d * d), $MachinePrecision], 2.65e+302], N[(N[(0.25 * N[(D * N[(D * N[(h * N[(M * M), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(d * d), $MachinePrecision]), $MachinePrecision], 0.0]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;d \cdot d \leq 2.65 \cdot 10^{+302}:\\
\;\;\;\;\frac{0.25 \cdot \left(D \cdot \left(D \cdot \left(h \cdot \left(M \cdot M\right)\right)\right)\right)}{d \cdot d}\\
\mathbf{else}:\\
\;\;\;\;0\\
\end{array}
\end{array}
if (*.f64 d d) < 2.65e302Initial program 19.5%
Taylor expanded in c0 around -inf
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
Simplified14.9%
Taylor expanded in c0 around 0
associate-*r/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6441.2%
Simplified41.2%
if 2.65e302 < (*.f64 d d) Initial program 21.6%
associate-*l/N/A
/-lowering-/.f64N/A
Simplified22.5%
Taylor expanded in c0 around -inf
associate-*r*N/A
mul-1-negN/A
distribute-lft1-inN/A
metadata-evalN/A
mul0-lftN/A
metadata-evalN/A
distribute-lft-neg-inN/A
distribute-rgt-neg-inN/A
metadata-evalN/A
metadata-evalN/A
metadata-evalN/A
*-lowering-*.f64N/A
metadata-eval49.6%
Simplified49.6%
mul0-rgtN/A
mul0-rgtN/A
div049.6%
Applied egg-rr49.6%
(FPCore (c0 w h D d M) :precision binary64 0.0)
double code(double c0, double w, double h, double D, double d, double M) {
return 0.0;
}
real(8) function code(c0, w, h, d, d_1, m)
real(8), intent (in) :: c0
real(8), intent (in) :: w
real(8), intent (in) :: h
real(8), intent (in) :: d
real(8), intent (in) :: d_1
real(8), intent (in) :: m
code = 0.0d0
end function
public static double code(double c0, double w, double h, double D, double d, double M) {
return 0.0;
}
def code(c0, w, h, D, d, M): return 0.0
function code(c0, w, h, D, d, M) return 0.0 end
function tmp = code(c0, w, h, D, d, M) tmp = 0.0; end
code[c0_, w_, h_, D_, d_, M_] := 0.0
\begin{array}{l}
\\
0
\end{array}
Initial program 20.4%
associate-*l/N/A
/-lowering-/.f64N/A
Simplified19.6%
Taylor expanded in c0 around -inf
associate-*r*N/A
mul-1-negN/A
distribute-lft1-inN/A
metadata-evalN/A
mul0-lftN/A
metadata-evalN/A
distribute-lft-neg-inN/A
distribute-rgt-neg-inN/A
metadata-evalN/A
metadata-evalN/A
metadata-evalN/A
*-lowering-*.f64N/A
metadata-eval36.1%
Simplified36.1%
mul0-rgtN/A
mul0-rgtN/A
div036.1%
Applied egg-rr36.1%
herbie shell --seed 2024191
(FPCore (c0 w h D d M)
:name "Henrywood and Agarwal, Equation (13)"
:precision binary64
(* (/ c0 (* 2.0 w)) (+ (/ (* c0 (* d d)) (* (* w h) (* D D))) (sqrt (- (* (/ (* c0 (* d d)) (* (* w h) (* D D))) (/ (* c0 (* d d)) (* (* w h) (* D D)))) (* M M))))))