\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| \cdot \left(\left(\left(\left|x\right| \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \left|x\right|\right)\right) + \left(\left|x\right| \cdot 2 + \left(\left(\left|x\right| \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \frac{2}{3}\right)\right) + \left(\left|x\right| \cdot \left(\left|x\right| \cdot \left(\left|x\right| \cdot \left(\left(\left(\left(\left|x\right| \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \sqrt{\left|x\right|}\right) \cdot \sqrt{\left|x\right|}\right)\right)\right)\right) \cdot \frac{1}{21}\right)\right|double f(double x) {
double r2104587 = 1.0;
double r2104588 = atan2(1.0, 0.0);
double r2104589 = sqrt(r2104588);
double r2104590 = r2104587 / r2104589;
double r2104591 = 2.0;
double r2104592 = x;
double r2104593 = fabs(r2104592);
double r2104594 = r2104591 * r2104593;
double r2104595 = 3.0;
double r2104596 = r2104591 / r2104595;
double r2104597 = r2104593 * r2104593;
double r2104598 = r2104597 * r2104593;
double r2104599 = r2104596 * r2104598;
double r2104600 = r2104594 + r2104599;
double r2104601 = 5.0;
double r2104602 = r2104587 / r2104601;
double r2104603 = r2104598 * r2104593;
double r2104604 = r2104603 * r2104593;
double r2104605 = r2104602 * r2104604;
double r2104606 = r2104600 + r2104605;
double r2104607 = 21.0;
double r2104608 = r2104587 / r2104607;
double r2104609 = r2104604 * r2104593;
double r2104610 = r2104609 * r2104593;
double r2104611 = r2104608 * r2104610;
double r2104612 = r2104606 + r2104611;
double r2104613 = r2104590 * r2104612;
double r2104614 = fabs(r2104613);
return r2104614;
}
double f(double x) {
double r2104615 = 1.0;
double r2104616 = atan2(1.0, 0.0);
double r2104617 = sqrt(r2104616);
double r2104618 = r2104615 / r2104617;
double r2104619 = 0.2;
double r2104620 = x;
double r2104621 = fabs(r2104620);
double r2104622 = r2104621 * r2104621;
double r2104623 = r2104622 * r2104621;
double r2104624 = r2104623 * r2104621;
double r2104625 = r2104621 * r2104624;
double r2104626 = r2104619 * r2104625;
double r2104627 = 2.0;
double r2104628 = r2104621 * r2104627;
double r2104629 = 0.6666666666666666;
double r2104630 = r2104623 * r2104629;
double r2104631 = r2104628 + r2104630;
double r2104632 = r2104626 + r2104631;
double r2104633 = sqrt(r2104621);
double r2104634 = r2104623 * r2104633;
double r2104635 = r2104634 * r2104633;
double r2104636 = r2104621 * r2104635;
double r2104637 = r2104621 * r2104636;
double r2104638 = r2104621 * r2104637;
double r2104639 = 0.047619047619047616;
double r2104640 = r2104638 * r2104639;
double r2104641 = r2104632 + r2104640;
double r2104642 = r2104618 * r2104641;
double r2104643 = fabs(r2104642);
return r2104643;
}



Bits error versus x
Results
Initial program 0.2
rmApplied add-sqr-sqrt0.2
Applied associate-*r*0.2
Final simplification0.2
herbie shell --seed 2019153 +o rules:numerics
(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)))))))