Henrywood and Agarwal, Equation (9a)

Percentage Accurate: 81.0% → 89.7%
Time: 17.2s
Alternatives: 6
Speedup: 1.6×

Specification

?
\[\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
 (* 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:

Local Percentage Accuracy vs ?

The average percentage accuracy by input value. Horizontal axis shows value of an input variable; the variable is choosen in the title. Vertical axis is accuracy; higher is better. Red represent the original program, while blue represents Herbie's suggestion. These can be toggled with buttons below the plot. The line is an average while dots represent individual samples.

Accuracy vs Speed?

Herbie found 6 alternatives:

AlternativeAccuracySpeedup
The accuracy (vertical axis) and speed (horizontal axis) of each alternatives. Up and to the right is better. The red square shows the initial program, and each blue circle shows an alternative.The line shows the best available speed-accuracy tradeoffs.

Initial Program: 81.0% accurate, 1.0× speedup?

\[\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
 (* 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}

Alternative 1: 89.7% accurate, 0.9× speedup?

\[\begin{array}{l} M_m = \left|M\right| \\ D_m = \left|D\right| \\ [w0, M_m, D_m, h, l, d] = \mathsf{sort}([w0, M_m, D_m, h, l, d])\\ \\ \begin{array}{l} t_0 := D\_m \cdot \left(0.5 \cdot \frac{M\_m}{d}\right)\\ \mathbf{if}\;{\left(\frac{M\_m \cdot D\_m}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell} \leq -5 \cdot 10^{+87}:\\ \;\;\;\;w0 \cdot \sqrt{1 - \left(\frac{h}{\ell} \cdot t\_0\right) \cdot \frac{D\_m \cdot 0.5}{\frac{d}{M\_m}}}\\ \mathbf{else}:\\ \;\;\;\;w0 \cdot \sqrt{1 - \frac{t\_0 \cdot \left(h \cdot t\_0\right)}{\ell}}\\ \end{array} \end{array} \]
M_m = (fabs.f64 M)
D_m = (fabs.f64 D)
NOTE: w0, M_m, D_m, h, l, and d should be sorted in increasing order before calling this function.
(FPCore (w0 M_m D_m h l d)
 :precision binary64
 (let* ((t_0 (* D_m (* 0.5 (/ M_m d)))))
   (if (<= (* (pow (/ (* M_m D_m) (* 2.0 d)) 2.0) (/ h l)) -5e+87)
     (* w0 (sqrt (- 1.0 (* (* (/ h l) t_0) (/ (* D_m 0.5) (/ d M_m))))))
     (* w0 (sqrt (- 1.0 (/ (* t_0 (* h t_0)) l)))))))
M_m = fabs(M);
D_m = fabs(D);
assert(w0 < M_m && M_m < D_m && D_m < h && h < l && l < d);
double code(double w0, double M_m, double D_m, double h, double l, double d) {
	double t_0 = D_m * (0.5 * (M_m / d));
	double tmp;
	if ((pow(((M_m * D_m) / (2.0 * d)), 2.0) * (h / l)) <= -5e+87) {
		tmp = w0 * sqrt((1.0 - (((h / l) * t_0) * ((D_m * 0.5) / (d / M_m)))));
	} else {
		tmp = w0 * sqrt((1.0 - ((t_0 * (h * t_0)) / l)));
	}
	return tmp;
}
M_m = abs(M)
D_m = abs(D)
NOTE: w0, M_m, D_m, h, l, and d should be sorted in increasing order before calling this function.
real(8) function code(w0, m_m, d_m, h, l, d)
    real(8), intent (in) :: w0
    real(8), intent (in) :: m_m
    real(8), intent (in) :: d_m
    real(8), intent (in) :: h
    real(8), intent (in) :: l
    real(8), intent (in) :: d
    real(8) :: t_0
    real(8) :: tmp
    t_0 = d_m * (0.5d0 * (m_m / d))
    if (((((m_m * d_m) / (2.0d0 * d)) ** 2.0d0) * (h / l)) <= (-5d+87)) then
        tmp = w0 * sqrt((1.0d0 - (((h / l) * t_0) * ((d_m * 0.5d0) / (d / m_m)))))
    else
        tmp = w0 * sqrt((1.0d0 - ((t_0 * (h * t_0)) / l)))
    end if
    code = tmp
end function
M_m = Math.abs(M);
D_m = Math.abs(D);
assert w0 < M_m && M_m < D_m && D_m < h && h < l && l < d;
public static double code(double w0, double M_m, double D_m, double h, double l, double d) {
	double t_0 = D_m * (0.5 * (M_m / d));
	double tmp;
	if ((Math.pow(((M_m * D_m) / (2.0 * d)), 2.0) * (h / l)) <= -5e+87) {
		tmp = w0 * Math.sqrt((1.0 - (((h / l) * t_0) * ((D_m * 0.5) / (d / M_m)))));
	} else {
		tmp = w0 * Math.sqrt((1.0 - ((t_0 * (h * t_0)) / l)));
	}
	return tmp;
}
M_m = math.fabs(M)
D_m = math.fabs(D)
[w0, M_m, D_m, h, l, d] = sort([w0, M_m, D_m, h, l, d])
def code(w0, M_m, D_m, h, l, d):
	t_0 = D_m * (0.5 * (M_m / d))
	tmp = 0
	if (math.pow(((M_m * D_m) / (2.0 * d)), 2.0) * (h / l)) <= -5e+87:
		tmp = w0 * math.sqrt((1.0 - (((h / l) * t_0) * ((D_m * 0.5) / (d / M_m)))))
	else:
		tmp = w0 * math.sqrt((1.0 - ((t_0 * (h * t_0)) / l)))
	return tmp
M_m = abs(M)
D_m = abs(D)
w0, M_m, D_m, h, l, d = sort([w0, M_m, D_m, h, l, d])
function code(w0, M_m, D_m, h, l, d)
	t_0 = Float64(D_m * Float64(0.5 * Float64(M_m / d)))
	tmp = 0.0
	if (Float64((Float64(Float64(M_m * D_m) / Float64(2.0 * d)) ^ 2.0) * Float64(h / l)) <= -5e+87)
		tmp = Float64(w0 * sqrt(Float64(1.0 - Float64(Float64(Float64(h / l) * t_0) * Float64(Float64(D_m * 0.5) / Float64(d / M_m))))));
	else
		tmp = Float64(w0 * sqrt(Float64(1.0 - Float64(Float64(t_0 * Float64(h * t_0)) / l))));
	end
	return tmp
end
M_m = abs(M);
D_m = abs(D);
w0, M_m, D_m, h, l, d = num2cell(sort([w0, M_m, D_m, h, l, d])){:}
function tmp_2 = code(w0, M_m, D_m, h, l, d)
	t_0 = D_m * (0.5 * (M_m / d));
	tmp = 0.0;
	if (((((M_m * D_m) / (2.0 * d)) ^ 2.0) * (h / l)) <= -5e+87)
		tmp = w0 * sqrt((1.0 - (((h / l) * t_0) * ((D_m * 0.5) / (d / M_m)))));
	else
		tmp = w0 * sqrt((1.0 - ((t_0 * (h * t_0)) / l)));
	end
	tmp_2 = tmp;
end
M_m = N[Abs[M], $MachinePrecision]
D_m = N[Abs[D], $MachinePrecision]
NOTE: w0, M_m, D_m, h, l, and d should be sorted in increasing order before calling this function.
code[w0_, M$95$m_, D$95$m_, h_, l_, d_] := Block[{t$95$0 = N[(D$95$m * N[(0.5 * N[(M$95$m / d), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[N[(N[Power[N[(N[(M$95$m * D$95$m), $MachinePrecision] / N[(2.0 * d), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision] * N[(h / l), $MachinePrecision]), $MachinePrecision], -5e+87], N[(w0 * N[Sqrt[N[(1.0 - N[(N[(N[(h / l), $MachinePrecision] * t$95$0), $MachinePrecision] * N[(N[(D$95$m * 0.5), $MachinePrecision] / N[(d / M$95$m), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(w0 * N[Sqrt[N[(1.0 - N[(N[(t$95$0 * N[(h * t$95$0), $MachinePrecision]), $MachinePrecision] / l), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
M_m = \left|M\right|
\\
D_m = \left|D\right|
\\
[w0, M_m, D_m, h, l, d] = \mathsf{sort}([w0, M_m, D_m, h, l, d])\\
\\
\begin{array}{l}
t_0 := D\_m \cdot \left(0.5 \cdot \frac{M\_m}{d}\right)\\
\mathbf{if}\;{\left(\frac{M\_m \cdot D\_m}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell} \leq -5 \cdot 10^{+87}:\\
\;\;\;\;w0 \cdot \sqrt{1 - \left(\frac{h}{\ell} \cdot t\_0\right) \cdot \frac{D\_m \cdot 0.5}{\frac{d}{M\_m}}}\\

\mathbf{else}:\\
\;\;\;\;w0 \cdot \sqrt{1 - \frac{t\_0 \cdot \left(h \cdot t\_0\right)}{\ell}}\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if (*.f64 (pow.f64 (/.f64 (*.f64 M D) (*.f64 2 d)) 2) (/.f64 h l)) < -4.9999999999999998e87

    1. Initial program 65.9%

      \[w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell}} \]
    2. Simplified67.3%

      \[\leadsto \color{blue}{w0 \cdot \sqrt{1 - {\left(\frac{D}{2} \cdot \frac{M}{d}\right)}^{2} \cdot \frac{h}{\ell}}} \]
    3. Add Preprocessing
    4. Step-by-step derivation
      1. unpow267.3%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\left(\frac{D}{2} \cdot \frac{M}{d}\right) \cdot \left(\frac{D}{2} \cdot \frac{M}{d}\right)\right)} \cdot \frac{h}{\ell}} \]
      2. associate-*l*74.1%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\frac{D}{2} \cdot \frac{M}{d}\right) \cdot \left(\left(\frac{D}{2} \cdot \frac{M}{d}\right) \cdot \frac{h}{\ell}\right)}} \]
      3. frac-times70.0%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{D \cdot M}{2 \cdot d}} \cdot \left(\left(\frac{D}{2} \cdot \frac{M}{d}\right) \cdot \frac{h}{\ell}\right)} \]
      4. *-commutative70.0%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\color{blue}{M \cdot D}}{2 \cdot d} \cdot \left(\left(\frac{D}{2} \cdot \frac{M}{d}\right) \cdot \frac{h}{\ell}\right)} \]
      5. associate-*l/74.1%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\frac{M}{2 \cdot d} \cdot D\right)} \cdot \left(\left(\frac{D}{2} \cdot \frac{M}{d}\right) \cdot \frac{h}{\ell}\right)} \]
      6. associate-/r/70.1%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{M}{\frac{2 \cdot d}{D}}} \cdot \left(\left(\frac{D}{2} \cdot \frac{M}{d}\right) \cdot \frac{h}{\ell}\right)} \]
      7. frac-times67.4%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{M}{\frac{2 \cdot d}{D}} \cdot \left(\color{blue}{\frac{D \cdot M}{2 \cdot d}} \cdot \frac{h}{\ell}\right)} \]
      8. *-commutative67.4%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{M}{\frac{2 \cdot d}{D}} \cdot \left(\frac{\color{blue}{M \cdot D}}{2 \cdot d} \cdot \frac{h}{\ell}\right)} \]
      9. associate-*l/70.1%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{M}{\frac{2 \cdot d}{D}} \cdot \left(\color{blue}{\left(\frac{M}{2 \cdot d} \cdot D\right)} \cdot \frac{h}{\ell}\right)} \]
      10. associate-/r/71.4%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{M}{\frac{2 \cdot d}{D}} \cdot \left(\color{blue}{\frac{M}{\frac{2 \cdot d}{D}}} \cdot \frac{h}{\ell}\right)} \]
      11. associate-*l*63.3%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\frac{M}{\frac{2 \cdot d}{D}} \cdot \frac{M}{\frac{2 \cdot d}{D}}\right) \cdot \frac{h}{\ell}}} \]
      12. unpow263.3%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{{\left(\frac{M}{\frac{2 \cdot d}{D}}\right)}^{2}} \cdot \frac{h}{\ell}} \]
      13. associate-*r/59.3%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{{\left(\frac{M}{\frac{2 \cdot d}{D}}\right)}^{2} \cdot h}{\ell}}} \]
    5. Applied egg-rr59.3%

      \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{h \cdot {\left(\frac{D}{d} \cdot \frac{M}{2}\right)}^{2}}{\ell}}} \]
    6. Step-by-step derivation
      1. associate-*l/63.3%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{h}{\ell} \cdot {\left(\frac{D}{d} \cdot \frac{M}{2}\right)}^{2}}} \]
      2. unpow263.3%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{h}{\ell} \cdot \color{blue}{\left(\left(\frac{D}{d} \cdot \frac{M}{2}\right) \cdot \left(\frac{D}{d} \cdot \frac{M}{2}\right)\right)}} \]
      3. associate-*r*71.4%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\frac{h}{\ell} \cdot \left(\frac{D}{d} \cdot \frac{M}{2}\right)\right) \cdot \left(\frac{D}{d} \cdot \frac{M}{2}\right)}} \]
      4. div-inv71.4%

        \[\leadsto w0 \cdot \sqrt{1 - \left(\frac{h}{\ell} \cdot \left(\frac{D}{d} \cdot \color{blue}{\left(M \cdot \frac{1}{2}\right)}\right)\right) \cdot \left(\frac{D}{d} \cdot \frac{M}{2}\right)} \]
      5. metadata-eval71.4%

        \[\leadsto w0 \cdot \sqrt{1 - \left(\frac{h}{\ell} \cdot \left(\frac{D}{d} \cdot \left(M \cdot \color{blue}{0.5}\right)\right)\right) \cdot \left(\frac{D}{d} \cdot \frac{M}{2}\right)} \]
      6. div-inv71.4%

        \[\leadsto w0 \cdot \sqrt{1 - \left(\frac{h}{\ell} \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)\right) \cdot \left(\frac{D}{d} \cdot \color{blue}{\left(M \cdot \frac{1}{2}\right)}\right)} \]
      7. metadata-eval71.4%

        \[\leadsto w0 \cdot \sqrt{1 - \left(\frac{h}{\ell} \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)\right) \cdot \left(\frac{D}{d} \cdot \left(M \cdot \color{blue}{0.5}\right)\right)} \]
    7. Applied egg-rr71.4%

      \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\frac{h}{\ell} \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)\right) \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)}} \]
    8. Step-by-step derivation
      1. *-commutative71.4%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right) \cdot \left(\frac{h}{\ell} \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)\right)}} \]
      2. associate-*l/67.3%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{D \cdot \left(M \cdot 0.5\right)}{d}} \cdot \left(\frac{h}{\ell} \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)\right)} \]
      3. associate-*l/67.4%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{D \cdot \left(M \cdot 0.5\right)}{d} \cdot \color{blue}{\frac{h \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)}{\ell}}} \]
      4. frac-times61.8%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{\left(D \cdot \left(M \cdot 0.5\right)\right) \cdot \left(h \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)\right)}{d \cdot \ell}}} \]
      5. *-commutative61.8%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\left(D \cdot \color{blue}{\left(0.5 \cdot M\right)}\right) \cdot \left(h \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)\right)}{d \cdot \ell}} \]
      6. associate-*r*61.8%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\color{blue}{\left(\left(D \cdot 0.5\right) \cdot M\right)} \cdot \left(h \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)\right)}{d \cdot \ell}} \]
      7. associate-*l/64.4%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\left(\left(D \cdot 0.5\right) \cdot M\right) \cdot \left(h \cdot \color{blue}{\frac{D \cdot \left(M \cdot 0.5\right)}{d}}\right)}{d \cdot \ell}} \]
      8. associate-*r/63.1%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\left(\left(D \cdot 0.5\right) \cdot M\right) \cdot \left(h \cdot \color{blue}{\left(D \cdot \frac{M \cdot 0.5}{d}\right)}\right)}{d \cdot \ell}} \]
      9. *-commutative63.1%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\left(\left(D \cdot 0.5\right) \cdot M\right) \cdot \left(h \cdot \left(D \cdot \frac{\color{blue}{0.5 \cdot M}}{d}\right)\right)}{d \cdot \ell}} \]
      10. *-un-lft-identity63.1%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\left(\left(D \cdot 0.5\right) \cdot M\right) \cdot \left(h \cdot \left(D \cdot \frac{0.5 \cdot M}{\color{blue}{1 \cdot d}}\right)\right)}{d \cdot \ell}} \]
      11. times-frac63.1%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\left(\left(D \cdot 0.5\right) \cdot M\right) \cdot \left(h \cdot \left(D \cdot \color{blue}{\left(\frac{0.5}{1} \cdot \frac{M}{d}\right)}\right)\right)}{d \cdot \ell}} \]
      12. metadata-eval63.1%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\left(\left(D \cdot 0.5\right) \cdot M\right) \cdot \left(h \cdot \left(D \cdot \left(\color{blue}{0.5} \cdot \frac{M}{d}\right)\right)\right)}{d \cdot \ell}} \]
    9. Applied egg-rr63.1%

      \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{\left(\left(D \cdot 0.5\right) \cdot M\right) \cdot \left(h \cdot \left(D \cdot \left(0.5 \cdot \frac{M}{d}\right)\right)\right)}{d \cdot \ell}}} \]
    10. Step-by-step derivation
      1. *-commutative63.1%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\color{blue}{\left(h \cdot \left(D \cdot \left(0.5 \cdot \frac{M}{d}\right)\right)\right) \cdot \left(\left(D \cdot 0.5\right) \cdot M\right)}}{d \cdot \ell}} \]
      2. *-commutative63.1%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\left(h \cdot \left(D \cdot \left(0.5 \cdot \frac{M}{d}\right)\right)\right) \cdot \left(\left(D \cdot 0.5\right) \cdot M\right)}{\color{blue}{\ell \cdot d}}} \]
      3. times-frac68.7%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{h \cdot \left(D \cdot \left(0.5 \cdot \frac{M}{d}\right)\right)}{\ell} \cdot \frac{\left(D \cdot 0.5\right) \cdot M}{d}}} \]
      4. associate-*l/70.0%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\frac{h}{\ell} \cdot \left(D \cdot \left(0.5 \cdot \frac{M}{d}\right)\right)\right)} \cdot \frac{\left(D \cdot 0.5\right) \cdot M}{d}} \]
      5. associate-/l*74.1%

        \[\leadsto w0 \cdot \sqrt{1 - \left(\frac{h}{\ell} \cdot \left(D \cdot \left(0.5 \cdot \frac{M}{d}\right)\right)\right) \cdot \color{blue}{\frac{D \cdot 0.5}{\frac{d}{M}}}} \]
      6. *-commutative74.1%

        \[\leadsto w0 \cdot \sqrt{1 - \left(\frac{h}{\ell} \cdot \left(D \cdot \left(0.5 \cdot \frac{M}{d}\right)\right)\right) \cdot \frac{\color{blue}{0.5 \cdot D}}{\frac{d}{M}}} \]
    11. Simplified74.1%

      \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\frac{h}{\ell} \cdot \left(D \cdot \left(0.5 \cdot \frac{M}{d}\right)\right)\right) \cdot \frac{0.5 \cdot D}{\frac{d}{M}}}} \]

    if -4.9999999999999998e87 < (*.f64 (pow.f64 (/.f64 (*.f64 M D) (*.f64 2 d)) 2) (/.f64 h l))

    1. Initial program 88.2%

      \[w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell}} \]
    2. Simplified87.9%

      \[\leadsto \color{blue}{w0 \cdot \sqrt{1 - {\left(\frac{D}{2} \cdot \frac{M}{d}\right)}^{2} \cdot \frac{h}{\ell}}} \]
    3. Add Preprocessing
    4. Step-by-step derivation
      1. unpow287.9%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\left(\frac{D}{2} \cdot \frac{M}{d}\right) \cdot \left(\frac{D}{2} \cdot \frac{M}{d}\right)\right)} \cdot \frac{h}{\ell}} \]
      2. associate-*l*88.6%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\frac{D}{2} \cdot \frac{M}{d}\right) \cdot \left(\left(\frac{D}{2} \cdot \frac{M}{d}\right) \cdot \frac{h}{\ell}\right)}} \]
      3. frac-times88.0%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{D \cdot M}{2 \cdot d}} \cdot \left(\left(\frac{D}{2} \cdot \frac{M}{d}\right) \cdot \frac{h}{\ell}\right)} \]
      4. *-commutative88.0%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\color{blue}{M \cdot D}}{2 \cdot d} \cdot \left(\left(\frac{D}{2} \cdot \frac{M}{d}\right) \cdot \frac{h}{\ell}\right)} \]
      5. associate-*l/88.6%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\frac{M}{2 \cdot d} \cdot D\right)} \cdot \left(\left(\frac{D}{2} \cdot \frac{M}{d}\right) \cdot \frac{h}{\ell}\right)} \]
      6. associate-/r/88.6%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{M}{\frac{2 \cdot d}{D}}} \cdot \left(\left(\frac{D}{2} \cdot \frac{M}{d}\right) \cdot \frac{h}{\ell}\right)} \]
      7. frac-times88.8%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{M}{\frac{2 \cdot d}{D}} \cdot \left(\color{blue}{\frac{D \cdot M}{2 \cdot d}} \cdot \frac{h}{\ell}\right)} \]
      8. *-commutative88.8%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{M}{\frac{2 \cdot d}{D}} \cdot \left(\frac{\color{blue}{M \cdot D}}{2 \cdot d} \cdot \frac{h}{\ell}\right)} \]
      9. associate-*l/88.6%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{M}{\frac{2 \cdot d}{D}} \cdot \left(\color{blue}{\left(\frac{M}{2 \cdot d} \cdot D\right)} \cdot \frac{h}{\ell}\right)} \]
      10. associate-/r/89.4%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{M}{\frac{2 \cdot d}{D}} \cdot \left(\color{blue}{\frac{M}{\frac{2 \cdot d}{D}}} \cdot \frac{h}{\ell}\right)} \]
      11. associate-*l*88.7%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\frac{M}{\frac{2 \cdot d}{D}} \cdot \frac{M}{\frac{2 \cdot d}{D}}\right) \cdot \frac{h}{\ell}}} \]
      12. unpow288.7%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{{\left(\frac{M}{\frac{2 \cdot d}{D}}\right)}^{2}} \cdot \frac{h}{\ell}} \]
      13. associate-*r/97.0%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{{\left(\frac{M}{\frac{2 \cdot d}{D}}\right)}^{2} \cdot h}{\ell}}} \]
    5. Applied egg-rr97.0%

      \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{h \cdot {\left(\frac{D}{d} \cdot \frac{M}{2}\right)}^{2}}{\ell}}} \]
    6. Step-by-step derivation
      1. add-sqr-sqrt81.4%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\color{blue}{\sqrt{h \cdot {\left(\frac{D}{d} \cdot \frac{M}{2}\right)}^{2}} \cdot \sqrt{h \cdot {\left(\frac{D}{d} \cdot \frac{M}{2}\right)}^{2}}}}{\ell}} \]
      2. pow281.4%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\color{blue}{{\left(\sqrt{h \cdot {\left(\frac{D}{d} \cdot \frac{M}{2}\right)}^{2}}\right)}^{2}}}{\ell}} \]
      3. *-commutative81.4%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{{\left(\sqrt{\color{blue}{{\left(\frac{D}{d} \cdot \frac{M}{2}\right)}^{2} \cdot h}}\right)}^{2}}{\ell}} \]
      4. sqrt-prod52.2%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{{\color{blue}{\left(\sqrt{{\left(\frac{D}{d} \cdot \frac{M}{2}\right)}^{2}} \cdot \sqrt{h}\right)}}^{2}}{\ell}} \]
      5. unpow252.2%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{{\left(\sqrt{\color{blue}{\left(\frac{D}{d} \cdot \frac{M}{2}\right) \cdot \left(\frac{D}{d} \cdot \frac{M}{2}\right)}} \cdot \sqrt{h}\right)}^{2}}{\ell}} \]
      6. sqrt-prod34.9%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{{\left(\color{blue}{\left(\sqrt{\frac{D}{d} \cdot \frac{M}{2}} \cdot \sqrt{\frac{D}{d} \cdot \frac{M}{2}}\right)} \cdot \sqrt{h}\right)}^{2}}{\ell}} \]
      7. add-sqr-sqrt52.7%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{{\left(\color{blue}{\left(\frac{D}{d} \cdot \frac{M}{2}\right)} \cdot \sqrt{h}\right)}^{2}}{\ell}} \]
      8. div-inv52.7%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{{\left(\left(\frac{D}{d} \cdot \color{blue}{\left(M \cdot \frac{1}{2}\right)}\right) \cdot \sqrt{h}\right)}^{2}}{\ell}} \]
      9. metadata-eval52.7%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{{\left(\left(\frac{D}{d} \cdot \left(M \cdot \color{blue}{0.5}\right)\right) \cdot \sqrt{h}\right)}^{2}}{\ell}} \]
    7. Applied egg-rr52.7%

      \[\leadsto w0 \cdot \sqrt{1 - \frac{\color{blue}{{\left(\left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right) \cdot \sqrt{h}\right)}^{2}}}{\ell}} \]
    8. Step-by-step derivation
      1. associate-*l/53.2%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{{\left(\color{blue}{\frac{D \cdot \left(M \cdot 0.5\right)}{d}} \cdot \sqrt{h}\right)}^{2}}{\ell}} \]
      2. *-commutative53.2%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{{\left(\frac{\color{blue}{\left(M \cdot 0.5\right) \cdot D}}{d} \cdot \sqrt{h}\right)}^{2}}{\ell}} \]
      3. associate-*l/53.0%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{{\left(\color{blue}{\left(\frac{M \cdot 0.5}{d} \cdot D\right)} \cdot \sqrt{h}\right)}^{2}}{\ell}} \]
      4. *-commutative53.0%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{{\left(\color{blue}{\left(D \cdot \frac{M \cdot 0.5}{d}\right)} \cdot \sqrt{h}\right)}^{2}}{\ell}} \]
    9. Simplified53.0%

      \[\leadsto w0 \cdot \sqrt{1 - \frac{\color{blue}{{\left(\left(D \cdot \frac{M \cdot 0.5}{d}\right) \cdot \sqrt{h}\right)}^{2}}}{\ell}} \]
    10. Step-by-step derivation
      1. unpow253.0%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\color{blue}{\left(\left(D \cdot \frac{M \cdot 0.5}{d}\right) \cdot \sqrt{h}\right) \cdot \left(\left(D \cdot \frac{M \cdot 0.5}{d}\right) \cdot \sqrt{h}\right)}}{\ell}} \]
      2. associate-*r/53.0%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\left(\color{blue}{\frac{D \cdot \left(M \cdot 0.5\right)}{d}} \cdot \sqrt{h}\right) \cdot \left(\left(D \cdot \frac{M \cdot 0.5}{d}\right) \cdot \sqrt{h}\right)}{\ell}} \]
      3. associate-*l/52.4%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\left(\color{blue}{\left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)} \cdot \sqrt{h}\right) \cdot \left(\left(D \cdot \frac{M \cdot 0.5}{d}\right) \cdot \sqrt{h}\right)}{\ell}} \]
      4. *-commutative52.4%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\color{blue}{\left(\sqrt{h} \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)\right)} \cdot \left(\left(D \cdot \frac{M \cdot 0.5}{d}\right) \cdot \sqrt{h}\right)}{\ell}} \]
      5. associate-*r/52.7%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\left(\sqrt{h} \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)\right) \cdot \left(\color{blue}{\frac{D \cdot \left(M \cdot 0.5\right)}{d}} \cdot \sqrt{h}\right)}{\ell}} \]
      6. associate-*l/52.7%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\left(\sqrt{h} \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)\right) \cdot \left(\color{blue}{\left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)} \cdot \sqrt{h}\right)}{\ell}} \]
      7. *-commutative52.7%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\left(\sqrt{h} \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)\right) \cdot \color{blue}{\left(\sqrt{h} \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)\right)}}{\ell}} \]
      8. swap-sqr52.2%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\color{blue}{\left(\sqrt{h} \cdot \sqrt{h}\right) \cdot \left(\left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right) \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)\right)}}{\ell}} \]
      9. add-sqr-sqrt97.0%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\color{blue}{h} \cdot \left(\left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right) \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)\right)}{\ell}} \]
      10. associate-*r*98.4%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\color{blue}{\left(h \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)\right) \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)}}{\ell}} \]
    11. Applied egg-rr98.2%

      \[\leadsto w0 \cdot \sqrt{1 - \frac{\color{blue}{\left(h \cdot \left(D \cdot \left(0.5 \cdot \frac{M}{d}\right)\right)\right) \cdot \left(D \cdot \left(0.5 \cdot \frac{M}{d}\right)\right)}}{\ell}} \]
  3. Recombined 2 regimes into one program.
  4. Final simplification91.6%

    \[\leadsto \begin{array}{l} \mathbf{if}\;{\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell} \leq -5 \cdot 10^{+87}:\\ \;\;\;\;w0 \cdot \sqrt{1 - \left(\frac{h}{\ell} \cdot \left(D \cdot \left(0.5 \cdot \frac{M}{d}\right)\right)\right) \cdot \frac{D \cdot 0.5}{\frac{d}{M}}}\\ \mathbf{else}:\\ \;\;\;\;w0 \cdot \sqrt{1 - \frac{\left(D \cdot \left(0.5 \cdot \frac{M}{d}\right)\right) \cdot \left(h \cdot \left(D \cdot \left(0.5 \cdot \frac{M}{d}\right)\right)\right)}{\ell}}\\ \end{array} \]
  5. Add Preprocessing

