
(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 (* d (/ d D)))
(t_1 (/ c0 (* 2.0 w)))
(t_2 (/ (* c0 (* d d)) (* (* w h) (* D D))))
(t_3 (* t_1 (+ t_2 (sqrt (- (* t_2 t_2) (* M M)))))))
(if (<= t_3 -2e+256)
(* t_1 (* 2.0 (/ (/ (* d (* c0 d)) w) (* h (* D D)))))
(if (<= t_3 0.0)
t_3
(if (<= t_3 INFINITY)
(*
t_1
(fma
(/ c0 (* w h))
(* (/ d D) (/ d D))
(*
(sqrt (- (/ (* c0 t_0) (* (* w h) D)) M))
(sqrt (fma (/ (/ c0 w) (* h D)) t_0 M)))))
(* -0.5 (/ 0.0 w)))))))
double code(double c0, double w, double h, double D, double d, double M) {
double t_0 = d * (d / D);
double t_1 = c0 / (2.0 * w);
double t_2 = (c0 * (d * d)) / ((w * h) * (D * D));
double t_3 = t_1 * (t_2 + sqrt(((t_2 * t_2) - (M * M))));
double tmp;
if (t_3 <= -2e+256) {
tmp = t_1 * (2.0 * (((d * (c0 * d)) / w) / (h * (D * D))));
} else if (t_3 <= 0.0) {
tmp = t_3;
} else if (t_3 <= ((double) INFINITY)) {
tmp = t_1 * fma((c0 / (w * h)), ((d / D) * (d / D)), (sqrt((((c0 * t_0) / ((w * h) * D)) - M)) * sqrt(fma(((c0 / w) / (h * D)), t_0, M))));
} else {
tmp = -0.5 * (0.0 / w);
}
return tmp;
}
function code(c0, w, h, D, d, M) t_0 = Float64(d * Float64(d / D)) t_1 = Float64(c0 / Float64(2.0 * w)) t_2 = Float64(Float64(c0 * Float64(d * d)) / Float64(Float64(w * h) * Float64(D * D))) t_3 = Float64(t_1 * Float64(t_2 + sqrt(Float64(Float64(t_2 * t_2) - Float64(M * M))))) tmp = 0.0 if (t_3 <= -2e+256) tmp = Float64(t_1 * Float64(2.0 * Float64(Float64(Float64(d * Float64(c0 * d)) / w) / Float64(h * Float64(D * D))))); elseif (t_3 <= 0.0) tmp = t_3; elseif (t_3 <= Inf) tmp = Float64(t_1 * fma(Float64(c0 / Float64(w * h)), Float64(Float64(d / D) * Float64(d / D)), Float64(sqrt(Float64(Float64(Float64(c0 * t_0) / Float64(Float64(w * h) * D)) - M)) * sqrt(fma(Float64(Float64(c0 / w) / Float64(h * D)), t_0, M))))); else tmp = Float64(-0.5 * Float64(0.0 / w)); end return tmp end
code[c0_, w_, h_, D_, d_, M_] := Block[{t$95$0 = N[(d * 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] / N[(N[(w * h), $MachinePrecision] * N[(D * D), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = 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]}, If[LessEqual[t$95$3, -2e+256], N[(t$95$1 * N[(2.0 * N[(N[(N[(d * N[(c0 * d), $MachinePrecision]), $MachinePrecision] / w), $MachinePrecision] / N[(h * N[(D * D), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$3, 0.0], t$95$3, If[LessEqual[t$95$3, Infinity], N[(t$95$1 * N[(N[(c0 / N[(w * h), $MachinePrecision]), $MachinePrecision] * N[(N[(d / D), $MachinePrecision] * N[(d / D), $MachinePrecision]), $MachinePrecision] + N[(N[Sqrt[N[(N[(N[(c0 * t$95$0), $MachinePrecision] / N[(N[(w * h), $MachinePrecision] * D), $MachinePrecision]), $MachinePrecision] - M), $MachinePrecision]], $MachinePrecision] * N[Sqrt[N[(N[(N[(c0 / w), $MachinePrecision] / N[(h * D), $MachinePrecision]), $MachinePrecision] * t$95$0 + M), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(-0.5 * N[(0.0 / w), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := d \cdot \frac{d}{D}\\
t_1 := \frac{c0}{2 \cdot w}\\
t_2 := \frac{c0 \cdot \left(d \cdot d\right)}{\left(w \cdot h\right) \cdot \left(D \cdot D\right)}\\
t_3 := t_1 \cdot \left(t_2 + \sqrt{t_2 \cdot t_2 - M \cdot M}\right)\\
\mathbf{if}\;t_3 \leq -2 \cdot 10^{+256}:\\
\;\;\;\;t_1 \cdot \left(2 \cdot \frac{\frac{d \cdot \left(c0 \cdot d\right)}{w}}{h \cdot \left(D \cdot D\right)}\right)\\
\mathbf{elif}\;t_3 \leq 0:\\
\;\;\;\;t_3\\
\mathbf{elif}\;t_3 \leq \infty:\\
\;\;\;\;t_1 \cdot \mathsf{fma}\left(\frac{c0}{w \cdot h}, \frac{d}{D} \cdot \frac{d}{D}, \sqrt{\frac{c0 \cdot t_0}{\left(w \cdot h\right) \cdot D} - M} \cdot \sqrt{\mathsf{fma}\left(\frac{\frac{c0}{w}}{h \cdot D}, t_0, M\right)}\right)\\
\mathbf{else}:\\
\;\;\;\;-0.5 \cdot \frac{0}{w}\\
\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))))) < -2.0000000000000001e256Initial program 73.0%
times-frac70.8%
fma-def70.8%
times-frac70.8%
difference-of-squares70.8%
Simplified70.8%
sqrt-prod76.7%
associate-*l*76.7%
div-inv76.7%
clear-num76.7%
associate-*r/76.7%
*-commutative76.7%
times-frac77.7%
associate-/l/77.7%
fma-neg77.7%
associate-/l/77.7%
frac-times77.7%
pow277.7%
Applied egg-rr77.7%
*-commutative77.7%
fma-udef77.7%
unsub-neg77.7%
associate-/r*78.8%
*-commutative78.8%
Simplified78.8%
Taylor expanded in c0 around inf 83.3%
associate-*r/83.3%
unpow283.3%
associate-*r*83.3%
unpow283.3%
Simplified83.3%
Taylor expanded in d around 0 83.3%
unpow283.3%
*-commutative83.3%
associate-*r*83.3%
unpow283.3%
associate-/r*89.6%
associate-*l*89.5%
unpow289.5%
*-commutative89.5%
unpow289.5%
Simplified89.5%
if -2.0000000000000001e256 < (*.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))))) < 0.0Initial program 54.9%
if 0.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))))) < +inf.0Initial program 76.7%
times-frac76.7%
fma-def76.7%
times-frac76.7%
difference-of-squares76.7%
Simplified76.7%
sqrt-prod82.2%
associate-*l*82.2%
div-inv82.2%
clear-num82.2%
associate-*r/82.2%
*-commutative82.2%
times-frac82.2%
associate-/l/83.0%
fma-neg83.0%
associate-/l/82.2%
frac-times90.9%
pow290.9%
Applied egg-rr90.9%
*-commutative90.9%
fma-udef90.9%
unsub-neg90.9%
associate-/r*90.9%
*-commutative90.9%
Simplified90.9%
pow290.9%
associate-*l/91.0%
associate-*r/83.0%
frac-times83.0%
associate-*r/90.9%
Applied egg-rr90.9%
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%
associate-*l*0.0%
difference-of-squares6.9%
associate-*l*7.0%
associate-*l*10.8%
Simplified10.8%
Taylor expanded in c0 around -inf 0.1%
*-commutative0.1%
unpow20.1%
distribute-rgt1-in0.1%
metadata-eval0.1%
mul0-lft25.8%
Simplified25.8%
Taylor expanded in c0 around 0 39.2%
Final simplification55.9%
(FPCore (c0 w h D d M)
:precision binary64
(let* ((t_0 (/ c0 (* 2.0 w)))
(t_1 (/ c0 (* w h)))
(t_2 (/ (* c0 (* d d)) (* (* w h) (* D D))))
(t_3 (* t_0 (+ t_2 (sqrt (- (* t_2 t_2) (* M M)))))))
(if (<= t_3 -2e+256)
(* t_0 (* 2.0 (/ (/ (* d (* c0 d)) w) (* h (* D D)))))
(if (<= t_3 0.0)
t_3
(if (<= t_3 INFINITY)
(*
t_0
(fma
t_1
(* (/ d D) (/ d D))
(* (sqrt (- (* t_1 (pow (/ d D) 2.0)) M)) (* (/ d D) (sqrt t_1)))))
(* -0.5 (/ 0.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 = c0 / (w * h);
double t_2 = (c0 * (d * d)) / ((w * h) * (D * D));
double t_3 = t_0 * (t_2 + sqrt(((t_2 * t_2) - (M * M))));
double tmp;
if (t_3 <= -2e+256) {
tmp = t_0 * (2.0 * (((d * (c0 * d)) / w) / (h * (D * D))));
} else if (t_3 <= 0.0) {
tmp = t_3;
} else if (t_3 <= ((double) INFINITY)) {
tmp = t_0 * fma(t_1, ((d / D) * (d / D)), (sqrt(((t_1 * pow((d / D), 2.0)) - M)) * ((d / D) * sqrt(t_1))));
} else {
tmp = -0.5 * (0.0 / w);
}
return tmp;
}
function code(c0, w, h, D, d, M) t_0 = Float64(c0 / Float64(2.0 * w)) t_1 = Float64(c0 / Float64(w * h)) t_2 = Float64(Float64(c0 * Float64(d * d)) / Float64(Float64(w * h) * Float64(D * D))) t_3 = Float64(t_0 * Float64(t_2 + sqrt(Float64(Float64(t_2 * t_2) - Float64(M * M))))) tmp = 0.0 if (t_3 <= -2e+256) tmp = Float64(t_0 * Float64(2.0 * Float64(Float64(Float64(d * Float64(c0 * d)) / w) / Float64(h * Float64(D * D))))); elseif (t_3 <= 0.0) tmp = t_3; elseif (t_3 <= Inf) tmp = Float64(t_0 * fma(t_1, Float64(Float64(d / D) * Float64(d / D)), Float64(sqrt(Float64(Float64(t_1 * (Float64(d / D) ^ 2.0)) - M)) * Float64(Float64(d / D) * sqrt(t_1))))); else tmp = Float64(-0.5 * Float64(0.0 / w)); end return 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[(c0 / N[(w * h), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(c0 * N[(d * d), $MachinePrecision]), $MachinePrecision] / N[(N[(w * h), $MachinePrecision] * N[(D * D), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(t$95$0 * N[(t$95$2 + N[Sqrt[N[(N[(t$95$2 * t$95$2), $MachinePrecision] - N[(M * M), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$3, -2e+256], N[(t$95$0 * N[(2.0 * N[(N[(N[(d * N[(c0 * d), $MachinePrecision]), $MachinePrecision] / w), $MachinePrecision] / N[(h * N[(D * D), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$3, 0.0], t$95$3, If[LessEqual[t$95$3, Infinity], N[(t$95$0 * N[(t$95$1 * N[(N[(d / D), $MachinePrecision] * N[(d / D), $MachinePrecision]), $MachinePrecision] + N[(N[Sqrt[N[(N[(t$95$1 * N[Power[N[(d / D), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] - M), $MachinePrecision]], $MachinePrecision] * N[(N[(d / D), $MachinePrecision] * N[Sqrt[t$95$1], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(-0.5 * N[(0.0 / w), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{c0}{2 \cdot w}\\
t_1 := \frac{c0}{w \cdot h}\\
t_2 := \frac{c0 \cdot \left(d \cdot d\right)}{\left(w \cdot h\right) \cdot \left(D \cdot D\right)}\\
t_3 := t_0 \cdot \left(t_2 + \sqrt{t_2 \cdot t_2 - M \cdot M}\right)\\
\mathbf{if}\;t_3 \leq -2 \cdot 10^{+256}:\\
\;\;\;\;t_0 \cdot \left(2 \cdot \frac{\frac{d \cdot \left(c0 \cdot d\right)}{w}}{h \cdot \left(D \cdot D\right)}\right)\\
\mathbf{elif}\;t_3 \leq 0:\\
\;\;\;\;t_3\\
\mathbf{elif}\;t_3 \leq \infty:\\
\;\;\;\;t_0 \cdot \mathsf{fma}\left(t_1, \frac{d}{D} \cdot \frac{d}{D}, \sqrt{t_1 \cdot {\left(\frac{d}{D}\right)}^{2} - M} \cdot \left(\frac{d}{D} \cdot \sqrt{t_1}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;-0.5 \cdot \frac{0}{w}\\
\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))))) < -2.0000000000000001e256Initial program 73.0%
times-frac70.8%
fma-def70.8%
times-frac70.8%
difference-of-squares70.8%
Simplified70.8%
sqrt-prod76.7%
associate-*l*76.7%
div-inv76.7%
clear-num76.7%
associate-*r/76.7%
*-commutative76.7%
times-frac77.7%
associate-/l/77.7%
fma-neg77.7%
associate-/l/77.7%
frac-times77.7%
pow277.7%
Applied egg-rr77.7%
*-commutative77.7%
fma-udef77.7%
unsub-neg77.7%
associate-/r*78.8%
*-commutative78.8%
Simplified78.8%
Taylor expanded in c0 around inf 83.3%
associate-*r/83.3%
unpow283.3%
associate-*r*83.3%
unpow283.3%
Simplified83.3%
Taylor expanded in d around 0 83.3%
unpow283.3%
*-commutative83.3%
associate-*r*83.3%
unpow283.3%
associate-/r*89.6%
associate-*l*89.5%
unpow289.5%
*-commutative89.5%
unpow289.5%
Simplified89.5%
if -2.0000000000000001e256 < (*.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))))) < 0.0Initial program 54.9%
if 0.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))))) < +inf.0Initial program 76.7%
times-frac76.7%
fma-def76.7%
times-frac76.7%
difference-of-squares76.7%
Simplified76.7%
sqrt-prod82.2%
associate-*l*82.2%
div-inv82.2%
clear-num82.2%
associate-*r/82.2%
*-commutative82.2%
times-frac82.2%
associate-/l/83.0%
fma-neg83.0%
associate-/l/82.2%
frac-times90.9%
pow290.9%
Applied egg-rr90.9%
*-commutative90.9%
fma-udef90.9%
unsub-neg90.9%
associate-/r*90.9%
*-commutative90.9%
Simplified90.9%
Taylor expanded in D around 0 32.2%
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%
associate-*l*0.0%
difference-of-squares6.9%
associate-*l*7.0%
associate-*l*10.8%
Simplified10.8%
Taylor expanded in c0 around -inf 0.1%
*-commutative0.1%
unpow20.1%
distribute-rgt1-in0.1%
metadata-eval0.1%
mul0-lft25.8%
Simplified25.8%
Taylor expanded in c0 around 0 39.2%
Final simplification48.5%
(FPCore (c0 w h D d M)
:precision binary64
(let* ((t_0 (/ c0 (* 2.0 w)))
(t_1 (/ (* c0 (* d d)) (* (* w h) (* D D))))
(t_2 (* t_0 (+ t_1 (sqrt (- (* t_1 t_1) (* M M)))))))
(if (<= t_2 -2e+256)
(* t_0 (* 2.0 (/ (/ (* d (* c0 d)) w) (* h (* D D)))))
(if (<= t_2 INFINITY) t_2 (* -0.5 (/ 0.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 = (c0 * (d * d)) / ((w * h) * (D * D));
double t_2 = t_0 * (t_1 + sqrt(((t_1 * t_1) - (M * M))));
double tmp;
if (t_2 <= -2e+256) {
tmp = t_0 * (2.0 * (((d * (c0 * d)) / w) / (h * (D * D))));
} else if (t_2 <= ((double) INFINITY)) {
tmp = t_2;
} else {
tmp = -0.5 * (0.0 / w);
}
return tmp;
}
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 = (c0 * (d * d)) / ((w * h) * (D * D));
double t_2 = t_0 * (t_1 + Math.sqrt(((t_1 * t_1) - (M * M))));
double tmp;
if (t_2 <= -2e+256) {
tmp = t_0 * (2.0 * (((d * (c0 * d)) / w) / (h * (D * D))));
} else if (t_2 <= Double.POSITIVE_INFINITY) {
tmp = t_2;
} else {
tmp = -0.5 * (0.0 / w);
}
return tmp;
}
def code(c0, w, h, D, d, M): t_0 = c0 / (2.0 * w) t_1 = (c0 * (d * d)) / ((w * h) * (D * D)) t_2 = t_0 * (t_1 + math.sqrt(((t_1 * t_1) - (M * M)))) tmp = 0 if t_2 <= -2e+256: tmp = t_0 * (2.0 * (((d * (c0 * d)) / w) / (h * (D * D)))) elif t_2 <= math.inf: tmp = t_2 else: tmp = -0.5 * (0.0 / w) return tmp
function code(c0, w, h, D, d, M) t_0 = Float64(c0 / Float64(2.0 * w)) t_1 = Float64(Float64(c0 * Float64(d * d)) / Float64(Float64(w * h) * Float64(D * D))) t_2 = Float64(t_0 * Float64(t_1 + sqrt(Float64(Float64(t_1 * t_1) - Float64(M * M))))) tmp = 0.0 if (t_2 <= -2e+256) tmp = Float64(t_0 * Float64(2.0 * Float64(Float64(Float64(d * Float64(c0 * d)) / w) / Float64(h * Float64(D * D))))); elseif (t_2 <= Inf) tmp = t_2; else tmp = Float64(-0.5 * Float64(0.0 / w)); end return tmp end
function tmp_2 = code(c0, w, h, D, d, M) t_0 = c0 / (2.0 * w); t_1 = (c0 * (d * d)) / ((w * h) * (D * D)); t_2 = t_0 * (t_1 + sqrt(((t_1 * t_1) - (M * M)))); tmp = 0.0; if (t_2 <= -2e+256) tmp = t_0 * (2.0 * (((d * (c0 * d)) / w) / (h * (D * D)))); elseif (t_2 <= Inf) tmp = t_2; else tmp = -0.5 * (0.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[(N[(c0 * N[(d * d), $MachinePrecision]), $MachinePrecision] / N[(N[(w * h), $MachinePrecision] * N[(D * D), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$0 * N[(t$95$1 + N[Sqrt[N[(N[(t$95$1 * t$95$1), $MachinePrecision] - N[(M * M), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$2, -2e+256], N[(t$95$0 * N[(2.0 * N[(N[(N[(d * N[(c0 * d), $MachinePrecision]), $MachinePrecision] / w), $MachinePrecision] / N[(h * N[(D * D), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$2, Infinity], t$95$2, N[(-0.5 * N[(0.0 / w), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{c0}{2 \cdot w}\\
t_1 := \frac{c0 \cdot \left(d \cdot d\right)}{\left(w \cdot h\right) \cdot \left(D \cdot D\right)}\\
t_2 := t_0 \cdot \left(t_1 + \sqrt{t_1 \cdot t_1 - M \cdot M}\right)\\
\mathbf{if}\;t_2 \leq -2 \cdot 10^{+256}:\\
\;\;\;\;t_0 \cdot \left(2 \cdot \frac{\frac{d \cdot \left(c0 \cdot d\right)}{w}}{h \cdot \left(D \cdot D\right)}\right)\\
\mathbf{elif}\;t_2 \leq \infty:\\
\;\;\;\;t_2\\
\mathbf{else}:\\
\;\;\;\;-0.5 \cdot \frac{0}{w}\\
\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))))) < -2.0000000000000001e256Initial program 73.0%
times-frac70.8%
fma-def70.8%
times-frac70.8%
difference-of-squares70.8%
Simplified70.8%
sqrt-prod76.7%
associate-*l*76.7%
div-inv76.7%
clear-num76.7%
associate-*r/76.7%
*-commutative76.7%
times-frac77.7%
associate-/l/77.7%
fma-neg77.7%
associate-/l/77.7%
frac-times77.7%
pow277.7%
Applied egg-rr77.7%
*-commutative77.7%
fma-udef77.7%
unsub-neg77.7%
associate-/r*78.8%
*-commutative78.8%
Simplified78.8%
Taylor expanded in c0 around inf 83.3%
associate-*r/83.3%
unpow283.3%
associate-*r*83.3%
unpow283.3%
Simplified83.3%
Taylor expanded in d around 0 83.3%
unpow283.3%
*-commutative83.3%
associate-*r*83.3%
unpow283.3%
associate-/r*89.6%
associate-*l*89.5%
unpow289.5%
*-commutative89.5%
unpow289.5%
Simplified89.5%
if -2.0000000000000001e256 < (*.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 68.6%
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%
associate-*l*0.0%
difference-of-squares6.9%
associate-*l*7.0%
associate-*l*10.8%
Simplified10.8%
Taylor expanded in c0 around -inf 0.1%
*-commutative0.1%
unpow20.1%
distribute-rgt1-in0.1%
metadata-eval0.1%
mul0-lft25.8%
Simplified25.8%
Taylor expanded in c0 around 0 39.2%
Final simplification54.1%
(FPCore (c0 w h D d M)
:precision binary64
(if (<= (* d d) 2e-323)
(* (pow (/ d D) 2.0) (/ (* c0 (/ c0 h)) (* w w)))
(if (<= (* d d) 5e+287)
(* (/ c0 (* 2.0 w)) (* 2.0 (* (* d d) (/ c0 (* D (* (* w h) D))))))
(* -0.5 (/ 0.0 w)))))
double code(double c0, double w, double h, double D, double d, double M) {
double tmp;
if ((d * d) <= 2e-323) {
tmp = pow((d / D), 2.0) * ((c0 * (c0 / h)) / (w * w));
} else if ((d * d) <= 5e+287) {
tmp = (c0 / (2.0 * w)) * (2.0 * ((d * d) * (c0 / (D * ((w * h) * D)))));
} else {
tmp = -0.5 * (0.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) :: tmp
if ((d_1 * d_1) <= 2d-323) then
tmp = ((d_1 / d) ** 2.0d0) * ((c0 * (c0 / h)) / (w * w))
else if ((d_1 * d_1) <= 5d+287) then
tmp = (c0 / (2.0d0 * w)) * (2.0d0 * ((d_1 * d_1) * (c0 / (d * ((w * h) * d)))))
else
tmp = (-0.5d0) * (0.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 tmp;
if ((d * d) <= 2e-323) {
tmp = Math.pow((d / D), 2.0) * ((c0 * (c0 / h)) / (w * w));
} else if ((d * d) <= 5e+287) {
tmp = (c0 / (2.0 * w)) * (2.0 * ((d * d) * (c0 / (D * ((w * h) * D)))));
} else {
tmp = -0.5 * (0.0 / w);
}
return tmp;
}
def code(c0, w, h, D, d, M): tmp = 0 if (d * d) <= 2e-323: tmp = math.pow((d / D), 2.0) * ((c0 * (c0 / h)) / (w * w)) elif (d * d) <= 5e+287: tmp = (c0 / (2.0 * w)) * (2.0 * ((d * d) * (c0 / (D * ((w * h) * D))))) else: tmp = -0.5 * (0.0 / w) return tmp
function code(c0, w, h, D, d, M) tmp = 0.0 if (Float64(d * d) <= 2e-323) tmp = Float64((Float64(d / D) ^ 2.0) * Float64(Float64(c0 * Float64(c0 / h)) / Float64(w * w))); elseif (Float64(d * d) <= 5e+287) tmp = Float64(Float64(c0 / Float64(2.0 * w)) * Float64(2.0 * Float64(Float64(d * d) * Float64(c0 / Float64(D * Float64(Float64(w * h) * D)))))); else tmp = Float64(-0.5 * Float64(0.0 / w)); end return tmp end
function tmp_2 = code(c0, w, h, D, d, M) tmp = 0.0; if ((d * d) <= 2e-323) tmp = ((d / D) ^ 2.0) * ((c0 * (c0 / h)) / (w * w)); elseif ((d * d) <= 5e+287) tmp = (c0 / (2.0 * w)) * (2.0 * ((d * d) * (c0 / (D * ((w * h) * D))))); else tmp = -0.5 * (0.0 / w); end tmp_2 = tmp; end
code[c0_, w_, h_, D_, d_, M_] := If[LessEqual[N[(d * d), $MachinePrecision], 2e-323], N[(N[Power[N[(d / D), $MachinePrecision], 2.0], $MachinePrecision] * N[(N[(c0 * N[(c0 / h), $MachinePrecision]), $MachinePrecision] / N[(w * w), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[N[(d * d), $MachinePrecision], 5e+287], N[(N[(c0 / N[(2.0 * w), $MachinePrecision]), $MachinePrecision] * N[(2.0 * N[(N[(d * d), $MachinePrecision] * N[(c0 / N[(D * N[(N[(w * h), $MachinePrecision] * D), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(-0.5 * N[(0.0 / w), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;d \cdot d \leq 2 \cdot 10^{-323}:\\
\;\;\;\;{\left(\frac{d}{D}\right)}^{2} \cdot \frac{c0 \cdot \frac{c0}{h}}{w \cdot w}\\
\mathbf{elif}\;d \cdot d \leq 5 \cdot 10^{+287}:\\
\;\;\;\;\frac{c0}{2 \cdot w} \cdot \left(2 \cdot \left(\left(d \cdot d\right) \cdot \frac{c0}{D \cdot \left(\left(w \cdot h\right) \cdot D\right)}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;-0.5 \cdot \frac{0}{w}\\
\end{array}
\end{array}
if (*.f64 d d) < 1.97626e-323Initial program 0.2%
times-frac0.2%
fma-def0.2%
times-frac0.2%
difference-of-squares0.2%
Simplified0.2%
sqrt-prod0.2%
associate-*l*0.2%
div-inv0.2%
clear-num0.2%
associate-*r/0.2%
*-commutative0.2%
times-frac0.2%
associate-/l/6.5%
fma-neg6.5%
associate-/l/0.2%
frac-times30.2%
pow230.2%
Applied egg-rr30.2%
*-commutative30.2%
fma-udef30.2%
unsub-neg30.2%
associate-/r*30.2%
*-commutative30.2%
Simplified30.2%
Taylor expanded in c0 around inf 0.4%
associate-*r/0.2%
unpow20.2%
associate-*r*0.2%
unpow20.2%
Simplified0.2%
Taylor expanded in c0 around 0 0.2%
times-frac0.2%
unpow20.2%
*-commutative0.2%
unpow20.2%
associate-*l/0.2%
unpow20.2%
times-frac1.3%
associate-*r/1.6%
associate-*l/1.6%
unpow21.6%
associate-*l/30.3%
associate-*r/45.5%
unpow245.5%
unpow245.5%
times-frac50.6%
unpow250.6%
*-commutative50.6%
unpow250.6%
associate-*l/50.5%
unpow250.5%
Simplified50.5%
if 1.97626e-323 < (*.f64 d d) < 5e287Initial program 31.8%
times-frac29.0%
fma-def27.6%
times-frac27.8%
difference-of-squares34.9%
Simplified36.4%
sqrt-prod37.1%
associate-*l*37.0%
div-inv37.0%
clear-num37.0%
associate-*r/36.1%
*-commutative36.1%
times-frac37.3%
associate-/l/38.9%
fma-neg38.9%
associate-/l/37.3%
frac-times39.3%
pow239.3%
Applied egg-rr39.3%
*-commutative39.3%
fma-udef39.3%
unsub-neg39.3%
associate-/r*39.7%
*-commutative39.7%
Simplified39.7%
Taylor expanded in c0 around inf 44.1%
associate-*r/46.4%
unpow246.4%
associate-*r*49.4%
unpow249.4%
Simplified49.4%
if 5e287 < (*.f64 d d) Initial program 24.8%
associate-*l*24.8%
difference-of-squares25.9%
associate-*l*25.9%
associate-*l*28.1%
Simplified28.1%
Taylor expanded in c0 around -inf 1.1%
*-commutative1.1%
unpow21.1%
distribute-rgt1-in1.1%
metadata-eval1.1%
mul0-lft30.6%
Simplified30.6%
Taylor expanded in c0 around 0 42.0%
Final simplification46.8%
(FPCore (c0 w h D d M)
:precision binary64
(if (<= (* d d) 2e-323)
(* (* (/ d D) (/ d D)) (/ (* c0 c0) (* h (* w w))))
(if (<= (* d d) 5e+287)
(* (/ c0 (* 2.0 w)) (* 2.0 (* (* d d) (/ c0 (* D (* (* w h) D))))))
(* -0.5 (/ 0.0 w)))))
double code(double c0, double w, double h, double D, double d, double M) {
double tmp;
if ((d * d) <= 2e-323) {
tmp = ((d / D) * (d / D)) * ((c0 * c0) / (h * (w * w)));
} else if ((d * d) <= 5e+287) {
tmp = (c0 / (2.0 * w)) * (2.0 * ((d * d) * (c0 / (D * ((w * h) * D)))));
} else {
tmp = -0.5 * (0.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) :: tmp
if ((d_1 * d_1) <= 2d-323) then
tmp = ((d_1 / d) * (d_1 / d)) * ((c0 * c0) / (h * (w * w)))
else if ((d_1 * d_1) <= 5d+287) then
tmp = (c0 / (2.0d0 * w)) * (2.0d0 * ((d_1 * d_1) * (c0 / (d * ((w * h) * d)))))
else
tmp = (-0.5d0) * (0.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 tmp;
if ((d * d) <= 2e-323) {
tmp = ((d / D) * (d / D)) * ((c0 * c0) / (h * (w * w)));
} else if ((d * d) <= 5e+287) {
tmp = (c0 / (2.0 * w)) * (2.0 * ((d * d) * (c0 / (D * ((w * h) * D)))));
} else {
tmp = -0.5 * (0.0 / w);
}
return tmp;
}
def code(c0, w, h, D, d, M): tmp = 0 if (d * d) <= 2e-323: tmp = ((d / D) * (d / D)) * ((c0 * c0) / (h * (w * w))) elif (d * d) <= 5e+287: tmp = (c0 / (2.0 * w)) * (2.0 * ((d * d) * (c0 / (D * ((w * h) * D))))) else: tmp = -0.5 * (0.0 / w) return tmp
function code(c0, w, h, D, d, M) tmp = 0.0 if (Float64(d * d) <= 2e-323) tmp = Float64(Float64(Float64(d / D) * Float64(d / D)) * Float64(Float64(c0 * c0) / Float64(h * Float64(w * w)))); elseif (Float64(d * d) <= 5e+287) tmp = Float64(Float64(c0 / Float64(2.0 * w)) * Float64(2.0 * Float64(Float64(d * d) * Float64(c0 / Float64(D * Float64(Float64(w * h) * D)))))); else tmp = Float64(-0.5 * Float64(0.0 / w)); end return tmp end
function tmp_2 = code(c0, w, h, D, d, M) tmp = 0.0; if ((d * d) <= 2e-323) tmp = ((d / D) * (d / D)) * ((c0 * c0) / (h * (w * w))); elseif ((d * d) <= 5e+287) tmp = (c0 / (2.0 * w)) * (2.0 * ((d * d) * (c0 / (D * ((w * h) * D))))); else tmp = -0.5 * (0.0 / w); end tmp_2 = tmp; end
code[c0_, w_, h_, D_, d_, M_] := If[LessEqual[N[(d * d), $MachinePrecision], 2e-323], 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], If[LessEqual[N[(d * d), $MachinePrecision], 5e+287], N[(N[(c0 / N[(2.0 * w), $MachinePrecision]), $MachinePrecision] * N[(2.0 * N[(N[(d * d), $MachinePrecision] * N[(c0 / N[(D * N[(N[(w * h), $MachinePrecision] * D), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(-0.5 * N[(0.0 / w), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;d \cdot d \leq 2 \cdot 10^{-323}:\\
\;\;\;\;\left(\frac{d}{D} \cdot \frac{d}{D}\right) \cdot \frac{c0 \cdot c0}{h \cdot \left(w \cdot w\right)}\\
\mathbf{elif}\;d \cdot d \leq 5 \cdot 10^{+287}:\\
\;\;\;\;\frac{c0}{2 \cdot w} \cdot \left(2 \cdot \left(\left(d \cdot d\right) \cdot \frac{c0}{D \cdot \left(\left(w \cdot h\right) \cdot D\right)}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;-0.5 \cdot \frac{0}{w}\\
\end{array}
\end{array}
if (*.f64 d d) < 1.97626e-323Initial program 0.2%
associate-*l*0.2%
difference-of-squares0.2%
associate-*l*0.2%
associate-*l*0.2%
Simplified0.2%
Taylor expanded in c0 around inf 0.2%
times-frac0.2%
unpow20.2%
unpow20.2%
unpow20.2%
*-commutative0.2%
unpow20.2%
Simplified0.2%
frac-times45.5%
Applied egg-rr45.5%
if 1.97626e-323 < (*.f64 d d) < 5e287Initial program 31.8%
times-frac29.0%
fma-def27.6%
times-frac27.8%
difference-of-squares34.9%
Simplified36.4%
sqrt-prod37.1%
associate-*l*37.0%
div-inv37.0%
clear-num37.0%
associate-*r/36.1%
*-commutative36.1%
times-frac37.3%
associate-/l/38.9%
fma-neg38.9%
associate-/l/37.3%
frac-times39.3%
pow239.3%
Applied egg-rr39.3%
*-commutative39.3%
fma-udef39.3%
unsub-neg39.3%
associate-/r*39.7%
*-commutative39.7%
Simplified39.7%
Taylor expanded in c0 around inf 44.1%
associate-*r/46.4%
unpow246.4%
associate-*r*49.4%
unpow249.4%
Simplified49.4%
if 5e287 < (*.f64 d d) Initial program 24.8%
associate-*l*24.8%
difference-of-squares25.9%
associate-*l*25.9%
associate-*l*28.1%
Simplified28.1%
Taylor expanded in c0 around -inf 1.1%
*-commutative1.1%
unpow21.1%
distribute-rgt1-in1.1%
metadata-eval1.1%
mul0-lft30.6%
Simplified30.6%
Taylor expanded in c0 around 0 42.0%
Final simplification46.4%
(FPCore (c0 w h D d M) :precision binary64 (if (or (<= M 9.5e-260) (and (not (<= M 3.05e-232)) (<= M 6.8e-144))) (* -0.5 (/ 0.0 w)) (* (* (/ d D) (/ d D)) (/ (* c0 c0) (* h (* w w))))))
double code(double c0, double w, double h, double D, double d, double M) {
double tmp;
if ((M <= 9.5e-260) || (!(M <= 3.05e-232) && (M <= 6.8e-144))) {
tmp = -0.5 * (0.0 / w);
} else {
tmp = ((d / D) * (d / D)) * ((c0 * c0) / (h * (w * 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) :: tmp
if ((m <= 9.5d-260) .or. (.not. (m <= 3.05d-232)) .and. (m <= 6.8d-144)) then
tmp = (-0.5d0) * (0.0d0 / w)
else
tmp = ((d_1 / d) * (d_1 / d)) * ((c0 * c0) / (h * (w * w)))
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 <= 9.5e-260) || (!(M <= 3.05e-232) && (M <= 6.8e-144))) {
tmp = -0.5 * (0.0 / w);
} else {
tmp = ((d / D) * (d / D)) * ((c0 * c0) / (h * (w * w)));
}
return tmp;
}
def code(c0, w, h, D, d, M): tmp = 0 if (M <= 9.5e-260) or (not (M <= 3.05e-232) and (M <= 6.8e-144)): tmp = -0.5 * (0.0 / w) else: tmp = ((d / D) * (d / D)) * ((c0 * c0) / (h * (w * w))) return tmp
function code(c0, w, h, D, d, M) tmp = 0.0 if ((M <= 9.5e-260) || (!(M <= 3.05e-232) && (M <= 6.8e-144))) tmp = Float64(-0.5 * Float64(0.0 / w)); else tmp = Float64(Float64(Float64(d / D) * Float64(d / D)) * Float64(Float64(c0 * c0) / Float64(h * Float64(w * w)))); end return tmp end
function tmp_2 = code(c0, w, h, D, d, M) tmp = 0.0; if ((M <= 9.5e-260) || (~((M <= 3.05e-232)) && (M <= 6.8e-144))) tmp = -0.5 * (0.0 / w); else tmp = ((d / D) * (d / D)) * ((c0 * c0) / (h * (w * w))); end tmp_2 = tmp; end
code[c0_, w_, h_, D_, d_, M_] := If[Or[LessEqual[M, 9.5e-260], And[N[Not[LessEqual[M, 3.05e-232]], $MachinePrecision], LessEqual[M, 6.8e-144]]], N[(-0.5 * N[(0.0 / w), $MachinePrecision]), $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]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;M \leq 9.5 \cdot 10^{-260} \lor \neg \left(M \leq 3.05 \cdot 10^{-232}\right) \land M \leq 6.8 \cdot 10^{-144}:\\
\;\;\;\;-0.5 \cdot \frac{0}{w}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{d}{D} \cdot \frac{d}{D}\right) \cdot \frac{c0 \cdot c0}{h \cdot \left(w \cdot w\right)}\\
\end{array}
\end{array}
if M < 9.5000000000000001e-260 or 3.0500000000000001e-232 < M < 6.80000000000000035e-144Initial program 24.6%
associate-*l*23.0%
difference-of-squares25.3%
associate-*l*25.2%
associate-*l*26.4%
Simplified26.4%
Taylor expanded in c0 around -inf 4.6%
*-commutative4.6%
unpow24.6%
distribute-rgt1-in4.6%
metadata-eval4.6%
mul0-lft24.9%
Simplified24.9%
Taylor expanded in c0 around 0 35.7%
if 9.5000000000000001e-260 < M < 3.0500000000000001e-232 or 6.80000000000000035e-144 < M Initial program 31.0%
associate-*l*31.0%
difference-of-squares39.2%
associate-*l*39.4%
associate-*l*43.8%
Simplified43.8%
Taylor expanded in c0 around inf 38.0%
times-frac36.9%
unpow236.9%
unpow236.9%
unpow236.9%
*-commutative36.9%
unpow236.9%
Simplified36.9%
frac-times46.2%
Applied egg-rr46.2%
Final simplification39.2%
(FPCore (c0 w h D d M) :precision binary64 (if (or (<= M 3.8e-282) (and (not (<= M 3e-230)) (<= M 8e-141))) (* -0.5 (/ 0.0 w)) (/ (* c0 (* d (* c0 d))) (* D (* D (* h (* w w)))))))
double code(double c0, double w, double h, double D, double d, double M) {
double tmp;
if ((M <= 3.8e-282) || (!(M <= 3e-230) && (M <= 8e-141))) {
tmp = -0.5 * (0.0 / w);
} else {
tmp = (c0 * (d * (c0 * d))) / (D * (D * (h * (w * 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) :: tmp
if ((m <= 3.8d-282) .or. (.not. (m <= 3d-230)) .and. (m <= 8d-141)) then
tmp = (-0.5d0) * (0.0d0 / w)
else
tmp = (c0 * (d_1 * (c0 * d_1))) / (d * (d * (h * (w * w))))
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 <= 3.8e-282) || (!(M <= 3e-230) && (M <= 8e-141))) {
tmp = -0.5 * (0.0 / w);
} else {
tmp = (c0 * (d * (c0 * d))) / (D * (D * (h * (w * w))));
}
return tmp;
}
def code(c0, w, h, D, d, M): tmp = 0 if (M <= 3.8e-282) or (not (M <= 3e-230) and (M <= 8e-141)): tmp = -0.5 * (0.0 / w) else: tmp = (c0 * (d * (c0 * d))) / (D * (D * (h * (w * w)))) return tmp
function code(c0, w, h, D, d, M) tmp = 0.0 if ((M <= 3.8e-282) || (!(M <= 3e-230) && (M <= 8e-141))) tmp = Float64(-0.5 * Float64(0.0 / w)); else tmp = Float64(Float64(c0 * Float64(d * Float64(c0 * d))) / Float64(D * Float64(D * Float64(h * Float64(w * w))))); end return tmp end
function tmp_2 = code(c0, w, h, D, d, M) tmp = 0.0; if ((M <= 3.8e-282) || (~((M <= 3e-230)) && (M <= 8e-141))) tmp = -0.5 * (0.0 / w); else tmp = (c0 * (d * (c0 * d))) / (D * (D * (h * (w * w)))); end tmp_2 = tmp; end
code[c0_, w_, h_, D_, d_, M_] := If[Or[LessEqual[M, 3.8e-282], And[N[Not[LessEqual[M, 3e-230]], $MachinePrecision], LessEqual[M, 8e-141]]], N[(-0.5 * N[(0.0 / w), $MachinePrecision]), $MachinePrecision], N[(N[(c0 * N[(d * N[(c0 * d), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(D * N[(D * N[(h * N[(w * w), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;M \leq 3.8 \cdot 10^{-282} \lor \neg \left(M \leq 3 \cdot 10^{-230}\right) \land M \leq 8 \cdot 10^{-141}:\\
\;\;\;\;-0.5 \cdot \frac{0}{w}\\
\mathbf{else}:\\
\;\;\;\;\frac{c0 \cdot \left(d \cdot \left(c0 \cdot d\right)\right)}{D \cdot \left(D \cdot \left(h \cdot \left(w \cdot w\right)\right)\right)}\\
\end{array}
\end{array}
if M < 3.79999999999999992e-282 or 3e-230 < M < 8.0000000000000003e-141Initial program 24.1%
associate-*l*22.4%
difference-of-squares24.8%
associate-*l*24.7%
associate-*l*26.0%
Simplified26.0%
Taylor expanded in c0 around -inf 4.7%
*-commutative4.7%
unpow24.7%
distribute-rgt1-in4.7%
metadata-eval4.7%
mul0-lft25.0%
Simplified25.0%
Taylor expanded in c0 around 0 35.4%
if 3.79999999999999992e-282 < M < 3e-230 or 8.0000000000000003e-141 < M Initial program 31.6%
times-frac30.5%
fma-def29.4%
times-frac29.4%
difference-of-squares37.2%
Simplified37.2%
sqrt-prod39.1%
associate-*l*39.1%
div-inv39.1%
clear-num39.1%
associate-*r/39.0%
*-commutative39.0%
times-frac39.5%
associate-/l/42.6%
fma-neg42.6%
associate-/l/39.5%
frac-times47.2%
pow247.2%
Applied egg-rr47.2%
*-commutative47.2%
fma-udef47.2%
unsub-neg47.2%
associate-/r*48.8%
*-commutative48.8%
Simplified48.8%
Taylor expanded in c0 around inf 43.0%
associate-*r/43.1%
unpow243.1%
associate-*r*44.5%
unpow244.5%
Simplified44.5%
Taylor expanded in c0 around 0 35.9%
unpow235.9%
associate-*r*38.3%
unpow238.3%
associate-*l*39.5%
*-commutative39.5%
unpow239.5%
unpow239.5%
associate-*l*42.9%
Simplified42.9%
Final simplification38.1%
(FPCore (c0 w h D d M) :precision binary64 (* -0.5 (/ 0.0 w)))
double code(double c0, double w, double h, double D, double d, double M) {
return -0.5 * (0.0 / w);
}
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.5d0) * (0.0d0 / w)
end function
public static double code(double c0, double w, double h, double D, double d, double M) {
return -0.5 * (0.0 / w);
}
def code(c0, w, h, D, d, M): return -0.5 * (0.0 / w)
function code(c0, w, h, D, d, M) return Float64(-0.5 * Float64(0.0 / w)) end
function tmp = code(c0, w, h, D, d, M) tmp = -0.5 * (0.0 / w); end
code[c0_, w_, h_, D_, d_, M_] := N[(-0.5 * N[(0.0 / w), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
-0.5 \cdot \frac{0}{w}
\end{array}
Initial program 26.8%
associate-*l*25.7%
difference-of-squares30.0%
associate-*l*30.0%
associate-*l*32.3%
Simplified32.3%
Taylor expanded in c0 around -inf 3.5%
*-commutative3.5%
unpow23.5%
distribute-rgt1-in3.5%
metadata-eval3.5%
mul0-lft19.8%
Simplified19.8%
Taylor expanded in c0 around 0 28.3%
Final simplification28.3%
herbie shell --seed 2023260
(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))))))