Average Error: 0.2 → 0.2
Time: 9.4s
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(\mathsf{fma}\left(\frac{1}{21}, \left({\left(\left|x\right|\right)}^{6} \cdot \left|x\right|\right) \cdot \frac{1}{\sqrt{\pi}}, \frac{1}{\sqrt{\pi}} \cdot \mathsf{fma}\left({\left(\left|x\right|\right)}^{5}, 0.20000000000000001, \mathsf{fma}\left(\left|x\right|, 2, {\left(\left|x\right|\right)}^{3} \cdot \frac{2}{3}\right)\right)\right)\right)}^{1}\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(\mathsf{fma}\left(\frac{1}{21}, \left({\left(\left|x\right|\right)}^{6} \cdot \left|x\right|\right) \cdot \frac{1}{\sqrt{\pi}}, \frac{1}{\sqrt{\pi}} \cdot \mathsf{fma}\left({\left(\left|x\right|\right)}^{5}, 0.20000000000000001, \mathsf{fma}\left(\left|x\right|, 2, {\left(\left|x\right|\right)}^{3} \cdot \frac{2}{3}\right)\right)\right)\right)}^{1}\right|
double f(double x) {
        double r128927 = 1.0;
        double r128928 = atan2(1.0, 0.0);
        double r128929 = sqrt(r128928);
        double r128930 = r128927 / r128929;
        double r128931 = 2.0;
        double r128932 = x;
        double r128933 = fabs(r128932);
        double r128934 = r128931 * r128933;
        double r128935 = 3.0;
        double r128936 = r128931 / r128935;
        double r128937 = r128933 * r128933;
        double r128938 = r128937 * r128933;
        double r128939 = r128936 * r128938;
        double r128940 = r128934 + r128939;
        double r128941 = 5.0;
        double r128942 = r128927 / r128941;
        double r128943 = r128938 * r128933;
        double r128944 = r128943 * r128933;
        double r128945 = r128942 * r128944;
        double r128946 = r128940 + r128945;
        double r128947 = 21.0;
        double r128948 = r128927 / r128947;
        double r128949 = r128944 * r128933;
        double r128950 = r128949 * r128933;
        double r128951 = r128948 * r128950;
        double r128952 = r128946 + r128951;
        double r128953 = r128930 * r128952;
        double r128954 = fabs(r128953);
        return r128954;
}

double f(double x) {
        double r128955 = 1.0;
        double r128956 = 21.0;
        double r128957 = r128955 / r128956;
        double r128958 = x;
        double r128959 = fabs(r128958);
        double r128960 = 6.0;
        double r128961 = pow(r128959, r128960);
        double r128962 = r128961 * r128959;
        double r128963 = atan2(1.0, 0.0);
        double r128964 = sqrt(r128963);
        double r128965 = r128955 / r128964;
        double r128966 = r128962 * r128965;
        double r128967 = 5.0;
        double r128968 = pow(r128959, r128967);
        double r128969 = 0.2;
        double r128970 = 2.0;
        double r128971 = 3.0;
        double r128972 = pow(r128959, r128971);
        double r128973 = 3.0;
        double r128974 = r128970 / r128973;
        double r128975 = r128972 * r128974;
        double r128976 = fma(r128959, r128970, r128975);
        double r128977 = fma(r128968, r128969, r128976);
        double r128978 = r128965 * r128977;
        double r128979 = fma(r128957, r128966, r128978);
        double r128980 = 1.0;
        double r128981 = pow(r128979, r128980);
        double r128982 = fabs(r128981);
        return r128982;
}

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|\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) + \color{blue}{0.20000000000000001 \cdot {\left(\left|x\right|\right)}^{5}}\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|\]
  3. Using strategy rm
  4. Applied pow10.2

    \[\leadsto \left|\frac{1}{\sqrt{\pi}} \cdot \color{blue}{{\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) + 0.20000000000000001 \cdot {\left(\left|x\right|\right)}^{5}\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)}^{1}}\right|\]
  5. Applied pow10.2

    \[\leadsto \left|\color{blue}{{\left(\frac{1}{\sqrt{\pi}}\right)}^{1}} \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) + 0.20000000000000001 \cdot {\left(\left|x\right|\right)}^{5}\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)}^{1}\right|\]
  6. Applied pow-prod-down0.2

    \[\leadsto \left|\color{blue}{{\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) + 0.20000000000000001 \cdot {\left(\left|x\right|\right)}^{5}\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)}^{1}}\right|\]
  7. Simplified0.2

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

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

Reproduce

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