Alternative 2: 87.7% accurate, 1.6× speedup?

\[\begin{array}{l} M_m = \left|M\right| \\ D_m = \left|D\right| \\ [w0, M_m, D_m, h, l, d] = \mathsf{sort}([w0, M_m, D_m, h, l, d])\\ \\ \begin{array}{l} \mathbf{if}\;\frac{h}{\ell} \leq -\infty \lor \neg \left(\frac{h}{\ell} \leq -1 \cdot 10^{-310}\right):\\ \;\;\;\;w0 \cdot \left(1 + -0.125 \cdot \frac{h \cdot {\left(M\_m \cdot \frac{D\_m}{d}\right)}^{2}}{\ell}\right)\\ \mathbf{else}:\\ \;\;\;\;w0 \cdot \sqrt{1 - \left(\frac{h}{\ell} \cdot \left(D\_m \cdot \left(0.5 \cdot \frac{M\_m}{d}\right)\right)\right) \cdot \frac{D\_m \cdot 0.5}{\frac{d}{M\_m}}}\\ \end{array} \end{array} \]
M_m = (fabs.f64 M)
D_m = (fabs.f64 D)
NOTE: w0, M_m, D_m, h, l, and d should be sorted in increasing order before calling this function.
(FPCore (w0 M_m D_m h l d)
 :precision binary64
 (if (or (<= (/ h l) (- INFINITY)) (not (<= (/ h l) -1e-310)))
   (* w0 (+ 1.0 (* -0.125 (/ (* h (pow (* M_m (/ D_m d)) 2.0)) l))))
   (*
    w0
    (sqrt
     (-
      1.0
      (* (* (/ h l) (* D_m (* 0.5 (/ M_m d)))) (/ (* D_m 0.5) (/ d M_m))))))))
