Average Error: 0.2 → 0.2
Time: 56.2s
Precision: 64
\[\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|\sqrt{\frac{1}{\pi}} \cdot \mathsf{fma}\left(\frac{1}{5}, \left({\left(\left|x\right|\right)}^{5}\right), \left(\mathsf{fma}\left(\left(\left|x\right|\right), 2, \left(\mathsf{fma}\left(\frac{1}{21}, \left({\left(\left|x\right|\right)}^{7}\right), \left(\left(\left|x\right| \cdot \left|x\right|\right) \cdot \left(\frac{2}{3} \cdot \left|x\right|\right)\right)\right)\right)\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|
\left|\sqrt{\frac{1}{\pi}} \cdot \mathsf{fma}\left(\frac{1}{5}, \left({\left(\left|x\right|\right)}^{5}\right), \left(\mathsf{fma}\left(\left(\left|x\right|\right), 2, \left(\mathsf{fma}\left(\frac{1}{21}, \left({\left(\left|x\right|\right)}^{7}\right), \left(\left(\left|x\right| \cdot \left|x\right|\right) \cdot \left(\frac{2}{3} \cdot \left|x\right|\right)\right)\right)\right)\right)\right)\right)\right|
double f(double x) {
        double r6096185 = 1.0;
        double r6096186 = atan2(1.0, 0.0);
        double r6096187 = sqrt(r6096186);
        double r6096188 = r6096185 / r6096187;
        double r6096189 = 2.0;
        double r6096190 = x;
        double r6096191 = fabs(r6096190);
        double r6096192 = r6096189 * r6096191;
        double r6096193 = 3.0;
        double r6096194 = r6096189 / r6096193;
        double r6096195 = r6096191 * r6096191;
        double r6096196 = r6096195 * r6096191;
        double r6096197 = r6096194 * r6096196;
        double r6096198 = r6096192 + r6096197;
        double r6096199 = 5.0;
        double r6096200 = r6096185 / r6096199;
        double r6096201 = r6096196 * r6096191;
        double r6096202 = r6096201 * r6096191;
        double r6096203 = r6096200 * r6096202;
        double r6096204 = r6096198 + r6096203;
        double r6096205 = 21.0;
        double r6096206 = r6096185 / r6096205;
        double r6096207 = r6096202 * r6096191;
        double r6096208 = r6096207 * r6096191;
        double r6096209 = r6096206 * r6096208;
        double r6096210 = r6096204 + r6096209;
        double r6096211 = r6096188 * r6096210;
        double r6096212 = fabs(r6096211);
        return r6096212;
}

double f(double x) {
        double r6096213 = 1.0;
        double r6096214 = atan2(1.0, 0.0);
        double r6096215 = r6096213 / r6096214;
        double r6096216 = sqrt(r6096215);
        double r6096217 = 0.2;
        double r6096218 = x;
        double r6096219 = fabs(r6096218);
        double r6096220 = 5.0;
        double r6096221 = pow(r6096219, r6096220);
        double r6096222 = 2.0;
        double r6096223 = 0.047619047619047616;
        double r6096224 = 7.0;
        double r6096225 = pow(r6096219, r6096224);
        double r6096226 = r6096219 * r6096219;
        double r6096227 = 0.6666666666666666;
        double r6096228 = r6096227 * r6096219;
        double r6096229 = r6096226 * r6096228;
        double r6096230 = fma(r6096223, r6096225, r6096229);
        double r6096231 = fma(r6096219, r6096222, r6096230);
        double r6096232 = fma(r6096217, r6096221, r6096231);
        double r6096233 = r6096216 * r6096232;
        double r6096234 = fabs(r6096233);
        return r6096234;
}

Error

Bits error versus x

Derivation

  1. Initial program 0.2

    \[\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|\]
  2. Taylor expanded around -inf 0.2

    \[\leadsto \left|\color{blue}{\sqrt{\frac{1}{\pi}} \cdot \left(\frac{1}{5} \cdot {\left(\left|x\right|\right)}^{5} + \left(2 \cdot \left|x\right| + \left(\frac{2}{3} \cdot {\left(\left|x\right|\right)}^{3} + \frac{1}{21} \cdot {\left(\left|x\right|\right)}^{7}\right)\right)\right)}\right|\]
  3. Simplified0.2

    \[\leadsto \left|\color{blue}{\sqrt{\frac{1}{\pi}} \cdot \mathsf{fma}\left(\frac{1}{5}, \left({\left(\left|x\right|\right)}^{5}\right), \left(\mathsf{fma}\left(\left(\left|x\right|\right), 2, \left(\mathsf{fma}\left(\frac{1}{21}, \left({\left(\left|x\right|\right)}^{7}\right), \left(\left(\left|x\right| \cdot \left|x\right|\right) \cdot \left(\left|x\right| \cdot \frac{2}{3}\right)\right)\right)\right)\right)\right)\right)}\right|\]
  4. Final simplification0.2

    \[\leadsto \left|\sqrt{\frac{1}{\pi}} \cdot \mathsf{fma}\left(\frac{1}{5}, \left({\left(\left|x\right|\right)}^{5}\right), \left(\mathsf{fma}\left(\left(\left|x\right|\right), 2, \left(\mathsf{fma}\left(\frac{1}{21}, \left({\left(\left|x\right|\right)}^{7}\right), \left(\left(\left|x\right| \cdot \left|x\right|\right) \cdot \left(\frac{2}{3} \cdot \left|x\right|\right)\right)\right)\right)\right)\right)\right)\right|\]

Reproduce

herbie shell --seed 2019130 +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)))))))