\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(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) + \left(\frac{\frac{1}{\sqrt{\pi}} \cdot 1}{21} \cdot {\left(\left|x\right|\right)}^{6}\right) \cdot \left|x\right|\right|double f(double x) {
double r207607 = 1.0;
double r207608 = atan2(1.0, 0.0);
double r207609 = sqrt(r207608);
double r207610 = r207607 / r207609;
double r207611 = 2.0;
double r207612 = x;
double r207613 = fabs(r207612);
double r207614 = r207611 * r207613;
double r207615 = 3.0;
double r207616 = r207611 / r207615;
double r207617 = r207613 * r207613;
double r207618 = r207617 * r207613;
double r207619 = r207616 * r207618;
double r207620 = r207614 + r207619;
double r207621 = 5.0;
double r207622 = r207607 / r207621;
double r207623 = r207618 * r207613;
double r207624 = r207623 * r207613;
double r207625 = r207622 * r207624;
double r207626 = r207620 + r207625;
double r207627 = 21.0;
double r207628 = r207607 / r207627;
double r207629 = r207624 * r207613;
double r207630 = r207629 * r207613;
double r207631 = r207628 * r207630;
double r207632 = r207626 + r207631;
double r207633 = r207610 * r207632;
double r207634 = fabs(r207633);
return r207634;
}
double f(double x) {
double r207635 = 1.0;
double r207636 = atan2(1.0, 0.0);
double r207637 = sqrt(r207636);
double r207638 = r207635 / r207637;
double r207639 = 2.0;
double r207640 = x;
double r207641 = fabs(r207640);
double r207642 = r207639 * r207641;
double r207643 = 3.0;
double r207644 = r207639 / r207643;
double r207645 = r207641 * r207641;
double r207646 = r207645 * r207641;
double r207647 = r207644 * r207646;
double r207648 = r207642 + r207647;
double r207649 = 5.0;
double r207650 = r207635 / r207649;
double r207651 = r207646 * r207641;
double r207652 = r207651 * r207641;
double r207653 = r207650 * r207652;
double r207654 = r207648 + r207653;
double r207655 = r207638 * r207654;
double r207656 = r207638 * r207635;
double r207657 = 21.0;
double r207658 = r207656 / r207657;
double r207659 = 6.0;
double r207660 = pow(r207641, r207659);
double r207661 = r207658 * r207660;
double r207662 = r207661 * r207641;
double r207663 = r207655 + r207662;
double r207664 = fabs(r207663);
return r207664;
}



Bits error versus x
Results
Initial program 0.2
rmApplied distribute-lft-in0.2
Simplified0.2
rmApplied associate-*r/0.1
Final simplification0.1
herbie shell --seed 2020060
(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)))))))