M_m = fabs(M);
D_m = fabs(D);
assert(w0 < M_m && M_m < D_m && D_m < h && h < l && l < d);
double code(double w0, double M_m, double D_m, double h, double l, double d) {
	double tmp;
	if (((h / l) <= -((double) INFINITY)) || !((h / l) <= -1e-310)) {
		tmp = w0 * (1.0 + (-0.125 * ((h * pow((M_m * (D_m / d)), 2.0)) / l)));
	} else {
		tmp = w0 * sqrt((1.0 - (((h / l) * (D_m * (0.5 * (M_m / d)))) * ((D_m * 0.5) / (d / M_m)))));
	}
	return tmp;
}
M_m = Math.abs(M);
D_m = Math.abs(D);
assert w0 < M_m && M_m < D_m && D_m < h && h < l && l < d;
public static double code(double w0, double M_m, double D_m, double h, double l, double d) {
	double tmp;
	if (((h / l) <= -Double.POSITIVE_INFINITY) || !((h / l) <= -1e-310)) {
		tmp = w0 * (1.0 + (-0.125 * ((h * Math.pow((M_m * (D_m / d)), 2.0)) / l)));
	} else {
		tmp = w0 * Math.sqrt((1.0 - (((h / l) * (D_m * (0.5 * (M_m / d)))) * ((D_m * 0.5) / (d / M_m)))));
	}
	return tmp;
}
M_m = math.fabs(M)
D_m = math.fabs(D)
[w0, M_m, D_m, h, l, d] = sort([w0, M_m, D_m, h, l, d])
def code(w0, M_m, D_m, h, l, d):
	tmp = 0
	if ((h / l) <= -math.inf) or not ((h / l) <= -1e-310):
		tmp = w0 * (1.0 + (-0.125 * ((h * math.pow((M_m * (D_m / d)), 2.0)) / l)))
	else:
		tmp = w0 * math.sqrt((1.0 - (((h / l) * (D_m * (0.5 * (M_m / d)))) * ((D_m * 0.5) / (d / M_m)))))
	return tmp
M_m = abs(M)
D_m = abs(D)
w0, M_m, D_m, h, l, d = sort([w0, M_m, D_m, h, l, d])
function code(w0, M_m, D_m, h, l, d)
	tmp = 0.0
	if ((Float64(h / l) <= Float64(-Inf)) || !(Float64(h / l) <= -1e-310))
		tmp = Float64(w0 * Float64(1.0 + Float64(-0.125 * Float64(Float64(h * (Float64(M_m * Float64(D_m / d)) ^ 2.0)) / l))));
	else
		tmp = Float64(w0 * sqrt(Float64(1.0 - Float64(Float64(Float64(h / l) * Float64(D_m * Float64(0.5 * Float64(M_m / d)))) * Float64(Float64(D_m * 0.5) / Float64(d / M_m))))));
	end
	return tmp
end
M_m = abs(M);
D_m = abs(D);
w0, M_m, D_m, h, l, d = num2cell(sort([w0, M_m, D_m, h, l, d])){:}
function tmp_2 = code(w0, M_m, D_m, h, l, d)
	tmp = 0.0;
	if (((h / l) <= -Inf) || ~(((h / l) <= -1e-310)))
		tmp = w0 * (1.0 + (-0.125 * ((h * ((M_m * (D_m / d)) ^ 2.0)) / l)));
	else
		tmp = w0 * sqrt((1.0 - (((h / l) * (D_m * (0.5 * (M_m / d)))) * ((D_m * 0.5) / (d / M_m)))));
	end
	tmp_2 = tmp;
end
M_m = N[Abs[M], $MachinePrecision]
D_m = N[Abs[D], $MachinePrecision]
NOTE: w0, M_m, D_m, h, l, and d should be sorted in increasing order before calling this function.
code[w0_, M$95$m_, D$95$m_, h_, l_, d_] := If[Or[LessEqual[N[(h / l), $MachinePrecision], (-Infinity)], N[Not[LessEqual[N[(h / l), $MachinePrecision], -1e-310]], $MachinePrecision]], N[(w0 * N[(1.0 + N[(-0.125 * N[(N[(h * N[Power[N[(M$95$m * N[(D$95$m / d), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / l), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(w0 * N[Sqrt[N[(1.0 - N[(N[(N[(h / l), $MachinePrecision] * N[(D$95$m * N[(0.5 * N[(M$95$m / d), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(D$95$m * 0.5), $MachinePrecision] / N[(d / M$95$m), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
M_m = \left|M\right|
\\
D_m = \left|D\right|
\\
[w0, M_m, D_m, h, l, d] = \mathsf{sort}([w0, M_m, D_m, h, l, d])\\
\\
\begin{array}{l}
\mathbf{if}\;\frac{h}{\ell} \leq -\infty \lor \neg \left(\frac{h}{\ell} \leq -1 \cdot 10^{-310}\right):\\
\;\;\;\;w0 \cdot \left(1 + -0.125 \cdot \frac{h \cdot {\left(M\_m \cdot \frac{D\_m}{d}\right)}^{2}}{\ell}\right)\\

\mathbf{else}:\\
\;\;\;\;w0 \cdot \sqrt{1 - \left(\frac{h}{\ell} \cdot \left(D\_m \cdot \left(0.5 \cdot \frac{M\_m}{d}\right)\right)\right) \cdot \frac{D\_m \cdot 0.5}{\frac{d}{M\_m}}}\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if (/.f64 h l) < -inf.0 or -9.999999999999969e-311 < (/.f64 h l)

    1. Initial program 81.5%

      \[w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell}} \]
    2. Simplified81.5%

      \[\leadsto \color{blue}{w0 \cdot \sqrt{1 - {\left(\frac{D}{2} \cdot \frac{M}{d}\right)}^{2} \cdot \frac{h}{\ell}}} \]
    3. Add Preprocessing
    4. Taylor expanded in D around 0 60.1%

      \[\leadsto w0 \cdot \color{blue}{\left(1 + -0.125 \cdot \frac{{D}^{2} \cdot \left({M}^{2} \cdot h\right)}{{d}^{2} \cdot \ell}\right)} \]
    5. Step-by-step derivation
      1. associate-*r*64.0%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \frac{\color{blue}{\left({D}^{2} \cdot {M}^{2}\right) \cdot h}}{{d}^{2} \cdot \ell}\right) \]
      2. add-sqr-sqrt29.7%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \frac{\left({D}^{2} \cdot {M}^{2}\right) \cdot h}{\color{blue}{\sqrt{{d}^{2} \cdot \ell} \cdot \sqrt{{d}^{2} \cdot \ell}}}\right) \]
      3. times-frac28.9%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \color{blue}{\left(\frac{{D}^{2} \cdot {M}^{2}}{\sqrt{{d}^{2} \cdot \ell}} \cdot \frac{h}{\sqrt{{d}^{2} \cdot \ell}}\right)}\right) \]
      4. pow-prod-down35.1%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{\color{blue}{{\left(D \cdot M\right)}^{2}}}{\sqrt{{d}^{2} \cdot \ell}} \cdot \frac{h}{\sqrt{{d}^{2} \cdot \ell}}\right)\right) \]
      5. sqrt-prod35.1%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{{\left(D \cdot M\right)}^{2}}{\color{blue}{\sqrt{{d}^{2}} \cdot \sqrt{\ell}}} \cdot \frac{h}{\sqrt{{d}^{2} \cdot \ell}}\right)\right) \]
      6. unpow235.1%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{{\left(D \cdot M\right)}^{2}}{\sqrt{\color{blue}{d \cdot d}} \cdot \sqrt{\ell}} \cdot \frac{h}{\sqrt{{d}^{2} \cdot \ell}}\right)\right) \]
      7. sqrt-prod17.1%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{{\left(D \cdot M\right)}^{2}}{\color{blue}{\left(\sqrt{d} \cdot \sqrt{d}\right)} \cdot \sqrt{\ell}} \cdot \frac{h}{\sqrt{{d}^{2} \cdot \ell}}\right)\right) \]
      8. add-sqr-sqrt34.3%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{{\left(D \cdot M\right)}^{2}}{\color{blue}{d} \cdot \sqrt{\ell}} \cdot \frac{h}{\sqrt{{d}^{2} \cdot \ell}}\right)\right) \]
      9. sqrt-prod35.1%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{{\left(D \cdot M\right)}^{2}}{d \cdot \sqrt{\ell}} \cdot \frac{h}{\color{blue}{\sqrt{{d}^{2}} \cdot \sqrt{\ell}}}\right)\right) \]
      10. unpow235.1%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{{\left(D \cdot M\right)}^{2}}{d \cdot \sqrt{\ell}} \cdot \frac{h}{\sqrt{\color{blue}{d \cdot d}} \cdot \sqrt{\ell}}\right)\right) \]
      11. sqrt-prod20.2%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{{\left(D \cdot M\right)}^{2}}{d \cdot \sqrt{\ell}} \cdot \frac{h}{\color{blue}{\left(\sqrt{d} \cdot \sqrt{d}\right)} \cdot \sqrt{\ell}}\right)\right) \]
      12. add-sqr-sqrt39.8%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{{\left(D \cdot M\right)}^{2}}{d \cdot \sqrt{\ell}} \cdot \frac{h}{\color{blue}{d} \cdot \sqrt{\ell}}\right)\right) \]
    6. Applied egg-rr39.8%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \color{blue}{\left(\frac{{\left(D \cdot M\right)}^{2}}{d \cdot \sqrt{\ell}} \cdot \frac{h}{d \cdot \sqrt{\ell}}\right)}\right) \]
    7. Taylor expanded in D around 0 60.1%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \color{blue}{\frac{{D}^{2} \cdot \left({M}^{2} \cdot h\right)}{{d}^{2} \cdot \ell}}\right) \]
    8. Step-by-step derivation
      1. associate-*r*64.0%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \frac{\color{blue}{\left({D}^{2} \cdot {M}^{2}\right) \cdot h}}{{d}^{2} \cdot \ell}\right) \]
      2. unpow264.0%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \frac{\left(\color{blue}{\left(D \cdot D\right)} \cdot {M}^{2}\right) \cdot h}{{d}^{2} \cdot \ell}\right) \]
      3. unpow264.0%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \frac{\left(\left(D \cdot D\right) \cdot \color{blue}{\left(M \cdot M\right)}\right) \cdot h}{{d}^{2} \cdot \ell}\right) \]
      4. swap-sqr77.2%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \frac{\color{blue}{\left(\left(D \cdot M\right) \cdot \left(D \cdot M\right)\right)} \cdot h}{{d}^{2} \cdot \ell}\right) \]
      5. unpow277.2%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \frac{\color{blue}{{\left(D \cdot M\right)}^{2}} \cdot h}{{d}^{2} \cdot \ell}\right) \]
      6. *-commutative77.2%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \frac{\color{blue}{h \cdot {\left(D \cdot M\right)}^{2}}}{{d}^{2} \cdot \ell}\right) \]
      7. *-commutative77.2%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \frac{h \cdot {\left(D \cdot M\right)}^{2}}{\color{blue}{\ell \cdot {d}^{2}}}\right) \]
      8. times-frac69.1%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \color{blue}{\left(\frac{h}{\ell} \cdot \frac{{\left(D \cdot M\right)}^{2}}{{d}^{2}}\right)}\right) \]
      9. unpow269.1%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot \frac{{\left(D \cdot M\right)}^{2}}{\color{blue}{d \cdot d}}\right)\right) \]
      10. associate-/r*80.0%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot \color{blue}{\frac{\frac{{\left(D \cdot M\right)}^{2}}{d}}{d}}\right)\right) \]
      11. unpow280.0%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot \frac{\frac{\color{blue}{\left(D \cdot M\right) \cdot \left(D \cdot M\right)}}{d}}{d}\right)\right) \]
      12. associate-*r/80.7%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot \frac{\color{blue}{\left(D \cdot M\right) \cdot \frac{D \cdot M}{d}}}{d}\right)\right) \]
      13. associate-*l/80.7%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot \frac{\left(D \cdot M\right) \cdot \color{blue}{\left(\frac{D}{d} \cdot M\right)}}{d}\right)\right) \]
      14. associate-*l/81.5%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot \color{blue}{\left(\frac{D \cdot M}{d} \cdot \left(\frac{D}{d} \cdot M\right)\right)}\right)\right) \]
      15. associate-*l/82.3%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot \left(\color{blue}{\left(\frac{D}{d} \cdot M\right)} \cdot \left(\frac{D}{d} \cdot M\right)\right)\right)\right) \]
      16. unpow282.3%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot \color{blue}{{\left(\frac{D}{d} \cdot M\right)}^{2}}\right)\right) \]
      17. *-commutative82.3%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot {\color{blue}{\left(M \cdot \frac{D}{d}\right)}}^{2}\right)\right) \]
    9. Simplified82.3%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \color{blue}{\left(\frac{h}{\ell} \cdot {\left(M \cdot \frac{D}{d}\right)}^{2}\right)}\right) \]
    10. Step-by-step derivation
      1. associate-*l/94.3%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \color{blue}{\frac{h \cdot {\left(M \cdot \frac{D}{d}\right)}^{2}}{\ell}}\right) \]
    11. Applied egg-rr94.3%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \color{blue}{\frac{h \cdot {\left(M \cdot \frac{D}{d}\right)}^{2}}{\ell}}\right) \]

    if -inf.0 < (/.f64 h l) < -9.999999999999969e-311

    1. Initial program 82.6%

      \[w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell}} \]
    2. Simplified83.0%

      \[\leadsto \color{blue}{w0 \cdot \sqrt{1 - {\left(\frac{D}{2} \cdot \frac{M}{d}\right)}^{2} \cdot \frac{h}{\ell}}} \]
    3. Add Preprocessing
    4. Step-by-step derivation
      1. unpow283.0%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\left(\frac{D}{2} \cdot \frac{M}{d}\right) \cdot \left(\frac{D}{2} \cdot \frac{M}{d}\right)\right)} \cdot \frac{h}{\ell}} \]
      2. associate-*l*86.8%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\frac{D}{2} \cdot \frac{M}{d}\right) \cdot \left(\left(\frac{D}{2} \cdot \frac{M}{d}\right) \cdot \frac{h}{\ell}\right)}} \]
      3. frac-times84.5%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{D \cdot M}{2 \cdot d}} \cdot \left(\left(\frac{D}{2} \cdot \frac{M}{d}\right) \cdot \frac{h}{\ell}\right)} \]
      4. *-commutative84.5%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\color{blue}{M \cdot D}}{2 \cdot d} \cdot \left(\left(\frac{D}{2} \cdot \frac{M}{d}\right) \cdot \frac{h}{\ell}\right)} \]
      5. associate-*l/86.8%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\frac{M}{2 \cdot d} \cdot D\right)} \cdot \left(\left(\frac{D}{2} \cdot \frac{M}{d}\right) \cdot \frac{h}{\ell}\right)} \]
      6. associate-/r/84.6%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{M}{\frac{2 \cdot d}{D}}} \cdot \left(\left(\frac{D}{2} \cdot \frac{M}{d}\right) \cdot \frac{h}{\ell}\right)} \]
      7. frac-times83.4%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{M}{\frac{2 \cdot d}{D}} \cdot \left(\color{blue}{\frac{D \cdot M}{2 \cdot d}} \cdot \frac{h}{\ell}\right)} \]
      8. *-commutative83.4%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{M}{\frac{2 \cdot d}{D}} \cdot \left(\frac{\color{blue}{M \cdot D}}{2 \cdot d} \cdot \frac{h}{\ell}\right)} \]
      9. associate-*l/84.6%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{M}{\frac{2 \cdot d}{D}} \cdot \left(\color{blue}{\left(\frac{M}{2 \cdot d} \cdot D\right)} \cdot \frac{h}{\ell}\right)} \]
      10. associate-/r/85.7%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{M}{\frac{2 \cdot d}{D}} \cdot \left(\color{blue}{\frac{M}{\frac{2 \cdot d}{D}}} \cdot \frac{h}{\ell}\right)} \]
      11. associate-*l*81.2%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\frac{M}{\frac{2 \cdot d}{D}} \cdot \frac{M}{\frac{2 \cdot d}{D}}\right) \cdot \frac{h}{\ell}}} \]
      12. unpow281.2%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{{\left(\frac{M}{\frac{2 \cdot d}{D}}\right)}^{2}} \cdot \frac{h}{\ell}} \]
      13. associate-*r/79.0%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{{\left(\frac{M}{\frac{2 \cdot d}{D}}\right)}^{2} \cdot h}{\ell}}} \]
    5. Applied egg-rr79.0%

      \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{h \cdot {\left(\frac{D}{d} \cdot \frac{M}{2}\right)}^{2}}{\ell}}} \]
    6. Step-by-step derivation
      1. associate-*l/81.2%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{h}{\ell} \cdot {\left(\frac{D}{d} \cdot \frac{M}{2}\right)}^{2}}} \]
      2. unpow281.2%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{h}{\ell} \cdot \color{blue}{\left(\left(\frac{D}{d} \cdot \frac{M}{2}\right) \cdot \left(\frac{D}{d} \cdot \frac{M}{2}\right)\right)}} \]
      3. associate-*r*85.7%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\frac{h}{\ell} \cdot \left(\frac{D}{d} \cdot \frac{M}{2}\right)\right) \cdot \left(\frac{D}{d} \cdot \frac{M}{2}\right)}} \]
      4. div-inv85.7%

        \[\leadsto w0 \cdot \sqrt{1 - \left(\frac{h}{\ell} \cdot \left(\frac{D}{d} \cdot \color{blue}{\left(M \cdot \frac{1}{2}\right)}\right)\right) \cdot \left(\frac{D}{d} \cdot \frac{M}{2}\right)} \]
      5. metadata-eval85.7%

        \[\leadsto w0 \cdot \sqrt{1 - \left(\frac{h}{\ell} \cdot \left(\frac{D}{d} \cdot \left(M \cdot \color{blue}{0.5}\right)\right)\right) \cdot \left(\frac{D}{d} \cdot \frac{M}{2}\right)} \]
      6. div-inv85.7%

        \[\leadsto w0 \cdot \sqrt{1 - \left(\frac{h}{\ell} \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)\right) \cdot \left(\frac{D}{d} \cdot \color{blue}{\left(M \cdot \frac{1}{2}\right)}\right)} \]
      7. metadata-eval85.7%

        \[\leadsto w0 \cdot \sqrt{1 - \left(\frac{h}{\ell} \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)\right) \cdot \left(\frac{D}{d} \cdot \left(M \cdot \color{blue}{0.5}\right)\right)} \]
    7. Applied egg-rr85.7%

      \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\frac{h}{\ell} \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)\right) \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)}} \]
    8. Step-by-step derivation
      1. *-commutative85.7%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right) \cdot \left(\frac{h}{\ell} \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)\right)}} \]
      2. associate-*l/83.4%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{D \cdot \left(M \cdot 0.5\right)}{d}} \cdot \left(\frac{h}{\ell} \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)\right)} \]
      3. associate-*l/83.4%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{D \cdot \left(M \cdot 0.5\right)}{d} \cdot \color{blue}{\frac{h \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)}{\ell}}} \]
      4. frac-times78.0%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{\left(D \cdot \left(M \cdot 0.5\right)\right) \cdot \left(h \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)\right)}{d \cdot \ell}}} \]
      5. *-commutative78.0%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\left(D \cdot \color{blue}{\left(0.5 \cdot M\right)}\right) \cdot \left(h \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)\right)}{d \cdot \ell}} \]
      6. associate-*r*78.0%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\color{blue}{\left(\left(D \cdot 0.5\right) \cdot M\right)} \cdot \left(h \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)\right)}{d \cdot \ell}} \]
      7. associate-*l/79.5%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\left(\left(D \cdot 0.5\right) \cdot M\right) \cdot \left(h \cdot \color{blue}{\frac{D \cdot \left(M \cdot 0.5\right)}{d}}\right)}{d \cdot \ell}} \]
      8. associate-*r/78.4%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\left(\left(D \cdot 0.5\right) \cdot M\right) \cdot \left(h \cdot \color{blue}{\left(D \cdot \frac{M \cdot 0.5}{d}\right)}\right)}{d \cdot \ell}} \]
      9. *-commutative78.4%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\left(\left(D \cdot 0.5\right) \cdot M\right) \cdot \left(h \cdot \left(D \cdot \frac{\color{blue}{0.5 \cdot M}}{d}\right)\right)}{d \cdot \ell}} \]
      10. *-un-lft-identity78.4%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\left(\left(D \cdot 0.5\right) \cdot M\right) \cdot \left(h \cdot \left(D \cdot \frac{0.5 \cdot M}{\color{blue}{1 \cdot d}}\right)\right)}{d \cdot \ell}} \]
      11. times-frac78.4%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\left(\left(D \cdot 0.5\right) \cdot M\right) \cdot \left(h \cdot \left(D \cdot \color{blue}{\left(\frac{0.5}{1} \cdot \frac{M}{d}\right)}\right)\right)}{d \cdot \ell}} \]
      12. metadata-eval78.4%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\left(\left(D \cdot 0.5\right) \cdot M\right) \cdot \left(h \cdot \left(D \cdot \left(\color{blue}{0.5} \cdot \frac{M}{d}\right)\right)\right)}{d \cdot \ell}} \]
    9. Applied egg-rr78.4%

      \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{\left(\left(D \cdot 0.5\right) \cdot M\right) \cdot \left(h \cdot \left(D \cdot \left(0.5 \cdot \frac{M}{d}\right)\right)\right)}{d \cdot \ell}}} \]
    10. Step-by-step derivation
      1. *-commutative78.4%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\color{blue}{\left(h \cdot \left(D \cdot \left(0.5 \cdot \frac{M}{d}\right)\right)\right) \cdot \left(\left(D \cdot 0.5\right) \cdot M\right)}}{d \cdot \ell}} \]
      2. *-commutative78.4%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\left(h \cdot \left(D \cdot \left(0.5 \cdot \frac{M}{d}\right)\right)\right) \cdot \left(\left(D \cdot 0.5\right) \cdot M\right)}{\color{blue}{\ell \cdot d}}} \]
      3. times-frac83.8%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{h \cdot \left(D \cdot \left(0.5 \cdot \frac{M}{d}\right)\right)}{\ell} \cdot \frac{\left(D \cdot 0.5\right) \cdot M}{d}}} \]
      4. associate-*l/84.5%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\frac{h}{\ell} \cdot \left(D \cdot \left(0.5 \cdot \frac{M}{d}\right)\right)\right)} \cdot \frac{\left(D \cdot 0.5\right) \cdot M}{d}} \]
      5. associate-/l*86.8%

        \[\leadsto w0 \cdot \sqrt{1 - \left(\frac{h}{\ell} \cdot \left(D \cdot \left(0.5 \cdot \frac{M}{d}\right)\right)\right) \cdot \color{blue}{\frac{D \cdot 0.5}{\frac{d}{M}}}} \]
      6. *-commutative86.8%

        \[\leadsto w0 \cdot \sqrt{1 - \left(\frac{h}{\ell} \cdot \left(D \cdot \left(0.5 \cdot \frac{M}{d}\right)\right)\right) \cdot \frac{\color{blue}{0.5 \cdot D}}{\frac{d}{M}}} \]
    11. Simplified86.8%

      \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\frac{h}{\ell} \cdot \left(D \cdot \left(0.5 \cdot \frac{M}{d}\right)\right)\right) \cdot \frac{0.5 \cdot D}{\frac{d}{M}}}} \]
  3. Recombined 2 regimes into one program.
  4. Final simplification90.5%

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{h}{\ell} \leq -\infty \lor \neg \left(\frac{h}{\ell} \leq -1 \cdot 10^{-310}\right):\\ \;\;\;\;w0 \cdot \left(1 + -0.125 \cdot \frac{h \cdot {\left(M \cdot \frac{D}{d}\right)}^{2}}{\ell}\right)\\ \mathbf{else}:\\ \;\;\;\;w0 \cdot \sqrt{1 - \left(\frac{h}{\ell} \cdot \left(D \cdot \left(0.5 \cdot \frac{M}{d}\right)\right)\right) \cdot \frac{D \cdot 0.5}{\frac{d}{M}}}\\ \end{array} \]
  5. Add Preprocessing

