
(FPCore (w0 M D h l d) :precision binary64 (* w0 (sqrt (- 1.0 (* (pow (/ (* M D) (* 2.0 d)) 2.0) (/ h l))))))
double code(double w0, double M, double D, double h, double l, double d) {
return w0 * sqrt((1.0 - (pow(((M * D) / (2.0 * d)), 2.0) * (h / l))));
}
real(8) function code(w0, m, d, h, l, d_1)
real(8), intent (in) :: w0
real(8), intent (in) :: m
real(8), intent (in) :: d
real(8), intent (in) :: h
real(8), intent (in) :: l
real(8), intent (in) :: d_1
code = w0 * sqrt((1.0d0 - ((((m * d) / (2.0d0 * d_1)) ** 2.0d0) * (h / l))))
end function
public static double code(double w0, double M, double D, double h, double l, double d) {
return w0 * Math.sqrt((1.0 - (Math.pow(((M * D) / (2.0 * d)), 2.0) * (h / l))));
}
def code(w0, M, D, h, l, d): return w0 * math.sqrt((1.0 - (math.pow(((M * D) / (2.0 * d)), 2.0) * (h / l))))
function code(w0, M, D, h, l, d) return Float64(w0 * sqrt(Float64(1.0 - Float64((Float64(Float64(M * D) / Float64(2.0 * d)) ^ 2.0) * Float64(h / l))))) end
function tmp = code(w0, M, D, h, l, d) tmp = w0 * sqrt((1.0 - ((((M * D) / (2.0 * d)) ^ 2.0) * (h / l)))); end
code[w0_, M_, D_, h_, l_, d_] := N[(w0 * N[Sqrt[N[(1.0 - N[(N[Power[N[(N[(M * D), $MachinePrecision] / N[(2.0 * d), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision] * N[(h / l), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell}}
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 17 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (w0 M D h l d) :precision binary64 (* w0 (sqrt (- 1.0 (* (pow (/ (* M D) (* 2.0 d)) 2.0) (/ h l))))))
double code(double w0, double M, double D, double h, double l, double d) {
return w0 * sqrt((1.0 - (pow(((M * D) / (2.0 * d)), 2.0) * (h / l))));
}
real(8) function code(w0, m, d, h, l, d_1)
real(8), intent (in) :: w0
real(8), intent (in) :: m
real(8), intent (in) :: d
real(8), intent (in) :: h
real(8), intent (in) :: l
real(8), intent (in) :: d_1
code = w0 * sqrt((1.0d0 - ((((m * d) / (2.0d0 * d_1)) ** 2.0d0) * (h / l))))
end function
public static double code(double w0, double M, double D, double h, double l, double d) {
return w0 * Math.sqrt((1.0 - (Math.pow(((M * D) / (2.0 * d)), 2.0) * (h / l))));
}
def code(w0, M, D, h, l, d): return w0 * math.sqrt((1.0 - (math.pow(((M * D) / (2.0 * d)), 2.0) * (h / l))))
function code(w0, M, D, h, l, d) return Float64(w0 * sqrt(Float64(1.0 - Float64((Float64(Float64(M * D) / Float64(2.0 * d)) ^ 2.0) * Float64(h / l))))) end
function tmp = code(w0, M, D, h, l, d) tmp = w0 * sqrt((1.0 - ((((M * D) / (2.0 * d)) ^ 2.0) * (h / l)))); end
code[w0_, M_, D_, h_, l_, d_] := N[(w0 * N[Sqrt[N[(1.0 - N[(N[Power[N[(N[(M * D), $MachinePrecision] / N[(2.0 * d), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision] * N[(h / l), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell}}
\end{array}
(FPCore (w0 M D h l d) :precision binary64 (let* ((t_0 (/ (* M D) d))) (* w0 (sqrt (- 1.0 (/ (* t_0 h) (* l (/ 4.0 t_0))))))))
double code(double w0, double M, double D, double h, double l, double d) {
double t_0 = (M * D) / d;
return w0 * sqrt((1.0 - ((t_0 * h) / (l * (4.0 / t_0)))));
}
real(8) function code(w0, m, d, h, l, d_1)
real(8), intent (in) :: w0
real(8), intent (in) :: m
real(8), intent (in) :: d
real(8), intent (in) :: h
real(8), intent (in) :: l
real(8), intent (in) :: d_1
real(8) :: t_0
t_0 = (m * d) / d_1
code = w0 * sqrt((1.0d0 - ((t_0 * h) / (l * (4.0d0 / t_0)))))
end function
public static double code(double w0, double M, double D, double h, double l, double d) {
double t_0 = (M * D) / d;
return w0 * Math.sqrt((1.0 - ((t_0 * h) / (l * (4.0 / t_0)))));
}
def code(w0, M, D, h, l, d): t_0 = (M * D) / d return w0 * math.sqrt((1.0 - ((t_0 * h) / (l * (4.0 / t_0)))))
function code(w0, M, D, h, l, d) t_0 = Float64(Float64(M * D) / d) return Float64(w0 * sqrt(Float64(1.0 - Float64(Float64(t_0 * h) / Float64(l * Float64(4.0 / t_0)))))) end
function tmp = code(w0, M, D, h, l, d) t_0 = (M * D) / d; tmp = w0 * sqrt((1.0 - ((t_0 * h) / (l * (4.0 / t_0))))); end
code[w0_, M_, D_, h_, l_, d_] := Block[{t$95$0 = N[(N[(M * D), $MachinePrecision] / d), $MachinePrecision]}, N[(w0 * N[Sqrt[N[(1.0 - N[(N[(t$95$0 * h), $MachinePrecision] / N[(l * N[(4.0 / t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{M \cdot D}{d}\\
w0 \cdot \sqrt{1 - \frac{t\_0 \cdot h}{\ell \cdot \frac{4}{t\_0}}}
\end{array}
\end{array}
Initial program 80.3%
clear-numN/A
un-div-invN/A
unpow2N/A
div-invN/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-commutativeN/A
associate-/r*N/A
/-lowering-/.f64N/A
associate-/l*N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
Applied egg-rr88.4%
clear-numN/A
associate-/l/N/A
frac-timesN/A
clear-numN/A
div-invN/A
clear-numN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
Applied egg-rr88.7%
/-lowering-/.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
associate-*r/N/A
/-lowering-/.f64N/A
div-invN/A
metadata-evalN/A
associate-*l*N/A
metadata-evalN/A
metadata-evalN/A
*-lowering-*.f64N/A
div-invN/A
clear-numN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
metadata-eval88.8%
Applied egg-rr88.8%
associate-/r/N/A
associate-*l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
associate-/r/N/A
associate-*l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
associate-*l*N/A
*-lowering-*.f64N/A
clear-numN/A
associate-*l/N/A
metadata-evalN/A
/-lowering-/.f64N/A
associate-/r/N/A
associate-*l/N/A
/-lowering-/.f64N/A
*-lowering-*.f6488.1%
Applied egg-rr88.1%
(FPCore (w0 M D h l d)
:precision binary64
(let* ((t_0
(*
w0
(sqrt
(+ 1.0 (/ (* (* M h) (/ (/ M (/ d D)) -4.0)) (* l (/ d D))))))))
(if (<= l -1.2e-94)
t_0
(if (<= l 5e-64)
(*
w0
(sqrt (+ 1.0 (/ (* h (/ (/ (* M (* M D)) (* d -4.0)) (/ d D))) l))))
t_0))))
double code(double w0, double M, double D, double h, double l, double d) {
double t_0 = w0 * sqrt((1.0 + (((M * h) * ((M / (d / D)) / -4.0)) / (l * (d / D)))));
double tmp;
if (l <= -1.2e-94) {
tmp = t_0;
} else if (l <= 5e-64) {
tmp = w0 * sqrt((1.0 + ((h * (((M * (M * D)) / (d * -4.0)) / (d / D))) / l)));
} else {
tmp = t_0;
}
return tmp;
}
real(8) function code(w0, m, d, h, l, d_1)
real(8), intent (in) :: w0
real(8), intent (in) :: m
real(8), intent (in) :: d
real(8), intent (in) :: h
real(8), intent (in) :: l
real(8), intent (in) :: d_1
real(8) :: t_0
real(8) :: tmp
t_0 = w0 * sqrt((1.0d0 + (((m * h) * ((m / (d_1 / d)) / (-4.0d0))) / (l * (d_1 / d)))))
if (l <= (-1.2d-94)) then
tmp = t_0
else if (l <= 5d-64) then
tmp = w0 * sqrt((1.0d0 + ((h * (((m * (m * d)) / (d_1 * (-4.0d0))) / (d_1 / d))) / l)))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double w0, double M, double D, double h, double l, double d) {
double t_0 = w0 * Math.sqrt((1.0 + (((M * h) * ((M / (d / D)) / -4.0)) / (l * (d / D)))));
double tmp;
if (l <= -1.2e-94) {
tmp = t_0;
} else if (l <= 5e-64) {
tmp = w0 * Math.sqrt((1.0 + ((h * (((M * (M * D)) / (d * -4.0)) / (d / D))) / l)));
} else {
tmp = t_0;
}
return tmp;
}
def code(w0, M, D, h, l, d): t_0 = w0 * math.sqrt((1.0 + (((M * h) * ((M / (d / D)) / -4.0)) / (l * (d / D))))) tmp = 0 if l <= -1.2e-94: tmp = t_0 elif l <= 5e-64: tmp = w0 * math.sqrt((1.0 + ((h * (((M * (M * D)) / (d * -4.0)) / (d / D))) / l))) else: tmp = t_0 return tmp
function code(w0, M, D, h, l, d) t_0 = Float64(w0 * sqrt(Float64(1.0 + Float64(Float64(Float64(M * h) * Float64(Float64(M / Float64(d / D)) / -4.0)) / Float64(l * Float64(d / D)))))) tmp = 0.0 if (l <= -1.2e-94) tmp = t_0; elseif (l <= 5e-64) tmp = Float64(w0 * sqrt(Float64(1.0 + Float64(Float64(h * Float64(Float64(Float64(M * Float64(M * D)) / Float64(d * -4.0)) / Float64(d / D))) / l)))); else tmp = t_0; end return tmp end
function tmp_2 = code(w0, M, D, h, l, d) t_0 = w0 * sqrt((1.0 + (((M * h) * ((M / (d / D)) / -4.0)) / (l * (d / D))))); tmp = 0.0; if (l <= -1.2e-94) tmp = t_0; elseif (l <= 5e-64) tmp = w0 * sqrt((1.0 + ((h * (((M * (M * D)) / (d * -4.0)) / (d / D))) / l))); else tmp = t_0; end tmp_2 = tmp; end
code[w0_, M_, D_, h_, l_, d_] := Block[{t$95$0 = N[(w0 * N[Sqrt[N[(1.0 + N[(N[(N[(M * h), $MachinePrecision] * N[(N[(M / N[(d / D), $MachinePrecision]), $MachinePrecision] / -4.0), $MachinePrecision]), $MachinePrecision] / N[(l * N[(d / D), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[l, -1.2e-94], t$95$0, If[LessEqual[l, 5e-64], N[(w0 * N[Sqrt[N[(1.0 + N[(N[(h * N[(N[(N[(M * N[(M * D), $MachinePrecision]), $MachinePrecision] / N[(d * -4.0), $MachinePrecision]), $MachinePrecision] / N[(d / D), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / l), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], t$95$0]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := w0 \cdot \sqrt{1 + \frac{\left(M \cdot h\right) \cdot \frac{\frac{M}{\frac{d}{D}}}{-4}}{\ell \cdot \frac{d}{D}}}\\
\mathbf{if}\;\ell \leq -1.2 \cdot 10^{-94}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;\ell \leq 5 \cdot 10^{-64}:\\
\;\;\;\;w0 \cdot \sqrt{1 + \frac{h \cdot \frac{\frac{M \cdot \left(M \cdot D\right)}{d \cdot -4}}{\frac{d}{D}}}{\ell}}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if l < -1.2e-94 or 5.00000000000000033e-64 < l Initial program 85.9%
Simplified81.1%
associate-/l*N/A
associate-*l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-/l*N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
/-lowering-/.f6482.2%
Applied egg-rr82.2%
associate-*r/N/A
associate-/l/N/A
/-lowering-/.f64N/A
associate-/l*N/A
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
associate-/r*N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f6487.6%
Applied egg-rr87.6%
if -1.2e-94 < l < 5.00000000000000033e-64Initial program 70.2%
Simplified65.9%
associate-/l*N/A
associate-*l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-/l*N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
/-lowering-/.f6476.0%
Applied egg-rr76.0%
Final simplification83.5%
(FPCore (w0 M D h l d)
:precision binary64
(if (<= M 3.6e-159)
w0
(if (<= M 4.8e+76)
(fma D (* w0 (/ D (/ (/ (* d (* d l)) h) (* M (* M -0.125))))) w0)
(* w0 (sqrt (/ (* D (/ (* h (* -0.25 (* M M))) d)) (/ l (/ D d))))))))
double code(double w0, double M, double D, double h, double l, double d) {
double tmp;
if (M <= 3.6e-159) {
tmp = w0;
} else if (M <= 4.8e+76) {
tmp = fma(D, (w0 * (D / (((d * (d * l)) / h) / (M * (M * -0.125))))), w0);
} else {
tmp = w0 * sqrt(((D * ((h * (-0.25 * (M * M))) / d)) / (l / (D / d))));
}
return tmp;
}
function code(w0, M, D, h, l, d) tmp = 0.0 if (M <= 3.6e-159) tmp = w0; elseif (M <= 4.8e+76) tmp = fma(D, Float64(w0 * Float64(D / Float64(Float64(Float64(d * Float64(d * l)) / h) / Float64(M * Float64(M * -0.125))))), w0); else tmp = Float64(w0 * sqrt(Float64(Float64(D * Float64(Float64(h * Float64(-0.25 * Float64(M * M))) / d)) / Float64(l / Float64(D / d))))); end return tmp end
code[w0_, M_, D_, h_, l_, d_] := If[LessEqual[M, 3.6e-159], w0, If[LessEqual[M, 4.8e+76], N[(D * N[(w0 * N[(D / N[(N[(N[(d * N[(d * l), $MachinePrecision]), $MachinePrecision] / h), $MachinePrecision] / N[(M * N[(M * -0.125), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + w0), $MachinePrecision], N[(w0 * N[Sqrt[N[(N[(D * N[(N[(h * N[(-0.25 * N[(M * M), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / d), $MachinePrecision]), $MachinePrecision] / N[(l / N[(D / d), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;M \leq 3.6 \cdot 10^{-159}:\\
\;\;\;\;w0\\
\mathbf{elif}\;M \leq 4.8 \cdot 10^{+76}:\\
\;\;\;\;\mathsf{fma}\left(D, w0 \cdot \frac{D}{\frac{\frac{d \cdot \left(d \cdot \ell\right)}{h}}{M \cdot \left(M \cdot -0.125\right)}}, w0\right)\\
\mathbf{else}:\\
\;\;\;\;w0 \cdot \sqrt{\frac{D \cdot \frac{h \cdot \left(-0.25 \cdot \left(M \cdot M\right)\right)}{d}}{\frac{\ell}{\frac{D}{d}}}}\\
\end{array}
\end{array}
if M < 3.60000000000000021e-159Initial program 84.8%
Simplified79.6%
Taylor expanded in h around 0
Simplified70.6%
if 3.60000000000000021e-159 < M < 4.8e76Initial program 76.7%
Simplified76.5%
Taylor expanded in h around 0
+-lowering-+.f64N/A
*-commutativeN/A
associate-/l*N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
/-lowering-/.f64N/A
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6460.7%
Simplified60.7%
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
associate-*l*N/A
*-lft-identityN/A
fma-defineN/A
fma-lowering-fma.f64N/A
Applied egg-rr69.5%
if 4.8e76 < M Initial program 70.7%
Simplified62.0%
Taylor expanded in h around inf
associate-*r/N/A
/-lowering-/.f64N/A
*-commutativeN/A
associate-*r*N/A
*-lowering-*.f64N/A
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6431.5%
Simplified31.5%
associate-*r*N/A
associate-*l*N/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f6434.8%
Applied egg-rr34.8%
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
associate-/l*N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*r/N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
/-lowering-/.f6436.6%
Applied egg-rr36.6%
Final simplification64.2%
(FPCore (w0 M D h l d)
:precision binary64
(if (<= M 1.6e-155)
w0
(if (<= M 6e+79)
(* w0 (+ 1.0 (* D (/ D (/ (/ (* d (* d l)) h) (* M (* M -0.125)))))))
(* w0 (sqrt (/ (* D (/ (* h (* -0.25 (* M M))) d)) (/ l (/ D d))))))))
double code(double w0, double M, double D, double h, double l, double d) {
double tmp;
if (M <= 1.6e-155) {
tmp = w0;
} else if (M <= 6e+79) {
tmp = w0 * (1.0 + (D * (D / (((d * (d * l)) / h) / (M * (M * -0.125))))));
} else {
tmp = w0 * sqrt(((D * ((h * (-0.25 * (M * M))) / d)) / (l / (D / d))));
}
return tmp;
}
real(8) function code(w0, m, d, h, l, d_1)
real(8), intent (in) :: w0
real(8), intent (in) :: m
real(8), intent (in) :: d
real(8), intent (in) :: h
real(8), intent (in) :: l
real(8), intent (in) :: d_1
real(8) :: tmp
if (m <= 1.6d-155) then
tmp = w0
else if (m <= 6d+79) then
tmp = w0 * (1.0d0 + (d * (d / (((d_1 * (d_1 * l)) / h) / (m * (m * (-0.125d0)))))))
else
tmp = w0 * sqrt(((d * ((h * ((-0.25d0) * (m * m))) / d_1)) / (l / (d / d_1))))
end if
code = tmp
end function
public static double code(double w0, double M, double D, double h, double l, double d) {
double tmp;
if (M <= 1.6e-155) {
tmp = w0;
} else if (M <= 6e+79) {
tmp = w0 * (1.0 + (D * (D / (((d * (d * l)) / h) / (M * (M * -0.125))))));
} else {
tmp = w0 * Math.sqrt(((D * ((h * (-0.25 * (M * M))) / d)) / (l / (D / d))));
}
return tmp;
}
def code(w0, M, D, h, l, d): tmp = 0 if M <= 1.6e-155: tmp = w0 elif M <= 6e+79: tmp = w0 * (1.0 + (D * (D / (((d * (d * l)) / h) / (M * (M * -0.125)))))) else: tmp = w0 * math.sqrt(((D * ((h * (-0.25 * (M * M))) / d)) / (l / (D / d)))) return tmp
function code(w0, M, D, h, l, d) tmp = 0.0 if (M <= 1.6e-155) tmp = w0; elseif (M <= 6e+79) tmp = Float64(w0 * Float64(1.0 + Float64(D * Float64(D / Float64(Float64(Float64(d * Float64(d * l)) / h) / Float64(M * Float64(M * -0.125))))))); else tmp = Float64(w0 * sqrt(Float64(Float64(D * Float64(Float64(h * Float64(-0.25 * Float64(M * M))) / d)) / Float64(l / Float64(D / d))))); end return tmp end
function tmp_2 = code(w0, M, D, h, l, d) tmp = 0.0; if (M <= 1.6e-155) tmp = w0; elseif (M <= 6e+79) tmp = w0 * (1.0 + (D * (D / (((d * (d * l)) / h) / (M * (M * -0.125)))))); else tmp = w0 * sqrt(((D * ((h * (-0.25 * (M * M))) / d)) / (l / (D / d)))); end tmp_2 = tmp; end
code[w0_, M_, D_, h_, l_, d_] := If[LessEqual[M, 1.6e-155], w0, If[LessEqual[M, 6e+79], N[(w0 * N[(1.0 + N[(D * N[(D / N[(N[(N[(d * N[(d * l), $MachinePrecision]), $MachinePrecision] / h), $MachinePrecision] / N[(M * N[(M * -0.125), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(w0 * N[Sqrt[N[(N[(D * N[(N[(h * N[(-0.25 * N[(M * M), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / d), $MachinePrecision]), $MachinePrecision] / N[(l / N[(D / d), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;M \leq 1.6 \cdot 10^{-155}:\\
\;\;\;\;w0\\
\mathbf{elif}\;M \leq 6 \cdot 10^{+79}:\\
\;\;\;\;w0 \cdot \left(1 + D \cdot \frac{D}{\frac{\frac{d \cdot \left(d \cdot \ell\right)}{h}}{M \cdot \left(M \cdot -0.125\right)}}\right)\\
\mathbf{else}:\\
\;\;\;\;w0 \cdot \sqrt{\frac{D \cdot \frac{h \cdot \left(-0.25 \cdot \left(M \cdot M\right)\right)}{d}}{\frac{\ell}{\frac{D}{d}}}}\\
\end{array}
\end{array}
if M < 1.60000000000000006e-155Initial program 84.8%
Simplified79.6%
Taylor expanded in h around 0
Simplified70.6%
if 1.60000000000000006e-155 < M < 5.99999999999999948e79Initial program 77.4%
Simplified77.2%
Taylor expanded in h around 0
+-lowering-+.f64N/A
*-commutativeN/A
associate-/l*N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
/-lowering-/.f64N/A
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6462.0%
Simplified62.0%
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
Applied egg-rr70.5%
if 5.99999999999999948e79 < M Initial program 69.3%
Simplified60.3%
Taylor expanded in h around inf
associate-*r/N/A
/-lowering-/.f64N/A
*-commutativeN/A
associate-*r*N/A
*-lowering-*.f64N/A
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6430.5%
Simplified30.5%
associate-*r*N/A
associate-*l*N/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f6434.0%
Applied egg-rr34.0%
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
associate-/l*N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*r/N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
/-lowering-/.f6435.9%
Applied egg-rr35.9%
Final simplification64.6%
(FPCore (w0 M D h l d)
:precision binary64
(let* ((t_0 (/ M (/ d D))))
(if (<= (/ h l) -5e+84)
(* w0 (sqrt (- 1.0 (* h (/ (/ (* t_0 t_0) 4.0) l)))))
(*
w0
(sqrt (- 1.0 (* (/ M d) (/ D (/ (* 4.0 (* l (/ (/ d D) M))) h)))))))))
double code(double w0, double M, double D, double h, double l, double d) {
double t_0 = M / (d / D);
double tmp;
if ((h / l) <= -5e+84) {
tmp = w0 * sqrt((1.0 - (h * (((t_0 * t_0) / 4.0) / l))));
} else {
tmp = w0 * sqrt((1.0 - ((M / d) * (D / ((4.0 * (l * ((d / D) / M))) / h)))));
}
return tmp;
}
real(8) function code(w0, m, d, h, l, d_1)
real(8), intent (in) :: w0
real(8), intent (in) :: m
real(8), intent (in) :: d
real(8), intent (in) :: h
real(8), intent (in) :: l
real(8), intent (in) :: d_1
real(8) :: t_0
real(8) :: tmp
t_0 = m / (d_1 / d)
if ((h / l) <= (-5d+84)) then
tmp = w0 * sqrt((1.0d0 - (h * (((t_0 * t_0) / 4.0d0) / l))))
else
tmp = w0 * sqrt((1.0d0 - ((m / d_1) * (d / ((4.0d0 * (l * ((d_1 / d) / m))) / h)))))
end if
code = tmp
end function
public static double code(double w0, double M, double D, double h, double l, double d) {
double t_0 = M / (d / D);
double tmp;
if ((h / l) <= -5e+84) {
tmp = w0 * Math.sqrt((1.0 - (h * (((t_0 * t_0) / 4.0) / l))));
} else {
tmp = w0 * Math.sqrt((1.0 - ((M / d) * (D / ((4.0 * (l * ((d / D) / M))) / h)))));
}
return tmp;
}
def code(w0, M, D, h, l, d): t_0 = M / (d / D) tmp = 0 if (h / l) <= -5e+84: tmp = w0 * math.sqrt((1.0 - (h * (((t_0 * t_0) / 4.0) / l)))) else: tmp = w0 * math.sqrt((1.0 - ((M / d) * (D / ((4.0 * (l * ((d / D) / M))) / h))))) return tmp
function code(w0, M, D, h, l, d) t_0 = Float64(M / Float64(d / D)) tmp = 0.0 if (Float64(h / l) <= -5e+84) tmp = Float64(w0 * sqrt(Float64(1.0 - Float64(h * Float64(Float64(Float64(t_0 * t_0) / 4.0) / l))))); else tmp = Float64(w0 * sqrt(Float64(1.0 - Float64(Float64(M / d) * Float64(D / Float64(Float64(4.0 * Float64(l * Float64(Float64(d / D) / M))) / h)))))); end return tmp end
function tmp_2 = code(w0, M, D, h, l, d) t_0 = M / (d / D); tmp = 0.0; if ((h / l) <= -5e+84) tmp = w0 * sqrt((1.0 - (h * (((t_0 * t_0) / 4.0) / l)))); else tmp = w0 * sqrt((1.0 - ((M / d) * (D / ((4.0 * (l * ((d / D) / M))) / h))))); end tmp_2 = tmp; end
code[w0_, M_, D_, h_, l_, d_] := Block[{t$95$0 = N[(M / N[(d / D), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[N[(h / l), $MachinePrecision], -5e+84], N[(w0 * N[Sqrt[N[(1.0 - N[(h * N[(N[(N[(t$95$0 * t$95$0), $MachinePrecision] / 4.0), $MachinePrecision] / l), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(w0 * N[Sqrt[N[(1.0 - N[(N[(M / d), $MachinePrecision] * N[(D / N[(N[(4.0 * N[(l * N[(N[(d / D), $MachinePrecision] / M), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / h), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{M}{\frac{d}{D}}\\
\mathbf{if}\;\frac{h}{\ell} \leq -5 \cdot 10^{+84}:\\
\;\;\;\;w0 \cdot \sqrt{1 - h \cdot \frac{\frac{t\_0 \cdot t\_0}{4}}{\ell}}\\
\mathbf{else}:\\
\;\;\;\;w0 \cdot \sqrt{1 - \frac{M}{d} \cdot \frac{D}{\frac{4 \cdot \left(\ell \cdot \frac{\frac{d}{D}}{M}\right)}{h}}}\\
\end{array}
\end{array}
if (/.f64 h l) < -5.0000000000000001e84Initial program 65.6%
clear-numN/A
un-div-invN/A
unpow2N/A
div-invN/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-commutativeN/A
associate-/r*N/A
/-lowering-/.f64N/A
associate-/l*N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
Applied egg-rr73.4%
associate-*r/N/A
div-invN/A
remove-double-divN/A
*-lowering-*.f64N/A
Applied egg-rr72.1%
if -5.0000000000000001e84 < (/.f64 h l) Initial program 85.2%
clear-numN/A
un-div-invN/A
unpow2N/A
div-invN/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-commutativeN/A
associate-/r*N/A
/-lowering-/.f64N/A
associate-/l*N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
Applied egg-rr93.4%
clear-numN/A
associate-/l/N/A
frac-timesN/A
clear-numN/A
div-invN/A
clear-numN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
Applied egg-rr93.9%
associate-/r/N/A
associate-/l*N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
associate-*r/N/A
/-lowering-/.f64N/A
Applied egg-rr92.5%
Final simplification87.4%
(FPCore (w0 M D h l d) :precision binary64 (if (<= d 3e+23) (* w0 (sqrt (- 1.0 (* (/ M d) (/ D (/ (* 4.0 (* l (/ (/ d D) M))) h)))))) (* w0 (sqrt (+ 1.0 (/ (* (* M h) (/ (/ M (/ d D)) -4.0)) (* l (/ d D))))))))
double code(double w0, double M, double D, double h, double l, double d) {
double tmp;
if (d <= 3e+23) {
tmp = w0 * sqrt((1.0 - ((M / d) * (D / ((4.0 * (l * ((d / D) / M))) / h)))));
} else {
tmp = w0 * sqrt((1.0 + (((M * h) * ((M / (d / D)) / -4.0)) / (l * (d / D)))));
}
return tmp;
}
real(8) function code(w0, m, d, h, l, d_1)
real(8), intent (in) :: w0
real(8), intent (in) :: m
real(8), intent (in) :: d
real(8), intent (in) :: h
real(8), intent (in) :: l
real(8), intent (in) :: d_1
real(8) :: tmp
if (d_1 <= 3d+23) then
tmp = w0 * sqrt((1.0d0 - ((m / d_1) * (d / ((4.0d0 * (l * ((d_1 / d) / m))) / h)))))
else
tmp = w0 * sqrt((1.0d0 + (((m * h) * ((m / (d_1 / d)) / (-4.0d0))) / (l * (d_1 / d)))))
end if
code = tmp
end function
public static double code(double w0, double M, double D, double h, double l, double d) {
double tmp;
if (d <= 3e+23) {
tmp = w0 * Math.sqrt((1.0 - ((M / d) * (D / ((4.0 * (l * ((d / D) / M))) / h)))));
} else {
tmp = w0 * Math.sqrt((1.0 + (((M * h) * ((M / (d / D)) / -4.0)) / (l * (d / D)))));
}
return tmp;
}
def code(w0, M, D, h, l, d): tmp = 0 if d <= 3e+23: tmp = w0 * math.sqrt((1.0 - ((M / d) * (D / ((4.0 * (l * ((d / D) / M))) / h))))) else: tmp = w0 * math.sqrt((1.0 + (((M * h) * ((M / (d / D)) / -4.0)) / (l * (d / D))))) return tmp
function code(w0, M, D, h, l, d) tmp = 0.0 if (d <= 3e+23) tmp = Float64(w0 * sqrt(Float64(1.0 - Float64(Float64(M / d) * Float64(D / Float64(Float64(4.0 * Float64(l * Float64(Float64(d / D) / M))) / h)))))); else tmp = Float64(w0 * sqrt(Float64(1.0 + Float64(Float64(Float64(M * h) * Float64(Float64(M / Float64(d / D)) / -4.0)) / Float64(l * Float64(d / D)))))); end return tmp end
function tmp_2 = code(w0, M, D, h, l, d) tmp = 0.0; if (d <= 3e+23) tmp = w0 * sqrt((1.0 - ((M / d) * (D / ((4.0 * (l * ((d / D) / M))) / h))))); else tmp = w0 * sqrt((1.0 + (((M * h) * ((M / (d / D)) / -4.0)) / (l * (d / D))))); end tmp_2 = tmp; end
code[w0_, M_, D_, h_, l_, d_] := If[LessEqual[d, 3e+23], N[(w0 * N[Sqrt[N[(1.0 - N[(N[(M / d), $MachinePrecision] * N[(D / N[(N[(4.0 * N[(l * N[(N[(d / D), $MachinePrecision] / M), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / h), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(w0 * N[Sqrt[N[(1.0 + N[(N[(N[(M * h), $MachinePrecision] * N[(N[(M / N[(d / D), $MachinePrecision]), $MachinePrecision] / -4.0), $MachinePrecision]), $MachinePrecision] / N[(l * N[(d / D), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;d \leq 3 \cdot 10^{+23}:\\
\;\;\;\;w0 \cdot \sqrt{1 - \frac{M}{d} \cdot \frac{D}{\frac{4 \cdot \left(\ell \cdot \frac{\frac{d}{D}}{M}\right)}{h}}}\\
\mathbf{else}:\\
\;\;\;\;w0 \cdot \sqrt{1 + \frac{\left(M \cdot h\right) \cdot \frac{\frac{M}{\frac{d}{D}}}{-4}}{\ell \cdot \frac{d}{D}}}\\
\end{array}
\end{array}
if d < 3.0000000000000001e23Initial program 80.2%
clear-numN/A
un-div-invN/A
unpow2N/A
div-invN/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-commutativeN/A
associate-/r*N/A
/-lowering-/.f64N/A
associate-/l*N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
Applied egg-rr87.6%
clear-numN/A
associate-/l/N/A
frac-timesN/A
clear-numN/A
div-invN/A
clear-numN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
Applied egg-rr88.2%
associate-/r/N/A
associate-/l*N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
associate-*r/N/A
/-lowering-/.f64N/A
Applied egg-rr85.6%
if 3.0000000000000001e23 < d Initial program 80.7%
Simplified75.1%
associate-/l*N/A
associate-*l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-/l*N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
/-lowering-/.f6482.2%
Applied egg-rr82.2%
associate-*r/N/A
associate-/l/N/A
/-lowering-/.f64N/A
associate-/l*N/A
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
associate-/r*N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f6483.4%
Applied egg-rr83.4%
Final simplification85.0%
(FPCore (w0 M D h l d) :precision binary64 (if (<= d 9.4e-33) (* w0 (sqrt (+ 1.0 (/ (* (/ (/ D (/ l h)) -4.0) (/ M (/ d (* M D)))) d)))) (* w0 (sqrt (+ 1.0 (/ (* (* M h) (/ (/ M (/ d D)) -4.0)) (* l (/ d D))))))))
double code(double w0, double M, double D, double h, double l, double d) {
double tmp;
if (d <= 9.4e-33) {
tmp = w0 * sqrt((1.0 + ((((D / (l / h)) / -4.0) * (M / (d / (M * D)))) / d)));
} else {
tmp = w0 * sqrt((1.0 + (((M * h) * ((M / (d / D)) / -4.0)) / (l * (d / D)))));
}
return tmp;
}
real(8) function code(w0, m, d, h, l, d_1)
real(8), intent (in) :: w0
real(8), intent (in) :: m
real(8), intent (in) :: d
real(8), intent (in) :: h
real(8), intent (in) :: l
real(8), intent (in) :: d_1
real(8) :: tmp
if (d_1 <= 9.4d-33) then
tmp = w0 * sqrt((1.0d0 + ((((d / (l / h)) / (-4.0d0)) * (m / (d_1 / (m * d)))) / d_1)))
else
tmp = w0 * sqrt((1.0d0 + (((m * h) * ((m / (d_1 / d)) / (-4.0d0))) / (l * (d_1 / d)))))
end if
code = tmp
end function
public static double code(double w0, double M, double D, double h, double l, double d) {
double tmp;
if (d <= 9.4e-33) {
tmp = w0 * Math.sqrt((1.0 + ((((D / (l / h)) / -4.0) * (M / (d / (M * D)))) / d)));
} else {
tmp = w0 * Math.sqrt((1.0 + (((M * h) * ((M / (d / D)) / -4.0)) / (l * (d / D)))));
}
return tmp;
}
def code(w0, M, D, h, l, d): tmp = 0 if d <= 9.4e-33: tmp = w0 * math.sqrt((1.0 + ((((D / (l / h)) / -4.0) * (M / (d / (M * D)))) / d))) else: tmp = w0 * math.sqrt((1.0 + (((M * h) * ((M / (d / D)) / -4.0)) / (l * (d / D))))) return tmp
function code(w0, M, D, h, l, d) tmp = 0.0 if (d <= 9.4e-33) tmp = Float64(w0 * sqrt(Float64(1.0 + Float64(Float64(Float64(Float64(D / Float64(l / h)) / -4.0) * Float64(M / Float64(d / Float64(M * D)))) / d)))); else tmp = Float64(w0 * sqrt(Float64(1.0 + Float64(Float64(Float64(M * h) * Float64(Float64(M / Float64(d / D)) / -4.0)) / Float64(l * Float64(d / D)))))); end return tmp end
function tmp_2 = code(w0, M, D, h, l, d) tmp = 0.0; if (d <= 9.4e-33) tmp = w0 * sqrt((1.0 + ((((D / (l / h)) / -4.0) * (M / (d / (M * D)))) / d))); else tmp = w0 * sqrt((1.0 + (((M * h) * ((M / (d / D)) / -4.0)) / (l * (d / D))))); end tmp_2 = tmp; end
code[w0_, M_, D_, h_, l_, d_] := If[LessEqual[d, 9.4e-33], N[(w0 * N[Sqrt[N[(1.0 + N[(N[(N[(N[(D / N[(l / h), $MachinePrecision]), $MachinePrecision] / -4.0), $MachinePrecision] * N[(M / N[(d / N[(M * D), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / d), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(w0 * N[Sqrt[N[(1.0 + N[(N[(N[(M * h), $MachinePrecision] * N[(N[(M / N[(d / D), $MachinePrecision]), $MachinePrecision] / -4.0), $MachinePrecision]), $MachinePrecision] / N[(l * N[(d / D), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;d \leq 9.4 \cdot 10^{-33}:\\
\;\;\;\;w0 \cdot \sqrt{1 + \frac{\frac{\frac{D}{\frac{\ell}{h}}}{-4} \cdot \frac{M}{\frac{d}{M \cdot D}}}{d}}\\
\mathbf{else}:\\
\;\;\;\;w0 \cdot \sqrt{1 + \frac{\left(M \cdot h\right) \cdot \frac{\frac{M}{\frac{d}{D}}}{-4}}{\ell \cdot \frac{d}{D}}}\\
\end{array}
\end{array}
if d < 9.4000000000000004e-33Initial program 79.9%
Simplified76.0%
associate-*r*N/A
associate-/l/N/A
associate-*r/N/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-commutativeN/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
associate-/l*N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f6479.5%
Applied egg-rr79.5%
if 9.4000000000000004e-33 < d Initial program 81.2%
Simplified74.9%
associate-/l*N/A
associate-*l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-/l*N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
/-lowering-/.f6481.4%
Applied egg-rr81.4%
associate-*r/N/A
associate-/l/N/A
/-lowering-/.f64N/A
associate-/l*N/A
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
associate-/r*N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f6483.6%
Applied egg-rr83.6%
Final simplification80.7%
(FPCore (w0 M D h l d) :precision binary64 (if (<= d 5.6e-33) (* w0 (sqrt (+ 1.0 (/ (* (/ h l) (* D (/ (* (/ M d) (* M D)) -4.0))) d)))) (* w0 (sqrt (+ 1.0 (/ (* (* M h) (/ (/ M (/ d D)) -4.0)) (* l (/ d D))))))))
double code(double w0, double M, double D, double h, double l, double d) {
double tmp;
if (d <= 5.6e-33) {
tmp = w0 * sqrt((1.0 + (((h / l) * (D * (((M / d) * (M * D)) / -4.0))) / d)));
} else {
tmp = w0 * sqrt((1.0 + (((M * h) * ((M / (d / D)) / -4.0)) / (l * (d / D)))));
}
return tmp;
}
real(8) function code(w0, m, d, h, l, d_1)
real(8), intent (in) :: w0
real(8), intent (in) :: m
real(8), intent (in) :: d
real(8), intent (in) :: h
real(8), intent (in) :: l
real(8), intent (in) :: d_1
real(8) :: tmp
if (d_1 <= 5.6d-33) then
tmp = w0 * sqrt((1.0d0 + (((h / l) * (d * (((m / d_1) * (m * d)) / (-4.0d0)))) / d_1)))
else
tmp = w0 * sqrt((1.0d0 + (((m * h) * ((m / (d_1 / d)) / (-4.0d0))) / (l * (d_1 / d)))))
end if
code = tmp
end function
public static double code(double w0, double M, double D, double h, double l, double d) {
double tmp;
if (d <= 5.6e-33) {
tmp = w0 * Math.sqrt((1.0 + (((h / l) * (D * (((M / d) * (M * D)) / -4.0))) / d)));
} else {
tmp = w0 * Math.sqrt((1.0 + (((M * h) * ((M / (d / D)) / -4.0)) / (l * (d / D)))));
}
return tmp;
}
def code(w0, M, D, h, l, d): tmp = 0 if d <= 5.6e-33: tmp = w0 * math.sqrt((1.0 + (((h / l) * (D * (((M / d) * (M * D)) / -4.0))) / d))) else: tmp = w0 * math.sqrt((1.0 + (((M * h) * ((M / (d / D)) / -4.0)) / (l * (d / D))))) return tmp
function code(w0, M, D, h, l, d) tmp = 0.0 if (d <= 5.6e-33) tmp = Float64(w0 * sqrt(Float64(1.0 + Float64(Float64(Float64(h / l) * Float64(D * Float64(Float64(Float64(M / d) * Float64(M * D)) / -4.0))) / d)))); else tmp = Float64(w0 * sqrt(Float64(1.0 + Float64(Float64(Float64(M * h) * Float64(Float64(M / Float64(d / D)) / -4.0)) / Float64(l * Float64(d / D)))))); end return tmp end
function tmp_2 = code(w0, M, D, h, l, d) tmp = 0.0; if (d <= 5.6e-33) tmp = w0 * sqrt((1.0 + (((h / l) * (D * (((M / d) * (M * D)) / -4.0))) / d))); else tmp = w0 * sqrt((1.0 + (((M * h) * ((M / (d / D)) / -4.0)) / (l * (d / D))))); end tmp_2 = tmp; end
code[w0_, M_, D_, h_, l_, d_] := If[LessEqual[d, 5.6e-33], N[(w0 * N[Sqrt[N[(1.0 + N[(N[(N[(h / l), $MachinePrecision] * N[(D * N[(N[(N[(M / d), $MachinePrecision] * N[(M * D), $MachinePrecision]), $MachinePrecision] / -4.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / d), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(w0 * N[Sqrt[N[(1.0 + N[(N[(N[(M * h), $MachinePrecision] * N[(N[(M / N[(d / D), $MachinePrecision]), $MachinePrecision] / -4.0), $MachinePrecision]), $MachinePrecision] / N[(l * N[(d / D), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;d \leq 5.6 \cdot 10^{-33}:\\
\;\;\;\;w0 \cdot \sqrt{1 + \frac{\frac{h}{\ell} \cdot \left(D \cdot \frac{\frac{M}{d} \cdot \left(M \cdot D\right)}{-4}\right)}{d}}\\
\mathbf{else}:\\
\;\;\;\;w0 \cdot \sqrt{1 + \frac{\left(M \cdot h\right) \cdot \frac{\frac{M}{\frac{d}{D}}}{-4}}{\ell \cdot \frac{d}{D}}}\\
\end{array}
\end{array}
if d < 5.6e-33Initial program 79.9%
Simplified76.0%
*-commutativeN/A
associate-/l*N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
/-lowering-/.f6478.8%
Applied egg-rr78.8%
if 5.6e-33 < d Initial program 81.2%
Simplified74.9%
associate-/l*N/A
associate-*l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-/l*N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
/-lowering-/.f6481.4%
Applied egg-rr81.4%
associate-*r/N/A
associate-/l/N/A
/-lowering-/.f64N/A
associate-/l*N/A
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
associate-/r*N/A
*-commutativeN/A
associate-*l/N/A
associate-/r/N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f6483.6%
Applied egg-rr83.6%
Final simplification80.3%
(FPCore (w0 M D h l d) :precision binary64 (* w0 (sqrt (+ 1.0 (/ (* h (/ (/ (* M (* M D)) (* d -4.0)) (/ d D))) l)))))
double code(double w0, double M, double D, double h, double l, double d) {
return w0 * sqrt((1.0 + ((h * (((M * (M * D)) / (d * -4.0)) / (d / D))) / l)));
}
real(8) function code(w0, m, d, h, l, d_1)
real(8), intent (in) :: w0
real(8), intent (in) :: m
real(8), intent (in) :: d
real(8), intent (in) :: h
real(8), intent (in) :: l
real(8), intent (in) :: d_1
code = w0 * sqrt((1.0d0 + ((h * (((m * (m * d)) / (d_1 * (-4.0d0))) / (d_1 / d))) / l)))
end function
public static double code(double w0, double M, double D, double h, double l, double d) {
return w0 * Math.sqrt((1.0 + ((h * (((M * (M * D)) / (d * -4.0)) / (d / D))) / l)));
}
def code(w0, M, D, h, l, d): return w0 * math.sqrt((1.0 + ((h * (((M * (M * D)) / (d * -4.0)) / (d / D))) / l)))
function code(w0, M, D, h, l, d) return Float64(w0 * sqrt(Float64(1.0 + Float64(Float64(h * Float64(Float64(Float64(M * Float64(M * D)) / Float64(d * -4.0)) / Float64(d / D))) / l)))) end
function tmp = code(w0, M, D, h, l, d) tmp = w0 * sqrt((1.0 + ((h * (((M * (M * D)) / (d * -4.0)) / (d / D))) / l))); end
code[w0_, M_, D_, h_, l_, d_] := N[(w0 * N[Sqrt[N[(1.0 + N[(N[(h * N[(N[(N[(M * N[(M * D), $MachinePrecision]), $MachinePrecision] / N[(d * -4.0), $MachinePrecision]), $MachinePrecision] / N[(d / D), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / l), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
w0 \cdot \sqrt{1 + \frac{h \cdot \frac{\frac{M \cdot \left(M \cdot D\right)}{d \cdot -4}}{\frac{d}{D}}}{\ell}}
\end{array}
Initial program 80.3%
Simplified75.7%
associate-/l*N/A
associate-*l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-/l*N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
associate-/l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
/-lowering-/.f6480.0%
Applied egg-rr80.0%
Final simplification80.0%
(FPCore (w0 M D h l d)
:precision binary64
(if (<= M 1.7e-155)
w0
(if (<= M 2.15e+99)
(* w0 (+ 1.0 (* D (/ D (/ (/ (* d (* d l)) h) (* M (* M -0.125)))))))
(+ w0 (* (* D D) (* (* h (/ M (/ d M))) (* (/ -0.125 l) (/ w0 d))))))))
double code(double w0, double M, double D, double h, double l, double d) {
double tmp;
if (M <= 1.7e-155) {
tmp = w0;
} else if (M <= 2.15e+99) {
tmp = w0 * (1.0 + (D * (D / (((d * (d * l)) / h) / (M * (M * -0.125))))));
} else {
tmp = w0 + ((D * D) * ((h * (M / (d / M))) * ((-0.125 / l) * (w0 / d))));
}
return tmp;
}
real(8) function code(w0, m, d, h, l, d_1)
real(8), intent (in) :: w0
real(8), intent (in) :: m
real(8), intent (in) :: d
real(8), intent (in) :: h
real(8), intent (in) :: l
real(8), intent (in) :: d_1
real(8) :: tmp
if (m <= 1.7d-155) then
tmp = w0
else if (m <= 2.15d+99) then
tmp = w0 * (1.0d0 + (d * (d / (((d_1 * (d_1 * l)) / h) / (m * (m * (-0.125d0)))))))
else
tmp = w0 + ((d * d) * ((h * (m / (d_1 / m))) * (((-0.125d0) / l) * (w0 / d_1))))
end if
code = tmp
end function
public static double code(double w0, double M, double D, double h, double l, double d) {
double tmp;
if (M <= 1.7e-155) {
tmp = w0;
} else if (M <= 2.15e+99) {
tmp = w0 * (1.0 + (D * (D / (((d * (d * l)) / h) / (M * (M * -0.125))))));
} else {
tmp = w0 + ((D * D) * ((h * (M / (d / M))) * ((-0.125 / l) * (w0 / d))));
}
return tmp;
}
def code(w0, M, D, h, l, d): tmp = 0 if M <= 1.7e-155: tmp = w0 elif M <= 2.15e+99: tmp = w0 * (1.0 + (D * (D / (((d * (d * l)) / h) / (M * (M * -0.125)))))) else: tmp = w0 + ((D * D) * ((h * (M / (d / M))) * ((-0.125 / l) * (w0 / d)))) return tmp
function code(w0, M, D, h, l, d) tmp = 0.0 if (M <= 1.7e-155) tmp = w0; elseif (M <= 2.15e+99) tmp = Float64(w0 * Float64(1.0 + Float64(D * Float64(D / Float64(Float64(Float64(d * Float64(d * l)) / h) / Float64(M * Float64(M * -0.125))))))); else tmp = Float64(w0 + Float64(Float64(D * D) * Float64(Float64(h * Float64(M / Float64(d / M))) * Float64(Float64(-0.125 / l) * Float64(w0 / d))))); end return tmp end
function tmp_2 = code(w0, M, D, h, l, d) tmp = 0.0; if (M <= 1.7e-155) tmp = w0; elseif (M <= 2.15e+99) tmp = w0 * (1.0 + (D * (D / (((d * (d * l)) / h) / (M * (M * -0.125)))))); else tmp = w0 + ((D * D) * ((h * (M / (d / M))) * ((-0.125 / l) * (w0 / d)))); end tmp_2 = tmp; end
code[w0_, M_, D_, h_, l_, d_] := If[LessEqual[M, 1.7e-155], w0, If[LessEqual[M, 2.15e+99], N[(w0 * N[(1.0 + N[(D * N[(D / N[(N[(N[(d * N[(d * l), $MachinePrecision]), $MachinePrecision] / h), $MachinePrecision] / N[(M * N[(M * -0.125), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(w0 + N[(N[(D * D), $MachinePrecision] * N[(N[(h * N[(M / N[(d / M), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(-0.125 / l), $MachinePrecision] * N[(w0 / d), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;M \leq 1.7 \cdot 10^{-155}:\\
\;\;\;\;w0\\
\mathbf{elif}\;M \leq 2.15 \cdot 10^{+99}:\\
\;\;\;\;w0 \cdot \left(1 + D \cdot \frac{D}{\frac{\frac{d \cdot \left(d \cdot \ell\right)}{h}}{M \cdot \left(M \cdot -0.125\right)}}\right)\\
\mathbf{else}:\\
\;\;\;\;w0 + \left(D \cdot D\right) \cdot \left(\left(h \cdot \frac{M}{\frac{d}{M}}\right) \cdot \left(\frac{-0.125}{\ell} \cdot \frac{w0}{d}\right)\right)\\
\end{array}
\end{array}
if M < 1.7e-155Initial program 84.8%
Simplified79.6%
Taylor expanded in h around 0
Simplified70.6%
if 1.7e-155 < M < 2.1500000000000001e99Initial program 78.1%
Simplified77.9%
Taylor expanded in h around 0
+-lowering-+.f64N/A
*-commutativeN/A
associate-/l*N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
/-lowering-/.f64N/A
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6463.1%
Simplified63.1%
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
Applied egg-rr71.4%
if 2.1500000000000001e99 < M Initial program 67.9%
clear-numN/A
un-div-invN/A
unpow2N/A
div-invN/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-commutativeN/A
associate-/r*N/A
/-lowering-/.f64N/A
associate-/l*N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
Applied egg-rr81.9%
Taylor expanded in M around 0
+-lowering-+.f64N/A
*-commutativeN/A
associate-/l*N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
*-commutativeN/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
Simplified43.3%
times-fracN/A
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
*-commutativeN/A
associate-/l*N/A
associate-*r/N/A
*-lowering-*.f64N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
/-lowering-/.f6443.9%
Applied egg-rr43.9%
Final simplification66.4%
(FPCore (w0 M D h l d) :precision binary64 (if (<= d 2e-77) (+ w0 (/ (* (/ (* D D) (/ l -0.125)) (* w0 (* h (/ M (/ d M))))) d)) (* w0 (+ 1.0 (* D (/ D (/ (/ (* d (* d l)) h) (* M (* M -0.125)))))))))
double code(double w0, double M, double D, double h, double l, double d) {
double tmp;
if (d <= 2e-77) {
tmp = w0 + ((((D * D) / (l / -0.125)) * (w0 * (h * (M / (d / M))))) / d);
} else {
tmp = w0 * (1.0 + (D * (D / (((d * (d * l)) / h) / (M * (M * -0.125))))));
}
return tmp;
}
real(8) function code(w0, m, d, h, l, d_1)
real(8), intent (in) :: w0
real(8), intent (in) :: m
real(8), intent (in) :: d
real(8), intent (in) :: h
real(8), intent (in) :: l
real(8), intent (in) :: d_1
real(8) :: tmp
if (d_1 <= 2d-77) then
tmp = w0 + ((((d * d) / (l / (-0.125d0))) * (w0 * (h * (m / (d_1 / m))))) / d_1)
else
tmp = w0 * (1.0d0 + (d * (d / (((d_1 * (d_1 * l)) / h) / (m * (m * (-0.125d0)))))))
end if
code = tmp
end function
public static double code(double w0, double M, double D, double h, double l, double d) {
double tmp;
if (d <= 2e-77) {
tmp = w0 + ((((D * D) / (l / -0.125)) * (w0 * (h * (M / (d / M))))) / d);
} else {
tmp = w0 * (1.0 + (D * (D / (((d * (d * l)) / h) / (M * (M * -0.125))))));
}
return tmp;
}
def code(w0, M, D, h, l, d): tmp = 0 if d <= 2e-77: tmp = w0 + ((((D * D) / (l / -0.125)) * (w0 * (h * (M / (d / M))))) / d) else: tmp = w0 * (1.0 + (D * (D / (((d * (d * l)) / h) / (M * (M * -0.125)))))) return tmp
function code(w0, M, D, h, l, d) tmp = 0.0 if (d <= 2e-77) tmp = Float64(w0 + Float64(Float64(Float64(Float64(D * D) / Float64(l / -0.125)) * Float64(w0 * Float64(h * Float64(M / Float64(d / M))))) / d)); else tmp = Float64(w0 * Float64(1.0 + Float64(D * Float64(D / Float64(Float64(Float64(d * Float64(d * l)) / h) / Float64(M * Float64(M * -0.125))))))); end return tmp end
function tmp_2 = code(w0, M, D, h, l, d) tmp = 0.0; if (d <= 2e-77) tmp = w0 + ((((D * D) / (l / -0.125)) * (w0 * (h * (M / (d / M))))) / d); else tmp = w0 * (1.0 + (D * (D / (((d * (d * l)) / h) / (M * (M * -0.125)))))); end tmp_2 = tmp; end
code[w0_, M_, D_, h_, l_, d_] := If[LessEqual[d, 2e-77], N[(w0 + N[(N[(N[(N[(D * D), $MachinePrecision] / N[(l / -0.125), $MachinePrecision]), $MachinePrecision] * N[(w0 * N[(h * N[(M / N[(d / M), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / d), $MachinePrecision]), $MachinePrecision], N[(w0 * N[(1.0 + N[(D * N[(D / N[(N[(N[(d * N[(d * l), $MachinePrecision]), $MachinePrecision] / h), $MachinePrecision] / N[(M * N[(M * -0.125), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;d \leq 2 \cdot 10^{-77}:\\
\;\;\;\;w0 + \frac{\frac{D \cdot D}{\frac{\ell}{-0.125}} \cdot \left(w0 \cdot \left(h \cdot \frac{M}{\frac{d}{M}}\right)\right)}{d}\\
\mathbf{else}:\\
\;\;\;\;w0 \cdot \left(1 + D \cdot \frac{D}{\frac{\frac{d \cdot \left(d \cdot \ell\right)}{h}}{M \cdot \left(M \cdot -0.125\right)}}\right)\\
\end{array}
\end{array}
if d < 1.9999999999999999e-77Initial program 79.7%
clear-numN/A
un-div-invN/A
unpow2N/A
div-invN/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-commutativeN/A
associate-/r*N/A
/-lowering-/.f64N/A
associate-/l*N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
Applied egg-rr87.4%
Taylor expanded in M around 0
+-lowering-+.f64N/A
*-commutativeN/A
associate-/l*N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
*-commutativeN/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
Simplified56.5%
associate-*r*N/A
associate-/r*N/A
associate-*r/N/A
/-lowering-/.f64N/A
Applied egg-rr67.0%
if 1.9999999999999999e-77 < d Initial program 81.5%
Simplified76.1%
Taylor expanded in h around 0
+-lowering-+.f64N/A
*-commutativeN/A
associate-/l*N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
/-lowering-/.f64N/A
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6459.0%
Simplified59.0%
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
Applied egg-rr70.0%
Final simplification68.0%
(FPCore (w0 M D h l d) :precision binary64 (if (<= D 9.8e+153) (+ w0 (* (* D D) (/ (* (* w0 (* h (/ M (/ d M)))) (/ -0.125 l)) d))) (* w0 (+ 1.0 (/ (* -0.125 (* D (* D (* h (* M M))))) (* d (* d l)))))))
double code(double w0, double M, double D, double h, double l, double d) {
double tmp;
if (D <= 9.8e+153) {
tmp = w0 + ((D * D) * (((w0 * (h * (M / (d / M)))) * (-0.125 / l)) / d));
} else {
tmp = w0 * (1.0 + ((-0.125 * (D * (D * (h * (M * M))))) / (d * (d * l))));
}
return tmp;
}
real(8) function code(w0, m, d, h, l, d_1)
real(8), intent (in) :: w0
real(8), intent (in) :: m
real(8), intent (in) :: d
real(8), intent (in) :: h
real(8), intent (in) :: l
real(8), intent (in) :: d_1
real(8) :: tmp
if (d <= 9.8d+153) then
tmp = w0 + ((d * d) * (((w0 * (h * (m / (d_1 / m)))) * ((-0.125d0) / l)) / d_1))
else
tmp = w0 * (1.0d0 + (((-0.125d0) * (d * (d * (h * (m * m))))) / (d_1 * (d_1 * l))))
end if
code = tmp
end function
public static double code(double w0, double M, double D, double h, double l, double d) {
double tmp;
if (D <= 9.8e+153) {
tmp = w0 + ((D * D) * (((w0 * (h * (M / (d / M)))) * (-0.125 / l)) / d));
} else {
tmp = w0 * (1.0 + ((-0.125 * (D * (D * (h * (M * M))))) / (d * (d * l))));
}
return tmp;
}
def code(w0, M, D, h, l, d): tmp = 0 if D <= 9.8e+153: tmp = w0 + ((D * D) * (((w0 * (h * (M / (d / M)))) * (-0.125 / l)) / d)) else: tmp = w0 * (1.0 + ((-0.125 * (D * (D * (h * (M * M))))) / (d * (d * l)))) return tmp
function code(w0, M, D, h, l, d) tmp = 0.0 if (D <= 9.8e+153) tmp = Float64(w0 + Float64(Float64(D * D) * Float64(Float64(Float64(w0 * Float64(h * Float64(M / Float64(d / M)))) * Float64(-0.125 / l)) / d))); else tmp = Float64(w0 * Float64(1.0 + Float64(Float64(-0.125 * Float64(D * Float64(D * Float64(h * Float64(M * M))))) / Float64(d * Float64(d * l))))); end return tmp end
function tmp_2 = code(w0, M, D, h, l, d) tmp = 0.0; if (D <= 9.8e+153) tmp = w0 + ((D * D) * (((w0 * (h * (M / (d / M)))) * (-0.125 / l)) / d)); else tmp = w0 * (1.0 + ((-0.125 * (D * (D * (h * (M * M))))) / (d * (d * l)))); end tmp_2 = tmp; end
code[w0_, M_, D_, h_, l_, d_] := If[LessEqual[D, 9.8e+153], N[(w0 + N[(N[(D * D), $MachinePrecision] * N[(N[(N[(w0 * N[(h * N[(M / N[(d / M), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(-0.125 / l), $MachinePrecision]), $MachinePrecision] / d), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(w0 * N[(1.0 + N[(N[(-0.125 * N[(D * N[(D * N[(h * N[(M * M), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(d * N[(d * l), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;D \leq 9.8 \cdot 10^{+153}:\\
\;\;\;\;w0 + \left(D \cdot D\right) \cdot \frac{\left(w0 \cdot \left(h \cdot \frac{M}{\frac{d}{M}}\right)\right) \cdot \frac{-0.125}{\ell}}{d}\\
\mathbf{else}:\\
\;\;\;\;w0 \cdot \left(1 + \frac{-0.125 \cdot \left(D \cdot \left(D \cdot \left(h \cdot \left(M \cdot M\right)\right)\right)\right)}{d \cdot \left(d \cdot \ell\right)}\right)\\
\end{array}
\end{array}
if D < 9.80000000000000003e153Initial program 82.3%
clear-numN/A
un-div-invN/A
unpow2N/A
div-invN/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-commutativeN/A
associate-/r*N/A
/-lowering-/.f64N/A
associate-/l*N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
Applied egg-rr89.2%
Taylor expanded in M around 0
+-lowering-+.f64N/A
*-commutativeN/A
associate-/l*N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
*-commutativeN/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
Simplified57.9%
associate-/r*N/A
associate-*r/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
associate-/l*N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-/l*N/A
associate-*r/N/A
*-lowering-*.f64N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
/-lowering-/.f6468.5%
Applied egg-rr68.5%
if 9.80000000000000003e153 < D Initial program 61.6%
clear-numN/A
un-div-invN/A
unpow2N/A
div-invN/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-commutativeN/A
associate-/r*N/A
/-lowering-/.f64N/A
associate-/l*N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
Applied egg-rr81.0%
Taylor expanded in M around 0
+-lowering-+.f64N/A
associate-*r/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f6464.6%
Simplified64.6%
Final simplification68.1%
(FPCore (w0 M D h l d) :precision binary64 (if (<= M 1.72e-155) w0 (* w0 (+ 1.0 (* D (/ D (/ (/ (* d (* d l)) h) (* M (* M -0.125)))))))))
double code(double w0, double M, double D, double h, double l, double d) {
double tmp;
if (M <= 1.72e-155) {
tmp = w0;
} else {
tmp = w0 * (1.0 + (D * (D / (((d * (d * l)) / h) / (M * (M * -0.125))))));
}
return tmp;
}
real(8) function code(w0, m, d, h, l, d_1)
real(8), intent (in) :: w0
real(8), intent (in) :: m
real(8), intent (in) :: d
real(8), intent (in) :: h
real(8), intent (in) :: l
real(8), intent (in) :: d_1
real(8) :: tmp
if (m <= 1.72d-155) then
tmp = w0
else
tmp = w0 * (1.0d0 + (d * (d / (((d_1 * (d_1 * l)) / h) / (m * (m * (-0.125d0)))))))
end if
code = tmp
end function
public static double code(double w0, double M, double D, double h, double l, double d) {
double tmp;
if (M <= 1.72e-155) {
tmp = w0;
} else {
tmp = w0 * (1.0 + (D * (D / (((d * (d * l)) / h) / (M * (M * -0.125))))));
}
return tmp;
}
def code(w0, M, D, h, l, d): tmp = 0 if M <= 1.72e-155: tmp = w0 else: tmp = w0 * (1.0 + (D * (D / (((d * (d * l)) / h) / (M * (M * -0.125)))))) return tmp
function code(w0, M, D, h, l, d) tmp = 0.0 if (M <= 1.72e-155) tmp = w0; else tmp = Float64(w0 * Float64(1.0 + Float64(D * Float64(D / Float64(Float64(Float64(d * Float64(d * l)) / h) / Float64(M * Float64(M * -0.125))))))); end return tmp end
function tmp_2 = code(w0, M, D, h, l, d) tmp = 0.0; if (M <= 1.72e-155) tmp = w0; else tmp = w0 * (1.0 + (D * (D / (((d * (d * l)) / h) / (M * (M * -0.125)))))); end tmp_2 = tmp; end
code[w0_, M_, D_, h_, l_, d_] := If[LessEqual[M, 1.72e-155], w0, N[(w0 * N[(1.0 + N[(D * N[(D / N[(N[(N[(d * N[(d * l), $MachinePrecision]), $MachinePrecision] / h), $MachinePrecision] / N[(M * N[(M * -0.125), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;M \leq 1.72 \cdot 10^{-155}:\\
\;\;\;\;w0\\
\mathbf{else}:\\
\;\;\;\;w0 \cdot \left(1 + D \cdot \frac{D}{\frac{\frac{d \cdot \left(d \cdot \ell\right)}{h}}{M \cdot \left(M \cdot -0.125\right)}}\right)\\
\end{array}
\end{array}
if M < 1.71999999999999991e-155Initial program 84.8%
Simplified79.6%
Taylor expanded in h around 0
Simplified70.6%
if 1.71999999999999991e-155 < M Initial program 74.1%
Simplified70.3%
Taylor expanded in h around 0
+-lowering-+.f64N/A
*-commutativeN/A
associate-/l*N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
/-lowering-/.f64N/A
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6455.4%
Simplified55.4%
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
Applied egg-rr60.9%
Final simplification66.5%
(FPCore (w0 M D h l d) :precision binary64 (if (<= M 1.65e-165) w0 (* w0 (+ 1.0 (* (* D D) (* (/ -0.125 d) (/ (* M (* M h)) (* d l))))))))
double code(double w0, double M, double D, double h, double l, double d) {
double tmp;
if (M <= 1.65e-165) {
tmp = w0;
} else {
tmp = w0 * (1.0 + ((D * D) * ((-0.125 / d) * ((M * (M * h)) / (d * l)))));
}
return tmp;
}
real(8) function code(w0, m, d, h, l, d_1)
real(8), intent (in) :: w0
real(8), intent (in) :: m
real(8), intent (in) :: d
real(8), intent (in) :: h
real(8), intent (in) :: l
real(8), intent (in) :: d_1
real(8) :: tmp
if (m <= 1.65d-165) then
tmp = w0
else
tmp = w0 * (1.0d0 + ((d * d) * (((-0.125d0) / d_1) * ((m * (m * h)) / (d_1 * l)))))
end if
code = tmp
end function
public static double code(double w0, double M, double D, double h, double l, double d) {
double tmp;
if (M <= 1.65e-165) {
tmp = w0;
} else {
tmp = w0 * (1.0 + ((D * D) * ((-0.125 / d) * ((M * (M * h)) / (d * l)))));
}
return tmp;
}
def code(w0, M, D, h, l, d): tmp = 0 if M <= 1.65e-165: tmp = w0 else: tmp = w0 * (1.0 + ((D * D) * ((-0.125 / d) * ((M * (M * h)) / (d * l))))) return tmp
function code(w0, M, D, h, l, d) tmp = 0.0 if (M <= 1.65e-165) tmp = w0; else tmp = Float64(w0 * Float64(1.0 + Float64(Float64(D * D) * Float64(Float64(-0.125 / d) * Float64(Float64(M * Float64(M * h)) / Float64(d * l)))))); end return tmp end
function tmp_2 = code(w0, M, D, h, l, d) tmp = 0.0; if (M <= 1.65e-165) tmp = w0; else tmp = w0 * (1.0 + ((D * D) * ((-0.125 / d) * ((M * (M * h)) / (d * l))))); end tmp_2 = tmp; end
code[w0_, M_, D_, h_, l_, d_] := If[LessEqual[M, 1.65e-165], w0, N[(w0 * N[(1.0 + N[(N[(D * D), $MachinePrecision] * N[(N[(-0.125 / d), $MachinePrecision] * N[(N[(M * N[(M * h), $MachinePrecision]), $MachinePrecision] / N[(d * l), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;M \leq 1.65 \cdot 10^{-165}:\\
\;\;\;\;w0\\
\mathbf{else}:\\
\;\;\;\;w0 \cdot \left(1 + \left(D \cdot D\right) \cdot \left(\frac{-0.125}{d} \cdot \frac{M \cdot \left(M \cdot h\right)}{d \cdot \ell}\right)\right)\\
\end{array}
\end{array}
if M < 1.6499999999999999e-165Initial program 84.8%
Simplified79.6%
Taylor expanded in h around 0
Simplified70.6%
if 1.6499999999999999e-165 < M Initial program 74.1%
Simplified70.3%
Taylor expanded in h around 0
+-lowering-+.f64N/A
*-commutativeN/A
associate-/l*N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
/-lowering-/.f64N/A
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6455.4%
Simplified55.4%
associate-*l*N/A
associate-*l*N/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f6459.3%
Applied egg-rr59.3%
(FPCore (w0 M D h l d) :precision binary64 (if (<= M 4e+43) w0 (* w0 (* (/ (* M (* M (* h -0.125))) d) (/ (* D D) (* d l))))))
double code(double w0, double M, double D, double h, double l, double d) {
double tmp;
if (M <= 4e+43) {
tmp = w0;
} else {
tmp = w0 * (((M * (M * (h * -0.125))) / d) * ((D * D) / (d * l)));
}
return tmp;
}
real(8) function code(w0, m, d, h, l, d_1)
real(8), intent (in) :: w0
real(8), intent (in) :: m
real(8), intent (in) :: d
real(8), intent (in) :: h
real(8), intent (in) :: l
real(8), intent (in) :: d_1
real(8) :: tmp
if (m <= 4d+43) then
tmp = w0
else
tmp = w0 * (((m * (m * (h * (-0.125d0)))) / d_1) * ((d * d) / (d_1 * l)))
end if
code = tmp
end function
public static double code(double w0, double M, double D, double h, double l, double d) {
double tmp;
if (M <= 4e+43) {
tmp = w0;
} else {
tmp = w0 * (((M * (M * (h * -0.125))) / d) * ((D * D) / (d * l)));
}
return tmp;
}
def code(w0, M, D, h, l, d): tmp = 0 if M <= 4e+43: tmp = w0 else: tmp = w0 * (((M * (M * (h * -0.125))) / d) * ((D * D) / (d * l))) return tmp
function code(w0, M, D, h, l, d) tmp = 0.0 if (M <= 4e+43) tmp = w0; else tmp = Float64(w0 * Float64(Float64(Float64(M * Float64(M * Float64(h * -0.125))) / d) * Float64(Float64(D * D) / Float64(d * l)))); end return tmp end
function tmp_2 = code(w0, M, D, h, l, d) tmp = 0.0; if (M <= 4e+43) tmp = w0; else tmp = w0 * (((M * (M * (h * -0.125))) / d) * ((D * D) / (d * l))); end tmp_2 = tmp; end
code[w0_, M_, D_, h_, l_, d_] := If[LessEqual[M, 4e+43], w0, N[(w0 * N[(N[(N[(M * N[(M * N[(h * -0.125), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / d), $MachinePrecision] * N[(N[(D * D), $MachinePrecision] / N[(d * l), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;M \leq 4 \cdot 10^{+43}:\\
\;\;\;\;w0\\
\mathbf{else}:\\
\;\;\;\;w0 \cdot \left(\frac{M \cdot \left(M \cdot \left(h \cdot -0.125\right)\right)}{d} \cdot \frac{D \cdot D}{d \cdot \ell}\right)\\
\end{array}
\end{array}
if M < 4.00000000000000006e43Initial program 83.4%
Simplified79.4%
Taylor expanded in h around 0
Simplified71.5%
if 4.00000000000000006e43 < M Initial program 69.7%
Simplified62.7%
Taylor expanded in h around 0
+-lowering-+.f64N/A
*-commutativeN/A
associate-/l*N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
/-lowering-/.f64N/A
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6449.6%
Simplified49.6%
Taylor expanded in D around inf
associate-*r/N/A
/-lowering-/.f64N/A
*-commutativeN/A
associate-*r*N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6427.6%
Simplified27.6%
associate-*l*N/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
associate-*l*N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f6426.4%
Applied egg-rr26.4%
(FPCore (w0 M D h l d) :precision binary64 (if (<= M 9e+43) w0 (* w0 (* (* M (* M (* h -0.125))) (* D (/ D (* d (* d l))))))))
double code(double w0, double M, double D, double h, double l, double d) {
double tmp;
if (M <= 9e+43) {
tmp = w0;
} else {
tmp = w0 * ((M * (M * (h * -0.125))) * (D * (D / (d * (d * l)))));
}
return tmp;
}
real(8) function code(w0, m, d, h, l, d_1)
real(8), intent (in) :: w0
real(8), intent (in) :: m
real(8), intent (in) :: d
real(8), intent (in) :: h
real(8), intent (in) :: l
real(8), intent (in) :: d_1
real(8) :: tmp
if (m <= 9d+43) then
tmp = w0
else
tmp = w0 * ((m * (m * (h * (-0.125d0)))) * (d * (d / (d_1 * (d_1 * l)))))
end if
code = tmp
end function
public static double code(double w0, double M, double D, double h, double l, double d) {
double tmp;
if (M <= 9e+43) {
tmp = w0;
} else {
tmp = w0 * ((M * (M * (h * -0.125))) * (D * (D / (d * (d * l)))));
}
return tmp;
}
def code(w0, M, D, h, l, d): tmp = 0 if M <= 9e+43: tmp = w0 else: tmp = w0 * ((M * (M * (h * -0.125))) * (D * (D / (d * (d * l))))) return tmp
function code(w0, M, D, h, l, d) tmp = 0.0 if (M <= 9e+43) tmp = w0; else tmp = Float64(w0 * Float64(Float64(M * Float64(M * Float64(h * -0.125))) * Float64(D * Float64(D / Float64(d * Float64(d * l)))))); end return tmp end
function tmp_2 = code(w0, M, D, h, l, d) tmp = 0.0; if (M <= 9e+43) tmp = w0; else tmp = w0 * ((M * (M * (h * -0.125))) * (D * (D / (d * (d * l))))); end tmp_2 = tmp; end
code[w0_, M_, D_, h_, l_, d_] := If[LessEqual[M, 9e+43], w0, N[(w0 * N[(N[(M * N[(M * N[(h * -0.125), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(D * N[(D / N[(d * N[(d * l), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;M \leq 9 \cdot 10^{+43}:\\
\;\;\;\;w0\\
\mathbf{else}:\\
\;\;\;\;w0 \cdot \left(\left(M \cdot \left(M \cdot \left(h \cdot -0.125\right)\right)\right) \cdot \left(D \cdot \frac{D}{d \cdot \left(d \cdot \ell\right)}\right)\right)\\
\end{array}
\end{array}
if M < 9e43Initial program 83.4%
Simplified79.4%
Taylor expanded in h around 0
Simplified71.5%
if 9e43 < M Initial program 69.7%
Simplified62.7%
Taylor expanded in h around 0
+-lowering-+.f64N/A
*-commutativeN/A
associate-/l*N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
/-lowering-/.f64N/A
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6449.6%
Simplified49.6%
Taylor expanded in D around inf
associate-*r/N/A
/-lowering-/.f64N/A
*-commutativeN/A
associate-*r*N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6427.6%
Simplified27.6%
associate-/l*N/A
*-lowering-*.f64N/A
associate-*l*N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
associate-/l*N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f6428.2%
Applied egg-rr28.2%
(FPCore (w0 M D h l d) :precision binary64 w0)
double code(double w0, double M, double D, double h, double l, double d) {
return w0;
}
real(8) function code(w0, m, d, h, l, d_1)
real(8), intent (in) :: w0
real(8), intent (in) :: m
real(8), intent (in) :: d
real(8), intent (in) :: h
real(8), intent (in) :: l
real(8), intent (in) :: d_1
code = w0
end function
public static double code(double w0, double M, double D, double h, double l, double d) {
return w0;
}
def code(w0, M, D, h, l, d): return w0
function code(w0, M, D, h, l, d) return w0 end
function tmp = code(w0, M, D, h, l, d) tmp = w0; end
code[w0_, M_, D_, h_, l_, d_] := w0
\begin{array}{l}
\\
w0
\end{array}
Initial program 80.3%
Simplified75.7%
Taylor expanded in h around 0
Simplified66.0%
herbie shell --seed 2024160
(FPCore (w0 M D h l d)
:name "Henrywood and Agarwal, Equation (9a)"
:precision binary64
(* w0 (sqrt (- 1.0 (* (pow (/ (* M D) (* 2.0 d)) 2.0) (/ h l))))))