| Alternative 1 | |
|---|---|
| Accuracy | 89.7% |
| Cost | 14416 |

(FPCore (c0 A V l) :precision binary64 (* c0 (sqrt (/ A (* V l)))))
(FPCore (c0 A V l)
:precision binary64
(if (<= (* V l) (- INFINITY))
(/ (* c0 (sqrt (/ A V))) (sqrt l))
(if (<= (* V l) -5e-300)
(* c0 (/ (sqrt (- A)) (sqrt (* V (- l)))))
(if (<= (* V l) 0.0)
(* c0 (/ (/ 1.0 (sqrt (/ V A))) (sqrt l)))
(if (<= (* V l) 2e+293)
(/ c0 (/ (sqrt (* V l)) (sqrt A)))
(* c0 (/ (sqrt (/ (- A) l)) (sqrt (- V)))))))))double code(double c0, double A, double V, double l) {
return c0 * sqrt((A / (V * l)));
}
double code(double c0, double A, double V, double l) {
double tmp;
if ((V * l) <= -((double) INFINITY)) {
tmp = (c0 * sqrt((A / V))) / sqrt(l);
} else if ((V * l) <= -5e-300) {
tmp = c0 * (sqrt(-A) / sqrt((V * -l)));
} else if ((V * l) <= 0.0) {
tmp = c0 * ((1.0 / sqrt((V / A))) / sqrt(l));
} else if ((V * l) <= 2e+293) {
tmp = c0 / (sqrt((V * l)) / sqrt(A));
} else {
tmp = c0 * (sqrt((-A / l)) / sqrt(-V));
}
return tmp;
}
public static double code(double c0, double A, double V, double l) {
return c0 * Math.sqrt((A / (V * l)));
}
public static double code(double c0, double A, double V, double l) {
double tmp;
if ((V * l) <= -Double.POSITIVE_INFINITY) {
tmp = (c0 * Math.sqrt((A / V))) / Math.sqrt(l);
} else if ((V * l) <= -5e-300) {
tmp = c0 * (Math.sqrt(-A) / Math.sqrt((V * -l)));
} else if ((V * l) <= 0.0) {
tmp = c0 * ((1.0 / Math.sqrt((V / A))) / Math.sqrt(l));
} else if ((V * l) <= 2e+293) {
tmp = c0 / (Math.sqrt((V * l)) / Math.sqrt(A));
} else {
tmp = c0 * (Math.sqrt((-A / l)) / Math.sqrt(-V));
}
return tmp;
}
def code(c0, A, V, l): return c0 * math.sqrt((A / (V * l)))
def code(c0, A, V, l): tmp = 0 if (V * l) <= -math.inf: tmp = (c0 * math.sqrt((A / V))) / math.sqrt(l) elif (V * l) <= -5e-300: tmp = c0 * (math.sqrt(-A) / math.sqrt((V * -l))) elif (V * l) <= 0.0: tmp = c0 * ((1.0 / math.sqrt((V / A))) / math.sqrt(l)) elif (V * l) <= 2e+293: tmp = c0 / (math.sqrt((V * l)) / math.sqrt(A)) else: tmp = c0 * (math.sqrt((-A / l)) / math.sqrt(-V)) return tmp
function code(c0, A, V, l) return Float64(c0 * sqrt(Float64(A / Float64(V * l)))) end
function code(c0, A, V, l) tmp = 0.0 if (Float64(V * l) <= Float64(-Inf)) tmp = Float64(Float64(c0 * sqrt(Float64(A / V))) / sqrt(l)); elseif (Float64(V * l) <= -5e-300) tmp = Float64(c0 * Float64(sqrt(Float64(-A)) / sqrt(Float64(V * Float64(-l))))); elseif (Float64(V * l) <= 0.0) tmp = Float64(c0 * Float64(Float64(1.0 / sqrt(Float64(V / A))) / sqrt(l))); elseif (Float64(V * l) <= 2e+293) tmp = Float64(c0 / Float64(sqrt(Float64(V * l)) / sqrt(A))); else tmp = Float64(c0 * Float64(sqrt(Float64(Float64(-A) / l)) / sqrt(Float64(-V)))); end return tmp end
function tmp = code(c0, A, V, l) tmp = c0 * sqrt((A / (V * l))); end
function tmp_2 = code(c0, A, V, l) tmp = 0.0; if ((V * l) <= -Inf) tmp = (c0 * sqrt((A / V))) / sqrt(l); elseif ((V * l) <= -5e-300) tmp = c0 * (sqrt(-A) / sqrt((V * -l))); elseif ((V * l) <= 0.0) tmp = c0 * ((1.0 / sqrt((V / A))) / sqrt(l)); elseif ((V * l) <= 2e+293) tmp = c0 / (sqrt((V * l)) / sqrt(A)); else tmp = c0 * (sqrt((-A / l)) / sqrt(-V)); end tmp_2 = tmp; end
code[c0_, A_, V_, l_] := N[(c0 * N[Sqrt[N[(A / N[(V * l), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
code[c0_, A_, V_, l_] := If[LessEqual[N[(V * l), $MachinePrecision], (-Infinity)], N[(N[(c0 * N[Sqrt[N[(A / V), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[Sqrt[l], $MachinePrecision]), $MachinePrecision], If[LessEqual[N[(V * l), $MachinePrecision], -5e-300], N[(c0 * N[(N[Sqrt[(-A)], $MachinePrecision] / N[Sqrt[N[(V * (-l)), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[N[(V * l), $MachinePrecision], 0.0], N[(c0 * N[(N[(1.0 / N[Sqrt[N[(V / A), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[Sqrt[l], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[N[(V * l), $MachinePrecision], 2e+293], N[(c0 / N[(N[Sqrt[N[(V * l), $MachinePrecision]], $MachinePrecision] / N[Sqrt[A], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(c0 * N[(N[Sqrt[N[((-A) / l), $MachinePrecision]], $MachinePrecision] / N[Sqrt[(-V)], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]
c0 \cdot \sqrt{\frac{A}{V \cdot \ell}}
\begin{array}{l}
\mathbf{if}\;V \cdot \ell \leq -\infty:\\
\;\;\;\;\frac{c0 \cdot \sqrt{\frac{A}{V}}}{\sqrt{\ell}}\\
\mathbf{elif}\;V \cdot \ell \leq -5 \cdot 10^{-300}:\\
\;\;\;\;c0 \cdot \frac{\sqrt{-A}}{\sqrt{V \cdot \left(-\ell\right)}}\\
\mathbf{elif}\;V \cdot \ell \leq 0:\\
\;\;\;\;c0 \cdot \frac{\frac{1}{\sqrt{\frac{V}{A}}}}{\sqrt{\ell}}\\
\mathbf{elif}\;V \cdot \ell \leq 2 \cdot 10^{+293}:\\
\;\;\;\;\frac{c0}{\frac{\sqrt{V \cdot \ell}}{\sqrt{A}}}\\
\mathbf{else}:\\
\;\;\;\;c0 \cdot \frac{\sqrt{\frac{-A}{\ell}}}{\sqrt{-V}}\\
\end{array}
Herbie found 12 alternatives:
| Alternative | Accuracy | Speedup |
|---|
Results
if (*.f64 V l) < -inf.0Initial program 47.6%
Applied egg-rr73.9%
[Start]47.6% | \[ c0 \cdot \sqrt{\frac{A}{V \cdot \ell}}
\] |
|---|---|
associate-/r* [=>]73.9% | \[ c0 \cdot \sqrt{\color{blue}{\frac{\frac{A}{V}}{\ell}}}
\] |
div-inv [=>]73.9% | \[ c0 \cdot \sqrt{\color{blue}{\frac{A}{V} \cdot \frac{1}{\ell}}}
\] |
Applied egg-rr27.6%
[Start]73.9% | \[ c0 \cdot \sqrt{\frac{A}{V} \cdot \frac{1}{\ell}}
\] |
|---|---|
sqrt-prod [=>]27.6% | \[ c0 \cdot \color{blue}{\left(\sqrt{\frac{A}{V}} \cdot \sqrt{\frac{1}{\ell}}\right)}
\] |
associate-*r* [=>]27.6% | \[ \color{blue}{\left(c0 \cdot \sqrt{\frac{A}{V}}\right) \cdot \sqrt{\frac{1}{\ell}}}
\] |
sqrt-div [=>]27.6% | \[ \left(c0 \cdot \sqrt{\frac{A}{V}}\right) \cdot \color{blue}{\frac{\sqrt{1}}{\sqrt{\ell}}}
\] |
metadata-eval [=>]27.6% | \[ \left(c0 \cdot \sqrt{\frac{A}{V}}\right) \cdot \frac{\color{blue}{1}}{\sqrt{\ell}}
\] |
div-inv [<=]27.6% | \[ \color{blue}{\frac{c0 \cdot \sqrt{\frac{A}{V}}}{\sqrt{\ell}}}
\] |
if -inf.0 < (*.f64 V l) < -4.99999999999999996e-300Initial program 92.8%
Applied egg-rr99.4%
[Start]92.8% | \[ c0 \cdot \sqrt{\frac{A}{V \cdot \ell}}
\] |
|---|---|
frac-2neg [=>]92.8% | \[ c0 \cdot \sqrt{\color{blue}{\frac{-A}{-V \cdot \ell}}}
\] |
sqrt-div [=>]99.4% | \[ c0 \cdot \color{blue}{\frac{\sqrt{-A}}{\sqrt{-V \cdot \ell}}}
\] |
*-commutative [=>]99.4% | \[ c0 \cdot \frac{\sqrt{-A}}{\sqrt{-\color{blue}{\ell \cdot V}}}
\] |
distribute-rgt-neg-in [=>]99.4% | \[ c0 \cdot \frac{\sqrt{-A}}{\sqrt{\color{blue}{\ell \cdot \left(-V\right)}}}
\] |
if -4.99999999999999996e-300 < (*.f64 V l) < -0.0Initial program 35.7%
Applied egg-rr39.5%
[Start]35.7% | \[ c0 \cdot \sqrt{\frac{A}{V \cdot \ell}}
\] |
|---|---|
associate-/r* [=>]68.4% | \[ c0 \cdot \sqrt{\color{blue}{\frac{\frac{A}{V}}{\ell}}}
\] |
sqrt-div [=>]39.5% | \[ c0 \cdot \color{blue}{\frac{\sqrt{\frac{A}{V}}}{\sqrt{\ell}}}
\] |
Applied egg-rr39.6%
[Start]39.5% | \[ c0 \cdot \frac{\sqrt{\frac{A}{V}}}{\sqrt{\ell}}
\] |
|---|---|
clear-num [=>]39.5% | \[ c0 \cdot \frac{\sqrt{\color{blue}{\frac{1}{\frac{V}{A}}}}}{\sqrt{\ell}}
\] |
sqrt-div [=>]39.6% | \[ c0 \cdot \frac{\color{blue}{\frac{\sqrt{1}}{\sqrt{\frac{V}{A}}}}}{\sqrt{\ell}}
\] |
metadata-eval [=>]39.6% | \[ c0 \cdot \frac{\frac{\color{blue}{1}}{\sqrt{\frac{V}{A}}}}{\sqrt{\ell}}
\] |
if -0.0 < (*.f64 V l) < 1.9999999999999998e293Initial program 88.8%
Applied egg-rr96.4%
[Start]88.8% | \[ c0 \cdot \sqrt{\frac{A}{V \cdot \ell}}
\] |
|---|---|
sqrt-div [=>]99.1% | \[ c0 \cdot \color{blue}{\frac{\sqrt{A}}{\sqrt{V \cdot \ell}}}
\] |
associate-*r/ [=>]96.4% | \[ \color{blue}{\frac{c0 \cdot \sqrt{A}}{\sqrt{V \cdot \ell}}}
\] |
Simplified99.3%
[Start]96.4% | \[ \frac{c0 \cdot \sqrt{A}}{\sqrt{V \cdot \ell}}
\] |
|---|---|
associate-/l* [=>]99.3% | \[ \color{blue}{\frac{c0}{\frac{\sqrt{V \cdot \ell}}{\sqrt{A}}}}
\] |
if 1.9999999999999998e293 < (*.f64 V l) Initial program 38.9%
Applied egg-rr66.2%
[Start]38.9% | \[ c0 \cdot \sqrt{\frac{A}{V \cdot \ell}}
\] |
|---|---|
associate-/r* [=>]66.4% | \[ c0 \cdot \sqrt{\color{blue}{\frac{\frac{A}{V}}{\ell}}}
\] |
div-inv [=>]66.2% | \[ c0 \cdot \sqrt{\color{blue}{\frac{A}{V} \cdot \frac{1}{\ell}}}
\] |
Applied egg-rr38.9%
[Start]66.2% | \[ c0 \cdot \sqrt{\frac{A}{V} \cdot \frac{1}{\ell}}
\] |
|---|---|
un-div-inv [=>]66.4% | \[ c0 \cdot \sqrt{\color{blue}{\frac{\frac{A}{V}}{\ell}}}
\] |
associate-/r* [<=]38.9% | \[ c0 \cdot \sqrt{\color{blue}{\frac{A}{V \cdot \ell}}}
\] |
clear-num [=>]38.9% | \[ c0 \cdot \sqrt{\color{blue}{\frac{1}{\frac{V \cdot \ell}{A}}}}
\] |
associate-*r/ [<=]66.4% | \[ c0 \cdot \sqrt{\frac{1}{\color{blue}{V \cdot \frac{\ell}{A}}}}
\] |
inv-pow [=>]66.4% | \[ c0 \cdot \sqrt{\color{blue}{{\left(V \cdot \frac{\ell}{A}\right)}^{-1}}}
\] |
metadata-eval [<=]66.4% | \[ c0 \cdot \sqrt{{\left(V \cdot \frac{\ell}{A}\right)}^{\color{blue}{\left(-0.5 + -0.5\right)}}}
\] |
pow-prod-up [<=]66.4% | \[ c0 \cdot \sqrt{\color{blue}{{\left(V \cdot \frac{\ell}{A}\right)}^{-0.5} \cdot {\left(V \cdot \frac{\ell}{A}\right)}^{-0.5}}}
\] |
sqrt-unprod [<=]66.2% | \[ c0 \cdot \color{blue}{\left(\sqrt{{\left(V \cdot \frac{\ell}{A}\right)}^{-0.5}} \cdot \sqrt{{\left(V \cdot \frac{\ell}{A}\right)}^{-0.5}}\right)}
\] |
add-sqr-sqrt [<=]66.4% | \[ c0 \cdot \color{blue}{{\left(V \cdot \frac{\ell}{A}\right)}^{-0.5}}
\] |
add-sqr-sqrt [=>]66.2% | \[ c0 \cdot {\color{blue}{\left(\sqrt{V \cdot \frac{\ell}{A}} \cdot \sqrt{V \cdot \frac{\ell}{A}}\right)}}^{-0.5}
\] |
unpow-prod-down [=>]66.1% | \[ c0 \cdot \color{blue}{\left({\left(\sqrt{V \cdot \frac{\ell}{A}}\right)}^{-0.5} \cdot {\left(\sqrt{V \cdot \frac{\ell}{A}}\right)}^{-0.5}\right)}
\] |
associate-*r/ [=>]38.9% | \[ c0 \cdot \left({\left(\sqrt{\color{blue}{\frac{V \cdot \ell}{A}}}\right)}^{-0.5} \cdot {\left(\sqrt{V \cdot \frac{\ell}{A}}\right)}^{-0.5}\right)
\] |
associate-*r/ [=>]38.9% | \[ c0 \cdot \left({\left(\sqrt{\frac{V \cdot \ell}{A}}\right)}^{-0.5} \cdot {\left(\sqrt{\color{blue}{\frac{V \cdot \ell}{A}}}\right)}^{-0.5}\right)
\] |
Simplified66.3%
[Start]38.9% | \[ c0 \cdot \left({\left(\sqrt{\frac{V \cdot \ell}{A}}\right)}^{-0.5} \cdot {\left(\sqrt{\frac{V \cdot \ell}{A}}\right)}^{-0.5}\right)
\] |
|---|---|
pow-sqr [=>]38.9% | \[ c0 \cdot \color{blue}{{\left(\sqrt{\frac{V \cdot \ell}{A}}\right)}^{\left(2 \cdot -0.5\right)}}
\] |
associate-*l/ [<=]66.3% | \[ c0 \cdot {\left(\sqrt{\color{blue}{\frac{V}{A} \cdot \ell}}\right)}^{\left(2 \cdot -0.5\right)}
\] |
*-commutative [=>]66.3% | \[ c0 \cdot {\left(\sqrt{\color{blue}{\ell \cdot \frac{V}{A}}}\right)}^{\left(2 \cdot -0.5\right)}
\] |
metadata-eval [=>]66.3% | \[ c0 \cdot {\left(\sqrt{\ell \cdot \frac{V}{A}}\right)}^{\color{blue}{-1}}
\] |
Applied egg-rr65.3%
[Start]66.3% | \[ c0 \cdot {\left(\sqrt{\ell \cdot \frac{V}{A}}\right)}^{-1}
\] |
|---|---|
unpow-1 [=>]66.3% | \[ c0 \cdot \color{blue}{\frac{1}{\sqrt{\ell \cdot \frac{V}{A}}}}
\] |
associate-*r/ [=>]38.9% | \[ c0 \cdot \frac{1}{\sqrt{\color{blue}{\frac{\ell \cdot V}{A}}}}
\] |
*-commutative [<=]38.9% | \[ c0 \cdot \frac{1}{\sqrt{\frac{\color{blue}{V \cdot \ell}}{A}}}
\] |
sqrt-undiv [<=]38.9% | \[ c0 \cdot \frac{1}{\color{blue}{\frac{\sqrt{V \cdot \ell}}{\sqrt{A}}}}
\] |
clear-num [<=]38.9% | \[ c0 \cdot \color{blue}{\frac{\sqrt{A}}{\sqrt{V \cdot \ell}}}
\] |
sqrt-div [<=]38.9% | \[ c0 \cdot \color{blue}{\sqrt{\frac{A}{V \cdot \ell}}}
\] |
associate-/l/ [<=]66.4% | \[ c0 \cdot \sqrt{\color{blue}{\frac{\frac{A}{\ell}}{V}}}
\] |
frac-2neg [=>]66.4% | \[ c0 \cdot \sqrt{\color{blue}{\frac{-\frac{A}{\ell}}{-V}}}
\] |
sqrt-div [=>]65.3% | \[ c0 \cdot \color{blue}{\frac{\sqrt{-\frac{A}{\ell}}}{\sqrt{-V}}}
\] |
Simplified65.3%
[Start]65.3% | \[ c0 \cdot \frac{\sqrt{-\frac{A}{\ell}}}{\sqrt{-V}}
\] |
|---|---|
distribute-neg-frac [=>]65.3% | \[ c0 \cdot \frac{\sqrt{\color{blue}{\frac{-A}{\ell}}}}{\sqrt{-V}}
\] |
Final simplification85.9%
| Alternative 1 | |
|---|---|
| Accuracy | 89.7% |
| Cost | 14416 |
| Alternative 2 | |
|---|---|
| Accuracy | 88.6% |
| Cost | 20036 |
| Alternative 3 | |
|---|---|
| Accuracy | 89.6% |
| Cost | 14416 |
| Alternative 4 | |
|---|---|
| Accuracy | 85.0% |
| Cost | 14288 |
| Alternative 5 | |
|---|---|
| Accuracy | 86.0% |
| Cost | 14288 |
| Alternative 6 | |
|---|---|
| Accuracy | 86.2% |
| Cost | 14288 |
| Alternative 7 | |
|---|---|
| Accuracy | 86.0% |
| Cost | 14288 |
| Alternative 8 | |
|---|---|
| Accuracy | 90.6% |
| Cost | 14288 |
| Alternative 9 | |
|---|---|
| Accuracy | 79.9% |
| Cost | 13380 |
| Alternative 10 | |
|---|---|
| Accuracy | 79.7% |
| Cost | 7688 |
| Alternative 11 | |
|---|---|
| Accuracy | 79.2% |
| Cost | 7625 |
| Alternative 12 | |
|---|---|
| Accuracy | 73.0% |
| Cost | 6848 |
herbie shell --seed 2023258
(FPCore (c0 A V l)
:name "Henrywood and Agarwal, Equation (3)"
:precision binary64
(* c0 (sqrt (/ A (* V l)))))