Alternative 3: 87.5% accurate, 1.6× speedup?

\[\begin{array}{l} M_m = \left|M\right| \\ D_m = \left|D\right| \\ [w0, M_m, D_m, h, l, d] = \mathsf{sort}([w0, M_m, D_m, h, l, d])\\ \\ \begin{array}{l} \mathbf{if}\;\frac{h}{\ell} \leq -1 \cdot 10^{+209}:\\ \;\;\;\;w0 \cdot \sqrt{1 - \frac{h \cdot \left(M\_m \cdot \left(D\_m \cdot 0.5\right)\right)}{d \cdot \ell} \cdot \left(\frac{D\_m}{d} \cdot \left(M\_m \cdot 0.5\right)\right)}\\ \mathbf{elif}\;\frac{h}{\ell} \leq -1 \cdot 10^{-310}:\\ \;\;\;\;w0 \cdot \sqrt{1 - \left(\frac{h}{\ell} \cdot \left(D\_m \cdot \left(0.5 \cdot \frac{M\_m}{d}\right)\right)\right) \cdot \frac{D\_m \cdot 0.5}{\frac{d}{M\_m}}}\\ \mathbf{else}:\\ \;\;\;\;w0 \cdot \left(1 + -0.125 \cdot \frac{h \cdot {\left(M\_m \cdot \frac{D\_m}{d}\right)}^{2}}{\ell}\right)\\ \end{array} \end{array} \]
M_m = (fabs.f64 M)
D_m = (fabs.f64 D)
NOTE: w0, M_m, D_m, h, l, and d should be sorted in increasing order before calling this function.
(FPCore (w0 M_m D_m h l d)
 :precision binary64
 (if (<= (/ h l) -1e+209)
   (*
    w0
    (sqrt
     (-
      1.0
      (* (/ (* h (* M_m (* D_m 0.5))) (* d l)) (* (/ D_m d) (* M_m 0.5))))))
   (if (<= (/ h l) -1e-310)
     (*
      w0
      (sqrt
       (-
        1.0
        (* (* (/ h l) (* D_m (* 0.5 (/ M_m d)))) (/ (* D_m 0.5) (/ d M_m))))))
     (* w0 (+ 1.0 (* -0.125 (/ (* h (pow (* M_m (/ D_m d)) 2.0)) l)))))))
M_m = fabs(M);
D_m = fabs(D);
assert(w0 < M_m && M_m < D_m && D_m < h && h < l && l < d);
double code(double w0, double M_m, double D_m, double h, double l, double d) {
	double tmp;
	if ((h / l) <= -1e+209) {
		tmp = w0 * sqrt((1.0 - (((h * (M_m * (D_m * 0.5))) / (d * l)) * ((D_m / d) * (M_m * 0.5)))));
	} else if ((h / l) <= -1e-310) {
		tmp = w0 * sqrt((1.0 - (((h / l) * (D_m * (0.5 * (M_m / d)))) * ((D_m * 0.5) / (d / M_m)))));
	} else {
		tmp = w0 * (1.0 + (-0.125 * ((h * pow((M_m * (D_m / d)), 2.0)) / l)));
	}
	return tmp;
}
M_m = abs(M)
D_m = abs(D)
NOTE: w0, M_m, D_m, h, l, and d should be sorted in increasing order before calling this function.
real(8) function code(w0, m_m, d_m, h, l, d)
    real(8), intent (in) :: w0
    real(8), intent (in) :: m_m
    real(8), intent (in) :: d_m
    real(8), intent (in) :: h
    real(8), intent (in) :: l
    real(8), intent (in) :: d
    real(8) :: tmp
    if ((h / l) <= (-1d+209)) then
        tmp = w0 * sqrt((1.0d0 - (((h * (m_m * (d_m * 0.5d0))) / (d * l)) * ((d_m / d) * (m_m * 0.5d0)))))
    else if ((h / l) <= (-1d-310)) then
        tmp = w0 * sqrt((1.0d0 - (((h / l) * (d_m * (0.5d0 * (m_m / d)))) * ((d_m * 0.5d0) / (d / m_m)))))
    else
        tmp = w0 * (1.0d0 + ((-0.125d0) * ((h * ((m_m * (d_m / d)) ** 2.0d0)) / l)))
    end if
    code = tmp
end function
M_m = Math.abs(M);
D_m = Math.abs(D);
assert w0 < M_m && M_m < D_m && D_m < h && h < l && l < d;
public static double code(double w0, double M_m, double D_m, double h, double l, double d) {
	double tmp;
	if ((h / l) <= -1e+209) {
		tmp = w0 * Math.sqrt((1.0 - (((h * (M_m * (D_m * 0.5))) / (d * l)) * ((D_m / d) * (M_m * 0.5)))));
	} else if ((h / l) <= -1e-310) {
		tmp = w0 * Math.sqrt((1.0 - (((h / l) * (D_m * (0.5 * (M_m / d)))) * ((D_m * 0.5) / (d / M_m)))));
	} else {
		tmp = w0 * (1.0 + (-0.125 * ((h * Math.pow((M_m * (D_m / d)), 2.0)) / l)));
	}
	return tmp;
}
M_m = math.fabs(M)
D_m = math.fabs(D)
[w0, M_m, D_m, h, l, d] = sort([w0, M_m, D_m, h, l, d])
def code(w0, M_m, D_m, h, l, d):
	tmp = 0
	if (h / l) <= -1e+209:
		tmp = w0 * math.sqrt((1.0 - (((h * (M_m * (D_m * 0.5))) / (d * l)) * ((D_m / d) * (M_m * 0.5)))))
	elif (h / l) <= -1e-310:
		tmp = w0 * math.sqrt((1.0 - (((h / l) * (D_m * (0.5 * (M_m / d)))) * ((D_m * 0.5) / (d / M_m)))))
	else:
		tmp = w0 * (1.0 + (-0.125 * ((h * math.pow((M_m * (D_m / d)), 2.0)) / l)))
	return tmp
