Average Error: 0.2 → 0.1
Time: 11.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|\frac{1}{\sqrt{\pi}} \cdot \left(\left|x\right| \cdot \left(\frac{{\left(\left|x\right|\right)}^{4} \cdot 1}{5} + \frac{{\left(\left|x\right|\right)}^{6} \cdot 1}{21}\right) + \left(2 \cdot \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|x\right| \cdot \left(\frac{{\left(\left|x\right|\right)}^{4} \cdot 1}{5} + \frac{{\left(\left|x\right|\right)}^{6} \cdot 1}{21}\right) + \left(2 \cdot \left|x\right| + \frac{2}{3} \cdot {\left(\left|x\right|\right)}^{3}\right)\right)\right|
double f(double x) {
        double r135988 = 1.0;
        double r135989 = atan2(1.0, 0.0);
        double r135990 = sqrt(r135989);
        double r135991 = r135988 / r135990;
        double r135992 = 2.0;
        double r135993 = x;
        double r135994 = fabs(r135993);
        double r135995 = r135992 * r135994;
        double r135996 = 3.0;
        double r135997 = r135992 / r135996;
        double r135998 = r135994 * r135994;
        double r135999 = r135998 * r135994;
        double r136000 = r135997 * r135999;
        double r136001 = r135995 + r136000;
        double r136002 = 5.0;
        double r136003 = r135988 / r136002;
        double r136004 = r135999 * r135994;
        double r136005 = r136004 * r135994;
        double r136006 = r136003 * r136005;
        double r136007 = r136001 + r136006;
        double r136008 = 21.0;
        double r136009 = r135988 / r136008;
        double r136010 = r136005 * r135994;
        double r136011 = r136010 * r135994;
        double r136012 = r136009 * r136011;
        double r136013 = r136007 + r136012;
        double r136014 = r135991 * r136013;
        double r136015 = fabs(r136014);
        return r136015;
}

double f(double x) {
        double r136016 = 1.0;
        double r136017 = atan2(1.0, 0.0);
        double r136018 = sqrt(r136017);
        double r136019 = r136016 / r136018;
        double r136020 = x;
        double r136021 = fabs(r136020);
        double r136022 = 4.0;
        double r136023 = pow(r136021, r136022);
        double r136024 = r136023 * r136016;
        double r136025 = 5.0;
        double r136026 = r136024 / r136025;
        double r136027 = 6.0;
        double r136028 = pow(r136021, r136027);
        double r136029 = r136028 * r136016;
        double r136030 = 21.0;
        double r136031 = r136029 / r136030;
        double r136032 = r136026 + r136031;
        double r136033 = r136021 * r136032;
        double r136034 = 2.0;
        double r136035 = r136034 * r136021;
        double r136036 = 3.0;
        double r136037 = r136034 / r136036;
        double r136038 = 3.0;
        double r136039 = pow(r136021, r136038);
        double r136040 = r136037 * r136039;
        double r136041 = r136035 + r136040;
        double r136042 = r136033 + r136041;
        double r136043 = r136019 * r136042;
        double r136044 = fabs(r136043);
        return r136044;
}

Error

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

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(\left|x\right| \cdot \left(\frac{{\left(\left|x\right|\right)}^{4} \cdot 1}{5} + {\left(\left|x\right|\right)}^{6} \cdot \frac{1}{21}\right) + \left(2 \cdot \left|x\right| + \frac{2}{3} \cdot {\left(\left|x\right|\right)}^{3}\right)\right)\right|}\]
  3. Using strategy rm
  4. Applied associate-*r/0.1

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

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

Reproduce

herbie shell --seed 2020047 
(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)))))))