Average Error: 58.5 → 0.2
Time: 32.0s
Precision: 64
\[\frac{1.0}{2.0} \cdot \log \left(\frac{1.0 + x}{1.0 - x}\right)\]
\[\left(\frac{{x}^{5}}{{1.0}^{5}} \cdot \frac{2}{5} + \left(\frac{x}{1.0} \cdot \log \left(e^{\frac{2}{3} \cdot \left(\frac{x}{1.0} \cdot \frac{x}{1.0}\right)}\right) + x \cdot 2.0\right)\right) \cdot \frac{1.0}{2.0}\]
\frac{1.0}{2.0} \cdot \log \left(\frac{1.0 + x}{1.0 - x}\right)
\left(\frac{{x}^{5}}{{1.0}^{5}} \cdot \frac{2}{5} + \left(\frac{x}{1.0} \cdot \log \left(e^{\frac{2}{3} \cdot \left(\frac{x}{1.0} \cdot \frac{x}{1.0}\right)}\right) + x \cdot 2.0\right)\right) \cdot \frac{1.0}{2.0}
double f(double x) {
        double r2650480 = 1.0;
        double r2650481 = 2.0;
        double r2650482 = r2650480 / r2650481;
        double r2650483 = x;
        double r2650484 = r2650480 + r2650483;
        double r2650485 = r2650480 - r2650483;
        double r2650486 = r2650484 / r2650485;
        double r2650487 = log(r2650486);
        double r2650488 = r2650482 * r2650487;
        return r2650488;
}

double f(double x) {
        double r2650489 = x;
        double r2650490 = 5.0;
        double r2650491 = pow(r2650489, r2650490);
        double r2650492 = 1.0;
        double r2650493 = pow(r2650492, r2650490);
        double r2650494 = r2650491 / r2650493;
        double r2650495 = 0.4;
        double r2650496 = r2650494 * r2650495;
        double r2650497 = r2650489 / r2650492;
        double r2650498 = 0.6666666666666666;
        double r2650499 = r2650497 * r2650497;
        double r2650500 = r2650498 * r2650499;
        double r2650501 = exp(r2650500);
        double r2650502 = log(r2650501);
        double r2650503 = r2650497 * r2650502;
        double r2650504 = 2.0;
        double r2650505 = r2650489 * r2650504;
        double r2650506 = r2650503 + r2650505;
        double r2650507 = r2650496 + r2650506;
        double r2650508 = r2650492 / r2650504;
        double r2650509 = r2650507 * r2650508;
        return r2650509;
}

Error

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 58.5

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

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

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

    \[\leadsto \frac{1.0}{2.0} \cdot \color{blue}{\left(\frac{{x}^{5}}{{1.0}^{5}} \cdot \frac{2}{5} + \left(x \cdot 2.0 + \left(\frac{2}{3} \cdot \left(\frac{x}{1.0} \cdot \frac{x}{1.0}\right)\right) \cdot \frac{x}{1.0}\right)\right)}\]
  6. Using strategy rm
  7. Applied add-log-exp0.2

    \[\leadsto \frac{1.0}{2.0} \cdot \left(\frac{{x}^{5}}{{1.0}^{5}} \cdot \frac{2}{5} + \left(x \cdot 2.0 + \color{blue}{\log \left(e^{\frac{2}{3} \cdot \left(\frac{x}{1.0} \cdot \frac{x}{1.0}\right)}\right)} \cdot \frac{x}{1.0}\right)\right)\]
  8. Final simplification0.2

    \[\leadsto \left(\frac{{x}^{5}}{{1.0}^{5}} \cdot \frac{2}{5} + \left(\frac{x}{1.0} \cdot \log \left(e^{\frac{2}{3} \cdot \left(\frac{x}{1.0} \cdot \frac{x}{1.0}\right)}\right) + x \cdot 2.0\right)\right) \cdot \frac{1.0}{2.0}\]

Reproduce

herbie shell --seed 2019165 
(FPCore (x)
  :name "Hyperbolic arc-(co)tangent"
  (* (/ 1.0 2.0) (log (/ (+ 1.0 x) (- 1.0 x)))))