M_m = abs(M)
D_m = abs(D)
w0, M_m, D_m, h, l, d = sort([w0, M_m, D_m, h, l, d])
function code(w0, M_m, D_m, h, l, d)
	tmp = 0.0
	if (Float64(h / l) <= -1e+209)
		tmp = Float64(w0 * sqrt(Float64(1.0 - Float64(Float64(Float64(h * Float64(M_m * Float64(D_m * 0.5))) / Float64(d * l)) * Float64(Float64(D_m / d) * Float64(M_m * 0.5))))));
	elseif (Float64(h / l) <= -1e-310)
		tmp = Float64(w0 * sqrt(Float64(1.0 - Float64(Float64(Float64(h / l) * Float64(D_m * Float64(0.5 * Float64(M_m / d)))) * Float64(Float64(D_m * 0.5) / Float64(d / M_m))))));
	else
		tmp = Float64(w0 * Float64(1.0 + Float64(-0.125 * Float64(Float64(h * (Float64(M_m * Float64(D_m / d)) ^ 2.0)) / l))));
	end
	return tmp
end
M_m = abs(M);
D_m = abs(D);
w0, M_m, D_m, h, l, d = num2cell(sort([w0, M_m, D_m, h, l, d])){:}
function tmp_2 = code(w0, M_m, D_m, h, l, d)
	tmp = 0.0;
	if ((h / l) <= -1e+209)
		tmp = w0 * sqrt((1.0 - (((h * (M_m * (D_m * 0.5))) / (d * l)) * ((D_m / d) * (M_m * 0.5)))));
	elseif ((h / l) <= -1e-310)
		tmp = w0 * sqrt((1.0 - (((h / l) * (D_m * (0.5 * (M_m / d)))) * ((D_m * 0.5) / (d / M_m)))));
	else
		tmp = w0 * (1.0 + (-0.125 * ((h * ((M_m * (D_m / d)) ^ 2.0)) / l)));
	end
	tmp_2 = tmp;
