Average Error: 46.8 → 0.0
Time: 2.4s
Precision: 64
\[i \gt 0.0\]
\[\frac{\frac{\left(i \cdot i\right) \cdot \left(i \cdot i\right)}{\left(2 \cdot i\right) \cdot \left(2 \cdot i\right)}}{\left(2 \cdot i\right) \cdot \left(2 \cdot i\right) - 1}\]
\[\begin{array}{l} \mathbf{if}\;i \le 1923.1709384006522:\\ \;\;\;\;\frac{i \cdot i}{\frac{\left(-{1}^{3}\right) + {\left(2 \cdot i\right)}^{6}}{\mathsf{fma}\left({\left(2 \cdot i\right)}^{3}, 2 \cdot i, 1 \cdot \mathsf{fma}\left(2 \cdot i, 2 \cdot i, 1\right)\right)} \cdot \left(2 \cdot 2\right)}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(0.00390625, \frac{1}{{i}^{4}}, \mathsf{fma}\left(0.015625, \frac{1}{{i}^{2}}, 0.0625\right)\right)\\ \end{array}\]
\frac{\frac{\left(i \cdot i\right) \cdot \left(i \cdot i\right)}{\left(2 \cdot i\right) \cdot \left(2 \cdot i\right)}}{\left(2 \cdot i\right) \cdot \left(2 \cdot i\right) - 1}
\begin{array}{l}
\mathbf{if}\;i \le 1923.1709384006522:\\
\;\;\;\;\frac{i \cdot i}{\frac{\left(-{1}^{3}\right) + {\left(2 \cdot i\right)}^{6}}{\mathsf{fma}\left({\left(2 \cdot i\right)}^{3}, 2 \cdot i, 1 \cdot \mathsf{fma}\left(2 \cdot i, 2 \cdot i, 1\right)\right)} \cdot \left(2 \cdot 2\right)}\\

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(0.00390625, \frac{1}{{i}^{4}}, \mathsf{fma}\left(0.015625, \frac{1}{{i}^{2}}, 0.0625\right)\right)\\

\end{array}
double f(double i) {
        double r50850 = i;
        double r50851 = r50850 * r50850;
        double r50852 = r50851 * r50851;
        double r50853 = 2.0;
        double r50854 = r50853 * r50850;
        double r50855 = r50854 * r50854;
        double r50856 = r50852 / r50855;
        double r50857 = 1.0;
        double r50858 = r50855 - r50857;
        double r50859 = r50856 / r50858;
        return r50859;
}

double f(double i) {
        double r50860 = i;
        double r50861 = 1923.1709384006522;
        bool r50862 = r50860 <= r50861;
        double r50863 = r50860 * r50860;
        double r50864 = 1.0;
        double r50865 = 3.0;
        double r50866 = pow(r50864, r50865);
        double r50867 = -r50866;
        double r50868 = 2.0;
        double r50869 = r50868 * r50860;
        double r50870 = 6.0;
        double r50871 = pow(r50869, r50870);
        double r50872 = r50867 + r50871;
        double r50873 = pow(r50869, r50865);
        double r50874 = fma(r50869, r50869, r50864);
        double r50875 = r50864 * r50874;
        double r50876 = fma(r50873, r50869, r50875);
        double r50877 = r50872 / r50876;
        double r50878 = r50868 * r50868;
        double r50879 = r50877 * r50878;
        double r50880 = r50863 / r50879;
        double r50881 = 0.00390625;
        double r50882 = 1.0;
        double r50883 = 4.0;
        double r50884 = pow(r50860, r50883);
        double r50885 = r50882 / r50884;
        double r50886 = 0.015625;
        double r50887 = 2.0;
        double r50888 = pow(r50860, r50887);
        double r50889 = r50882 / r50888;
        double r50890 = 0.0625;
        double r50891 = fma(r50886, r50889, r50890);
        double r50892 = fma(r50881, r50885, r50891);
        double r50893 = r50862 ? r50880 : r50892;
        return r50893;
}

Error

Bits error versus i

