Average Error: 0.2 → 0.2
Time: 3.3m
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|\sqrt{\frac{1}{\pi}} \cdot \left(\frac{1}{5} \cdot {\left(\left|x\right|\right)}^{5} + \left(\left(\frac{1}{21} \cdot {\left(\left|x\right|\right)}^{7} + \frac{2}{3} \cdot \left(\left(\left|x\right| \cdot \left|x\right|\right) \cdot \left|x\right|\right)\right) + 2 \cdot \left|x\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|\sqrt{\frac{1}{\pi}} \cdot \left(\frac{1}{5} \cdot {\left(\left|x\right|\right)}^{5} + \left(\left(\frac{1}{21} \cdot {\left(\left|x\right|\right)}^{7} + \frac{2}{3} \cdot \left(\left(\left|x\right| \cdot \left|x\right|\right) \cdot \left|x\right|\right)\right) + 2 \cdot \left|x\right|\right)\right)\right|
double f(double x) {
        double r9498625 = 1.0;
        double r9498626 = atan2(1.0, 0.0);
        double r9498627 = sqrt(r9498626);
        double r9498628 = r9498625 / r9498627;
        double r9498629 = 2.0;
        double r9498630 = x;
        double r9498631 = fabs(r9498630);
        double r9498632 = r9498629 * r9498631;
        double r9498633 = 3.0;
        double r9498634 = r9498629 / r9498633;
        double r9498635 = r9498631 * r9498631;
        double r9498636 = r9498635 * r9498631;
        double r9498637 = r9498634 * r9498636;
        double r9498638 = r9498632 + r9498637;
        double r9498639 = 5.0;
        double r9498640 = r9498625 / r9498639;
        double r9498641 = r9498636 * r9498631;
        double r9498642 = r9498641 * r9498631;
        double r9498643 = r9498640 * r9498642;
        double r9498644 = r9498638 + r9498643;
        double r9498645 = 21.0;
        double r9498646 = r9498625 / r9498645;
        double r9498647 = r9498642 * r9498631;
        double r9498648 = r9498647 * r9498631;
        double r9498649 = r9498646 * r9498648;
        double r9498650 = r9498644 + r9498649;
        double r9498651 = r9498628 * r9498650;
        double r9498652 = fabs(r9498651);
        return r9498652;
}

double f(double x) {
        double r9498653 = 1.0;
        double r9498654 = atan2(1.0, 0.0);
        double r9498655 = r9498653 / r9498654;
        double r9498656 = sqrt(r9498655);
        double r9498657 = 0.2;
        double r9498658 = x;
        double r9498659 = fabs(r9498658);
        double r9498660 = 5.0;
        double r9498661 = pow(r9498659, r9498660);
        double r9498662 = r9498657 * r9498661;
        double r9498663 = 0.047619047619047616;
        double r9498664 = 7.0;
        double r9498665 = pow(r9498659, r9498664);
        double r9498666 = r9498663 * r9498665;
        double r9498667 = 0.6666666666666666;
        double r9498668 = r9498659 * r9498659;
        double r9498669 = r9498668 * r9498659;
        double r9498670 = r9498667 * r9498669;
        double r9498671 = r9498666 + r9498670;
        double r9498672 = 2.0;
        double r9498673 = r9498672 * r9498659;
        double r9498674 = r9498671 + r9498673;
        double r9498675 = r9498662 + r9498674;
        double r9498676 = r9498656 * r9498675;
        double r9498677 = fabs(r9498676);
        return r9498677;
}

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

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

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

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

Reproduce

herbie shell --seed 2019158 
(FPCore (x)
  :name "Jmat.Real.erfi, branch x less than or equal to 0.5"
  (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)))))))