end
M_m = N[Abs[M], $MachinePrecision]
D_m = N[Abs[D], $MachinePrecision]
NOTE: w0, M_m, D_m, h, l, and d should be sorted in increasing order before calling this function.
code[w0_, M$95$m_, D$95$m_, h_, l_, d_] := If[LessEqual[N[(h / l), $MachinePrecision], -1e+209], N[(w0 * N[Sqrt[N[(1.0 - N[(N[(N[(h * N[(M$95$m * N[(D$95$m * 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(d * l), $MachinePrecision]), $MachinePrecision] * N[(N[(D$95$m / d), $MachinePrecision] * N[(M$95$m * 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], If[LessEqual[N[(h / l), $MachinePrecision], -1e-310], N[(w0 * N[Sqrt[N[(1.0 - N[(N[(N[(h / l), $MachinePrecision] * N[(D$95$m * N[(0.5 * N[(M$95$m / d), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(D$95$m * 0.5), $MachinePrecision] / N[(d / M$95$m), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(w0 * N[(1.0 + N[(-0.125 * N[(N[(h * N[Power[N[(M$95$m * N[(D$95$m / d), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / l), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
M_m = \left|M\right|
\\
D_m = \left|D\right|
\\
[w0, M_m, D_m, h, l, d] = \mathsf{sort}([w0, M_m, D_m, h, l, d])\\
\\
\begin{array}{l}
\mathbf{if}\;\frac{h}{\ell} \leq -1 \cdot 10^{+209}:\\
\;\;\;\;w0 \cdot \sqrt{1 - \frac{h \cdot \left(M\_m \cdot \left(D\_m \cdot 0.5\right)\right)}{d \cdot \ell} \cdot \left(\frac{D\_m}{d} \cdot \left(M\_m \cdot 0.5\right)\right)}\\

\mathbf{elif}\;\frac{h}{\ell} \leq -1 \cdot 10^{-310}:\\
\;\;\;\;w0 \cdot \sqrt{1 - \left(\frac{h}{\ell} \cdot \left(D\_m \cdot \left(0.5 \cdot \frac{M\_m}{d}\right)\right)\right) \cdot \frac{D\_m \cdot 0.5}{\frac{d}{M\_m}}}\\

\mathbf{else}:\\
\;\;\;\;w0 \cdot \left(1 + -0.125 \cdot \frac{h \cdot {\left(M\_m \cdot \frac{D\_m}{d}\right)}^{2}}{\ell}\right)\\


\end{array}
\end{array}
Derivation
  1. Split input into 3 regimes
  2. if (/.f64 h l) < -1.0000000000000001e209

    1. Initial program 61.2%

      \[w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell}} \]
    2. Simplified62.6%

      \[\leadsto \color{blue}{w0 \cdot \sqrt{1 - {\left(\frac{D}{2} \cdot \frac{M}{d}\right)}^{2} \cdot \frac{h}{\ell}}} \]
    3. Add Preprocessing
    4. Step-by-step derivation
      1. unpow262.6%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\left(\frac{D}{2} \cdot \frac{M}{d}\right) \cdot \left(\frac{D}{2} \cdot \frac{M}{d}\right)\right)} \cdot \frac{h}{\ell}} \]
      2. associate-*l*63.4%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\frac{D}{2} \cdot \frac{M}{d}\right) \cdot \left(\left(\frac{D}{2} \cdot \frac{M}{d}\right) \cdot \frac{h}{\ell}\right)}} \]
      3. frac-times60.7%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{D \cdot M}{2 \cdot d}} \cdot \left(\left(\frac{D}{2} \cdot \frac{M}{d}\right) \cdot \frac{h}{\ell}\right)} \]
      4. *-commutative60.7%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\color{blue}{M \cdot D}}{2 \cdot d} \cdot \left(\left(\frac{D}{2} \cdot \frac{M}{d}\right) \cdot \frac{h}{\ell}\right)} \]
      5. associate-*l/63.4%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\frac{M}{2 \cdot d} \cdot D\right)} \cdot \left(\left(\frac{D}{2} \cdot \frac{M}{d}\right) \cdot \frac{h}{\ell}\right)} \]
      6. associate-/r/60.9%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{M}{\frac{2 \cdot d}{D}}} \cdot \left(\left(\frac{D}{2} \cdot \frac{M}{d}\right) \cdot \frac{h}{\ell}\right)} \]
      7. frac-times59.6%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{M}{\frac{2 \cdot d}{D}} \cdot \left(\color{blue}{\frac{D \cdot M}{2 \cdot d}} \cdot \frac{h}{\ell}\right)} \]
      8. *-commutative59.6%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{M}{\frac{2 \cdot d}{D}} \cdot \left(\frac{\color{blue}{M \cdot D}}{2 \cdot d} \cdot \frac{h}{\ell}\right)} \]
      9. associate-*l/60.9%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{M}{\frac{2 \cdot d}{D}} \cdot \left(\color{blue}{\left(\frac{M}{2 \cdot d} \cdot D\right)} \cdot \frac{h}{\ell}\right)} \]
      10. associate-/r/62.2%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{M}{\frac{2 \cdot d}{D}} \cdot \left(\color{blue}{\frac{M}{\frac{2 \cdot d}{D}}} \cdot \frac{h}{\ell}\right)} \]
      11. associate-*l*61.4%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\frac{M}{\frac{2 \cdot d}{D}} \cdot \frac{M}{\frac{2 \cdot d}{D}}\right) \cdot \frac{h}{\ell}}} \]
      12. unpow261.4%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{{\left(\frac{M}{\frac{2 \cdot d}{D}}\right)}^{2}} \cdot \frac{h}{\ell}} \]
      13. associate-*r/78.0%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{{\left(\frac{M}{\frac{2 \cdot d}{D}}\right)}^{2} \cdot h}{\ell}}} \]
    5. Applied egg-rr78.0%

      \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{h \cdot {\left(\frac{D}{d} \cdot \frac{M}{2}\right)}^{2}}{\ell}}} \]
    6. Step-by-step derivation
      1. associate-*l/61.4%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{h}{\ell} \cdot {\left(\frac{D}{d} \cdot \frac{M}{2}\right)}^{2}}} \]
      2. unpow261.4%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{h}{\ell} \cdot \color{blue}{\left(\left(\frac{D}{d} \cdot \frac{M}{2}\right) \cdot \left(\frac{D}{d} \cdot \frac{M}{2}\right)\right)}} \]
      3. associate-*r*62.2%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\frac{h}{\ell} \cdot \left(\frac{D}{d} \cdot \frac{M}{2}\right)\right) \cdot \left(\frac{D}{d} \cdot \frac{M}{2}\right)}} \]
      4. div-inv62.2%

        \[\leadsto w0 \cdot \sqrt{1 - \left(\frac{h}{\ell} \cdot \left(\frac{D}{d} \cdot \color{blue}{\left(M \cdot \frac{1}{2}\right)}\right)\right) \cdot \left(\frac{D}{d} \cdot \frac{M}{2}\right)} \]
      5. metadata-eval62.2%

        \[\leadsto w0 \cdot \sqrt{1 - \left(\frac{h}{\ell} \cdot \left(\frac{D}{d} \cdot \left(M \cdot \color{blue}{0.5}\right)\right)\right) \cdot \left(\frac{D}{d} \cdot \frac{M}{2}\right)} \]
      6. div-inv62.2%

        \[\leadsto w0 \cdot \sqrt{1 - \left(\frac{h}{\ell} \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)\right) \cdot \left(\frac{D}{d} \cdot \color{blue}{\left(M \cdot \frac{1}{2}\right)}\right)} \]
      7. metadata-eval62.2%

        \[\leadsto w0 \cdot \sqrt{1 - \left(\frac{h}{\ell} \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)\right) \cdot \left(\frac{D}{d} \cdot \left(M \cdot \color{blue}{0.5}\right)\right)} \]
    7. Applied egg-rr62.2%

      \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\frac{h}{\ell} \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)\right) \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)}} \]
    8. Step-by-step derivation
      1. *-commutative62.2%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right) \cdot \frac{h}{\ell}\right)} \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)} \]
      2. associate-*l/59.6%

        \[\leadsto w0 \cdot \sqrt{1 - \left(\color{blue}{\frac{D \cdot \left(M \cdot 0.5\right)}{d}} \cdot \frac{h}{\ell}\right) \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)} \]
      3. frac-times82.4%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{\left(D \cdot \left(M \cdot 0.5\right)\right) \cdot h}{d \cdot \ell}} \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)} \]
      4. *-commutative82.4%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\left(D \cdot \color{blue}{\left(0.5 \cdot M\right)}\right) \cdot h}{d \cdot \ell} \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)} \]
      5. associate-*r*82.4%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\color{blue}{\left(\left(D \cdot 0.5\right) \cdot M\right)} \cdot h}{d \cdot \ell} \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)} \]
    9. Applied egg-rr82.4%

      \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{\left(\left(D \cdot 0.5\right) \cdot M\right) \cdot h}{d \cdot \ell}} \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)} \]

    if -1.0000000000000001e209 < (/.f64 h l) < -9.999999999999969e-311

    1. Initial program 82.1%

      \[w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell}} \]
    2. Simplified83.0%

      \[\leadsto \color{blue}{w0 \cdot \sqrt{1 - {\left(\frac{D}{2} \cdot \frac{M}{d}\right)}^{2} \cdot \frac{h}{\ell}}} \]
    3. Add Preprocessing
    4. Step-by-step derivation
      1. unpow283.0%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\left(\frac{D}{2} \cdot \frac{M}{d}\right) \cdot \left(\frac{D}{2} \cdot \frac{M}{d}\right)\right)} \cdot \frac{h}{\ell}} \]
      2. associate-*l*87.4%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\frac{D}{2} \cdot \frac{M}{d}\right) \cdot \left(\left(\frac{D}{2} \cdot \frac{M}{d}\right) \cdot \frac{h}{\ell}\right)}} \]
      3. frac-times84.7%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{D \cdot M}{2 \cdot d}} \cdot \left(\left(\frac{D}{2} \cdot \frac{M}{d}\right) \cdot \frac{h}{\ell}\right)} \]
      4. *-commutative84.7%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\color{blue}{M \cdot D}}{2 \cdot d} \cdot \left(\left(\frac{D}{2} \cdot \frac{M}{d}\right) \cdot \frac{h}{\ell}\right)} \]
      5. associate-*l/87.4%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\frac{M}{2 \cdot d} \cdot D\right)} \cdot \left(\left(\frac{D}{2} \cdot \frac{M}{d}\right) \cdot \frac{h}{\ell}\right)} \]
      6. associate-/r/85.7%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{M}{\frac{2 \cdot d}{D}}} \cdot \left(\left(\frac{D}{2} \cdot \frac{M}{d}\right) \cdot \frac{h}{\ell}\right)} \]
      7. frac-times83.9%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{M}{\frac{2 \cdot d}{D}} \cdot \left(\color{blue}{\frac{D \cdot M}{2 \cdot d}} \cdot \frac{h}{\ell}\right)} \]
      8. *-commutative83.9%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{M}{\frac{2 \cdot d}{D}} \cdot \left(\frac{\color{blue}{M \cdot D}}{2 \cdot d} \cdot \frac{h}{\ell}\right)} \]
      9. associate-*l/85.7%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{M}{\frac{2 \cdot d}{D}} \cdot \left(\color{blue}{\left(\frac{M}{2 \cdot d} \cdot D\right)} \cdot \frac{h}{\ell}\right)} \]
      10. associate-/r/86.5%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{M}{\frac{2 \cdot d}{D}} \cdot \left(\color{blue}{\frac{M}{\frac{2 \cdot d}{D}}} \cdot \frac{h}{\ell}\right)} \]
      11. associate-*l*81.3%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\frac{M}{\frac{2 \cdot d}{D}} \cdot \frac{M}{\frac{2 \cdot d}{D}}\right) \cdot \frac{h}{\ell}}} \]
      12. unpow281.3%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{{\left(\frac{M}{\frac{2 \cdot d}{D}}\right)}^{2}} \cdot \frac{h}{\ell}} \]
      13. associate-*r/78.6%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{{\left(\frac{M}{\frac{2 \cdot d}{D}}\right)}^{2} \cdot h}{\ell}}} \]
    5. Applied egg-rr78.6%

      \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{h \cdot {\left(\frac{D}{d} \cdot \frac{M}{2}\right)}^{2}}{\ell}}} \]
    6. Step-by-step derivation
      1. associate-*l/81.3%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{h}{\ell} \cdot {\left(\frac{D}{d} \cdot \frac{M}{2}\right)}^{2}}} \]
      2. unpow281.3%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{h}{\ell} \cdot \color{blue}{\left(\left(\frac{D}{d} \cdot \frac{M}{2}\right) \cdot \left(\frac{D}{d} \cdot \frac{M}{2}\right)\right)}} \]
      3. associate-*r*86.5%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\frac{h}{\ell} \cdot \left(\frac{D}{d} \cdot \frac{M}{2}\right)\right) \cdot \left(\frac{D}{d} \cdot \frac{M}{2}\right)}} \]
      4. div-inv86.5%

        \[\leadsto w0 \cdot \sqrt{1 - \left(\frac{h}{\ell} \cdot \left(\frac{D}{d} \cdot \color{blue}{\left(M \cdot \frac{1}{2}\right)}\right)\right) \cdot \left(\frac{D}{d} \cdot \frac{M}{2}\right)} \]
      5. metadata-eval86.5%

        \[\leadsto w0 \cdot \sqrt{1 - \left(\frac{h}{\ell} \cdot \left(\frac{D}{d} \cdot \left(M \cdot \color{blue}{0.5}\right)\right)\right) \cdot \left(\frac{D}{d} \cdot \frac{M}{2}\right)} \]
      6. div-inv86.5%

        \[\leadsto w0 \cdot \sqrt{1 - \left(\frac{h}{\ell} \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)\right) \cdot \left(\frac{D}{d} \cdot \color{blue}{\left(M \cdot \frac{1}{2}\right)}\right)} \]
      7. metadata-eval86.5%

        \[\leadsto w0 \cdot \sqrt{1 - \left(\frac{h}{\ell} \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)\right) \cdot \left(\frac{D}{d} \cdot \left(M \cdot \color{blue}{0.5}\right)\right)} \]
    7. Applied egg-rr86.5%

      \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\frac{h}{\ell} \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)\right) \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)}} \]
    8. Step-by-step derivation
      1. *-commutative86.5%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right) \cdot \left(\frac{h}{\ell} \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)\right)}} \]
      2. associate-*l/83.9%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{D \cdot \left(M \cdot 0.5\right)}{d}} \cdot \left(\frac{h}{\ell} \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)\right)} \]
      3. associate-*l/83.9%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{D \cdot \left(M \cdot 0.5\right)}{d} \cdot \color{blue}{\frac{h \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)}{\ell}}} \]
      4. frac-times77.5%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{\left(D \cdot \left(M \cdot 0.5\right)\right) \cdot \left(h \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)\right)}{d \cdot \ell}}} \]
      5. *-commutative77.5%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\left(D \cdot \color{blue}{\left(0.5 \cdot M\right)}\right) \cdot \left(h \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)\right)}{d \cdot \ell}} \]
      6. associate-*r*77.5%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\color{blue}{\left(\left(D \cdot 0.5\right) \cdot M\right)} \cdot \left(h \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)\right)}{d \cdot \ell}} \]
      7. associate-*l/78.3%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\left(\left(D \cdot 0.5\right) \cdot M\right) \cdot \left(h \cdot \color{blue}{\frac{D \cdot \left(M \cdot 0.5\right)}{d}}\right)}{d \cdot \ell}} \]
      8. associate-*r/77.5%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\left(\left(D \cdot 0.5\right) \cdot M\right) \cdot \left(h \cdot \color{blue}{\left(D \cdot \frac{M \cdot 0.5}{d}\right)}\right)}{d \cdot \ell}} \]
      9. *-commutative77.5%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\left(\left(D \cdot 0.5\right) \cdot M\right) \cdot \left(h \cdot \left(D \cdot \frac{\color{blue}{0.5 \cdot M}}{d}\right)\right)}{d \cdot \ell}} \]
      10. *-un-lft-identity77.5%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\left(\left(D \cdot 0.5\right) \cdot M\right) \cdot \left(h \cdot \left(D \cdot \frac{0.5 \cdot M}{\color{blue}{1 \cdot d}}\right)\right)}{d \cdot \ell}} \]
      11. times-frac77.5%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\left(\left(D \cdot 0.5\right) \cdot M\right) \cdot \left(h \cdot \left(D \cdot \color{blue}{\left(\frac{0.5}{1} \cdot \frac{M}{d}\right)}\right)\right)}{d \cdot \ell}} \]
      12. metadata-eval77.5%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\left(\left(D \cdot 0.5\right) \cdot M\right) \cdot \left(h \cdot \left(D \cdot \left(\color{blue}{0.5} \cdot \frac{M}{d}\right)\right)\right)}{d \cdot \ell}} \]
    9. Applied egg-rr77.5%

      \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{\left(\left(D \cdot 0.5\right) \cdot M\right) \cdot \left(h \cdot \left(D \cdot \left(0.5 \cdot \frac{M}{d}\right)\right)\right)}{d \cdot \ell}}} \]
    10. Step-by-step derivation
      1. *-commutative77.5%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\color{blue}{\left(h \cdot \left(D \cdot \left(0.5 \cdot \frac{M}{d}\right)\right)\right) \cdot \left(\left(D \cdot 0.5\right) \cdot M\right)}}{d \cdot \ell}} \]
      2. *-commutative77.5%

        \[\leadsto w0 \cdot \sqrt{1 - \frac{\left(h \cdot \left(D \cdot \left(0.5 \cdot \frac{M}{d}\right)\right)\right) \cdot \left(\left(D \cdot 0.5\right) \cdot M\right)}{\color{blue}{\ell \cdot d}}} \]
      3. times-frac83.9%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{h \cdot \left(D \cdot \left(0.5 \cdot \frac{M}{d}\right)\right)}{\ell} \cdot \frac{\left(D \cdot 0.5\right) \cdot M}{d}}} \]
      4. associate-*l/84.7%

        \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\frac{h}{\ell} \cdot \left(D \cdot \left(0.5 \cdot \frac{M}{d}\right)\right)\right)} \cdot \frac{\left(D \cdot 0.5\right) \cdot M}{d}} \]
      5. associate-/l*87.5%

        \[\leadsto w0 \cdot \sqrt{1 - \left(\frac{h}{\ell} \cdot \left(D \cdot \left(0.5 \cdot \frac{M}{d}\right)\right)\right) \cdot \color{blue}{\frac{D \cdot 0.5}{\frac{d}{M}}}} \]
      6. *-commutative87.5%

        \[\leadsto w0 \cdot \sqrt{1 - \left(\frac{h}{\ell} \cdot \left(D \cdot \left(0.5 \cdot \frac{M}{d}\right)\right)\right) \cdot \frac{\color{blue}{0.5 \cdot D}}{\frac{d}{M}}} \]
    11. Simplified87.5%

      \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\frac{h}{\ell} \cdot \left(D \cdot \left(0.5 \cdot \frac{M}{d}\right)\right)\right) \cdot \frac{0.5 \cdot D}{\frac{d}{M}}}} \]

    if -9.999999999999969e-311 < (/.f64 h l)

    1. Initial program 89.2%

      \[w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell}} \]
    2. Simplified88.3%

      \[\leadsto \color{blue}{w0 \cdot \sqrt{1 - {\left(\frac{D}{2} \cdot \frac{M}{d}\right)}^{2} \cdot \frac{h}{\ell}}} \]
    3. Add Preprocessing
    4. Taylor expanded in D around 0 59.5%

      \[\leadsto w0 \cdot \color{blue}{\left(1 + -0.125 \cdot \frac{{D}^{2} \cdot \left({M}^{2} \cdot h\right)}{{d}^{2} \cdot \ell}\right)} \]
    5. Step-by-step derivation
      1. associate-*r*64.1%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \frac{\color{blue}{\left({D}^{2} \cdot {M}^{2}\right) \cdot h}}{{d}^{2} \cdot \ell}\right) \]
      2. add-sqr-sqrt30.7%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \frac{\left({D}^{2} \cdot {M}^{2}\right) \cdot h}{\color{blue}{\sqrt{{d}^{2} \cdot \ell} \cdot \sqrt{{d}^{2} \cdot \ell}}}\right) \]
      3. times-frac30.7%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \color{blue}{\left(\frac{{D}^{2} \cdot {M}^{2}}{\sqrt{{d}^{2} \cdot \ell}} \cdot \frac{h}{\sqrt{{d}^{2} \cdot \ell}}\right)}\right) \]
      4. pow-prod-down37.0%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{\color{blue}{{\left(D \cdot M\right)}^{2}}}{\sqrt{{d}^{2} \cdot \ell}} \cdot \frac{h}{\sqrt{{d}^{2} \cdot \ell}}\right)\right) \]
      5. sqrt-prod37.0%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{{\left(D \cdot M\right)}^{2}}{\color{blue}{\sqrt{{d}^{2}} \cdot \sqrt{\ell}}} \cdot \frac{h}{\sqrt{{d}^{2} \cdot \ell}}\right)\right) \]
      6. unpow237.0%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{{\left(D \cdot M\right)}^{2}}{\sqrt{\color{blue}{d \cdot d}} \cdot \sqrt{\ell}} \cdot \frac{h}{\sqrt{{d}^{2} \cdot \ell}}\right)\right) \]
      7. sqrt-prod18.0%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{{\left(D \cdot M\right)}^{2}}{\color{blue}{\left(\sqrt{d} \cdot \sqrt{d}\right)} \cdot \sqrt{\ell}} \cdot \frac{h}{\sqrt{{d}^{2} \cdot \ell}}\right)\right) \]
      8. add-sqr-sqrt36.9%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{{\left(D \cdot M\right)}^{2}}{\color{blue}{d} \cdot \sqrt{\ell}} \cdot \frac{h}{\sqrt{{d}^{2} \cdot \ell}}\right)\right) \]
      9. sqrt-prod37.8%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{{\left(D \cdot M\right)}^{2}}{d \cdot \sqrt{\ell}} \cdot \frac{h}{\color{blue}{\sqrt{{d}^{2}} \cdot \sqrt{\ell}}}\right)\right) \]
      10. unpow237.8%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{{\left(D \cdot M\right)}^{2}}{d \cdot \sqrt{\ell}} \cdot \frac{h}{\sqrt{\color{blue}{d \cdot d}} \cdot \sqrt{\ell}}\right)\right) \]
      11. sqrt-prod21.6%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{{\left(D \cdot M\right)}^{2}}{d \cdot \sqrt{\ell}} \cdot \frac{h}{\color{blue}{\left(\sqrt{d} \cdot \sqrt{d}\right)} \cdot \sqrt{\ell}}\right)\right) \]
      12. add-sqr-sqrt42.4%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{{\left(D \cdot M\right)}^{2}}{d \cdot \sqrt{\ell}} \cdot \frac{h}{\color{blue}{d} \cdot \sqrt{\ell}}\right)\right) \]
    6. Applied egg-rr42.4%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \color{blue}{\left(\frac{{\left(D \cdot M\right)}^{2}}{d \cdot \sqrt{\ell}} \cdot \frac{h}{d \cdot \sqrt{\ell}}\right)}\right) \]
    7. Taylor expanded in D around 0 59.5%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \color{blue}{\frac{{D}^{2} \cdot \left({M}^{2} \cdot h\right)}{{d}^{2} \cdot \ell}}\right) \]
    8. Step-by-step derivation
      1. associate-*r*64.1%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \frac{\color{blue}{\left({D}^{2} \cdot {M}^{2}\right) \cdot h}}{{d}^{2} \cdot \ell}\right) \]
      2. unpow264.1%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \frac{\left(\color{blue}{\left(D \cdot D\right)} \cdot {M}^{2}\right) \cdot h}{{d}^{2} \cdot \ell}\right) \]
      3. unpow264.1%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \frac{\left(\left(D \cdot D\right) \cdot \color{blue}{\left(M \cdot M\right)}\right) \cdot h}{{d}^{2} \cdot \ell}\right) \]
      4. swap-sqr78.5%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \frac{\color{blue}{\left(\left(D \cdot M\right) \cdot \left(D \cdot M\right)\right)} \cdot h}{{d}^{2} \cdot \ell}\right) \]
      5. unpow278.5%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \frac{\color{blue}{{\left(D \cdot M\right)}^{2}} \cdot h}{{d}^{2} \cdot \ell}\right) \]
      6. *-commutative78.5%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \frac{\color{blue}{h \cdot {\left(D \cdot M\right)}^{2}}}{{d}^{2} \cdot \ell}\right) \]
      7. *-commutative78.5%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \frac{h \cdot {\left(D \cdot M\right)}^{2}}{\color{blue}{\ell \cdot {d}^{2}}}\right) \]
      8. times-frac74.8%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \color{blue}{\left(\frac{h}{\ell} \cdot \frac{{\left(D \cdot M\right)}^{2}}{{d}^{2}}\right)}\right) \]
      9. unpow274.8%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot \frac{{\left(D \cdot M\right)}^{2}}{\color{blue}{d \cdot d}}\right)\right) \]
      10. associate-/r*87.4%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot \color{blue}{\frac{\frac{{\left(D \cdot M\right)}^{2}}{d}}{d}}\right)\right) \]
      11. unpow287.4%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot \frac{\frac{\color{blue}{\left(D \cdot M\right) \cdot \left(D \cdot M\right)}}{d}}{d}\right)\right) \]
      12. associate-*r/88.3%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot \frac{\color{blue}{\left(D \cdot M\right) \cdot \frac{D \cdot M}{d}}}{d}\right)\right) \]
      13. associate-*l/88.3%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot \frac{\left(D \cdot M\right) \cdot \color{blue}{\left(\frac{D}{d} \cdot M\right)}}{d}\right)\right) \]
      14. associate-*l/89.2%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot \color{blue}{\left(\frac{D \cdot M}{d} \cdot \left(\frac{D}{d} \cdot M\right)\right)}\right)\right) \]
      15. associate-*l/89.2%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot \left(\color{blue}{\left(\frac{D}{d} \cdot M\right)} \cdot \left(\frac{D}{d} \cdot M\right)\right)\right)\right) \]
      16. unpow289.2%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot \color{blue}{{\left(\frac{D}{d} \cdot M\right)}^{2}}\right)\right) \]
      17. *-commutative89.2%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot {\color{blue}{\left(M \cdot \frac{D}{d}\right)}}^{2}\right)\right) \]
    9. Simplified89.2%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \color{blue}{\left(\frac{h}{\ell} \cdot {\left(M \cdot \frac{D}{d}\right)}^{2}\right)}\right) \]
    10. Step-by-step derivation
      1. associate-*l/97.4%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \color{blue}{\frac{h \cdot {\left(M \cdot \frac{D}{d}\right)}^{2}}{\ell}}\right) \]
    11. Applied egg-rr97.4%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \color{blue}{\frac{h \cdot {\left(M \cdot \frac{D}{d}\right)}^{2}}{\ell}}\right) \]
  3. Recombined 3 regimes into one program.
  4. Final simplification91.0%

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{h}{\ell} \leq -1 \cdot 10^{+209}:\\ \;\;\;\;w0 \cdot \sqrt{1 - \frac{h \cdot \left(M \cdot \left(D \cdot 0.5\right)\right)}{d \cdot \ell} \cdot \left(\frac{D}{d} \cdot \left(M \cdot 0.5\right)\right)}\\ \mathbf{elif}\;\frac{h}{\ell} \leq -1 \cdot 10^{-310}:\\ \;\;\;\;w0 \cdot \sqrt{1 - \left(\frac{h}{\ell} \cdot \left(D \cdot \left(0.5 \cdot \frac{M}{d}\right)\right)\right) \cdot \frac{D \cdot 0.5}{\frac{d}{M}}}\\ \mathbf{else}:\\ \;\;\;\;w0 \cdot \left(1 + -0.125 \cdot \frac{h \cdot {\left(M \cdot \frac{D}{d}\right)}^{2}}{\ell}\right)\\ \end{array} \]
  5. Add Preprocessing