Derivation

  1. Split input into 2 regimes
  2. if i < 1923.1709384006522

    1. Initial program 44.9

      \[\frac{\frac{\left(i \cdot i\right) \cdot \left(i \cdot i\right)}{\left(2 \cdot i\right) \cdot \left(2 \cdot i\right)}}{\left(2 \cdot i\right) \cdot \left(2 \cdot i\right) - 1}\]
    2. Simplified0.0

      \[\leadsto \color{blue}{\frac{i \cdot i}{\left(\left(2 \cdot i\right) \cdot \left(2 \cdot i\right) - 1\right) \cdot \left(2 \cdot 2\right)}}\]
    3. Using strategy rm
    4. Applied flip3--0.0

      \[\leadsto \frac{i \cdot i}{\color{blue}{\frac{{\left(\left(2 \cdot i\right) \cdot \left(2 \cdot i\right)\right)}^{3} - {1}^{3}}{\left(\left(2 \cdot i\right) \cdot \left(2 \cdot i\right)\right) \cdot \left(\left(2 \cdot i\right) \cdot \left(2 \cdot i\right)\right) + \left(1 \cdot 1 + \left(\left(2 \cdot i\right) \cdot \left(2 \cdot i\right)\right) \cdot 1\right)}} \cdot \left(2 \cdot 2\right)}\]
    5. Simplified0.0

      \[\leadsto \frac{i \cdot i}{\frac{\color{blue}{\left(-{1}^{3}\right) + {\left(2 \cdot i\right)}^{6}}}{\left(\left(2 \cdot i\right) \cdot \left(2 \cdot i\right)\right) \cdot \left(\left(2 \cdot i\right) \cdot \left(2 \cdot i\right)\right) + \left(1 \cdot 1 + \left(\left(2 \cdot i\right) \cdot \left(2 \cdot i\right)\right) \cdot 1\right)} \cdot \left(2 \cdot 2\right)}\]
    6. Simplified0.0

      \[\leadsto \frac{i \cdot i}{\frac{\left(-{1}^{3}\right) + {\left(2 \cdot i\right)}^{6}}{\color{blue}{\mathsf{fma}\left({\left(2 \cdot i\right)}^{3}, 2 \cdot i, 1 \cdot \mathsf{fma}\left(2 \cdot i, 2 \cdot i, 1\right)\right)}} \cdot \left(2 \cdot 2\right)}\]

    if 1923.1709384006522 < i

    1. Initial program 48.9

      \[\frac{\frac{\left(i \cdot i\right) \cdot \left(i \cdot i\right)}{\left(2 \cdot i\right) \cdot \left(2 \cdot i\right)}}{\left(2 \cdot i\right) \cdot \left(2 \cdot i\right) - 1}\]
    2. Simplified32.2

      \[\leadsto \color{blue}{\frac{i \cdot i}{\left(\left(2 \cdot i\right) \cdot \left(2 \cdot i\right) - 1\right) \cdot \left(2 \cdot 2\right)}}\]
    3. Taylor expanded around inf 0.0

      \[\leadsto \color{blue}{0.00390625 \cdot \frac{1}{{i}^{4}} + \left(0.015625 \cdot \frac{1}{{i}^{2}} + 0.0625\right)}\]
    4. Simplified0.0

      \[\leadsto \color{blue}{\mathsf{fma}\left(0.00390625, \frac{1}{{i}^{4}}, \mathsf{fma}\left(0.015625, \frac{1}{{i}^{2}}, 0.0625\right)\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.0

    \[\leadsto \begin{array}{l} \mathbf{if}\;i \le 1923.1709384006522:\\ \;\;\;\;\frac{i \cdot i}{\frac{\left(-{1}^{3}\right) + {\left(2 \cdot i\right)}^{6}}{\mathsf{fma}\left({\left(2 \cdot i\right)}^{3}, 2 \cdot i, 1 \cdot \mathsf{fma}\left(2 \cdot i, 2 \cdot i, 1\right)\right)} \cdot \left(2 \cdot 2\right)}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(0.00390625, \frac{1}{{i}^{4}}, \mathsf{fma}\left(0.015625, \frac{1}{{i}^{2}}, 0.0625\right)\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2020025 +o rules:numerics
(FPCore (i)
  :name "Octave 3.8, jcobi/4, as called"
  :precision binary64
  :pre (and (> i 0.0))
  (/ (/ (* (* i i) (* i i)) (* (* 2 i) (* 2 i))) (- (* (* 2 i) (* 2 i)) 1)))