\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(\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|double f(double x) {
double r170070 = 1.0;
double r170071 = atan2(1.0, 0.0);
double r170072 = sqrt(r170071);
double r170073 = r170070 / r170072;
double r170074 = 2.0;
double r170075 = x;
double r170076 = fabs(r170075);
double r170077 = r170074 * r170076;
double r170078 = 3.0;
double r170079 = r170074 / r170078;
double r170080 = r170076 * r170076;
double r170081 = r170080 * r170076;
double r170082 = r170079 * r170081;
double r170083 = r170077 + r170082;
double r170084 = 5.0;
double r170085 = r170070 / r170084;
double r170086 = r170081 * r170076;
double r170087 = r170086 * r170076;
double r170088 = r170085 * r170087;
double r170089 = r170083 + r170088;
double r170090 = 21.0;
double r170091 = r170070 / r170090;
double r170092 = r170087 * r170076;
double r170093 = r170092 * r170076;
double r170094 = r170091 * r170093;
double r170095 = r170089 + r170094;
double r170096 = r170073 * r170095;
double r170097 = fabs(r170096);
return r170097;
}
double f(double x) {
double r170098 = 1.0;
double r170099 = atan2(1.0, 0.0);
double r170100 = sqrt(r170099);
double r170101 = r170098 / r170100;
double r170102 = 2.0;
double r170103 = x;
double r170104 = fabs(r170103);
double r170105 = r170102 * r170104;
double r170106 = 3.0;
double r170107 = r170102 / r170106;
double r170108 = r170104 * r170104;
double r170109 = r170108 * r170104;
double r170110 = r170107 * r170109;
double r170111 = r170105 + r170110;
double r170112 = 5.0;
double r170113 = r170098 / r170112;
double r170114 = r170109 * r170104;
double r170115 = r170114 * r170104;
double r170116 = r170113 * r170115;
double r170117 = r170111 + r170116;
double r170118 = 21.0;
double r170119 = r170098 / r170118;
double r170120 = r170115 * r170104;
double r170121 = r170120 * r170104;
double r170122 = r170119 * r170121;
double r170123 = r170117 + r170122;
double r170124 = r170101 * r170123;
double r170125 = fabs(r170124);
return r170125;
}



Bits error versus x
Results
Initial program 0.2
Final simplification0.2
herbie shell --seed 2019350 +o rules:numerics
(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)))))))