Alternative 4: 80.6% accurate, 1.9× speedup?

\[\begin{array}{l} M_m = \left|M\right| \\ D_m = \left|D\right| \\ [w0, M_m, D_m, h, l, d] = \mathsf{sort}([w0, M_m, D_m, h, l, d])\\ \\ w0 \cdot \left(1 + -0.125 \cdot \frac{h \cdot {\left(M\_m \cdot \frac{D\_m}{d}\right)}^{2}}{\ell}\right) \end{array} \]
M_m = (fabs.f64 M)
D_m = (fabs.f64 D)
NOTE: w0, M_m, D_m, h, l, and d should be sorted in increasing order before calling this function.
(FPCore (w0 M_m D_m h l d)
 :precision binary64
 (* w0 (+ 1.0 (* -0.125 (/ (* h (pow (* M_m (/ D_m d)) 2.0)) l)))))
M_m = fabs(M);
D_m = fabs(D);
assert(w0 < M_m && M_m < D_m && D_m < h && h < l && l < d);
double code(double w0, double M_m, double D_m, double h, double l, double d) {
	return w0 * (1.0 + (-0.125 * ((h * pow((M_m * (D_m / d)), 2.0)) / l)));
}
M_m = abs(M)
D_m = abs(D)
NOTE: w0, M_m, D_m, h, l, and d should be sorted in increasing order before calling this function.
real(8) function code(w0, m_m, d_m, h, l, d)
    real(8), intent (in) :: w0
    real(8), intent (in) :: m_m
    real(8), intent (in) :: d_m
    real(8), intent (in) :: h
    real(8), intent (in) :: l
    real(8), intent (in) :: d
    code = w0 * (1.0d0 + ((-0.125d0) * ((h * ((m_m * (d_m / d)) ** 2.0d0)) / l)))
end function
M_m = Math.abs(M);
D_m = Math.abs(D);
assert w0 < M_m && M_m < D_m && D_m < h && h < l && l < d;
public static double code(double w0, double M_m, double D_m, double h, double l, double d) {
	return w0 * (1.0 + (-0.125 * ((h * Math.pow((M_m * (D_m / d)), 2.0)) / l)));
}
M_m = math.fabs(M)
D_m = math.fabs(D)
[w0, M_m, D_m, h, l, d] = sort([w0, M_m, D_m, h, l, d])
def code(w0, M_m, D_m, h, l, d):
	return w0 * (1.0 + (-0.125 * ((h * math.pow((M_m * (D_m / d)), 2.0)) / l)))
M_m = abs(M)
D_m = abs(D)
w0, M_m, D_m, h, l, d = sort([w0, M_m, D_m, h, l, d])
function code(w0, M_m, D_m, h, l, d)
	return Float64(w0 * Float64(1.0 + Float64(-0.125 * Float64(Float64(h * (Float64(M_m * Float64(D_m / d)) ^ 2.0)) / l))))
end
M_m = abs(M);
D_m = abs(D);
w0, M_m, D_m, h, l, d = num2cell(sort([w0, M_m, D_m, h, l, d])){:}
function tmp = code(w0, M_m, D_m, h, l, d)
	tmp = w0 * (1.0 + (-0.125 * ((h * ((M_m * (D_m / d)) ^ 2.0)) / l)));
end
M_m = N[Abs[M], $MachinePrecision]
D_m = N[Abs[D], $MachinePrecision]
NOTE: w0, M_m, D_m, h, l, and d should be sorted in increasing order before calling this function.
code[w0_, M$95$m_, D$95$m_, h_, l_, d_] := N[(w0 * N[(1.0 + N[(-0.125 * N[(N[(h * N[Power[N[(M$95$m * N[(D$95$m / d), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / l), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
M_m = \left|M\right|
\\
D_m = \left|D\right|
\\
[w0, M_m, D_m, h, l, d] = \mathsf{sort}([w0, M_m, D_m, h, l, d])\\
\\
w0 \cdot \left(1 + -0.125 \cdot \frac{h \cdot {\left(M\_m \cdot \frac{D\_m}{d}\right)}^{2}}{\ell}\right)
\end{array}
Derivation
  1. Initial program 82.1%

    \[w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell}} \]
  2. Simplified82.3%

    \[\leadsto \color{blue}{w0 \cdot \sqrt{1 - {\left(\frac{D}{2} \cdot \frac{M}{d}\right)}^{2} \cdot \frac{h}{\ell}}} \]
  3. Add Preprocessing
  4. Taylor expanded in D around 0 53.3%

    \[\leadsto w0 \cdot \color{blue}{\left(1 + -0.125 \cdot \frac{{D}^{2} \cdot \left({M}^{2} \cdot h\right)}{{d}^{2} \cdot \ell}\right)} \]
  5. Step-by-step derivation
    1. associate-*r*56.0%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \frac{\color{blue}{\left({D}^{2} \cdot {M}^{2}\right) \cdot h}}{{d}^{2} \cdot \ell}\right) \]
    2. add-sqr-sqrt28.0%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \frac{\left({D}^{2} \cdot {M}^{2}\right) \cdot h}{\color{blue}{\sqrt{{d}^{2} \cdot \ell} \cdot \sqrt{{d}^{2} \cdot \ell}}}\right) \]
    3. times-frac27.6%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \color{blue}{\left(\frac{{D}^{2} \cdot {M}^{2}}{\sqrt{{d}^{2} \cdot \ell}} \cdot \frac{h}{\sqrt{{d}^{2} \cdot \ell}}\right)}\right) \]
    4. pow-prod-down32.8%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{\color{blue}{{\left(D \cdot M\right)}^{2}}}{\sqrt{{d}^{2} \cdot \ell}} \cdot \frac{h}{\sqrt{{d}^{2} \cdot \ell}}\right)\right) \]
    5. sqrt-prod32.8%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{{\left(D \cdot M\right)}^{2}}{\color{blue}{\sqrt{{d}^{2}} \cdot \sqrt{\ell}}} \cdot \frac{h}{\sqrt{{d}^{2} \cdot \ell}}\right)\right) \]
    6. unpow232.8%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{{\left(D \cdot M\right)}^{2}}{\sqrt{\color{blue}{d \cdot d}} \cdot \sqrt{\ell}} \cdot \frac{h}{\sqrt{{d}^{2} \cdot \ell}}\right)\right) \]
    7. sqrt-prod17.6%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{{\left(D \cdot M\right)}^{2}}{\color{blue}{\left(\sqrt{d} \cdot \sqrt{d}\right)} \cdot \sqrt{\ell}} \cdot \frac{h}{\sqrt{{d}^{2} \cdot \ell}}\right)\right) \]
    8. add-sqr-sqrt30.2%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{{\left(D \cdot M\right)}^{2}}{\color{blue}{d} \cdot \sqrt{\ell}} \cdot \frac{h}{\sqrt{{d}^{2} \cdot \ell}}\right)\right) \]
    9. sqrt-prod30.6%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{{\left(D \cdot M\right)}^{2}}{d \cdot \sqrt{\ell}} \cdot \frac{h}{\color{blue}{\sqrt{{d}^{2}} \cdot \sqrt{\ell}}}\right)\right) \]
    10. unpow230.6%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{{\left(D \cdot M\right)}^{2}}{d \cdot \sqrt{\ell}} \cdot \frac{h}{\sqrt{\color{blue}{d \cdot d}} \cdot \sqrt{\ell}}\right)\right) \]
    11. sqrt-prod20.0%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{{\left(D \cdot M\right)}^{2}}{d \cdot \sqrt{\ell}} \cdot \frac{h}{\color{blue}{\left(\sqrt{d} \cdot \sqrt{d}\right)} \cdot \sqrt{\ell}}\right)\right) \]
    12. add-sqr-sqrt35.9%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{{\left(D \cdot M\right)}^{2}}{d \cdot \sqrt{\ell}} \cdot \frac{h}{\color{blue}{d} \cdot \sqrt{\ell}}\right)\right) \]
  6. Applied egg-rr35.9%

    \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \color{blue}{\left(\frac{{\left(D \cdot M\right)}^{2}}{d \cdot \sqrt{\ell}} \cdot \frac{h}{d \cdot \sqrt{\ell}}\right)}\right) \]
  7. Taylor expanded in D around 0 53.3%

    \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \color{blue}{\frac{{D}^{2} \cdot \left({M}^{2} \cdot h\right)}{{d}^{2} \cdot \ell}}\right) \]
  8. Step-by-step derivation
    1. associate-*r*56.0%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \frac{\color{blue}{\left({D}^{2} \cdot {M}^{2}\right) \cdot h}}{{d}^{2} \cdot \ell}\right) \]
    2. unpow256.0%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \frac{\left(\color{blue}{\left(D \cdot D\right)} \cdot {M}^{2}\right) \cdot h}{{d}^{2} \cdot \ell}\right) \]
    3. unpow256.0%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \frac{\left(\left(D \cdot D\right) \cdot \color{blue}{\left(M \cdot M\right)}\right) \cdot h}{{d}^{2} \cdot \ell}\right) \]
    4. swap-sqr67.3%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \frac{\color{blue}{\left(\left(D \cdot M\right) \cdot \left(D \cdot M\right)\right)} \cdot h}{{d}^{2} \cdot \ell}\right) \]
    5. unpow267.3%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \frac{\color{blue}{{\left(D \cdot M\right)}^{2}} \cdot h}{{d}^{2} \cdot \ell}\right) \]
    6. *-commutative67.3%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \frac{\color{blue}{h \cdot {\left(D \cdot M\right)}^{2}}}{{d}^{2} \cdot \ell}\right) \]
    7. *-commutative67.3%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \frac{h \cdot {\left(D \cdot M\right)}^{2}}{\color{blue}{\ell \cdot {d}^{2}}}\right) \]
    8. times-frac63.7%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \color{blue}{\left(\frac{h}{\ell} \cdot \frac{{\left(D \cdot M\right)}^{2}}{{d}^{2}}\right)}\right) \]
    9. unpow263.7%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot \frac{{\left(D \cdot M\right)}^{2}}{\color{blue}{d \cdot d}}\right)\right) \]
    10. associate-/r*73.4%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot \color{blue}{\frac{\frac{{\left(D \cdot M\right)}^{2}}{d}}{d}}\right)\right) \]
    11. unpow273.4%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot \frac{\frac{\color{blue}{\left(D \cdot M\right) \cdot \left(D \cdot M\right)}}{d}}{d}\right)\right) \]
    12. associate-*r/75.0%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot \frac{\color{blue}{\left(D \cdot M\right) \cdot \frac{D \cdot M}{d}}}{d}\right)\right) \]
    13. associate-*l/74.9%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot \frac{\left(D \cdot M\right) \cdot \color{blue}{\left(\frac{D}{d} \cdot M\right)}}{d}\right)\right) \]
    14. associate-*l/75.3%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot \color{blue}{\left(\frac{D \cdot M}{d} \cdot \left(\frac{D}{d} \cdot M\right)\right)}\right)\right) \]
    15. associate-*l/75.8%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot \left(\color{blue}{\left(\frac{D}{d} \cdot M\right)} \cdot \left(\frac{D}{d} \cdot M\right)\right)\right)\right) \]
    16. unpow275.8%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot \color{blue}{{\left(\frac{D}{d} \cdot M\right)}^{2}}\right)\right) \]
    17. *-commutative75.8%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot {\color{blue}{\left(M \cdot \frac{D}{d}\right)}}^{2}\right)\right) \]
  9. Simplified75.8%

    \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \color{blue}{\left(\frac{h}{\ell} \cdot {\left(M \cdot \frac{D}{d}\right)}^{2}\right)}\right) \]
  10. Step-by-step derivation
    1. associate-*l/81.8%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \color{blue}{\frac{h \cdot {\left(M \cdot \frac{D}{d}\right)}^{2}}{\ell}}\right) \]
  11. Applied egg-rr81.8%

    \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \color{blue}{\frac{h \cdot {\left(M \cdot \frac{D}{d}\right)}^{2}}{\ell}}\right) \]
  12. Final simplification81.8%

    \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \frac{h \cdot {\left(M \cdot \frac{D}{d}\right)}^{2}}{\ell}\right) \]
  13. Add Preprocessing

Alternative 5: 78.8% accurate, 7.7× speedup?

\[\begin{array}{l} M_m = \left|M\right| \\ D_m = \left|D\right| \\ [w0, M_m, D_m, h, l, d] = \mathsf{sort}([w0, M_m, D_m, h, l, d])\\ \\ \begin{array}{l} t_0 := M\_m \cdot \frac{D\_m}{d}\\ \mathbf{if}\;M\_m \cdot D\_m \leq 10^{-13}:\\ \;\;\;\;w0\\ \mathbf{else}:\\ \;\;\;\;w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot \left(t\_0 \cdot t\_0\right)\right)\right)\\ \end{array} \end{array} \]
M_m = (fabs.f64 M)
D_m = (fabs.f64 D)
NOTE: w0, M_m, D_m, h, l, and d should be sorted in increasing order before calling this function.
(FPCore (w0 M_m D_m h l d)
 :precision binary64
 (let* ((t_0 (* M_m (/ D_m d))))
   (if (<= (* M_m D_m) 1e-13)
     w0
     (* w0 (+ 1.0 (* -0.125 (* (/ h l) (* t_0 t_0))))))))
M_m = fabs(M);
D_m = fabs(D);
assert(w0 < M_m && M_m < D_m && D_m < h && h < l && l < d);
double code(double w0, double M_m, double D_m, double h, double l, double d) {
	double t_0 = M_m * (D_m / d);
	double tmp;
	if ((M_m * D_m) <= 1e-13) {
		tmp = w0;
	} else {
		tmp = w0 * (1.0 + (-0.125 * ((h / l) * (t_0 * t_0))));
	}
	return tmp;
}
M_m = abs(M)
D_m = abs(D)
NOTE: w0, M_m, D_m, h, l, and d should be sorted in increasing order before calling this function.
real(8) function code(w0, m_m, d_m, h, l, d)
    real(8), intent (in) :: w0
    real(8), intent (in) :: m_m
    real(8), intent (in) :: d_m
    real(8), intent (in) :: h
    real(8), intent (in) :: l
    real(8), intent (in) :: d
    real(8) :: t_0
    real(8) :: tmp
    t_0 = m_m * (d_m / d)
    if ((m_m * d_m) <= 1d-13) then
        tmp = w0
    else
        tmp = w0 * (1.0d0 + ((-0.125d0) * ((h / l) * (t_0 * t_0))))
    end if
    code = tmp
