\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|x\right| \cdot \left|x\right|\right) \cdot \left|x\right|\right) \cdot \left|x\right|\right)\right)\right)\right) \cdot \frac{1}{21}\right)\right|double f(double x) {
double r5467642 = 1.0;
double r5467643 = atan2(1.0, 0.0);
double r5467644 = sqrt(r5467643);
double r5467645 = r5467642 / r5467644;
double r5467646 = 2.0;
double r5467647 = x;
double r5467648 = fabs(r5467647);
double r5467649 = r5467646 * r5467648;
double r5467650 = 3.0;
double r5467651 = r5467646 / r5467650;
double r5467652 = r5467648 * r5467648;
double r5467653 = r5467652 * r5467648;
double r5467654 = r5467651 * r5467653;
double r5467655 = r5467649 + r5467654;
double r5467656 = 5.0;
double r5467657 = r5467642 / r5467656;
double r5467658 = r5467653 * r5467648;
double r5467659 = r5467658 * r5467648;
double r5467660 = r5467657 * r5467659;
double r5467661 = r5467655 + r5467660;
double r5467662 = 21.0;
double r5467663 = r5467642 / r5467662;
double r5467664 = r5467659 * r5467648;
double r5467665 = r5467664 * r5467648;
double r5467666 = r5467663 * r5467665;
double r5467667 = r5467661 + r5467666;
double r5467668 = r5467645 * r5467667;
double r5467669 = fabs(r5467668);
return r5467669;
}
double f(double x) {
double r5467670 = 1.0;
double r5467671 = atan2(1.0, 0.0);
double r5467672 = sqrt(r5467671);
double r5467673 = r5467670 / r5467672;
double r5467674 = 5.0;
double r5467675 = r5467670 / r5467674;
double r5467676 = x;
double r5467677 = fabs(r5467676);
double r5467678 = r5467677 * r5467677;
double r5467679 = r5467678 * r5467677;
double r5467680 = r5467679 * r5467677;
double r5467681 = r5467677 * r5467680;
double r5467682 = r5467675 * r5467681;
double r5467683 = 2.0;
double r5467684 = r5467677 * r5467683;
double r5467685 = 3.0;
double r5467686 = r5467683 / r5467685;
double r5467687 = r5467679 * r5467686;
double r5467688 = r5467684 + r5467687;
double r5467689 = r5467682 + r5467688;
double r5467690 = r5467677 * r5467681;
double r5467691 = r5467677 * r5467690;
double r5467692 = 21.0;
double r5467693 = r5467670 / r5467692;
double r5467694 = r5467691 * r5467693;
double r5467695 = r5467689 + r5467694;
double r5467696 = r5467673 * r5467695;
double r5467697 = fabs(r5467696);
return r5467697;
}



Bits error versus x
Results
Initial program 0.2
Final simplification0.2
herbie shell --seed 2019171
(FPCore (x)
:name "Jmat.Real.erfi, branch x less than or equal to 0.5"
(fabs (* (/ 1.0 (sqrt PI)) (+ (+ (+ (* 2.0 (fabs x)) (* (/ 2.0 3.0) (* (* (fabs x) (fabs x)) (fabs x)))) (* (/ 1.0 5.0) (* (* (* (* (fabs x) (fabs x)) (fabs x)) (fabs x)) (fabs x)))) (* (/ 1.0 21.0) (* (* (* (* (* (* (fabs x) (fabs x)) (fabs x)) (fabs x)) (fabs x)) (fabs x)) (fabs x)))))))