Average Error: 0.2 → 0.2
Time: 29.2s
Precision: 64
\[\left|\frac{1}{\sqrt{\pi}} \cdot \left(\left(\left(2 \cdot \left|x\right| + \frac{2}{3} \cdot \left(\left(\left|x\right| \cdot \left|x\right|\right) \cdot \left|x\right|\right)\right) + \frac{1}{5} \cdot \left(\left(\left(\left(\left|x\right| \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \left|x\right|\right)\right) + \frac{1}{21} \cdot \left(\left(\left(\left(\left(\left(\left|x\right| \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \left|x\right|\right)\right)\right|\]
\[\left|\frac{1}{\sqrt{\pi}} \cdot \left(\left(\frac{1}{5} \cdot {\left(\left|x\right|\right)}^{4} + \frac{1}{\sqrt{21}} \cdot \left({\left(\left|x\right|\right)}^{6} \cdot \frac{1}{\sqrt{21}}\right)\right) \cdot \left|x\right| + \mathsf{fma}\left(2, \left|x\right|, \frac{2}{3} \cdot {\left(\left|x\right|\right)}^{3}\right)\right)\right|\]
\left|\frac{1}{\sqrt{\pi}} \cdot \left(\left(\left(2 \cdot \left|x\right| + \frac{2}{3} \cdot \left(\left(\left|x\right| \cdot \left|x\right|\right) \cdot \left|x\right|\right)\right) + \frac{1}{5} \cdot \left(\left(\left(\left(\left|x\right| \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \left|x\right|\right)\right) + \frac{1}{21} \cdot \left(\left(\left(\left(\left(\left(\left|x\right| \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \left|x\right|\right)\right)\right|
\left|\frac{1}{\sqrt{\pi}} \cdot \left(\left(\frac{1}{5} \cdot {\left(\left|x\right|\right)}^{4} + \frac{1}{\sqrt{21}} \cdot \left({\left(\left|x\right|\right)}^{6} \cdot \frac{1}{\sqrt{21}}\right)\right) \cdot \left|x\right| + \mathsf{fma}\left(2, \left|x\right|, \frac{2}{3} \cdot {\left(\left|x\right|\right)}^{3}\right)\right)\right|
double f(double x) {
        double r106810 = 1.0;
        double r106811 = atan2(1.0, 0.0);
        double r106812 = sqrt(r106811);
        double r106813 = r106810 / r106812;
        double r106814 = 2.0;
        double r106815 = x;
        double r106816 = fabs(r106815);
        double r106817 = r106814 * r106816;
        double r106818 = 3.0;
        double r106819 = r106814 / r106818;
        double r106820 = r106816 * r106816;
        double r106821 = r106820 * r106816;
        double r106822 = r106819 * r106821;
        double r106823 = r106817 + r106822;
        double r106824 = 5.0;
        double r106825 = r106810 / r106824;
        double r106826 = r106821 * r106816;
        double r106827 = r106826 * r106816;
        double r106828 = r106825 * r106827;
        double r106829 = r106823 + r106828;
        double r106830 = 21.0;
        double r106831 = r106810 / r106830;
        double r106832 = r106827 * r106816;
        double r106833 = r106832 * r106816;
        double r106834 = r106831 * r106833;
        double r106835 = r106829 + r106834;
        double r106836 = r106813 * r106835;
        double r106837 = fabs(r106836);
        return r106837;
}

double f(double x) {
        double r106838 = 1.0;
        double r106839 = atan2(1.0, 0.0);
        double r106840 = sqrt(r106839);
        double r106841 = r106838 / r106840;
        double r106842 = 5.0;
        double r106843 = r106838 / r106842;
        double r106844 = x;
        double r106845 = fabs(r106844);
        double r106846 = 4.0;
        double r106847 = pow(r106845, r106846);
        double r106848 = r106843 * r106847;
        double r106849 = 1.0;
        double r106850 = 21.0;
        double r106851 = sqrt(r106850);
        double r106852 = r106849 / r106851;
        double r106853 = 6.0;
        double r106854 = pow(r106845, r106853);
        double r106855 = r106838 / r106851;
        double r106856 = r106854 * r106855;
        double r106857 = r106852 * r106856;
        double r106858 = r106848 + r106857;
        double r106859 = r106858 * r106845;
        double r106860 = 2.0;
        double r106861 = 3.0;
        double r106862 = r106860 / r106861;
        double r106863 = 3.0;
        double r106864 = pow(r106845, r106863);
        double r106865 = r106862 * r106864;
        double r106866 = fma(r106860, r106845, r106865);
        double r106867 = r106859 + r106866;
        double r106868 = r106841 * r106867;
        double r106869 = fabs(r106868);
        return r106869;
}

Error

Bits error versus x

Derivation

  1. Initial program 0.2

    \[\left|\frac{1}{\sqrt{\pi}} \cdot \left(\left(\left(2 \cdot \left|x\right| + \frac{2}{3} \cdot \left(\left(\left|x\right| \cdot \left|x\right|\right) \cdot \left|x\right|\right)\right) + \frac{1}{5} \cdot \left(\left(\left(\left(\left|x\right| \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \left|x\right|\right)\right) + \frac{1}{21} \cdot \left(\left(\left(\left(\left(\left(\left|x\right| \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \left|x\right|\right)\right)\right|\]
  2. Simplified0.2

    \[\leadsto \color{blue}{\left|\frac{1}{\sqrt{\pi}} \cdot \left(\mathsf{fma}\left(2, \left|x\right|, \frac{2}{3} \cdot {\left(\left|x\right|\right)}^{3}\right) + \left|x\right| \cdot \left(\frac{1}{5} \cdot {\left(\left|x\right|\right)}^{\left(3 + 1\right)} + \frac{1}{21} \cdot {\left(\left|x\right|\right)}^{\left(2 \cdot 3\right)}\right)\right)\right|}\]
  3. Using strategy rm
  4. Applied add-sqr-sqrt0.2

    \[\leadsto \left|\frac{1}{\sqrt{\pi}} \cdot \left(\mathsf{fma}\left(2, \left|x\right|, \frac{2}{3} \cdot {\left(\left|x\right|\right)}^{3}\right) + \left|x\right| \cdot \left(\frac{1}{5} \cdot {\left(\left|x\right|\right)}^{\left(3 + 1\right)} + \frac{1}{\color{blue}{\sqrt{21} \cdot \sqrt{21}}} \cdot {\left(\left|x\right|\right)}^{\left(2 \cdot 3\right)}\right)\right)\right|\]
  5. Applied *-un-lft-identity0.2

    \[\leadsto \left|\frac{1}{\sqrt{\pi}} \cdot \left(\mathsf{fma}\left(2, \left|x\right|, \frac{2}{3} \cdot {\left(\left|x\right|\right)}^{3}\right) + \left|x\right| \cdot \left(\frac{1}{5} \cdot {\left(\left|x\right|\right)}^{\left(3 + 1\right)} + \frac{\color{blue}{1 \cdot 1}}{\sqrt{21} \cdot \sqrt{21}} \cdot {\left(\left|x\right|\right)}^{\left(2 \cdot 3\right)}\right)\right)\right|\]
  6. Applied times-frac0.2

    \[\leadsto \left|\frac{1}{\sqrt{\pi}} \cdot \left(\mathsf{fma}\left(2, \left|x\right|, \frac{2}{3} \cdot {\left(\left|x\right|\right)}^{3}\right) + \left|x\right| \cdot \left(\frac{1}{5} \cdot {\left(\left|x\right|\right)}^{\left(3 + 1\right)} + \color{blue}{\left(\frac{1}{\sqrt{21}} \cdot \frac{1}{\sqrt{21}}\right)} \cdot {\left(\left|x\right|\right)}^{\left(2 \cdot 3\right)}\right)\right)\right|\]
  7. Applied associate-*l*0.2

    \[\leadsto \left|\frac{1}{\sqrt{\pi}} \cdot \left(\mathsf{fma}\left(2, \left|x\right|, \frac{2}{3} \cdot {\left(\left|x\right|\right)}^{3}\right) + \left|x\right| \cdot \left(\frac{1}{5} \cdot {\left(\left|x\right|\right)}^{\left(3 + 1\right)} + \color{blue}{\frac{1}{\sqrt{21}} \cdot \left(\frac{1}{\sqrt{21}} \cdot {\left(\left|x\right|\right)}^{\left(2 \cdot 3\right)}\right)}\right)\right)\right|\]
  8. Simplified0.2

    \[\leadsto \left|\frac{1}{\sqrt{\pi}} \cdot \left(\mathsf{fma}\left(2, \left|x\right|, \frac{2}{3} \cdot {\left(\left|x\right|\right)}^{3}\right) + \left|x\right| \cdot \left(\frac{1}{5} \cdot {\left(\left|x\right|\right)}^{\left(3 + 1\right)} + \frac{1}{\sqrt{21}} \cdot \color{blue}{\left({\left(\left|x\right|\right)}^{6} \cdot \frac{1}{\sqrt{21}}\right)}\right)\right)\right|\]
  9. Final simplification0.2

    \[\leadsto \left|\frac{1}{\sqrt{\pi}} \cdot \left(\left(\frac{1}{5} \cdot {\left(\left|x\right|\right)}^{4} + \frac{1}{\sqrt{21}} \cdot \left({\left(\left|x\right|\right)}^{6} \cdot \frac{1}{\sqrt{21}}\right)\right) \cdot \left|x\right| + \mathsf{fma}\left(2, \left|x\right|, \frac{2}{3} \cdot {\left(\left|x\right|\right)}^{3}\right)\right)\right|\]

Reproduce

herbie shell --seed 2019303 +o rules:numerics
(FPCore (x)
  :name "Jmat.Real.erfi, branch x less than or equal to 0.5"
  :precision binary64
  (fabs (* (/ 1 (sqrt PI)) (+ (+ (+ (* 2 (fabs x)) (* (/ 2 3) (* (* (fabs x) (fabs x)) (fabs x)))) (* (/ 1 5) (* (* (* (* (fabs x) (fabs x)) (fabs x)) (fabs x)) (fabs x)))) (* (/ 1 21) (* (* (* (* (* (* (fabs x) (fabs x)) (fabs x)) (fabs x)) (fabs x)) (fabs x)) (fabs x)))))))