end function
M_m = Math.abs(M);
D_m = Math.abs(D);
assert w0 < M_m && M_m < D_m && D_m < h && h < l && l < d;
public static double code(double w0, double M_m, double D_m, double h, double l, double d) {
	double t_0 = M_m * (D_m / d);
	double tmp;
	if ((M_m * D_m) <= 1e-13) {
		tmp = w0;
	} else {
		tmp = w0 * (1.0 + (-0.125 * ((h / l) * (t_0 * t_0))));
	}
	return tmp;
}
M_m = math.fabs(M)
D_m = math.fabs(D)
[w0, M_m, D_m, h, l, d] = sort([w0, M_m, D_m, h, l, d])
def code(w0, M_m, D_m, h, l, d):
	t_0 = M_m * (D_m / d)
	tmp = 0
	if (M_m * D_m) <= 1e-13:
		tmp = w0
	else:
		tmp = w0 * (1.0 + (-0.125 * ((h / l) * (t_0 * t_0))))
	return tmp
M_m = abs(M)
D_m = abs(D)
w0, M_m, D_m, h, l, d = sort([w0, M_m, D_m, h, l, d])
function code(w0, M_m, D_m, h, l, d)
	t_0 = Float64(M_m * Float64(D_m / d))
	tmp = 0.0
	if (Float64(M_m * D_m) <= 1e-13)
		tmp = w0;
	else
		tmp = Float64(w0 * Float64(1.0 + Float64(-0.125 * Float64(Float64(h / l) * Float64(t_0 * t_0)))));
	end
	return tmp
end
M_m = abs(M);
D_m = abs(D);
w0, M_m, D_m, h, l, d = num2cell(sort([w0, M_m, D_m, h, l, d])){:}
function tmp_2 = code(w0, M_m, D_m, h, l, d)
	t_0 = M_m * (D_m / d);
	tmp = 0.0;
	if ((M_m * D_m) <= 1e-13)
		tmp = w0;
	else
		tmp = w0 * (1.0 + (-0.125 * ((h / l) * (t_0 * t_0))));
	end
	tmp_2 = tmp;
end
M_m = N[Abs[M], $MachinePrecision]
D_m = N[Abs[D], $MachinePrecision]
NOTE: w0, M_m, D_m, h, l, and d should be sorted in increasing order before calling this function.
code[w0_, M$95$m_, D$95$m_, h_, l_, d_] := Block[{t$95$0 = N[(M$95$m * N[(D$95$m / d), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[N[(M$95$m * D$95$m), $MachinePrecision], 1e-13], w0, N[(w0 * N[(1.0 + N[(-0.125 * N[(N[(h / l), $MachinePrecision] * N[(t$95$0 * t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
M_m = \left|M\right|
\\
D_m = \left|D\right|
\\
[w0, M_m, D_m, h, l, d] = \mathsf{sort}([w0, M_m, D_m, h, l, d])\\
\\
\begin{array}{l}
t_0 := M\_m \cdot \frac{D\_m}{d}\\
\mathbf{if}\;M\_m \cdot D\_m \leq 10^{-13}:\\
\;\;\;\;w0\\

\mathbf{else}:\\
\;\;\;\;w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot \left(t\_0 \cdot t\_0\right)\right)\right)\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if (*.f64 M D) < 1e-13

    1. Initial program 84.2%

      \[w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell}} \]
    2. Simplified83.9%

      \[\leadsto \color{blue}{w0 \cdot \sqrt{1 - {\left(\frac{D}{2} \cdot \frac{M}{d}\right)}^{2} \cdot \frac{h}{\ell}}} \]
    3. Add Preprocessing
    4. Taylor expanded in D around 0 75.0%

      \[\leadsto \color{blue}{w0} \]

    if 1e-13 < (*.f64 M D)

    1. Initial program 72.5%

      \[w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell}} \]
    2. Simplified74.7%

      \[\leadsto \color{blue}{w0 \cdot \sqrt{1 - {\left(\frac{D}{2} \cdot \frac{M}{d}\right)}^{2} \cdot \frac{h}{\ell}}} \]
    3. Add Preprocessing
    4. Taylor expanded in D around 0 41.2%

      \[\leadsto w0 \cdot \color{blue}{\left(1 + -0.125 \cdot \frac{{D}^{2} \cdot \left({M}^{2} \cdot h\right)}{{d}^{2} \cdot \ell}\right)} \]
    5. Step-by-step derivation
      1. associate-*r*45.6%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \frac{\color{blue}{\left({D}^{2} \cdot {M}^{2}\right) \cdot h}}{{d}^{2} \cdot \ell}\right) \]
      2. add-sqr-sqrt25.8%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \frac{\left({D}^{2} \cdot {M}^{2}\right) \cdot h}{\color{blue}{\sqrt{{d}^{2} \cdot \ell} \cdot \sqrt{{d}^{2} \cdot \ell}}}\right) \]
      3. times-frac27.9%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \color{blue}{\left(\frac{{D}^{2} \cdot {M}^{2}}{\sqrt{{d}^{2} \cdot \ell}} \cdot \frac{h}{\sqrt{{d}^{2} \cdot \ell}}\right)}\right) \]
      4. pow-prod-down34.5%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{\color{blue}{{\left(D \cdot M\right)}^{2}}}{\sqrt{{d}^{2} \cdot \ell}} \cdot \frac{h}{\sqrt{{d}^{2} \cdot \ell}}\right)\right) \]
      5. sqrt-prod34.5%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{{\left(D \cdot M\right)}^{2}}{\color{blue}{\sqrt{{d}^{2}} \cdot \sqrt{\ell}}} \cdot \frac{h}{\sqrt{{d}^{2} \cdot \ell}}\right)\right) \]
      6. unpow234.5%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{{\left(D \cdot M\right)}^{2}}{\sqrt{\color{blue}{d \cdot d}} \cdot \sqrt{\ell}} \cdot \frac{h}{\sqrt{{d}^{2} \cdot \ell}}\right)\right) \]
      7. sqrt-prod19.0%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{{\left(D \cdot M\right)}^{2}}{\color{blue}{\left(\sqrt{d} \cdot \sqrt{d}\right)} \cdot \sqrt{\ell}} \cdot \frac{h}{\sqrt{{d}^{2} \cdot \ell}}\right)\right) \]
      8. add-sqr-sqrt27.7%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{{\left(D \cdot M\right)}^{2}}{\color{blue}{d} \cdot \sqrt{\ell}} \cdot \frac{h}{\sqrt{{d}^{2} \cdot \ell}}\right)\right) \]
      9. sqrt-prod27.7%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{{\left(D \cdot M\right)}^{2}}{d \cdot \sqrt{\ell}} \cdot \frac{h}{\color{blue}{\sqrt{{d}^{2}} \cdot \sqrt{\ell}}}\right)\right) \]
      10. unpow227.7%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{{\left(D \cdot M\right)}^{2}}{d \cdot \sqrt{\ell}} \cdot \frac{h}{\sqrt{\color{blue}{d \cdot d}} \cdot \sqrt{\ell}}\right)\right) \]
      11. sqrt-prod21.2%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{{\left(D \cdot M\right)}^{2}}{d \cdot \sqrt{\ell}} \cdot \frac{h}{\color{blue}{\left(\sqrt{d} \cdot \sqrt{d}\right)} \cdot \sqrt{\ell}}\right)\right) \]
      12. add-sqr-sqrt36.8%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{{\left(D \cdot M\right)}^{2}}{d \cdot \sqrt{\ell}} \cdot \frac{h}{\color{blue}{d} \cdot \sqrt{\ell}}\right)\right) \]
    6. Applied egg-rr36.8%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \color{blue}{\left(\frac{{\left(D \cdot M\right)}^{2}}{d \cdot \sqrt{\ell}} \cdot \frac{h}{d \cdot \sqrt{\ell}}\right)}\right) \]
    7. Taylor expanded in D around 0 41.2%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \color{blue}{\frac{{D}^{2} \cdot \left({M}^{2} \cdot h\right)}{{d}^{2} \cdot \ell}}\right) \]
    8. Step-by-step derivation
      1. associate-*r*45.6%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \frac{\color{blue}{\left({D}^{2} \cdot {M}^{2}\right) \cdot h}}{{d}^{2} \cdot \ell}\right) \]
      2. unpow245.6%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \frac{\left(\color{blue}{\left(D \cdot D\right)} \cdot {M}^{2}\right) \cdot h}{{d}^{2} \cdot \ell}\right) \]
      3. unpow245.6%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \frac{\left(\left(D \cdot D\right) \cdot \color{blue}{\left(M \cdot M\right)}\right) \cdot h}{{d}^{2} \cdot \ell}\right) \]
      4. swap-sqr58.7%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \frac{\color{blue}{\left(\left(D \cdot M\right) \cdot \left(D \cdot M\right)\right)} \cdot h}{{d}^{2} \cdot \ell}\right) \]
      5. unpow258.7%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \frac{\color{blue}{{\left(D \cdot M\right)}^{2}} \cdot h}{{d}^{2} \cdot \ell}\right) \]
      6. *-commutative58.7%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \frac{\color{blue}{h \cdot {\left(D \cdot M\right)}^{2}}}{{d}^{2} \cdot \ell}\right) \]
      7. *-commutative58.7%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \frac{h \cdot {\left(D \cdot M\right)}^{2}}{\color{blue}{\ell \cdot {d}^{2}}}\right) \]
      8. times-frac56.5%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \color{blue}{\left(\frac{h}{\ell} \cdot \frac{{\left(D \cdot M\right)}^{2}}{{d}^{2}}\right)}\right) \]
      9. unpow256.5%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot \frac{{\left(D \cdot M\right)}^{2}}{\color{blue}{d \cdot d}}\right)\right) \]
      10. associate-/r*58.9%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot \color{blue}{\frac{\frac{{\left(D \cdot M\right)}^{2}}{d}}{d}}\right)\right) \]
      11. unpow258.9%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot \frac{\frac{\color{blue}{\left(D \cdot M\right) \cdot \left(D \cdot M\right)}}{d}}{d}\right)\right) \]
      12. associate-*r/63.2%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot \frac{\color{blue}{\left(D \cdot M\right) \cdot \frac{D \cdot M}{d}}}{d}\right)\right) \]
      13. associate-*l/63.2%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot \frac{\left(D \cdot M\right) \cdot \color{blue}{\left(\frac{D}{d} \cdot M\right)}}{d}\right)\right) \]
      14. associate-*l/65.3%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot \color{blue}{\left(\frac{D \cdot M}{d} \cdot \left(\frac{D}{d} \cdot M\right)\right)}\right)\right) \]
      15. associate-*l/65.5%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot \left(\color{blue}{\left(\frac{D}{d} \cdot M\right)} \cdot \left(\frac{D}{d} \cdot M\right)\right)\right)\right) \]
      16. unpow265.5%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot \color{blue}{{\left(\frac{D}{d} \cdot M\right)}^{2}}\right)\right) \]
      17. *-commutative65.5%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot {\color{blue}{\left(M \cdot \frac{D}{d}\right)}}^{2}\right)\right) \]
    9. Simplified65.5%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \color{blue}{\left(\frac{h}{\ell} \cdot {\left(M \cdot \frac{D}{d}\right)}^{2}\right)}\right) \]
    10. Step-by-step derivation
      1. unpow265.5%

        \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot \color{blue}{\left(\left(M \cdot \frac{D}{d}\right) \cdot \left(M \cdot \frac{D}{d}\right)\right)}\right)\right) \]
    11. Applied egg-rr65.5%

      \[\leadsto w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot \color{blue}{\left(\left(M \cdot \frac{D}{d}\right) \cdot \left(M \cdot \frac{D}{d}\right)\right)}\right)\right) \]
  3. Recombined 2 regimes into one program.
  4. Final simplification73.3%

    \[\leadsto \begin{array}{l} \mathbf{if}\;M \cdot D \leq 10^{-13}:\\ \;\;\;\;w0\\ \mathbf{else}:\\ \;\;\;\;w0 \cdot \left(1 + -0.125 \cdot \left(\frac{h}{\ell} \cdot \left(\left(M \cdot \frac{D}{d}\right) \cdot \left(M \cdot \frac{D}{d}\right)\right)\right)\right)\\ \end{array} \]
  5. Add Preprocessing

Alternative 6: 68.5% accurate, 216.0× speedup?

\[\begin{array}{l} M_m = \left|M\right| \\ D_m = \left|D\right| \\ [w0, M_m, D_m, h, l, d] = \mathsf{sort}([w0, M_m, D_m, h, l, d])\\ \\ w0 \end{array} \]
M_m = (fabs.f64 M)
D_m = (fabs.f64 D)
NOTE: w0, M_m, D_m, h, l, and d should be sorted in increasing order before calling this function.
(FPCore (w0 M_m D_m h l d) :precision binary64 w0)
M_m = fabs(M);
D_m = fabs(D);
assert(w0 < M_m && M_m < D_m && D_m < h && h < l && l < d);
double code(double w0, double M_m, double D_m, double h, double l, double d) {
	return w0;
}
M_m = abs(M)
D_m = abs(D)
NOTE: w0, M_m, D_m, h, l, and d should be sorted in increasing order before calling this function.
real(8) function code(w0, m_m, d_m, h, l, d)
    real(8), intent (in) :: w0
    real(8), intent (in) :: m_m
    real(8), intent (in) :: d_m
    real(8), intent (in) :: h
    real(8), intent (in) :: l
    real(8), intent (in) :: d
    code = w0
end function
M_m = Math.abs(M);
D_m = Math.abs(D);
assert w0 < M_m && M_m < D_m && D_m < h && h < l && l < d;
public static double code(double w0, double M_m, double D_m, double h, double l, double d) {
	return w0;
}
M_m = math.fabs(M)
D_m = math.fabs(D)
[w0, M_m, D_m, h, l, d] = sort([w0, M_m, D_m, h, l, d])
def code(w0, M_m, D_m, h, l, d):
	return w0
M_m = abs(M)
D_m = abs(D)
w0, M_m, D_m, h, l, d = sort([w0, M_m, D_m, h, l, d])
function code(w0, M_m, D_m, h, l, d)
	return w0
end
M_m = abs(M);
D_m = abs(D);
w0, M_m, D_m, h, l, d = num2cell(sort([w0, M_m, D_m, h, l, d])){:}
function tmp = code(w0, M_m, D_m, h, l, d)
	tmp = w0;
end
M_m = N[Abs[M], $MachinePrecision]
D_m = N[Abs[D], $MachinePrecision]
NOTE: w0, M_m, D_m, h, l, and d should be sorted in increasing order before calling this function.
code[w0_, M$95$m_, D$95$m_, h_, l_, d_] := w0
\begin{array}{l}
M_m = \left|M\right|
\\
D_m = \left|D\right|
\\
[w0, M_m, D_m, h, l, d] = \mathsf{sort}([w0, M_m, D_m, h, l, d])\\
\\
w0
\end{array}
Derivation
  1. Initial program 82.1%

    \[w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell}} \]
  2. Simplified82.3%

    \[\leadsto \color{blue}{w0 \cdot \sqrt{1 - {\left(\frac{D}{2} \cdot \frac{M}{d}\right)}^{2} \cdot \frac{h}{\ell}}} \]
  3. Add Preprocessing
  4. Taylor expanded in D around 0 68.2%

    \[\leadsto \color{blue}{w0} \]
  5. Final simplification68.2%

    \[\leadsto w0 \]
  6. Add Preprocessing

Reproduce

?
herbie shell --seed 2024039 
(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))))))