
(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)))
(t_1 (* D (* w (* h D))))
(t_2 (/ c0 t_1))
(t_3 (/ c0 (* 2.0 w)))
(t_4 (/ t_0 (* (* w h) (* D D)))))
(if (<= (* t_3 (+ t_4 (sqrt (- (* t_4 t_4) (* M M))))) INFINITY)
(*
t_3
(+
(* (* d d) t_2)
(sqrt (* (+ M (* t_0 (/ 1.0 t_1))) (- (* d (* d t_2)) M)))))
0.0)))
double code(double c0, double w, double h, double D, double d, double M) {
double t_0 = c0 * (d * d);
double t_1 = D * (w * (h * D));
double t_2 = c0 / t_1;
double t_3 = c0 / (2.0 * w);
double t_4 = t_0 / ((w * h) * (D * D));
double tmp;
if ((t_3 * (t_4 + sqrt(((t_4 * t_4) - (M * M))))) <= ((double) INFINITY)) {
tmp = t_3 * (((d * d) * t_2) + sqrt(((M + (t_0 * (1.0 / t_1))) * ((d * (d * t_2)) - M))));
} else {
tmp = 0.0;
}
return tmp;
}
public static double code(double c0, double w, double h, double D, double d, double M) {
double t_0 = c0 * (d * d);
double t_1 = D * (w * (h * D));
double t_2 = c0 / t_1;
double t_3 = c0 / (2.0 * w);
double t_4 = t_0 / ((w * h) * (D * D));
double tmp;
if ((t_3 * (t_4 + Math.sqrt(((t_4 * t_4) - (M * M))))) <= Double.POSITIVE_INFINITY) {
tmp = t_3 * (((d * d) * t_2) + Math.sqrt(((M + (t_0 * (1.0 / t_1))) * ((d * (d * t_2)) - M))));
} else {
tmp = 0.0;
}
return tmp;
}
def code(c0, w, h, D, d, M): t_0 = c0 * (d * d) t_1 = D * (w * (h * D)) t_2 = c0 / t_1 t_3 = c0 / (2.0 * w) t_4 = t_0 / ((w * h) * (D * D)) tmp = 0 if (t_3 * (t_4 + math.sqrt(((t_4 * t_4) - (M * M))))) <= math.inf: tmp = t_3 * (((d * d) * t_2) + math.sqrt(((M + (t_0 * (1.0 / t_1))) * ((d * (d * t_2)) - M)))) else: tmp = 0.0 return tmp
function code(c0, w, h, D, d, M) t_0 = Float64(c0 * Float64(d * d)) t_1 = Float64(D * Float64(w * Float64(h * D))) t_2 = Float64(c0 / t_1) t_3 = Float64(c0 / Float64(2.0 * w)) t_4 = Float64(t_0 / Float64(Float64(w * h) * Float64(D * D))) tmp = 0.0 if (Float64(t_3 * Float64(t_4 + sqrt(Float64(Float64(t_4 * t_4) - Float64(M * M))))) <= Inf) tmp = Float64(t_3 * Float64(Float64(Float64(d * d) * t_2) + sqrt(Float64(Float64(M + Float64(t_0 * Float64(1.0 / t_1))) * Float64(Float64(d * Float64(d * t_2)) - M))))); else tmp = 0.0; end return tmp end
function tmp_2 = code(c0, w, h, D, d, M) t_0 = c0 * (d * d); t_1 = D * (w * (h * D)); t_2 = c0 / t_1; t_3 = c0 / (2.0 * w); t_4 = t_0 / ((w * h) * (D * D)); tmp = 0.0; if ((t_3 * (t_4 + sqrt(((t_4 * t_4) - (M * M))))) <= Inf) tmp = t_3 * (((d * d) * t_2) + sqrt(((M + (t_0 * (1.0 / t_1))) * ((d * (d * t_2)) - M)))); else tmp = 0.0; end tmp_2 = tmp; end
code[c0_, w_, h_, D_, d_, M_] := Block[{t$95$0 = N[(c0 * N[(d * d), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(D * N[(w * N[(h * D), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(c0 / t$95$1), $MachinePrecision]}, Block[{t$95$3 = N[(c0 / N[(2.0 * w), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(t$95$0 / N[(N[(w * h), $MachinePrecision] * N[(D * D), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[N[(t$95$3 * N[(t$95$4 + N[Sqrt[N[(N[(t$95$4 * t$95$4), $MachinePrecision] - N[(M * M), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], Infinity], N[(t$95$3 * N[(N[(N[(d * d), $MachinePrecision] * t$95$2), $MachinePrecision] + N[Sqrt[N[(N[(M + N[(t$95$0 * N[(1.0 / t$95$1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(d * N[(d * t$95$2), $MachinePrecision]), $MachinePrecision] - M), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 0.0]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := c0 \cdot \left(d \cdot d\right)\\
t_1 := D \cdot \left(w \cdot \left(h \cdot D\right)\right)\\
t_2 := \frac{c0}{t_1}\\
t_3 := \frac{c0}{2 \cdot w}\\
t_4 := \frac{t_0}{\left(w \cdot h\right) \cdot \left(D \cdot D\right)}\\
\mathbf{if}\;t_3 \cdot \left(t_4 + \sqrt{t_4 \cdot t_4 - M \cdot M}\right) \leq \infty:\\
\;\;\;\;t_3 \cdot \left(\left(d \cdot d\right) \cdot t_2 + \sqrt{\left(M + t_0 \cdot \frac{1}{t_1}\right) \cdot \left(d \cdot \left(d \cdot t_2\right) - M\right)}\right)\\
\mathbf{else}:\\
\;\;\;\;0\\
\end{array}
\end{array}
if (*.f64 (/.f64 c0 (*.f64 2 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 79.7%
associate-*l*77.6%
difference-of-squares77.6%
associate-*l*77.6%
associate-*l*78.5%
Simplified78.5%
*-commutative78.5%
associate-*r*77.6%
associate-*r/77.5%
associate-*l*77.6%
associate-*r*77.6%
associate-*l*78.6%
Applied egg-rr78.6%
div-inv78.6%
associate-*r*77.6%
associate-*r*77.7%
associate-*l*77.7%
Applied egg-rr77.7%
*-commutative77.7%
associate-*r*78.0%
associate-*r/77.9%
*-commutative77.9%
associate-*r*80.4%
associate-*l*81.8%
Applied egg-rr81.8%
if +inf.0 < (*.f64 (/.f64 c0 (*.f64 2 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%
times-frac0.0%
fma-def0.0%
associate-/r*0.0%
difference-of-squares11.9%
Simplified21.2%
Taylor expanded in c0 around -inf 2.6%
associate-*r*2.6%
distribute-rgt1-in2.6%
metadata-eval2.6%
mul0-lft36.2%
metadata-eval36.2%
mul0-lft3.3%
metadata-eval3.3%
distribute-lft1-in3.3%
*-commutative3.3%
distribute-lft1-in3.3%
metadata-eval3.3%
mul0-lft36.2%
Simplified36.2%
Taylor expanded in c0 around 0 42.0%
Final simplification56.8%
(FPCore (c0 w h D d M)
:precision binary64
(let* ((t_0 (* (* w h) (* D D)))
(t_1 (/ c0 (* 2.0 w)))
(t_2 (/ (* c0 (* d d)) t_0)))
(if (<= (* t_1 (+ t_2 (sqrt (- (* t_2 t_2) (* M M))))) INFINITY)
(* t_1 (fma 2.0 (* d (* d (/ c0 t_0))) (* M 0.5)))
0.0)))
double code(double c0, double w, double h, double D, double d, double M) {
double t_0 = (w * h) * (D * D);
double t_1 = c0 / (2.0 * w);
double t_2 = (c0 * (d * d)) / t_0;
double tmp;
if ((t_1 * (t_2 + sqrt(((t_2 * t_2) - (M * M))))) <= ((double) INFINITY)) {
tmp = t_1 * fma(2.0, (d * (d * (c0 / t_0))), (M * 0.5));
} else {
tmp = 0.0;
}
return tmp;
}
function code(c0, w, h, D, d, M) t_0 = Float64(Float64(w * h) * Float64(D * D)) t_1 = Float64(c0 / Float64(2.0 * w)) t_2 = Float64(Float64(c0 * Float64(d * d)) / t_0) tmp = 0.0 if (Float64(t_1 * Float64(t_2 + sqrt(Float64(Float64(t_2 * t_2) - Float64(M * M))))) <= Inf) tmp = Float64(t_1 * fma(2.0, Float64(d * Float64(d * Float64(c0 / t_0))), Float64(M * 0.5))); else tmp = 0.0; end return tmp end
code[c0_, w_, h_, D_, d_, M_] := Block[{t$95$0 = N[(N[(w * h), $MachinePrecision] * N[(D * D), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(c0 / N[(2.0 * w), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(c0 * N[(d * d), $MachinePrecision]), $MachinePrecision] / t$95$0), $MachinePrecision]}, If[LessEqual[N[(t$95$1 * N[(t$95$2 + N[Sqrt[N[(N[(t$95$2 * t$95$2), $MachinePrecision] - N[(M * M), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], Infinity], N[(t$95$1 * N[(2.0 * N[(d * N[(d * N[(c0 / t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(M * 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 0.0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left(w \cdot h\right) \cdot \left(D \cdot D\right)\\
t_1 := \frac{c0}{2 \cdot w}\\
t_2 := \frac{c0 \cdot \left(d \cdot d\right)}{t_0}\\
\mathbf{if}\;t_1 \cdot \left(t_2 + \sqrt{t_2 \cdot t_2 - M \cdot M}\right) \leq \infty:\\
\;\;\;\;t_1 \cdot \mathsf{fma}\left(2, d \cdot \left(d \cdot \frac{c0}{t_0}\right), M \cdot 0.5\right)\\
\mathbf{else}:\\
\;\;\;\;0\\
\end{array}
\end{array}
if (*.f64 (/.f64 c0 (*.f64 2 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 79.7%
times-frac76.6%
fma-def73.6%
times-frac75.0%
difference-of-squares75.0%
Simplified73.7%
sqrt-prod72.7%
associate-*l*72.7%
div-inv72.7%
clear-num72.7%
associate-*r/72.8%
*-commutative72.8%
times-frac73.7%
associate-/l/76.4%
fma-neg76.4%
Applied egg-rr77.4%
Taylor expanded in d around inf 40.9%
Taylor expanded in c0 around inf 77.8%
fma-def77.8%
*-commutative77.8%
unpow277.8%
associate-*r/77.7%
unpow277.7%
associate-*r*80.3%
associate-*r*80.7%
associate-*r*78.5%
associate-*r*81.6%
associate-*l*80.5%
unpow280.5%
associate-*l*80.8%
*-commutative80.8%
unpow280.8%
Simplified80.8%
if +inf.0 < (*.f64 (/.f64 c0 (*.f64 2 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%
times-frac0.0%
fma-def0.0%
associate-/r*0.0%
difference-of-squares11.9%
Simplified21.2%
Taylor expanded in c0 around -inf 2.6%
associate-*r*2.6%
distribute-rgt1-in2.6%
metadata-eval2.6%
mul0-lft36.2%
metadata-eval36.2%
mul0-lft3.3%
metadata-eval3.3%
distribute-lft1-in3.3%
*-commutative3.3%
distribute-lft1-in3.3%
metadata-eval3.3%
mul0-lft36.2%
Simplified36.2%
Taylor expanded in c0 around 0 42.0%
Final simplification56.4%
(FPCore (c0 w h D d M)
:precision binary64
(let* ((t_0 (/ c0 (* 2.0 w)))
(t_1 (* t_0 (* 2.0 (* (/ c0 w) (/ (* d d) (* D (* h D))))))))
(if (<= M 1.7e-248)
0.0
(if (<= M 4.2e-169)
t_1
(if (<= M 2.7e-147)
0.0
(if (<= M 2.9e-58)
t_1
(if (<= M 57000.0)
(* t_0 (* (/ d D) (sqrt (* (/ c0 w) (/ M h)))))
(if (<= M 2e+72)
0.0
(/
(* c0 (* c0 (/ (* 2.0 (* d d)) (* (* w h) (* D D)))))
(* 2.0 w))))))))))
double code(double c0, double w, double h, double D, double d, double M) {
double t_0 = c0 / (2.0 * w);
double t_1 = t_0 * (2.0 * ((c0 / w) * ((d * d) / (D * (h * D)))));
double tmp;
if (M <= 1.7e-248) {
tmp = 0.0;
} else if (M <= 4.2e-169) {
tmp = t_1;
} else if (M <= 2.7e-147) {
tmp = 0.0;
} else if (M <= 2.9e-58) {
tmp = t_1;
} else if (M <= 57000.0) {
tmp = t_0 * ((d / D) * sqrt(((c0 / w) * (M / h))));
} else if (M <= 2e+72) {
tmp = 0.0;
} else {
tmp = (c0 * (c0 * ((2.0 * (d * d)) / ((w * h) * (D * D))))) / (2.0 * w);
}
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) :: t_1
real(8) :: tmp
t_0 = c0 / (2.0d0 * w)
t_1 = t_0 * (2.0d0 * ((c0 / w) * ((d_1 * d_1) / (d * (h * d)))))
if (m <= 1.7d-248) then
tmp = 0.0d0
else if (m <= 4.2d-169) then
tmp = t_1
else if (m <= 2.7d-147) then
tmp = 0.0d0
else if (m <= 2.9d-58) then
tmp = t_1
else if (m <= 57000.0d0) then
tmp = t_0 * ((d_1 / d) * sqrt(((c0 / w) * (m / h))))
else if (m <= 2d+72) then
tmp = 0.0d0
else
tmp = (c0 * (c0 * ((2.0d0 * (d_1 * d_1)) / ((w * h) * (d * d))))) / (2.0d0 * w)
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 / (2.0 * w);
double t_1 = t_0 * (2.0 * ((c0 / w) * ((d * d) / (D * (h * D)))));
double tmp;
if (M <= 1.7e-248) {
tmp = 0.0;
} else if (M <= 4.2e-169) {
tmp = t_1;
} else if (M <= 2.7e-147) {
tmp = 0.0;
} else if (M <= 2.9e-58) {
tmp = t_1;
} else if (M <= 57000.0) {
tmp = t_0 * ((d / D) * Math.sqrt(((c0 / w) * (M / h))));
} else if (M <= 2e+72) {
tmp = 0.0;
} else {
tmp = (c0 * (c0 * ((2.0 * (d * d)) / ((w * h) * (D * D))))) / (2.0 * w);
}
return tmp;
}
def code(c0, w, h, D, d, M): t_0 = c0 / (2.0 * w) t_1 = t_0 * (2.0 * ((c0 / w) * ((d * d) / (D * (h * D))))) tmp = 0 if M <= 1.7e-248: tmp = 0.0 elif M <= 4.2e-169: tmp = t_1 elif M <= 2.7e-147: tmp = 0.0 elif M <= 2.9e-58: tmp = t_1 elif M <= 57000.0: tmp = t_0 * ((d / D) * math.sqrt(((c0 / w) * (M / h)))) elif M <= 2e+72: tmp = 0.0 else: tmp = (c0 * (c0 * ((2.0 * (d * d)) / ((w * h) * (D * D))))) / (2.0 * w) return tmp
function code(c0, w, h, D, d, M) t_0 = Float64(c0 / Float64(2.0 * w)) t_1 = Float64(t_0 * Float64(2.0 * Float64(Float64(c0 / w) * Float64(Float64(d * d) / Float64(D * Float64(h * D)))))) tmp = 0.0 if (M <= 1.7e-248) tmp = 0.0; elseif (M <= 4.2e-169) tmp = t_1; elseif (M <= 2.7e-147) tmp = 0.0; elseif (M <= 2.9e-58) tmp = t_1; elseif (M <= 57000.0) tmp = Float64(t_0 * Float64(Float64(d / D) * sqrt(Float64(Float64(c0 / w) * Float64(M / h))))); elseif (M <= 2e+72) tmp = 0.0; else tmp = Float64(Float64(c0 * Float64(c0 * Float64(Float64(2.0 * Float64(d * d)) / Float64(Float64(w * h) * Float64(D * D))))) / Float64(2.0 * w)); end return tmp end
function tmp_2 = code(c0, w, h, D, d, M) t_0 = c0 / (2.0 * w); t_1 = t_0 * (2.0 * ((c0 / w) * ((d * d) / (D * (h * D))))); tmp = 0.0; if (M <= 1.7e-248) tmp = 0.0; elseif (M <= 4.2e-169) tmp = t_1; elseif (M <= 2.7e-147) tmp = 0.0; elseif (M <= 2.9e-58) tmp = t_1; elseif (M <= 57000.0) tmp = t_0 * ((d / D) * sqrt(((c0 / w) * (M / h)))); elseif (M <= 2e+72) tmp = 0.0; else tmp = (c0 * (c0 * ((2.0 * (d * d)) / ((w * h) * (D * D))))) / (2.0 * w); end tmp_2 = tmp; end
code[c0_, w_, h_, D_, d_, M_] := Block[{t$95$0 = N[(c0 / N[(2.0 * w), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 * N[(2.0 * N[(N[(c0 / w), $MachinePrecision] * N[(N[(d * d), $MachinePrecision] / N[(D * N[(h * D), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[M, 1.7e-248], 0.0, If[LessEqual[M, 4.2e-169], t$95$1, If[LessEqual[M, 2.7e-147], 0.0, If[LessEqual[M, 2.9e-58], t$95$1, If[LessEqual[M, 57000.0], N[(t$95$0 * N[(N[(d / D), $MachinePrecision] * N[Sqrt[N[(N[(c0 / w), $MachinePrecision] * N[(M / h), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[M, 2e+72], 0.0, N[(N[(c0 * N[(c0 * N[(N[(2.0 * N[(d * d), $MachinePrecision]), $MachinePrecision] / N[(N[(w * h), $MachinePrecision] * N[(D * D), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(2.0 * w), $MachinePrecision]), $MachinePrecision]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{c0}{2 \cdot w}\\
t_1 := t_0 \cdot \left(2 \cdot \left(\frac{c0}{w} \cdot \frac{d \cdot d}{D \cdot \left(h \cdot D\right)}\right)\right)\\
\mathbf{if}\;M \leq 1.7 \cdot 10^{-248}:\\
\;\;\;\;0\\
\mathbf{elif}\;M \leq 4.2 \cdot 10^{-169}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;M \leq 2.7 \cdot 10^{-147}:\\
\;\;\;\;0\\
\mathbf{elif}\;M \leq 2.9 \cdot 10^{-58}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;M \leq 57000:\\
\;\;\;\;t_0 \cdot \left(\frac{d}{D} \cdot \sqrt{\frac{c0}{w} \cdot \frac{M}{h}}\right)\\
\mathbf{elif}\;M \leq 2 \cdot 10^{+72}:\\
\;\;\;\;0\\
\mathbf{else}:\\
\;\;\;\;\frac{c0 \cdot \left(c0 \cdot \frac{2 \cdot \left(d \cdot d\right)}{\left(w \cdot h\right) \cdot \left(D \cdot D\right)}\right)}{2 \cdot w}\\
\end{array}
\end{array}
if M < 1.6999999999999999e-248 or 4.2000000000000001e-169 < M < 2.6999999999999999e-147 or 57000 < M < 1.99999999999999989e72Initial program 28.7%
times-frac27.5%
fma-def26.5%
associate-/r*27.2%
difference-of-squares32.0%
Simplified38.8%
Taylor expanded in c0 around -inf 8.2%
associate-*r*8.2%
distribute-rgt1-in8.2%
metadata-eval8.2%
mul0-lft32.9%
metadata-eval32.9%
mul0-lft8.8%
metadata-eval8.8%
distribute-lft1-in8.8%
*-commutative8.8%
distribute-lft1-in8.8%
metadata-eval8.8%
mul0-lft32.9%
Simplified32.9%
Taylor expanded in c0 around 0 37.4%
if 1.6999999999999999e-248 < M < 4.2000000000000001e-169 or 2.6999999999999999e-147 < M < 2.8999999999999999e-58Initial program 37.5%
times-frac35.4%
fma-def33.3%
times-frac33.2%
difference-of-squares33.2%
Simplified35.5%
sqrt-prod34.9%
associate-*l*34.9%
div-inv34.9%
clear-num34.9%
associate-*r/32.8%
*-commutative32.8%
times-frac34.9%
associate-/l/43.7%
fma-neg43.7%
Applied egg-rr45.8%
Taylor expanded in d around inf 22.0%
Taylor expanded in c0 around inf 35.5%
*-commutative35.5%
*-commutative35.5%
associate-*l*37.7%
unpow237.7%
associate-*l*39.9%
times-frac44.4%
unpow244.4%
*-commutative44.4%
*-commutative44.4%
Simplified44.4%
if 2.8999999999999999e-58 < M < 57000Initial program 47.0%
times-frac46.2%
fma-def46.2%
times-frac46.2%
difference-of-squares46.2%
Simplified46.2%
sqrt-prod46.2%
associate-*l*46.2%
div-inv46.2%
clear-num46.2%
associate-*r/46.2%
*-commutative46.2%
times-frac46.2%
associate-/l/46.2%
fma-neg46.2%
Applied egg-rr53.8%
Taylor expanded in d around inf 23.1%
Taylor expanded in d around 0 23.9%
times-frac23.9%
Simplified23.9%
if 1.99999999999999989e72 < M Initial program 15.7%
times-frac15.7%
fma-def15.7%
times-frac15.7%
difference-of-squares50.2%
Simplified50.2%
sqrt-prod50.2%
associate-*l*50.2%
div-inv50.2%
clear-num50.2%
associate-*r/50.2%
*-commutative50.2%
times-frac50.2%
associate-/l/53.3%
fma-neg53.3%
Applied egg-rr53.6%
Taylor expanded in c0 around inf 50.7%
associate-/l*50.7%
associate-*r/50.7%
unpow250.7%
unpow250.7%
Simplified50.7%
associate-*l/50.7%
associate-/r/50.7%
*-commutative50.7%
*-commutative50.7%
Applied egg-rr50.7%
Final simplification39.6%
(FPCore (c0 w h D d M)
:precision binary64
(let* ((t_0 (/ c0 (* 2.0 w)))
(t_1 (* t_0 (* (/ d D) (sqrt (/ (* c0 M) (* w h)))))))
(if (<= w -1.72e+124)
0.0
(if (<= w 2.4e-295)
t_1
(if (<= w 5.3e-238)
0.0
(if (<= w 6.5e-147)
t_1
(if (<= w 8e+129)
(* t_0 (* 2.0 (* (/ c0 w) (/ (* d d) (* D (* h D))))))
0.0)))))))
double code(double c0, double w, double h, double D, double d, double M) {
double t_0 = c0 / (2.0 * w);
double t_1 = t_0 * ((d / D) * sqrt(((c0 * M) / (w * h))));
double tmp;
if (w <= -1.72e+124) {
tmp = 0.0;
} else if (w <= 2.4e-295) {
tmp = t_1;
} else if (w <= 5.3e-238) {
tmp = 0.0;
} else if (w <= 6.5e-147) {
tmp = t_1;
} else if (w <= 8e+129) {
tmp = t_0 * (2.0 * ((c0 / w) * ((d * d) / (D * (h * 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) :: t_1
real(8) :: tmp
t_0 = c0 / (2.0d0 * w)
t_1 = t_0 * ((d_1 / d) * sqrt(((c0 * m) / (w * h))))
if (w <= (-1.72d+124)) then
tmp = 0.0d0
else if (w <= 2.4d-295) then
tmp = t_1
else if (w <= 5.3d-238) then
tmp = 0.0d0
else if (w <= 6.5d-147) then
tmp = t_1
else if (w <= 8d+129) then
tmp = t_0 * (2.0d0 * ((c0 / w) * ((d_1 * d_1) / (d * (h * 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 / (2.0 * w);
double t_1 = t_0 * ((d / D) * Math.sqrt(((c0 * M) / (w * h))));
double tmp;
if (w <= -1.72e+124) {
tmp = 0.0;
} else if (w <= 2.4e-295) {
tmp = t_1;
} else if (w <= 5.3e-238) {
tmp = 0.0;
} else if (w <= 6.5e-147) {
tmp = t_1;
} else if (w <= 8e+129) {
tmp = t_0 * (2.0 * ((c0 / w) * ((d * d) / (D * (h * D)))));
} else {
tmp = 0.0;
}
return tmp;
}
def code(c0, w, h, D, d, M): t_0 = c0 / (2.0 * w) t_1 = t_0 * ((d / D) * math.sqrt(((c0 * M) / (w * h)))) tmp = 0 if w <= -1.72e+124: tmp = 0.0 elif w <= 2.4e-295: tmp = t_1 elif w <= 5.3e-238: tmp = 0.0 elif w <= 6.5e-147: tmp = t_1 elif w <= 8e+129: tmp = t_0 * (2.0 * ((c0 / w) * ((d * d) / (D * (h * D))))) else: tmp = 0.0 return tmp
function code(c0, w, h, D, d, M) t_0 = Float64(c0 / Float64(2.0 * w)) t_1 = Float64(t_0 * Float64(Float64(d / D) * sqrt(Float64(Float64(c0 * M) / Float64(w * h))))) tmp = 0.0 if (w <= -1.72e+124) tmp = 0.0; elseif (w <= 2.4e-295) tmp = t_1; elseif (w <= 5.3e-238) tmp = 0.0; elseif (w <= 6.5e-147) tmp = t_1; elseif (w <= 8e+129) tmp = Float64(t_0 * Float64(2.0 * Float64(Float64(c0 / w) * Float64(Float64(d * d) / Float64(D * Float64(h * D)))))); else tmp = 0.0; end return tmp end
function tmp_2 = code(c0, w, h, D, d, M) t_0 = c0 / (2.0 * w); t_1 = t_0 * ((d / D) * sqrt(((c0 * M) / (w * h)))); tmp = 0.0; if (w <= -1.72e+124) tmp = 0.0; elseif (w <= 2.4e-295) tmp = t_1; elseif (w <= 5.3e-238) tmp = 0.0; elseif (w <= 6.5e-147) tmp = t_1; elseif (w <= 8e+129) tmp = t_0 * (2.0 * ((c0 / w) * ((d * d) / (D * (h * D))))); else tmp = 0.0; end tmp_2 = tmp; end
code[c0_, w_, h_, D_, d_, M_] := Block[{t$95$0 = N[(c0 / N[(2.0 * w), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 * N[(N[(d / D), $MachinePrecision] * N[Sqrt[N[(N[(c0 * M), $MachinePrecision] / N[(w * h), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[w, -1.72e+124], 0.0, If[LessEqual[w, 2.4e-295], t$95$1, If[LessEqual[w, 5.3e-238], 0.0, If[LessEqual[w, 6.5e-147], t$95$1, If[LessEqual[w, 8e+129], N[(t$95$0 * N[(2.0 * N[(N[(c0 / w), $MachinePrecision] * N[(N[(d * d), $MachinePrecision] / N[(D * N[(h * D), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 0.0]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{c0}{2 \cdot w}\\
t_1 := t_0 \cdot \left(\frac{d}{D} \cdot \sqrt{\frac{c0 \cdot M}{w \cdot h}}\right)\\
\mathbf{if}\;w \leq -1.72 \cdot 10^{+124}:\\
\;\;\;\;0\\
\mathbf{elif}\;w \leq 2.4 \cdot 10^{-295}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;w \leq 5.3 \cdot 10^{-238}:\\
\;\;\;\;0\\
\mathbf{elif}\;w \leq 6.5 \cdot 10^{-147}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;w \leq 8 \cdot 10^{+129}:\\
\;\;\;\;t_0 \cdot \left(2 \cdot \left(\frac{c0}{w} \cdot \frac{d \cdot d}{D \cdot \left(h \cdot D\right)}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;0\\
\end{array}
\end{array}
if w < -1.71999999999999994e124 or 2.3999999999999998e-295 < w < 5.29999999999999968e-238 or 8e129 < w Initial program 16.2%
times-frac16.0%
fma-def13.1%
associate-/r*13.4%
difference-of-squares16.7%
Simplified21.5%
Taylor expanded in c0 around -inf 11.5%
associate-*r*11.5%
distribute-rgt1-in11.5%
metadata-eval11.5%
mul0-lft50.8%
metadata-eval50.8%
mul0-lft11.5%
metadata-eval11.5%
distribute-lft1-in11.5%
*-commutative11.5%
distribute-lft1-in11.5%
metadata-eval11.5%
mul0-lft50.8%
Simplified50.8%
Taylor expanded in c0 around 0 52.4%
if -1.71999999999999994e124 < w < 2.3999999999999998e-295 or 5.29999999999999968e-238 < w < 6.49999999999999967e-147Initial program 36.1%
times-frac34.7%
fma-def33.9%
times-frac34.9%
difference-of-squares44.8%
Simplified44.8%
sqrt-prod44.4%
associate-*l*44.4%
div-inv44.4%
clear-num44.4%
associate-*r/43.6%
*-commutative43.6%
times-frac45.1%
associate-/l/53.5%
fma-neg53.5%
Applied egg-rr55.8%
Taylor expanded in d around inf 27.6%
Taylor expanded in d around 0 15.9%
if 6.49999999999999967e-147 < w < 8e129Initial program 29.4%
times-frac27.8%
fma-def27.8%
times-frac27.8%
difference-of-squares34.4%
Simplified35.0%
sqrt-prod35.8%
associate-*l*35.8%
div-inv35.7%
clear-num35.7%
associate-*r/35.5%
*-commutative35.5%
times-frac36.0%
associate-/l/37.4%
fma-neg37.4%
Applied egg-rr37.5%
Taylor expanded in d around inf 18.1%
Taylor expanded in c0 around inf 39.8%
*-commutative39.8%
*-commutative39.8%
associate-*l*39.9%
unpow239.9%
associate-*l*40.1%
times-frac41.7%
unpow241.7%
*-commutative41.7%
*-commutative41.7%
Simplified41.7%
Final simplification31.2%
(FPCore (c0 w h D d M)
:precision binary64
(if (<= w -1.02e+42)
0.0
(if (or (<= w 8.6e-282) (and (not (<= w 2.4e-223)) (<= w 9.5e+129)))
(* (/ c0 (* 2.0 w)) (* 2.0 (* (/ c0 w) (/ (* d d) (* D (* h D))))))
0.0)))
double code(double c0, double w, double h, double D, double d, double M) {
double tmp;
if (w <= -1.02e+42) {
tmp = 0.0;
} else if ((w <= 8.6e-282) || (!(w <= 2.4e-223) && (w <= 9.5e+129))) {
tmp = (c0 / (2.0 * w)) * (2.0 * ((c0 / w) * ((d * d) / (D * (h * 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 (w <= (-1.02d+42)) then
tmp = 0.0d0
else if ((w <= 8.6d-282) .or. (.not. (w <= 2.4d-223)) .and. (w <= 9.5d+129)) then
tmp = (c0 / (2.0d0 * w)) * (2.0d0 * ((c0 / w) * ((d_1 * d_1) / (d * (h * 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 tmp;
if (w <= -1.02e+42) {
tmp = 0.0;
} else if ((w <= 8.6e-282) || (!(w <= 2.4e-223) && (w <= 9.5e+129))) {
tmp = (c0 / (2.0 * w)) * (2.0 * ((c0 / w) * ((d * d) / (D * (h * D)))));
} else {
tmp = 0.0;
}
return tmp;
}
def code(c0, w, h, D, d, M): tmp = 0 if w <= -1.02e+42: tmp = 0.0 elif (w <= 8.6e-282) or (not (w <= 2.4e-223) and (w <= 9.5e+129)): tmp = (c0 / (2.0 * w)) * (2.0 * ((c0 / w) * ((d * d) / (D * (h * D))))) else: tmp = 0.0 return tmp
function code(c0, w, h, D, d, M) tmp = 0.0 if (w <= -1.02e+42) tmp = 0.0; elseif ((w <= 8.6e-282) || (!(w <= 2.4e-223) && (w <= 9.5e+129))) tmp = Float64(Float64(c0 / Float64(2.0 * w)) * Float64(2.0 * Float64(Float64(c0 / w) * Float64(Float64(d * d) / Float64(D * Float64(h * D)))))); else tmp = 0.0; end return tmp end
function tmp_2 = code(c0, w, h, D, d, M) tmp = 0.0; if (w <= -1.02e+42) tmp = 0.0; elseif ((w <= 8.6e-282) || (~((w <= 2.4e-223)) && (w <= 9.5e+129))) tmp = (c0 / (2.0 * w)) * (2.0 * ((c0 / w) * ((d * d) / (D * (h * D))))); else tmp = 0.0; end tmp_2 = tmp; end
code[c0_, w_, h_, D_, d_, M_] := If[LessEqual[w, -1.02e+42], 0.0, If[Or[LessEqual[w, 8.6e-282], And[N[Not[LessEqual[w, 2.4e-223]], $MachinePrecision], LessEqual[w, 9.5e+129]]], N[(N[(c0 / N[(2.0 * w), $MachinePrecision]), $MachinePrecision] * N[(2.0 * N[(N[(c0 / w), $MachinePrecision] * N[(N[(d * d), $MachinePrecision] / N[(D * N[(h * D), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 0.0]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;w \leq -1.02 \cdot 10^{+42}:\\
\;\;\;\;0\\
\mathbf{elif}\;w \leq 8.6 \cdot 10^{-282} \lor \neg \left(w \leq 2.4 \cdot 10^{-223}\right) \land w \leq 9.5 \cdot 10^{+129}:\\
\;\;\;\;\frac{c0}{2 \cdot w} \cdot \left(2 \cdot \left(\frac{c0}{w} \cdot \frac{d \cdot d}{D \cdot \left(h \cdot D\right)}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;0\\
\end{array}
\end{array}
if w < -1.01999999999999996e42 or 8.5999999999999999e-282 < w < 2.39999999999999985e-223 or 9.5000000000000004e129 < w Initial program 16.3%
times-frac16.1%
fma-def13.4%
associate-/r*13.7%
difference-of-squares16.7%
Simplified22.5%
Taylor expanded in c0 around -inf 11.9%
associate-*r*11.9%
distribute-rgt1-in11.9%
metadata-eval11.9%
mul0-lft50.7%
metadata-eval50.7%
mul0-lft11.9%
metadata-eval11.9%
distribute-lft1-in11.9%
*-commutative11.9%
distribute-lft1-in11.9%
metadata-eval11.9%
mul0-lft50.7%
Simplified50.7%
Taylor expanded in c0 around 0 52.3%
if -1.01999999999999996e42 < w < 8.5999999999999999e-282 or 2.39999999999999985e-223 < w < 9.5000000000000004e129Initial program 34.5%
times-frac33.0%
fma-def32.5%
times-frac33.1%
difference-of-squares42.2%
Simplified42.5%
sqrt-prod42.4%
associate-*l*42.4%
div-inv42.4%
clear-num42.4%
associate-*r/41.8%
*-commutative41.8%
times-frac43.0%
associate-/l/49.3%
fma-neg49.3%
Applied egg-rr49.9%
Taylor expanded in d around inf 24.3%
Taylor expanded in c0 around inf 44.2%
*-commutative44.2%
*-commutative44.2%
associate-*l*43.7%
unpow243.7%
associate-*l*44.8%
times-frac46.4%
unpow246.4%
*-commutative46.4%
*-commutative46.4%
Simplified46.4%
Final simplification48.0%
(FPCore (c0 w h D d M)
:precision binary64
(let* ((t_0 (/ c0 (* 2.0 w))))
(if (<= w -1.8e+40)
0.0
(if (<= w 8.2e-282)
(* t_0 (* 2.0 (* (/ (* d d) (* D D)) (/ c0 (* w h)))))
(if (<= w 7.8e-224)
0.0
(if (<= w 7.5e+131)
(* t_0 (* 2.0 (* (/ c0 w) (/ (* d d) (* D (* h D))))))
0.0))))))
double code(double c0, double w, double h, double D, double d, double M) {
double t_0 = c0 / (2.0 * w);
double tmp;
if (w <= -1.8e+40) {
tmp = 0.0;
} else if (w <= 8.2e-282) {
tmp = t_0 * (2.0 * (((d * d) / (D * D)) * (c0 / (w * h))));
} else if (w <= 7.8e-224) {
tmp = 0.0;
} else if (w <= 7.5e+131) {
tmp = t_0 * (2.0 * ((c0 / w) * ((d * d) / (D * (h * 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 / (2.0d0 * w)
if (w <= (-1.8d+40)) then
tmp = 0.0d0
else if (w <= 8.2d-282) then
tmp = t_0 * (2.0d0 * (((d_1 * d_1) / (d * d)) * (c0 / (w * h))))
else if (w <= 7.8d-224) then
tmp = 0.0d0
else if (w <= 7.5d+131) then
tmp = t_0 * (2.0d0 * ((c0 / w) * ((d_1 * d_1) / (d * (h * 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 / (2.0 * w);
double tmp;
if (w <= -1.8e+40) {
tmp = 0.0;
} else if (w <= 8.2e-282) {
tmp = t_0 * (2.0 * (((d * d) / (D * D)) * (c0 / (w * h))));
} else if (w <= 7.8e-224) {
tmp = 0.0;
} else if (w <= 7.5e+131) {
tmp = t_0 * (2.0 * ((c0 / w) * ((d * d) / (D * (h * D)))));
} else {
tmp = 0.0;
}
return tmp;
}
def code(c0, w, h, D, d, M): t_0 = c0 / (2.0 * w) tmp = 0 if w <= -1.8e+40: tmp = 0.0 elif w <= 8.2e-282: tmp = t_0 * (2.0 * (((d * d) / (D * D)) * (c0 / (w * h)))) elif w <= 7.8e-224: tmp = 0.0 elif w <= 7.5e+131: tmp = t_0 * (2.0 * ((c0 / w) * ((d * d) / (D * (h * D))))) else: tmp = 0.0 return tmp
function code(c0, w, h, D, d, M) t_0 = Float64(c0 / Float64(2.0 * w)) tmp = 0.0 if (w <= -1.8e+40) tmp = 0.0; elseif (w <= 8.2e-282) tmp = Float64(t_0 * Float64(2.0 * Float64(Float64(Float64(d * d) / Float64(D * D)) * Float64(c0 / Float64(w * h))))); elseif (w <= 7.8e-224) tmp = 0.0; elseif (w <= 7.5e+131) tmp = Float64(t_0 * Float64(2.0 * Float64(Float64(c0 / w) * Float64(Float64(d * d) / Float64(D * Float64(h * D)))))); else tmp = 0.0; end return tmp end
function tmp_2 = code(c0, w, h, D, d, M) t_0 = c0 / (2.0 * w); tmp = 0.0; if (w <= -1.8e+40) tmp = 0.0; elseif (w <= 8.2e-282) tmp = t_0 * (2.0 * (((d * d) / (D * D)) * (c0 / (w * h)))); elseif (w <= 7.8e-224) tmp = 0.0; elseif (w <= 7.5e+131) tmp = t_0 * (2.0 * ((c0 / w) * ((d * d) / (D * (h * D))))); else tmp = 0.0; end tmp_2 = tmp; end
code[c0_, w_, h_, D_, d_, M_] := Block[{t$95$0 = N[(c0 / N[(2.0 * w), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[w, -1.8e+40], 0.0, If[LessEqual[w, 8.2e-282], N[(t$95$0 * N[(2.0 * N[(N[(N[(d * d), $MachinePrecision] / N[(D * D), $MachinePrecision]), $MachinePrecision] * N[(c0 / N[(w * h), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[w, 7.8e-224], 0.0, If[LessEqual[w, 7.5e+131], N[(t$95$0 * N[(2.0 * N[(N[(c0 / w), $MachinePrecision] * N[(N[(d * d), $MachinePrecision] / N[(D * N[(h * D), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 0.0]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{c0}{2 \cdot w}\\
\mathbf{if}\;w \leq -1.8 \cdot 10^{+40}:\\
\;\;\;\;0\\
\mathbf{elif}\;w \leq 8.2 \cdot 10^{-282}:\\
\;\;\;\;t_0 \cdot \left(2 \cdot \left(\frac{d \cdot d}{D \cdot D} \cdot \frac{c0}{w \cdot h}\right)\right)\\
\mathbf{elif}\;w \leq 7.8 \cdot 10^{-224}:\\
\;\;\;\;0\\
\mathbf{elif}\;w \leq 7.5 \cdot 10^{+131}:\\
\;\;\;\;t_0 \cdot \left(2 \cdot \left(\frac{c0}{w} \cdot \frac{d \cdot d}{D \cdot \left(h \cdot D\right)}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;0\\
\end{array}
\end{array}
if w < -1.79999999999999998e40 or 8.19999999999999954e-282 < w < 7.7999999999999996e-224 or 7.4999999999999995e131 < w Initial program 16.3%
times-frac16.1%
fma-def13.4%
associate-/r*13.7%
difference-of-squares16.7%
Simplified22.5%
Taylor expanded in c0 around -inf 11.9%
associate-*r*11.9%
distribute-rgt1-in11.9%
metadata-eval11.9%
mul0-lft50.7%
metadata-eval50.7%
mul0-lft11.9%
metadata-eval11.9%
distribute-lft1-in11.9%
*-commutative11.9%
distribute-lft1-in11.9%
metadata-eval11.9%
mul0-lft50.7%
Simplified50.7%
Taylor expanded in c0 around 0 52.3%
if -1.79999999999999998e40 < w < 8.19999999999999954e-282Initial program 36.2%
times-frac35.3%
fma-def34.4%
times-frac35.5%
difference-of-squares47.2%
Simplified47.2%
sqrt-prod46.7%
associate-*l*46.7%
div-inv46.7%
clear-num46.7%
associate-*r/45.7%
*-commutative45.7%
times-frac47.7%
associate-/l/55.4%
fma-neg55.4%
Applied egg-rr56.4%
Taylor expanded in c0 around inf 47.5%
times-frac51.4%
unpow251.4%
unpow251.4%
Simplified51.4%
if 7.7999999999999996e-224 < w < 7.4999999999999995e131Initial program 32.4%
times-frac30.1%
fma-def30.1%
times-frac30.1%
difference-of-squares36.2%
Simplified36.6%
sqrt-prod37.1%
associate-*l*37.1%
div-inv37.1%
clear-num37.1%
associate-*r/36.9%
*-commutative36.9%
times-frac37.3%
associate-/l/41.9%
fma-neg41.9%
Applied egg-rr42.0%
Taylor expanded in d around inf 20.5%
Taylor expanded in c0 around inf 40.2%
*-commutative40.2%
*-commutative40.2%
associate-*l*39.1%
unpow239.1%
associate-*l*40.4%
times-frac41.6%
unpow241.6%
*-commutative41.6%
*-commutative41.6%
Simplified41.6%
Final simplification48.4%
(FPCore (c0 w h D d M)
:precision binary64
(if (<= M 5.8e-149)
0.0
(if (or (<= M 4e-47) (not (<= M 7e+71)))
(* (/ (* d d) (* D D)) (/ (* c0 c0) (* h (* w w))))
0.0)))
double code(double c0, double w, double h, double D, double d, double M) {
double tmp;
if (M <= 5.8e-149) {
tmp = 0.0;
} else if ((M <= 4e-47) || !(M <= 7e+71)) {
tmp = ((d * d) / (D * D)) * ((c0 * c0) / (h * (w * w)));
} 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 (m <= 5.8d-149) then
tmp = 0.0d0
else if ((m <= 4d-47) .or. (.not. (m <= 7d+71))) then
tmp = ((d_1 * d_1) / (d * d)) * ((c0 * c0) / (h * (w * w)))
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 (M <= 5.8e-149) {
tmp = 0.0;
} else if ((M <= 4e-47) || !(M <= 7e+71)) {
tmp = ((d * d) / (D * D)) * ((c0 * c0) / (h * (w * w)));
} else {
tmp = 0.0;
}
return tmp;
}
def code(c0, w, h, D, d, M): tmp = 0 if M <= 5.8e-149: tmp = 0.0 elif (M <= 4e-47) or not (M <= 7e+71): tmp = ((d * d) / (D * D)) * ((c0 * c0) / (h * (w * w))) else: tmp = 0.0 return tmp
function code(c0, w, h, D, d, M) tmp = 0.0 if (M <= 5.8e-149) tmp = 0.0; elseif ((M <= 4e-47) || !(M <= 7e+71)) tmp = Float64(Float64(Float64(d * d) / Float64(D * D)) * Float64(Float64(c0 * c0) / Float64(h * Float64(w * w)))); else tmp = 0.0; end return tmp end
function tmp_2 = code(c0, w, h, D, d, M) tmp = 0.0; if (M <= 5.8e-149) tmp = 0.0; elseif ((M <= 4e-47) || ~((M <= 7e+71))) tmp = ((d * d) / (D * D)) * ((c0 * c0) / (h * (w * w))); else tmp = 0.0; end tmp_2 = tmp; end
code[c0_, w_, h_, D_, d_, M_] := If[LessEqual[M, 5.8e-149], 0.0, If[Or[LessEqual[M, 4e-47], N[Not[LessEqual[M, 7e+71]], $MachinePrecision]], N[(N[(N[(d * d), $MachinePrecision] / N[(D * D), $MachinePrecision]), $MachinePrecision] * N[(N[(c0 * c0), $MachinePrecision] / N[(h * N[(w * w), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 0.0]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;M \leq 5.8 \cdot 10^{-149}:\\
\;\;\;\;0\\
\mathbf{elif}\;M \leq 4 \cdot 10^{-47} \lor \neg \left(M \leq 7 \cdot 10^{+71}\right):\\
\;\;\;\;\frac{d \cdot d}{D \cdot D} \cdot \frac{c0 \cdot c0}{h \cdot \left(w \cdot w\right)}\\
\mathbf{else}:\\
\;\;\;\;0\\
\end{array}
\end{array}
if M < 5.8e-149 or 3.9999999999999999e-47 < M < 6.9999999999999998e71Initial program 29.4%
times-frac28.5%
fma-def27.6%
associate-/r*28.2%
difference-of-squares32.1%
Simplified39.5%
Taylor expanded in c0 around -inf 7.1%
associate-*r*7.1%
distribute-rgt1-in7.1%
metadata-eval7.1%
mul0-lft32.0%
metadata-eval32.0%
mul0-lft7.6%
metadata-eval7.6%
distribute-lft1-in7.6%
*-commutative7.6%
distribute-lft1-in7.6%
metadata-eval7.6%
mul0-lft32.0%
Simplified32.0%
Taylor expanded in c0 around 0 36.6%
if 5.8e-149 < M < 3.9999999999999999e-47 or 6.9999999999999998e71 < M Initial program 30.4%
times-frac28.2%
fma-def26.3%
times-frac26.2%
difference-of-squares48.3%
Simplified48.3%
sqrt-prod48.1%
associate-*l*48.1%
div-inv48.1%
clear-num48.1%
associate-*r/48.1%
*-commutative48.1%
times-frac48.1%
associate-/l/52.1%
fma-neg52.1%
Applied egg-rr52.3%
Taylor expanded in c0 around inf 50.8%
associate-/l*50.9%
associate-*r/50.9%
unpow250.9%
unpow250.9%
Simplified50.9%
Taylor expanded in c0 around 0 44.6%
times-frac42.2%
unpow242.2%
unpow242.2%
unpow242.2%
*-commutative42.2%
unpow242.2%
Simplified42.2%
Final simplification37.7%
(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 29.6%
times-frac28.4%
fma-def27.3%
associate-/r*27.8%
difference-of-squares35.3%
Simplified42.0%
Taylor expanded in c0 around -inf 6.3%
associate-*r*6.3%
distribute-rgt1-in6.3%
metadata-eval6.3%
mul0-lft27.6%
metadata-eval27.6%
mul0-lft6.6%
metadata-eval6.6%
distribute-lft1-in6.6%
*-commutative6.6%
distribute-lft1-in6.6%
metadata-eval6.6%
mul0-lft27.6%
Simplified27.6%
Taylor expanded in c0 around 0 31.4%
Final simplification31.4%
herbie shell --seed 2023252
(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))))))