Average Error: 19.0 → 12.3
Time: 19.7s
Precision: 64
\[c0 \cdot \sqrt{\frac{A}{V \cdot \ell}}\]
\[\begin{array}{l} \mathbf{if}\;V \cdot \ell = -\infty:\\ \;\;\;\;\sqrt{\frac{\frac{A}{V}}{\ell}} \cdot c0\\ \mathbf{elif}\;V \cdot \ell \le -3.040558777379324109381380700041437977209 \cdot 10^{-218}:\\ \;\;\;\;\sqrt{\frac{1}{V \cdot \ell} \cdot A} \cdot c0\\ \mathbf{elif}\;V \cdot \ell \le 7.375757807070217284048742538091816401626 \cdot 10^{-319}:\\ \;\;\;\;\left(\sqrt{\frac{A}{\ell}} \cdot \sqrt{\frac{1}{V}}\right) \cdot c0\\ \mathbf{elif}\;V \cdot \ell \le 2.336051817442314793904355180504260870482 \cdot 10^{285}:\\ \;\;\;\;\frac{c0 \cdot \sqrt{A}}{\sqrt{V \cdot \ell}}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{\frac{\frac{A}{V}}{\ell}} \cdot c0\\ \end{array}\]
c0 \cdot \sqrt{\frac{A}{V \cdot \ell}}
\begin{array}{l}
\mathbf{if}\;V \cdot \ell = -\infty:\\
\;\;\;\;\sqrt{\frac{\frac{A}{V}}{\ell}} \cdot c0\\

\mathbf{elif}\;V \cdot \ell \le -3.040558777379324109381380700041437977209 \cdot 10^{-218}:\\
\;\;\;\;\sqrt{\frac{1}{V \cdot \ell} \cdot A} \cdot c0\\

\mathbf{elif}\;V \cdot \ell \le 7.375757807070217284048742538091816401626 \cdot 10^{-319}:\\
\;\;\;\;\left(\sqrt{\frac{A}{\ell}} \cdot \sqrt{\frac{1}{V}}\right) \cdot c0\\

\mathbf{elif}\;V \cdot \ell \le 2.336051817442314793904355180504260870482 \cdot 10^{285}:\\
\;\;\;\;\frac{c0 \cdot \sqrt{A}}{\sqrt{V \cdot \ell}}\\

\mathbf{else}:\\
\;\;\;\;\sqrt{\frac{\frac{A}{V}}{\ell}} \cdot c0\\

\end{array}
double f(double c0, double A, double V, double l) {
        double r5927668 = c0;
        double r5927669 = A;
        double r5927670 = V;
        double r5927671 = l;
        double r5927672 = r5927670 * r5927671;
        double r5927673 = r5927669 / r5927672;
        double r5927674 = sqrt(r5927673);
        double r5927675 = r5927668 * r5927674;
        return r5927675;
}

double f(double c0, double A, double V, double l) {
        double r5927676 = V;
        double r5927677 = l;
        double r5927678 = r5927676 * r5927677;
        double r5927679 = -inf.0;
        bool r5927680 = r5927678 <= r5927679;
        double r5927681 = A;
        double r5927682 = r5927681 / r5927676;
        double r5927683 = r5927682 / r5927677;
        double r5927684 = sqrt(r5927683);
        double r5927685 = c0;
        double r5927686 = r5927684 * r5927685;
        double r5927687 = -3.040558777379324e-218;
        bool r5927688 = r5927678 <= r5927687;
        double r5927689 = 1.0;
        double r5927690 = r5927689 / r5927678;
        double r5927691 = r5927690 * r5927681;
        double r5927692 = sqrt(r5927691);
        double r5927693 = r5927692 * r5927685;
        double r5927694 = 7.3757578070702e-319;
        bool r5927695 = r5927678 <= r5927694;
        double r5927696 = r5927681 / r5927677;
        double r5927697 = sqrt(r5927696);
        double r5927698 = r5927689 / r5927676;
        double r5927699 = sqrt(r5927698);
        double r5927700 = r5927697 * r5927699;
        double r5927701 = r5927700 * r5927685;
        double r5927702 = 2.3360518174423148e+285;
        bool r5927703 = r5927678 <= r5927702;
        double r5927704 = sqrt(r5927681);
        double r5927705 = r5927685 * r5927704;
        double r5927706 = sqrt(r5927678);
        double r5927707 = r5927705 / r5927706;
        double r5927708 = r5927703 ? r5927707 : r5927686;
        double r5927709 = r5927695 ? r5927701 : r5927708;
        double r5927710 = r5927688 ? r5927693 : r5927709;
        double r5927711 = r5927680 ? r5927686 : r5927710;
        return r5927711;
}

