Average Error: 58.6 → 0.2
Time: 13.1s
Precision: 64
\[\frac{1}{2} \cdot \log \left(\frac{1 + x}{1 - x}\right)\]
\[\frac{1}{2} \cdot \mathsf{fma}\left(\frac{2}{3}, \frac{{x}^{3}}{{1}^{3}}, \mathsf{fma}\left(2, x, \frac{2}{5} \cdot \frac{{x}^{5}}{{1}^{5}}\right)\right)\]
\frac{1}{2} \cdot \log \left(\frac{1 + x}{1 - x}\right)
\frac{1}{2} \cdot \mathsf{fma}\left(\frac{2}{3}, \frac{{x}^{3}}{{1}^{3}}, \mathsf{fma}\left(2, x, \frac{2}{5} \cdot \frac{{x}^{5}}{{1}^{5}}\right)\right)
double f(double x) {
        double r63225 = 1.0;
        double r63226 = 2.0;
        double r63227 = r63225 / r63226;
        double r63228 = x;
        double r63229 = r63225 + r63228;
        double r63230 = r63225 - r63228;
        double r63231 = r63229 / r63230;
        double r63232 = log(r63231);
        double r63233 = r63227 * r63232;
        return r63233;
}

double f(double x) {
        double r63234 = 1.0;
        double r63235 = 2.0;
        double r63236 = r63234 / r63235;
        double r63237 = 0.6666666666666666;
        double r63238 = x;
        double r63239 = 3.0;
        double r63240 = pow(r63238, r63239);
        double r63241 = pow(r63234, r63239);
        double r63242 = r63240 / r63241;
        double r63243 = 0.4;
        double r63244 = 5.0;
        double r63245 = pow(r63238, r63244);
        double r63246 = pow(r63234, r63244);
        double r63247 = r63245 / r63246;
        double r63248 = r63243 * r63247;
        double r63249 = fma(r63235, r63238, r63248);
        double r63250 = fma(r63237, r63242, r63249);
        double r63251 = r63236 * r63250;
        return r63251;
}

Error

Bits error versus x

Derivation

  1. Initial program 58.6

    \[\frac{1}{2} \cdot \log \left(\frac{1 + x}{1 - x}\right)\]
  2. Using strategy rm
  3. Applied log-div58.6

    \[\leadsto \frac{1}{2} \cdot \color{blue}{\left(\log \left(1 + x\right) - \log \left(1 - x\right)\right)}\]
  4. Taylor expanded around 0 0.2

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

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

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

Reproduce

herbie shell --seed 2019235 +o rules:numerics
(FPCore (x)
  :name "Hyperbolic arc-(co)tangent"
  :precision binary64
  (* (/ 1 2) (log (/ (+ 1 x) (- 1 x)))))