Average Error: 34.7 → 30.5
Time: 34.1s
Precision: 64
\[\sqrt{\left(\left(2 \cdot n\right) \cdot U\right) \cdot \left(\left(t - 2 \cdot \frac{\ell \cdot \ell}{Om}\right) - \left(n \cdot {\left(\frac{\ell}{Om}\right)}^{2}\right) \cdot \left(U - U*\right)\right)}\]
\[\begin{array}{l} \mathbf{if}\;t \le 5.921596680002772760806493524139888367658 \cdot 10^{-305} \lor \neg \left(t \le 1.070028174441901986804731946878056420476 \cdot 10^{-172} \lor \neg \left(t \le 2.724465956200713647886827411142398031389 \cdot 10^{192}\right)\right):\\ \;\;\;\;\sqrt{\left(2 \cdot n\right) \cdot \left(U \cdot \left(\left(t - 2 \cdot \frac{\ell}{\frac{Om}{\ell}}\right) - \left(n \cdot {\left(\frac{\ell}{Om}\right)}^{2}\right) \cdot \left(U - U*\right)\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{\left(2 \cdot n\right) \cdot U} \cdot \sqrt{\left(t - 2 \cdot \frac{\ell}{\frac{Om}{\ell}}\right) - \left(n \cdot {\left(\frac{\ell}{Om}\right)}^{2}\right) \cdot \left(U - U*\right)}\\ \end{array}\]
\sqrt{\left(\left(2 \cdot n\right) \cdot U\right) \cdot \left(\left(t - 2 \cdot \frac{\ell \cdot \ell}{Om}\right) - \left(n \cdot {\left(\frac{\ell}{Om}\right)}^{2}\right) \cdot \left(U - U*\right)\right)}
\begin{array}{l}
\mathbf{if}\;t \le 5.921596680002772760806493524139888367658 \cdot 10^{-305} \lor \neg \left(t \le 1.070028174441901986804731946878056420476 \cdot 10^{-172} \lor \neg \left(t \le 2.724465956200713647886827411142398031389 \cdot 10^{192}\right)\right):\\
\;\;\;\;\sqrt{\left(2 \cdot n\right) \cdot \left(U \cdot \left(\left(t - 2 \cdot \frac{\ell}{\frac{Om}{\ell}}\right) - \left(n \cdot {\left(\frac{\ell}{Om}\right)}^{2}\right) \cdot \left(U - U*\right)\right)\right)}\\

\mathbf{else}:\\
\;\;\;\;\sqrt{\left(2 \cdot n\right) \cdot U} \cdot \sqrt{\left(t - 2 \cdot \frac{\ell}{\frac{Om}{\ell}}\right) - \left(n \cdot {\left(\frac{\ell}{Om}\right)}^{2}\right) \cdot \left(U - U*\right)}\\

\end{array}
double f(double n, double U, double t, double l, double Om, double U_) {
        double r193039 = 2.0;
        double r193040 = n;
        double r193041 = r193039 * r193040;
        double r193042 = U;
        double r193043 = r193041 * r193042;
        double r193044 = t;
        double r193045 = l;
        double r193046 = r193045 * r193045;
        double r193047 = Om;
        double r193048 = r193046 / r193047;
        double r193049 = r193039 * r193048;
        double r193050 = r193044 - r193049;
        double r193051 = r193045 / r193047;
        double r193052 = pow(r193051, r193039);
        double r193053 = r193040 * r193052;
        double r193054 = U_;
        double r193055 = r193042 - r193054;
        double r193056 = r193053 * r193055;
        double r193057 = r193050 - r193056;
        double r193058 = r193043 * r193057;
        double r193059 = sqrt(r193058);
        return r193059;
}

double f(double n, double U, double t, double l, double Om, double U_) {
        double r193060 = t;
        double r193061 = 5.921596680002773e-305;
        bool r193062 = r193060 <= r193061;
        double r193063 = 1.070028174441902e-172;
        bool r193064 = r193060 <= r193063;
        double r193065 = 2.7244659562007136e+192;
        bool r193066 = r193060 <= r193065;
        double r193067 = !r193066;
        bool r193068 = r193064 || r193067;
        double r193069 = !r193068;
        bool r193070 = r193062 || r193069;
        double r193071 = 2.0;
        double r193072 = n;
        double r193073 = r193071 * r193072;
        double r193074 = U;
        double r193075 = l;
        double r193076 = Om;
        double r193077 = r193076 / r193075;
        double r193078 = r193075 / r193077;
        double r193079 = r193071 * r193078;
        double r193080 = r193060 - r193079;
        double r193081 = r193075 / r193076;
        double r193082 = pow(r193081, r193071);
        double r193083 = r193072 * r193082;
        double r193084 = U_;
        double r193085 = r193074 - r193084;
        double r193086 = r193083 * r193085;
        double r193087 = r193080 - r193086;
        double r193088 = r193074 * r193087;
        double r193089 = r193073 * r193088;
        double r193090 = sqrt(r193089);
        double r193091 = r193073 * r193074;
        double r193092 = sqrt(r193091);
        double r193093 = sqrt(r193087);
        double r193094 = r193092 * r193093;
        double r193095 = r193070 ? r193090 : r193094;
        return r193095;
}

Error

Bits error versus n

Bits error versus U

Bits error versus t

Bits error versus l

Bits error versus Om

Bits error versus U*

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 2 regimes
  2. if t < 5.921596680002773e-305 or 1.070028174441902e-172 < t < 2.7244659562007136e+192

    1. Initial program 33.9

      \[\sqrt{\left(\left(2 \cdot n\right) \cdot U\right) \cdot \left(\left(t - 2 \cdot \frac{\ell \cdot \ell}{Om}\right) - \left(n \cdot {\left(\frac{\ell}{Om}\right)}^{2}\right) \cdot \left(U - U*\right)\right)}\]
    2. Using strategy rm
    3. Applied associate-/l*31.2

      \[\leadsto \sqrt{\left(\left(2 \cdot n\right) \cdot U\right) \cdot \left(\left(t - 2 \cdot \color{blue}{\frac{\ell}{\frac{Om}{\ell}}}\right) - \left(n \cdot {\left(\frac{\ell}{Om}\right)}^{2}\right) \cdot \left(U - U*\right)\right)}\]
    4. Using strategy rm
    5. Applied associate-*l*31.1

      \[\leadsto \sqrt{\color{blue}{\left(2 \cdot n\right) \cdot \left(U \cdot \left(\left(t - 2 \cdot \frac{\ell}{\frac{Om}{\ell}}\right) - \left(n \cdot {\left(\frac{\ell}{Om}\right)}^{2}\right) \cdot \left(U - U*\right)\right)\right)}}\]

    if 5.921596680002773e-305 < t < 1.070028174441902e-172 or 2.7244659562007136e+192 < t

    1. Initial program 37.9

      \[\sqrt{\left(\left(2 \cdot n\right) \cdot U\right) \cdot \left(\left(t - 2 \cdot \frac{\ell \cdot \ell}{Om}\right) - \left(n \cdot {\left(\frac{\ell}{Om}\right)}^{2}\right) \cdot \left(U - U*\right)\right)}\]
    2. Using strategy rm
    3. Applied associate-/l*34.5

      \[\leadsto \sqrt{\left(\left(2 \cdot n\right) \cdot U\right) \cdot \left(\left(t - 2 \cdot \color{blue}{\frac{\ell}{\frac{Om}{\ell}}}\right) - \left(n \cdot {\left(\frac{\ell}{Om}\right)}^{2}\right) \cdot \left(U - U*\right)\right)}\]
    4. Using strategy rm
    5. Applied sqrt-prod28.0

      \[\leadsto \color{blue}{\sqrt{\left(2 \cdot n\right) \cdot U} \cdot \sqrt{\left(t - 2 \cdot \frac{\ell}{\frac{Om}{\ell}}\right) - \left(n \cdot {\left(\frac{\ell}{Om}\right)}^{2}\right) \cdot \left(U - U*\right)}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification30.5

    \[\leadsto \begin{array}{l} \mathbf{if}\;t \le 5.921596680002772760806493524139888367658 \cdot 10^{-305} \lor \neg \left(t \le 1.070028174441901986804731946878056420476 \cdot 10^{-172} \lor \neg \left(t \le 2.724465956200713647886827411142398031389 \cdot 10^{192}\right)\right):\\ \;\;\;\;\sqrt{\left(2 \cdot n\right) \cdot \left(U \cdot \left(\left(t - 2 \cdot \frac{\ell}{\frac{Om}{\ell}}\right) - \left(n \cdot {\left(\frac{\ell}{Om}\right)}^{2}\right) \cdot \left(U - U*\right)\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{\left(2 \cdot n\right) \cdot U} \cdot \sqrt{\left(t - 2 \cdot \frac{\ell}{\frac{Om}{\ell}}\right) - \left(n \cdot {\left(\frac{\ell}{Om}\right)}^{2}\right) \cdot \left(U - U*\right)}\\ \end{array}\]

Reproduce

herbie shell --seed 2019353 +o rules:numerics
(FPCore (n U t l Om U*)
  :name "Toniolo and Linder, Equation (13)"
  :precision binary64
  (sqrt (* (* (* 2 n) U) (- (- t (* 2 (/ (* l l) Om))) (* (* n (pow (/ l Om) 2)) (- U U*))))))