\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({\left(\left|x\right|\right)}^{7} \cdot \frac{1}{21} + \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)\right) \cdot \frac{1}{\sqrt{\pi}}\right|double f(double x) {
double r2836640 = 1.0;
double r2836641 = atan2(1.0, 0.0);
double r2836642 = sqrt(r2836641);
double r2836643 = r2836640 / r2836642;
double r2836644 = 2.0;
double r2836645 = x;
double r2836646 = fabs(r2836645);
double r2836647 = r2836644 * r2836646;
double r2836648 = 3.0;
double r2836649 = r2836644 / r2836648;
double r2836650 = r2836646 * r2836646;
double r2836651 = r2836650 * r2836646;
double r2836652 = r2836649 * r2836651;
double r2836653 = r2836647 + r2836652;
double r2836654 = 5.0;
double r2836655 = r2836640 / r2836654;
double r2836656 = r2836651 * r2836646;
double r2836657 = r2836656 * r2836646;
double r2836658 = r2836655 * r2836657;
double r2836659 = r2836653 + r2836658;
double r2836660 = 21.0;
double r2836661 = r2836640 / r2836660;
double r2836662 = r2836657 * r2836646;
double r2836663 = r2836662 * r2836646;
double r2836664 = r2836661 * r2836663;
double r2836665 = r2836659 + r2836664;
double r2836666 = r2836643 * r2836665;
double r2836667 = fabs(r2836666);
return r2836667;
}
double f(double x) {
double r2836668 = x;
double r2836669 = fabs(r2836668);
double r2836670 = 7.0;
double r2836671 = pow(r2836669, r2836670);
double r2836672 = 0.047619047619047616;
double r2836673 = r2836671 * r2836672;
double r2836674 = 0.2;
double r2836675 = r2836669 * r2836669;
double r2836676 = r2836675 * r2836669;
double r2836677 = r2836676 * r2836669;
double r2836678 = r2836669 * r2836677;
double r2836679 = r2836674 * r2836678;
double r2836680 = 2.0;
double r2836681 = r2836669 * r2836680;
double r2836682 = 0.6666666666666666;
double r2836683 = r2836676 * r2836682;
double r2836684 = r2836681 + r2836683;
double r2836685 = r2836679 + r2836684;
double r2836686 = r2836673 + r2836685;
double r2836687 = 1.0;
double r2836688 = atan2(1.0, 0.0);
double r2836689 = sqrt(r2836688);
double r2836690 = r2836687 / r2836689;
double r2836691 = r2836686 * r2836690;
double r2836692 = fabs(r2836691);
return r2836692;
}



Bits error versus x
Results
Initial program 0.2
Taylor expanded around inf 0.2
Final simplification0.2
herbie shell --seed 2019128 +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)))))))