Average Error: 0.2 → 0.2
Time: 24.3s
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|\left(1 \cdot \sqrt{\frac{1}{\pi}}\right) \cdot \mathsf{fma}\left(0.6666666666666666296592325124947819858789, {\left(\left|x\right|\right)}^{3}, \mathsf{fma}\left(0.2000000000000000111022302462515654042363, {\left(\left|x\right|\right)}^{5}, \mathsf{fma}\left(2, \left|x\right|, 0.04761904761904761640423089374962728470564 \cdot {\left(\left|x\right|\right)}^{7}\right)\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|\left(1 \cdot \sqrt{\frac{1}{\pi}}\right) \cdot \mathsf{fma}\left(0.6666666666666666296592325124947819858789, {\left(\left|x\right|\right)}^{3}, \mathsf{fma}\left(0.2000000000000000111022302462515654042363, {\left(\left|x\right|\right)}^{5}, \mathsf{fma}\left(2, \left|x\right|, 0.04761904761904761640423089374962728470564 \cdot {\left(\left|x\right|\right)}^{7}\right)\right)\right)\right|
double f(double x) {
        double r93756 = 1.0;
        double r93757 = atan2(1.0, 0.0);
        double r93758 = sqrt(r93757);
        double r93759 = r93756 / r93758;
        double r93760 = 2.0;
        double r93761 = x;
        double r93762 = fabs(r93761);
        double r93763 = r93760 * r93762;
        double r93764 = 3.0;
        double r93765 = r93760 / r93764;
        double r93766 = r93762 * r93762;
        double r93767 = r93766 * r93762;
        double r93768 = r93765 * r93767;
        double r93769 = r93763 + r93768;
        double r93770 = 5.0;
        double r93771 = r93756 / r93770;
        double r93772 = r93767 * r93762;
        double r93773 = r93772 * r93762;
        double r93774 = r93771 * r93773;
        double r93775 = r93769 + r93774;
        double r93776 = 21.0;
        double r93777 = r93756 / r93776;
        double r93778 = r93773 * r93762;
        double r93779 = r93778 * r93762;
        double r93780 = r93777 * r93779;
        double r93781 = r93775 + r93780;
        double r93782 = r93759 * r93781;
        double r93783 = fabs(r93782);
        return r93783;
}

double f(double x) {
        double r93784 = 1.0;
        double r93785 = 1.0;
        double r93786 = atan2(1.0, 0.0);
        double r93787 = r93785 / r93786;
        double r93788 = sqrt(r93787);
        double r93789 = r93784 * r93788;
        double r93790 = 0.6666666666666666;
        double r93791 = x;
        double r93792 = fabs(r93791);
        double r93793 = 3.0;
        double r93794 = pow(r93792, r93793);
        double r93795 = 0.2;
        double r93796 = 5.0;
        double r93797 = pow(r93792, r93796);
        double r93798 = 2.0;
        double r93799 = 0.047619047619047616;
        double r93800 = 7.0;
        double r93801 = pow(r93792, r93800);
        double r93802 = r93799 * r93801;
        double r93803 = fma(r93798, r93792, r93802);
        double r93804 = fma(r93795, r93797, r93803);
        double r93805 = fma(r93790, r93794, r93804);
        double r93806 = r93789 * r93805;
        double r93807 = fabs(r93806);
        return r93807;
}

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. Taylor expanded around 0 0.2

    \[\leadsto \left|\color{blue}{1 \cdot \left(\sqrt{\frac{1}{\pi}} \cdot \left(0.6666666666666666296592325124947819858789 \cdot {\left(\left|x\right|\right)}^{3} + \left(0.2000000000000000111022302462515654042363 \cdot {\left(\left|x\right|\right)}^{5} + \left(2 \cdot \left|x\right| + 0.04761904761904761640423089374962728470564 \cdot {\left(\left|x\right|\right)}^{7}\right)\right)\right)\right)}\right|\]
  3. Simplified0.2

    \[\leadsto \left|\color{blue}{\left(1 \cdot \sqrt{\frac{1}{\pi}}\right) \cdot \mathsf{fma}\left(0.6666666666666666296592325124947819858789, {\left(\left|x\right|\right)}^{3}, \mathsf{fma}\left(0.2000000000000000111022302462515654042363, {\left(\left|x\right|\right)}^{5}, \mathsf{fma}\left(2, \left|x\right|, 0.04761904761904761640423089374962728470564 \cdot {\left(\left|x\right|\right)}^{7}\right)\right)\right)}\right|\]
  4. Final simplification0.2

    \[\leadsto \left|\left(1 \cdot \sqrt{\frac{1}{\pi}}\right) \cdot \mathsf{fma}\left(0.6666666666666666296592325124947819858789, {\left(\left|x\right|\right)}^{3}, \mathsf{fma}\left(0.2000000000000000111022302462515654042363, {\left(\left|x\right|\right)}^{5}, \mathsf{fma}\left(2, \left|x\right|, 0.04761904761904761640423089374962728470564 \cdot {\left(\left|x\right|\right)}^{7}\right)\right)\right)\right|\]

Reproduce

herbie shell --seed 2019212 +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)))))))