Average Error: 58.6 → 0.2
Time: 13.6s
Precision: 64
\[\frac{1}{2} \cdot \log \left(\frac{1 + x}{1 - x}\right)\]
\[\frac{1}{2} \cdot \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)\]
\frac{1}{2} \cdot \log \left(\frac{1 + x}{1 - x}\right)
\frac{1}{2} \cdot \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)
double f(double x) {
        double r38958 = 1.0;
        double r38959 = 2.0;
        double r38960 = r38958 / r38959;
        double r38961 = x;
        double r38962 = r38958 + r38961;
        double r38963 = r38958 - r38961;
        double r38964 = r38962 / r38963;
        double r38965 = log(r38964);
        double r38966 = r38960 * r38965;
        return r38966;
}

double f(double x) {
        double r38967 = 1.0;
        double r38968 = 2.0;
        double r38969 = r38967 / r38968;
        double r38970 = 0.6666666666666666;
        double r38971 = x;
        double r38972 = 3.0;
        double r38973 = pow(r38971, r38972);
        double r38974 = pow(r38967, r38972);
        double r38975 = r38973 / r38974;
        double r38976 = r38970 * r38975;
        double r38977 = r38968 * r38971;
        double r38978 = 0.4;
        double r38979 = 5.0;
        double r38980 = pow(r38971, r38979);
        double r38981 = pow(r38967, r38979);
        double r38982 = r38980 / r38981;
        double r38983 = r38978 * r38982;
        double r38984 = r38977 + r38983;
        double r38985 = r38976 + r38984;
        double r38986 = r38969 * r38985;
        return r38986;
}

Error

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 58.6

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

    \[\leadsto \frac{1}{2} \cdot \log \color{blue}{\left(\left(1 + x\right) \cdot \frac{1}{1 - x}\right)}\]
  4. Applied log-prod58.6

    \[\leadsto \frac{1}{2} \cdot \color{blue}{\left(\log \left(1 + x\right) + \log \left(\frac{1}{1 - x}\right)\right)}\]
  5. Simplified58.6

    \[\leadsto \frac{1}{2} \cdot \left(\log \left(1 + x\right) + \color{blue}{\left(-\log \left(1 - x\right)\right)}\right)\]
  6. 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)}\]
  7. Final simplification0.2

    \[\leadsto \frac{1}{2} \cdot \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)\]

Reproduce

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