Average Error: 0.2 → 0.4
Time: 41.1s
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|\frac{\mathsf{fma}\left({\left(\left|x\right|\right)}^{7}, \frac{1}{21}, \mathsf{fma}\left(\left|x\right|, \mathsf{fma}\left({\left(\left|x\right|\right)}^{4}, \frac{1}{5}, 2\right), \frac{2}{\frac{3}{{\left(\left|x\right|\right)}^{3}}}\right)\right)}{\frac{\sqrt{\sqrt{\pi}} \cdot \sqrt{\sqrt{\pi}}}{1}}\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|\frac{\mathsf{fma}\left({\left(\left|x\right|\right)}^{7}, \frac{1}{21}, \mathsf{fma}\left(\left|x\right|, \mathsf{fma}\left({\left(\left|x\right|\right)}^{4}, \frac{1}{5}, 2\right), \frac{2}{\frac{3}{{\left(\left|x\right|\right)}^{3}}}\right)\right)}{\frac{\sqrt{\sqrt{\pi}} \cdot \sqrt{\sqrt{\pi}}}{1}}\right|
double f(double x) {
        double r96986 = 1.0;
        double r96987 = atan2(1.0, 0.0);
        double r96988 = sqrt(r96987);
        double r96989 = r96986 / r96988;
        double r96990 = 2.0;
        double r96991 = x;
        double r96992 = fabs(r96991);
        double r96993 = r96990 * r96992;
        double r96994 = 3.0;
        double r96995 = r96990 / r96994;
        double r96996 = r96992 * r96992;
        double r96997 = r96996 * r96992;
        double r96998 = r96995 * r96997;
        double r96999 = r96993 + r96998;
        double r97000 = 5.0;
        double r97001 = r96986 / r97000;
        double r97002 = r96997 * r96992;
        double r97003 = r97002 * r96992;
        double r97004 = r97001 * r97003;
        double r97005 = r96999 + r97004;
        double r97006 = 21.0;
        double r97007 = r96986 / r97006;
        double r97008 = r97003 * r96992;
        double r97009 = r97008 * r96992;
        double r97010 = r97007 * r97009;
        double r97011 = r97005 + r97010;
        double r97012 = r96989 * r97011;
        double r97013 = fabs(r97012);
        return r97013;
}

double f(double x) {
        double r97014 = x;
        double r97015 = fabs(r97014);
        double r97016 = 7.0;
        double r97017 = pow(r97015, r97016);
        double r97018 = 1.0;
        double r97019 = 21.0;
        double r97020 = r97018 / r97019;
        double r97021 = 4.0;
        double r97022 = pow(r97015, r97021);
        double r97023 = 5.0;
        double r97024 = r97018 / r97023;
        double r97025 = 2.0;
        double r97026 = fma(r97022, r97024, r97025);
        double r97027 = 3.0;
        double r97028 = 3.0;
        double r97029 = pow(r97015, r97028);
        double r97030 = r97027 / r97029;
        double r97031 = r97025 / r97030;
        double r97032 = fma(r97015, r97026, r97031);
        double r97033 = fma(r97017, r97020, r97032);
        double r97034 = atan2(1.0, 0.0);
        double r97035 = sqrt(r97034);
        double r97036 = sqrt(r97035);
        double r97037 = r97036 * r97036;
        double r97038 = r97037 / r97018;
        double r97039 = r97033 / r97038;
        double r97040 = fabs(r97039);
        return r97040;
}

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. Simplified0.6

    \[\leadsto \color{blue}{\left|\frac{\mathsf{fma}\left({\left(\left|x\right|\right)}^{7}, \frac{1}{21}, \mathsf{fma}\left(\left|x\right|, \mathsf{fma}\left({\left(\left|x\right|\right)}^{4}, \frac{1}{5}, 2\right), \frac{2}{\frac{3}{{\left(\left|x\right|\right)}^{3}}}\right)\right)}{\frac{\sqrt{\pi}}{1}}\right|}\]
  3. Using strategy rm
  4. Applied add-sqr-sqrt0.6

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

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

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

Reproduce

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