
(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 7 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}
M_m = (fabs.f64 M)
(FPCore (c0 w h D d M_m)
:precision binary64
(let* ((t_0 (/ (* c0 d) D)))
(if (<= M_m 6.5e-188)
(* t_0 (/ (/ t_0 (* w h)) w))
(if (<= M_m 7.8e-150)
0.0
(* c0 (* d (* c0 (/ d (* D (* w (* D (* w h))))))))))))M_m = fabs(M);
double code(double c0, double w, double h, double D, double d, double M_m) {
double t_0 = (c0 * d) / D;
double tmp;
if (M_m <= 6.5e-188) {
tmp = t_0 * ((t_0 / (w * h)) / w);
} else if (M_m <= 7.8e-150) {
tmp = 0.0;
} else {
tmp = c0 * (d * (c0 * (d / (D * (w * (D * (w * h)))))));
}
return tmp;
}
M_m = abs(m)
real(8) function code(c0, w, h, d, d_1, m_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_m
real(8) :: t_0
real(8) :: tmp
t_0 = (c0 * d_1) / d
if (m_m <= 6.5d-188) then
tmp = t_0 * ((t_0 / (w * h)) / w)
else if (m_m <= 7.8d-150) then
tmp = 0.0d0
else
tmp = c0 * (d_1 * (c0 * (d_1 / (d * (w * (d * (w * h)))))))
end if
code = tmp
end function
M_m = Math.abs(M);
public static double code(double c0, double w, double h, double D, double d, double M_m) {
double t_0 = (c0 * d) / D;
double tmp;
if (M_m <= 6.5e-188) {
tmp = t_0 * ((t_0 / (w * h)) / w);
} else if (M_m <= 7.8e-150) {
tmp = 0.0;
} else {
tmp = c0 * (d * (c0 * (d / (D * (w * (D * (w * h)))))));
}
return tmp;
}
M_m = math.fabs(M) def code(c0, w, h, D, d, M_m): t_0 = (c0 * d) / D tmp = 0 if M_m <= 6.5e-188: tmp = t_0 * ((t_0 / (w * h)) / w) elif M_m <= 7.8e-150: tmp = 0.0 else: tmp = c0 * (d * (c0 * (d / (D * (w * (D * (w * h))))))) return tmp
M_m = abs(M) function code(c0, w, h, D, d, M_m) t_0 = Float64(Float64(c0 * d) / D) tmp = 0.0 if (M_m <= 6.5e-188) tmp = Float64(t_0 * Float64(Float64(t_0 / Float64(w * h)) / w)); elseif (M_m <= 7.8e-150) tmp = 0.0; else tmp = Float64(c0 * Float64(d * Float64(c0 * Float64(d / Float64(D * Float64(w * Float64(D * Float64(w * h)))))))); end return tmp end
M_m = abs(M); function tmp_2 = code(c0, w, h, D, d, M_m) t_0 = (c0 * d) / D; tmp = 0.0; if (M_m <= 6.5e-188) tmp = t_0 * ((t_0 / (w * h)) / w); elseif (M_m <= 7.8e-150) tmp = 0.0; else tmp = c0 * (d * (c0 * (d / (D * (w * (D * (w * h))))))); end tmp_2 = tmp; end
M_m = N[Abs[M], $MachinePrecision]
code[c0_, w_, h_, D_, d_, M$95$m_] := Block[{t$95$0 = N[(N[(c0 * d), $MachinePrecision] / D), $MachinePrecision]}, If[LessEqual[M$95$m, 6.5e-188], N[(t$95$0 * N[(N[(t$95$0 / N[(w * h), $MachinePrecision]), $MachinePrecision] / w), $MachinePrecision]), $MachinePrecision], If[LessEqual[M$95$m, 7.8e-150], 0.0, N[(c0 * N[(d * N[(c0 * N[(d / N[(D * N[(w * N[(D * N[(w * h), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
M_m = \left|M\right|
\\
\begin{array}{l}
t_0 := \frac{c0 \cdot d}{D}\\
\mathbf{if}\;M\_m \leq 6.5 \cdot 10^{-188}:\\
\;\;\;\;t\_0 \cdot \frac{\frac{t\_0}{w \cdot h}}{w}\\
\mathbf{elif}\;M\_m \leq 7.8 \cdot 10^{-150}:\\
\;\;\;\;0\\
\mathbf{else}:\\
\;\;\;\;c0 \cdot \left(d \cdot \left(c0 \cdot \frac{d}{D \cdot \left(w \cdot \left(D \cdot \left(w \cdot h\right)\right)\right)}\right)\right)\\
\end{array}
\end{array}
if M < 6.4999999999999998e-188Initial program 19.4%
Taylor expanded in c0 around inf
lower-/.f64N/A
lower-*.f64N/A
unpow2N/A
lower-*.f64N/A
unpow2N/A
lower-*.f64N/A
lower-*.f64N/A
unpow2N/A
lower-*.f64N/A
lower-*.f64N/A
unpow2N/A
lower-*.f6417.7
Applied rewrites17.7%
unswap-sqrN/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
times-fracN/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lower-*.f6442.3
lift-*.f64N/A
*-commutativeN/A
lower-*.f6442.3
Applied rewrites42.3%
lift-*.f64N/A
lift-*.f64N/A
lift-*.f64N/A
associate-/r*N/A
lift-/.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-/r*N/A
lower-/.f64N/A
lower-/.f6447.5
Applied rewrites47.5%
if 6.4999999999999998e-188 < M < 7.8000000000000004e-150Initial program 8.9%
Taylor expanded in c0 around -inf
associate-/l*N/A
distribute-lft1-inN/A
metadata-evalN/A
mul0-lftN/A
div0N/A
mul0-rgtN/A
metadata-eval70.2
Applied rewrites70.2%
if 7.8000000000000004e-150 < M Initial program 24.4%
Taylor expanded in c0 around inf
lower-/.f64N/A
lower-*.f64N/A
unpow2N/A
lower-*.f64N/A
unpow2N/A
lower-*.f64N/A
lower-*.f64N/A
unpow2N/A
lower-*.f64N/A
lower-*.f64N/A
unpow2N/A
lower-*.f6442.6
Applied rewrites42.6%
unswap-sqrN/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
times-fracN/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lower-*.f6457.4
lift-*.f64N/A
*-commutativeN/A
lower-*.f6457.4
Applied rewrites57.4%
Applied rewrites58.3%
Final simplification52.9%
M_m = (fabs.f64 M)
(FPCore (c0 w h D d M_m)
:precision binary64
(let* ((t_0 (/ (* c0 (* d d)) (* (* w h) (* D D)))))
(if (<=
(* (/ c0 (* w 2.0)) (+ t_0 (sqrt (- (* t_0 t_0) (* M_m M_m)))))
INFINITY)
(* c0 (* c0 (/ (* d d) (* D (* w (* h (* D w)))))))
0.0)))M_m = fabs(M);
double code(double c0, double w, double h, double D, double d, double M_m) {
double t_0 = (c0 * (d * d)) / ((w * h) * (D * D));
double tmp;
if (((c0 / (w * 2.0)) * (t_0 + sqrt(((t_0 * t_0) - (M_m * M_m))))) <= ((double) INFINITY)) {
tmp = c0 * (c0 * ((d * d) / (D * (w * (h * (D * w))))));
} else {
tmp = 0.0;
}
return tmp;
}
M_m = Math.abs(M);
public static double code(double c0, double w, double h, double D, double d, double M_m) {
double t_0 = (c0 * (d * d)) / ((w * h) * (D * D));
double tmp;
if (((c0 / (w * 2.0)) * (t_0 + Math.sqrt(((t_0 * t_0) - (M_m * M_m))))) <= Double.POSITIVE_INFINITY) {
tmp = c0 * (c0 * ((d * d) / (D * (w * (h * (D * w))))));
} else {
tmp = 0.0;
}
return tmp;
}
M_m = math.fabs(M) def code(c0, w, h, D, d, M_m): t_0 = (c0 * (d * d)) / ((w * h) * (D * D)) tmp = 0 if ((c0 / (w * 2.0)) * (t_0 + math.sqrt(((t_0 * t_0) - (M_m * M_m))))) <= math.inf: tmp = c0 * (c0 * ((d * d) / (D * (w * (h * (D * w)))))) else: tmp = 0.0 return tmp
M_m = abs(M) function code(c0, w, h, D, d, M_m) t_0 = Float64(Float64(c0 * Float64(d * d)) / Float64(Float64(w * h) * Float64(D * D))) tmp = 0.0 if (Float64(Float64(c0 / Float64(w * 2.0)) * Float64(t_0 + sqrt(Float64(Float64(t_0 * t_0) - Float64(M_m * M_m))))) <= Inf) tmp = Float64(c0 * Float64(c0 * Float64(Float64(d * d) / Float64(D * Float64(w * Float64(h * Float64(D * w))))))); else tmp = 0.0; end return tmp end
M_m = abs(M); function tmp_2 = code(c0, w, h, D, d, M_m) t_0 = (c0 * (d * d)) / ((w * h) * (D * D)); tmp = 0.0; if (((c0 / (w * 2.0)) * (t_0 + sqrt(((t_0 * t_0) - (M_m * M_m))))) <= Inf) tmp = c0 * (c0 * ((d * d) / (D * (w * (h * (D * w)))))); else tmp = 0.0; end tmp_2 = tmp; end
M_m = N[Abs[M], $MachinePrecision]
code[c0_, w_, h_, D_, d_, M$95$m_] := Block[{t$95$0 = N[(N[(c0 * N[(d * d), $MachinePrecision]), $MachinePrecision] / N[(N[(w * h), $MachinePrecision] * N[(D * D), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[N[(N[(c0 / N[(w * 2.0), $MachinePrecision]), $MachinePrecision] * N[(t$95$0 + N[Sqrt[N[(N[(t$95$0 * t$95$0), $MachinePrecision] - N[(M$95$m * M$95$m), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], Infinity], N[(c0 * N[(c0 * N[(N[(d * d), $MachinePrecision] / N[(D * N[(w * N[(h * N[(D * w), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 0.0]]
\begin{array}{l}
M_m = \left|M\right|
\\
\begin{array}{l}
t_0 := \frac{c0 \cdot \left(d \cdot d\right)}{\left(w \cdot h\right) \cdot \left(D \cdot D\right)}\\
\mathbf{if}\;\frac{c0}{w \cdot 2} \cdot \left(t\_0 + \sqrt{t\_0 \cdot t\_0 - M\_m \cdot M\_m}\right) \leq \infty:\\
\;\;\;\;c0 \cdot \left(c0 \cdot \frac{d \cdot d}{D \cdot \left(w \cdot \left(h \cdot \left(D \cdot w\right)\right)\right)}\right)\\
\mathbf{else}:\\
\;\;\;\;0\\
\end{array}
\end{array}
if (*.f64 (/.f64 c0 (*.f64 #s(literal 2 binary64) w)) (+.f64 (/.f64 (*.f64 c0 (*.f64 d d)) (*.f64 (*.f64 w h) (*.f64 D D))) (sqrt.f64 (-.f64 (*.f64 (/.f64 (*.f64 c0 (*.f64 d d)) (*.f64 (*.f64 w h) (*.f64 D D))) (/.f64 (*.f64 c0 (*.f64 d d)) (*.f64 (*.f64 w h) (*.f64 D D)))) (*.f64 M M))))) < +inf.0Initial program 65.0%
Taylor expanded in c0 around inf
lower-/.f64N/A
lower-*.f64N/A
unpow2N/A
lower-*.f64N/A
unpow2N/A
lower-*.f64N/A
lower-*.f64N/A
unpow2N/A
lower-*.f64N/A
lower-*.f64N/A
unpow2N/A
lower-*.f6452.4
Applied rewrites52.4%
Applied rewrites62.6%
Taylor expanded in d around 0
lower-/.f64N/A
unpow2N/A
lower-*.f64N/A
unpow2N/A
associate-*l*N/A
lower-*.f64N/A
unpow2N/A
associate-*r*N/A
associate-*r*N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
associate-*l*N/A
*-commutativeN/A
lower-*.f64N/A
lower-*.f6466.8
Applied rewrites66.8%
if +inf.0 < (*.f64 (/.f64 c0 (*.f64 #s(literal 2 binary64) w)) (+.f64 (/.f64 (*.f64 c0 (*.f64 d d)) (*.f64 (*.f64 w h) (*.f64 D D))) (sqrt.f64 (-.f64 (*.f64 (/.f64 (*.f64 c0 (*.f64 d d)) (*.f64 (*.f64 w h) (*.f64 D D))) (/.f64 (*.f64 c0 (*.f64 d d)) (*.f64 (*.f64 w h) (*.f64 D D)))) (*.f64 M M))))) Initial program 0.0%
Taylor expanded in c0 around -inf
associate-/l*N/A
distribute-lft1-inN/A
metadata-evalN/A
mul0-lftN/A
div0N/A
mul0-rgtN/A
metadata-eval37.2
Applied rewrites37.2%
Final simplification46.7%
M_m = (fabs.f64 M)
(FPCore (c0 w h D d M_m)
:precision binary64
(let* ((t_0 (* w (* D (* w h)))))
(if (<= M_m 6.2e-188)
(* (* c0 d) (/ (/ (* c0 d) t_0) D))
(if (<= M_m 7.8e-150) 0.0 (* c0 (* d (* c0 (/ d (* D t_0)))))))))M_m = fabs(M);
double code(double c0, double w, double h, double D, double d, double M_m) {
double t_0 = w * (D * (w * h));
double tmp;
if (M_m <= 6.2e-188) {
tmp = (c0 * d) * (((c0 * d) / t_0) / D);
} else if (M_m <= 7.8e-150) {
tmp = 0.0;
} else {
tmp = c0 * (d * (c0 * (d / (D * t_0))));
}
return tmp;
}
M_m = abs(m)
real(8) function code(c0, w, h, d, d_1, m_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_m
real(8) :: t_0
real(8) :: tmp
t_0 = w * (d * (w * h))
if (m_m <= 6.2d-188) then
tmp = (c0 * d_1) * (((c0 * d_1) / t_0) / d)
else if (m_m <= 7.8d-150) then
tmp = 0.0d0
else
tmp = c0 * (d_1 * (c0 * (d_1 / (d * t_0))))
end if
code = tmp
end function
M_m = Math.abs(M);
public static double code(double c0, double w, double h, double D, double d, double M_m) {
double t_0 = w * (D * (w * h));
double tmp;
if (M_m <= 6.2e-188) {
tmp = (c0 * d) * (((c0 * d) / t_0) / D);
} else if (M_m <= 7.8e-150) {
tmp = 0.0;
} else {
tmp = c0 * (d * (c0 * (d / (D * t_0))));
}
return tmp;
}
M_m = math.fabs(M) def code(c0, w, h, D, d, M_m): t_0 = w * (D * (w * h)) tmp = 0 if M_m <= 6.2e-188: tmp = (c0 * d) * (((c0 * d) / t_0) / D) elif M_m <= 7.8e-150: tmp = 0.0 else: tmp = c0 * (d * (c0 * (d / (D * t_0)))) return tmp
M_m = abs(M) function code(c0, w, h, D, d, M_m) t_0 = Float64(w * Float64(D * Float64(w * h))) tmp = 0.0 if (M_m <= 6.2e-188) tmp = Float64(Float64(c0 * d) * Float64(Float64(Float64(c0 * d) / t_0) / D)); elseif (M_m <= 7.8e-150) tmp = 0.0; else tmp = Float64(c0 * Float64(d * Float64(c0 * Float64(d / Float64(D * t_0))))); end return tmp end
M_m = abs(M); function tmp_2 = code(c0, w, h, D, d, M_m) t_0 = w * (D * (w * h)); tmp = 0.0; if (M_m <= 6.2e-188) tmp = (c0 * d) * (((c0 * d) / t_0) / D); elseif (M_m <= 7.8e-150) tmp = 0.0; else tmp = c0 * (d * (c0 * (d / (D * t_0)))); end tmp_2 = tmp; end
M_m = N[Abs[M], $MachinePrecision]
code[c0_, w_, h_, D_, d_, M$95$m_] := Block[{t$95$0 = N[(w * N[(D * N[(w * h), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[M$95$m, 6.2e-188], N[(N[(c0 * d), $MachinePrecision] * N[(N[(N[(c0 * d), $MachinePrecision] / t$95$0), $MachinePrecision] / D), $MachinePrecision]), $MachinePrecision], If[LessEqual[M$95$m, 7.8e-150], 0.0, N[(c0 * N[(d * N[(c0 * N[(d / N[(D * t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
M_m = \left|M\right|
\\
\begin{array}{l}
t_0 := w \cdot \left(D \cdot \left(w \cdot h\right)\right)\\
\mathbf{if}\;M\_m \leq 6.2 \cdot 10^{-188}:\\
\;\;\;\;\left(c0 \cdot d\right) \cdot \frac{\frac{c0 \cdot d}{t\_0}}{D}\\
\mathbf{elif}\;M\_m \leq 7.8 \cdot 10^{-150}:\\
\;\;\;\;0\\
\mathbf{else}:\\
\;\;\;\;c0 \cdot \left(d \cdot \left(c0 \cdot \frac{d}{D \cdot t\_0}\right)\right)\\
\end{array}
\end{array}
if M < 6.2000000000000004e-188Initial program 19.4%
Taylor expanded in c0 around inf
lower-/.f64N/A
lower-*.f64N/A
unpow2N/A
lower-*.f64N/A
unpow2N/A
lower-*.f64N/A
lower-*.f64N/A
unpow2N/A
lower-*.f64N/A
lower-*.f64N/A
unpow2N/A
lower-*.f6417.7
Applied rewrites17.7%
unswap-sqrN/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
times-fracN/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lower-*.f6442.3
lift-*.f64N/A
*-commutativeN/A
lower-*.f6442.3
Applied rewrites42.3%
lift-*.f64N/A
lift-*.f64N/A
lift-*.f64N/A
lift-*.f64N/A
lift-*.f64N/A
clear-numN/A
frac-timesN/A
div-invN/A
*-rgt-identityN/A
lower-*.f64N/A
clear-numN/A
lift-/.f64N/A
un-div-invN/A
clear-numN/A
lower-/.f6444.4
Applied rewrites46.2%
if 6.2000000000000004e-188 < M < 7.8000000000000004e-150Initial program 8.9%
Taylor expanded in c0 around -inf
associate-/l*N/A
distribute-lft1-inN/A
metadata-evalN/A
mul0-lftN/A
div0N/A
mul0-rgtN/A
metadata-eval70.2
Applied rewrites70.2%
if 7.8000000000000004e-150 < M Initial program 24.4%
Taylor expanded in c0 around inf
lower-/.f64N/A
lower-*.f64N/A
unpow2N/A
lower-*.f64N/A
unpow2N/A
lower-*.f64N/A
lower-*.f64N/A
unpow2N/A
lower-*.f64N/A
lower-*.f64N/A
unpow2N/A
lower-*.f6442.6
Applied rewrites42.6%
unswap-sqrN/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
times-fracN/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lower-*.f6457.4
lift-*.f64N/A
*-commutativeN/A
lower-*.f6457.4
Applied rewrites57.4%
Applied rewrites58.3%
Final simplification52.2%
M_m = (fabs.f64 M)
(FPCore (c0 w h D d M_m)
:precision binary64
(let* ((t_0 (* D (* w (* D (* w h))))))
(if (<= M_m 6.2e-188)
(* (* c0 d) (/ (* c0 d) t_0))
(if (<= M_m 7.8e-150) 0.0 (* c0 (* d (* c0 (/ d t_0))))))))M_m = fabs(M);
double code(double c0, double w, double h, double D, double d, double M_m) {
double t_0 = D * (w * (D * (w * h)));
double tmp;
if (M_m <= 6.2e-188) {
tmp = (c0 * d) * ((c0 * d) / t_0);
} else if (M_m <= 7.8e-150) {
tmp = 0.0;
} else {
tmp = c0 * (d * (c0 * (d / t_0)));
}
return tmp;
}
M_m = abs(m)
real(8) function code(c0, w, h, d, d_1, m_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_m
real(8) :: t_0
real(8) :: tmp
t_0 = d * (w * (d * (w * h)))
if (m_m <= 6.2d-188) then
tmp = (c0 * d_1) * ((c0 * d_1) / t_0)
else if (m_m <= 7.8d-150) then
tmp = 0.0d0
else
tmp = c0 * (d_1 * (c0 * (d_1 / t_0)))
end if
code = tmp
end function
M_m = Math.abs(M);
public static double code(double c0, double w, double h, double D, double d, double M_m) {
double t_0 = D * (w * (D * (w * h)));
double tmp;
if (M_m <= 6.2e-188) {
tmp = (c0 * d) * ((c0 * d) / t_0);
} else if (M_m <= 7.8e-150) {
tmp = 0.0;
} else {
tmp = c0 * (d * (c0 * (d / t_0)));
}
return tmp;
}
M_m = math.fabs(M) def code(c0, w, h, D, d, M_m): t_0 = D * (w * (D * (w * h))) tmp = 0 if M_m <= 6.2e-188: tmp = (c0 * d) * ((c0 * d) / t_0) elif M_m <= 7.8e-150: tmp = 0.0 else: tmp = c0 * (d * (c0 * (d / t_0))) return tmp
M_m = abs(M) function code(c0, w, h, D, d, M_m) t_0 = Float64(D * Float64(w * Float64(D * Float64(w * h)))) tmp = 0.0 if (M_m <= 6.2e-188) tmp = Float64(Float64(c0 * d) * Float64(Float64(c0 * d) / t_0)); elseif (M_m <= 7.8e-150) tmp = 0.0; else tmp = Float64(c0 * Float64(d * Float64(c0 * Float64(d / t_0)))); end return tmp end
M_m = abs(M); function tmp_2 = code(c0, w, h, D, d, M_m) t_0 = D * (w * (D * (w * h))); tmp = 0.0; if (M_m <= 6.2e-188) tmp = (c0 * d) * ((c0 * d) / t_0); elseif (M_m <= 7.8e-150) tmp = 0.0; else tmp = c0 * (d * (c0 * (d / t_0))); end tmp_2 = tmp; end
M_m = N[Abs[M], $MachinePrecision]
code[c0_, w_, h_, D_, d_, M$95$m_] := Block[{t$95$0 = N[(D * N[(w * N[(D * N[(w * h), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[M$95$m, 6.2e-188], N[(N[(c0 * d), $MachinePrecision] * N[(N[(c0 * d), $MachinePrecision] / t$95$0), $MachinePrecision]), $MachinePrecision], If[LessEqual[M$95$m, 7.8e-150], 0.0, N[(c0 * N[(d * N[(c0 * N[(d / t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
M_m = \left|M\right|
\\
\begin{array}{l}
t_0 := D \cdot \left(w \cdot \left(D \cdot \left(w \cdot h\right)\right)\right)\\
\mathbf{if}\;M\_m \leq 6.2 \cdot 10^{-188}:\\
\;\;\;\;\left(c0 \cdot d\right) \cdot \frac{c0 \cdot d}{t\_0}\\
\mathbf{elif}\;M\_m \leq 7.8 \cdot 10^{-150}:\\
\;\;\;\;0\\
\mathbf{else}:\\
\;\;\;\;c0 \cdot \left(d \cdot \left(c0 \cdot \frac{d}{t\_0}\right)\right)\\
\end{array}
\end{array}
if M < 6.2000000000000004e-188Initial program 19.4%
Taylor expanded in c0 around inf
lower-/.f64N/A
lower-*.f64N/A
unpow2N/A
lower-*.f64N/A
unpow2N/A
lower-*.f64N/A
lower-*.f64N/A
unpow2N/A
lower-*.f64N/A
lower-*.f64N/A
unpow2N/A
lower-*.f6417.7
Applied rewrites17.7%
unswap-sqrN/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
times-fracN/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lower-*.f6442.3
lift-*.f64N/A
*-commutativeN/A
lower-*.f6442.3
Applied rewrites42.3%
Applied rewrites42.8%
if 6.2000000000000004e-188 < M < 7.8000000000000004e-150Initial program 8.9%
Taylor expanded in c0 around -inf
associate-/l*N/A
distribute-lft1-inN/A
metadata-evalN/A
mul0-lftN/A
div0N/A
mul0-rgtN/A
metadata-eval70.2
Applied rewrites70.2%
if 7.8000000000000004e-150 < M Initial program 24.4%
Taylor expanded in c0 around inf
lower-/.f64N/A
lower-*.f64N/A
unpow2N/A
lower-*.f64N/A
unpow2N/A
lower-*.f64N/A
lower-*.f64N/A
unpow2N/A
lower-*.f64N/A
lower-*.f64N/A
unpow2N/A
lower-*.f6442.6
Applied rewrites42.6%
unswap-sqrN/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
times-fracN/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lower-*.f6457.4
lift-*.f64N/A
*-commutativeN/A
lower-*.f6457.4
Applied rewrites57.4%
Applied rewrites58.3%
Final simplification50.3%
M_m = (fabs.f64 M) (FPCore (c0 w h D d M_m) :precision binary64 (let* ((t_0 (* (* c0 d) (/ (* c0 d) (* D (* w (* D (* w h)))))))) (if (<= M_m 6.2e-188) t_0 (if (<= M_m 8.2e-150) 0.0 t_0))))
M_m = fabs(M);
double code(double c0, double w, double h, double D, double d, double M_m) {
double t_0 = (c0 * d) * ((c0 * d) / (D * (w * (D * (w * h)))));
double tmp;
if (M_m <= 6.2e-188) {
tmp = t_0;
} else if (M_m <= 8.2e-150) {
tmp = 0.0;
} else {
tmp = t_0;
}
return tmp;
}
M_m = abs(m)
real(8) function code(c0, w, h, d, d_1, m_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_m
real(8) :: t_0
real(8) :: tmp
t_0 = (c0 * d_1) * ((c0 * d_1) / (d * (w * (d * (w * h)))))
if (m_m <= 6.2d-188) then
tmp = t_0
else if (m_m <= 8.2d-150) then
tmp = 0.0d0
else
tmp = t_0
end if
code = tmp
end function
M_m = Math.abs(M);
public static double code(double c0, double w, double h, double D, double d, double M_m) {
double t_0 = (c0 * d) * ((c0 * d) / (D * (w * (D * (w * h)))));
double tmp;
if (M_m <= 6.2e-188) {
tmp = t_0;
} else if (M_m <= 8.2e-150) {
tmp = 0.0;
} else {
tmp = t_0;
}
return tmp;
}
M_m = math.fabs(M) def code(c0, w, h, D, d, M_m): t_0 = (c0 * d) * ((c0 * d) / (D * (w * (D * (w * h))))) tmp = 0 if M_m <= 6.2e-188: tmp = t_0 elif M_m <= 8.2e-150: tmp = 0.0 else: tmp = t_0 return tmp
M_m = abs(M) function code(c0, w, h, D, d, M_m) t_0 = Float64(Float64(c0 * d) * Float64(Float64(c0 * d) / Float64(D * Float64(w * Float64(D * Float64(w * h)))))) tmp = 0.0 if (M_m <= 6.2e-188) tmp = t_0; elseif (M_m <= 8.2e-150) tmp = 0.0; else tmp = t_0; end return tmp end
M_m = abs(M); function tmp_2 = code(c0, w, h, D, d, M_m) t_0 = (c0 * d) * ((c0 * d) / (D * (w * (D * (w * h))))); tmp = 0.0; if (M_m <= 6.2e-188) tmp = t_0; elseif (M_m <= 8.2e-150) tmp = 0.0; else tmp = t_0; end tmp_2 = tmp; end
M_m = N[Abs[M], $MachinePrecision]
code[c0_, w_, h_, D_, d_, M$95$m_] := Block[{t$95$0 = N[(N[(c0 * d), $MachinePrecision] * N[(N[(c0 * d), $MachinePrecision] / N[(D * N[(w * N[(D * N[(w * h), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[M$95$m, 6.2e-188], t$95$0, If[LessEqual[M$95$m, 8.2e-150], 0.0, t$95$0]]]
\begin{array}{l}
M_m = \left|M\right|
\\
\begin{array}{l}
t_0 := \left(c0 \cdot d\right) \cdot \frac{c0 \cdot d}{D \cdot \left(w \cdot \left(D \cdot \left(w \cdot h\right)\right)\right)}\\
\mathbf{if}\;M\_m \leq 6.2 \cdot 10^{-188}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;M\_m \leq 8.2 \cdot 10^{-150}:\\
\;\;\;\;0\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if M < 6.2000000000000004e-188 or 8.1999999999999997e-150 < M Initial program 21.4%
Taylor expanded in c0 around inf
lower-/.f64N/A
lower-*.f64N/A
unpow2N/A
lower-*.f64N/A
unpow2N/A
lower-*.f64N/A
lower-*.f64N/A
unpow2N/A
lower-*.f64N/A
lower-*.f64N/A
unpow2N/A
lower-*.f6427.9
Applied rewrites27.9%
unswap-sqrN/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
times-fracN/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lower-*.f6448.5
lift-*.f64N/A
*-commutativeN/A
lower-*.f6448.5
Applied rewrites48.5%
Applied rewrites48.3%
if 6.2000000000000004e-188 < M < 8.1999999999999997e-150Initial program 8.9%
Taylor expanded in c0 around -inf
associate-/l*N/A
distribute-lft1-inN/A
metadata-evalN/A
mul0-lftN/A
div0N/A
mul0-rgtN/A
metadata-eval70.2
Applied rewrites70.2%
M_m = (fabs.f64 M) (FPCore (c0 w h D d M_m) :precision binary64 (let* ((t_0 (* c0 (* (* c0 d) (/ d (* D (* w (* D (* w h))))))))) (if (<= M_m 6.2e-188) t_0 (if (<= M_m 8.2e-150) 0.0 t_0))))
M_m = fabs(M);
double code(double c0, double w, double h, double D, double d, double M_m) {
double t_0 = c0 * ((c0 * d) * (d / (D * (w * (D * (w * h))))));
double tmp;
if (M_m <= 6.2e-188) {
tmp = t_0;
} else if (M_m <= 8.2e-150) {
tmp = 0.0;
} else {
tmp = t_0;
}
return tmp;
}
M_m = abs(m)
real(8) function code(c0, w, h, d, d_1, m_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_m
real(8) :: t_0
real(8) :: tmp
t_0 = c0 * ((c0 * d_1) * (d_1 / (d * (w * (d * (w * h))))))
if (m_m <= 6.2d-188) then
tmp = t_0
else if (m_m <= 8.2d-150) then
tmp = 0.0d0
else
tmp = t_0
end if
code = tmp
end function
M_m = Math.abs(M);
public static double code(double c0, double w, double h, double D, double d, double M_m) {
double t_0 = c0 * ((c0 * d) * (d / (D * (w * (D * (w * h))))));
double tmp;
if (M_m <= 6.2e-188) {
tmp = t_0;
} else if (M_m <= 8.2e-150) {
tmp = 0.0;
} else {
tmp = t_0;
}
return tmp;
}
M_m = math.fabs(M) def code(c0, w, h, D, d, M_m): t_0 = c0 * ((c0 * d) * (d / (D * (w * (D * (w * h)))))) tmp = 0 if M_m <= 6.2e-188: tmp = t_0 elif M_m <= 8.2e-150: tmp = 0.0 else: tmp = t_0 return tmp
M_m = abs(M) function code(c0, w, h, D, d, M_m) t_0 = Float64(c0 * Float64(Float64(c0 * d) * Float64(d / Float64(D * Float64(w * Float64(D * Float64(w * h))))))) tmp = 0.0 if (M_m <= 6.2e-188) tmp = t_0; elseif (M_m <= 8.2e-150) tmp = 0.0; else tmp = t_0; end return tmp end
M_m = abs(M); function tmp_2 = code(c0, w, h, D, d, M_m) t_0 = c0 * ((c0 * d) * (d / (D * (w * (D * (w * h)))))); tmp = 0.0; if (M_m <= 6.2e-188) tmp = t_0; elseif (M_m <= 8.2e-150) tmp = 0.0; else tmp = t_0; end tmp_2 = tmp; end
M_m = N[Abs[M], $MachinePrecision]
code[c0_, w_, h_, D_, d_, M$95$m_] := Block[{t$95$0 = N[(c0 * N[(N[(c0 * d), $MachinePrecision] * N[(d / N[(D * N[(w * N[(D * N[(w * h), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[M$95$m, 6.2e-188], t$95$0, If[LessEqual[M$95$m, 8.2e-150], 0.0, t$95$0]]]
\begin{array}{l}
M_m = \left|M\right|
\\
\begin{array}{l}
t_0 := c0 \cdot \left(\left(c0 \cdot d\right) \cdot \frac{d}{D \cdot \left(w \cdot \left(D \cdot \left(w \cdot h\right)\right)\right)}\right)\\
\mathbf{if}\;M\_m \leq 6.2 \cdot 10^{-188}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;M\_m \leq 8.2 \cdot 10^{-150}:\\
\;\;\;\;0\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if M < 6.2000000000000004e-188 or 8.1999999999999997e-150 < M Initial program 21.4%
Taylor expanded in c0 around inf
lower-/.f64N/A
lower-*.f64N/A
unpow2N/A
lower-*.f64N/A
unpow2N/A
lower-*.f64N/A
lower-*.f64N/A
unpow2N/A
lower-*.f64N/A
lower-*.f64N/A
unpow2N/A
lower-*.f6427.9
Applied rewrites27.9%
Applied rewrites33.3%
lift-*.f64N/A
lift-*.f64N/A
lift-*.f64N/A
lift-*.f64N/A
lift-*.f64N/A
div-invN/A
div-invN/A
lift-*.f64N/A
associate-/l*N/A
associate-*r*N/A
lift-*.f64N/A
lower-*.f64N/A
lower-/.f6441.2
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
Applied rewrites47.1%
if 6.2000000000000004e-188 < M < 8.1999999999999997e-150Initial program 8.9%
Taylor expanded in c0 around -inf
associate-/l*N/A
distribute-lft1-inN/A
metadata-evalN/A
mul0-lftN/A
div0N/A
mul0-rgtN/A
metadata-eval70.2
Applied rewrites70.2%
M_m = (fabs.f64 M) (FPCore (c0 w h D d M_m) :precision binary64 0.0)
M_m = fabs(M);
double code(double c0, double w, double h, double D, double d, double M_m) {
return 0.0;
}
M_m = abs(m)
real(8) function code(c0, w, h, d, d_1, m_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_m
code = 0.0d0
end function
M_m = Math.abs(M);
public static double code(double c0, double w, double h, double D, double d, double M_m) {
return 0.0;
}
M_m = math.fabs(M) def code(c0, w, h, D, d, M_m): return 0.0
M_m = abs(M) function code(c0, w, h, D, d, M_m) return 0.0 end
M_m = abs(M); function tmp = code(c0, w, h, D, d, M_m) tmp = 0.0; end
M_m = N[Abs[M], $MachinePrecision] code[c0_, w_, h_, D_, d_, M$95$m_] := 0.0
\begin{array}{l}
M_m = \left|M\right|
\\
0
\end{array}
Initial program 20.8%
Taylor expanded in c0 around -inf
associate-/l*N/A
distribute-lft1-inN/A
metadata-evalN/A
mul0-lftN/A
div0N/A
mul0-rgtN/A
metadata-eval29.1
Applied rewrites29.1%
herbie shell --seed 2024219
(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))))))