Error

Bits error versus c0

Bits error versus A

Bits error versus V

Bits error versus l

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 4 regimes
  2. if (* V l) < -inf.0 or 2.3360518174423148e+285 < (* V l)

    1. Initial program 40.2

      \[c0 \cdot \sqrt{\frac{A}{V \cdot \ell}}\]
    2. Using strategy rm
    3. Applied associate-/r*22.5

      \[\leadsto c0 \cdot \sqrt{\color{blue}{\frac{\frac{A}{V}}{\ell}}}\]

    if -inf.0 < (* V l) < -3.040558777379324e-218

    1. Initial program 8.7

      \[c0 \cdot \sqrt{\frac{A}{V \cdot \ell}}\]
    2. Using strategy rm
    3. Applied div-inv8.7

      \[\leadsto c0 \cdot \sqrt{\color{blue}{A \cdot \frac{1}{V \cdot \ell}}}\]

    if -3.040558777379324e-218 < (* V l) < 7.3757578070702e-319

    1. Initial program 50.4

      \[c0 \cdot \sqrt{\frac{A}{V \cdot \ell}}\]
    2. Using strategy rm
    3. Applied *-un-lft-identity50.4

      \[\leadsto c0 \cdot \sqrt{\frac{\color{blue}{1 \cdot A}}{V \cdot \ell}}\]
    4. Applied times-frac31.9

      \[\leadsto c0 \cdot \sqrt{\color{blue}{\frac{1}{V} \cdot \frac{A}{\ell}}}\]
    5. Applied sqrt-prod39.3

      \[\leadsto c0 \cdot \color{blue}{\left(\sqrt{\frac{1}{V}} \cdot \sqrt{\frac{A}{\ell}}\right)}\]

    if 7.3757578070702e-319 < (* V l) < 2.3360518174423148e+285

    1. Initial program 9.9

      \[c0 \cdot \sqrt{\frac{A}{V \cdot \ell}}\]
    2. Using strategy rm
    3. Applied sqrt-div0.5

      \[\leadsto c0 \cdot \color{blue}{\frac{\sqrt{A}}{\sqrt{V \cdot \ell}}}\]
    4. Applied associate-*r/3.0

      \[\leadsto \color{blue}{\frac{c0 \cdot \sqrt{A}}{\sqrt{V \cdot \ell}}}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification12.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;V \cdot \ell = -\infty:\\ \;\;\;\;\sqrt{\frac{\frac{A}{V}}{\ell}} \cdot c0\\ \mathbf{elif}\;V \cdot \ell \le -3.040558777379324109381380700041437977209 \cdot 10^{-218}:\\ \;\;\;\;\sqrt{\frac{1}{V \cdot \ell} \cdot A} \cdot c0\\ \mathbf{elif}\;V \cdot \ell \le 7.375757807070217284048742538091816401626 \cdot 10^{-319}:\\ \;\;\;\;\left(\sqrt{\frac{A}{\ell}} \cdot \sqrt{\frac{1}{V}}\right) \cdot c0\\ \mathbf{elif}\;V \cdot \ell \le 2.336051817442314793904355180504260870482 \cdot 10^{285}:\\ \;\;\;\;\frac{c0 \cdot \sqrt{A}}{\sqrt{V \cdot \ell}}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{\frac{\frac{A}{V}}{\ell}} \cdot c0\\ \end{array}\]

Reproduce

herbie shell --seed 2019171 +o rules:numerics
(FPCore (c0 A V l)
  :name "Henrywood and Agarwal, Equation (3)"
  (* c0 (sqrt (/ A (* V l)))))