Average Error: 58.5 → 0.2
Time: 11.5s
Precision: 64
\[\log \left(\frac{1 - \varepsilon}{1 + \varepsilon}\right)\]
\[\left(\frac{-2}{3} \cdot {\left(\frac{\varepsilon}{1}\right)}^{3} - \frac{2}{5} \cdot \frac{{\varepsilon}^{5}}{{1}^{5}}\right) - 2 \cdot \varepsilon\]
\log \left(\frac{1 - \varepsilon}{1 + \varepsilon}\right)
\left(\frac{-2}{3} \cdot {\left(\frac{\varepsilon}{1}\right)}^{3} - \frac{2}{5} \cdot \frac{{\varepsilon}^{5}}{{1}^{5}}\right) - 2 \cdot \varepsilon
double f(double eps) {
        double r63648 = 1.0;
        double r63649 = eps;
        double r63650 = r63648 - r63649;
        double r63651 = r63648 + r63649;
        double r63652 = r63650 / r63651;
        double r63653 = log(r63652);
        return r63653;
}

double f(double eps) {
        double r63654 = -0.6666666666666666;
        double r63655 = eps;
        double r63656 = 1.0;
        double r63657 = r63655 / r63656;
        double r63658 = 3.0;
        double r63659 = pow(r63657, r63658);
        double r63660 = r63654 * r63659;
        double r63661 = 0.4;
        double r63662 = 5.0;
        double r63663 = pow(r63655, r63662);
        double r63664 = pow(r63656, r63662);
        double r63665 = r63663 / r63664;
        double r63666 = r63661 * r63665;
        double r63667 = r63660 - r63666;
        double r63668 = 2.0;
        double r63669 = r63668 * r63655;
        double r63670 = r63667 - r63669;
        return r63670;
}

Error

Bits error versus eps

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original58.5
Target0.2
Herbie0.2
\[-2 \cdot \left(\left(\varepsilon + \frac{{\varepsilon}^{3}}{3}\right) + \frac{{\varepsilon}^{5}}{5}\right)\]

Derivation

  1. Initial program 58.5

    \[\log \left(\frac{1 - \varepsilon}{1 + \varepsilon}\right)\]
  2. Using strategy rm
  3. Applied add-exp-log58.5

    \[\leadsto \log \left(\frac{1 - \varepsilon}{\color{blue}{e^{\log \left(1 + \varepsilon\right)}}}\right)\]
  4. Applied add-exp-log58.5

    \[\leadsto \log \left(\frac{\color{blue}{e^{\log \left(1 - \varepsilon\right)}}}{e^{\log \left(1 + \varepsilon\right)}}\right)\]
  5. Applied div-exp58.5

    \[\leadsto \log \color{blue}{\left(e^{\log \left(1 - \varepsilon\right) - \log \left(1 + \varepsilon\right)}\right)}\]
  6. Applied rem-log-exp58.5

    \[\leadsto \color{blue}{\log \left(1 - \varepsilon\right) - \log \left(1 + \varepsilon\right)}\]
  7. Taylor expanded around 0 0.2

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

    \[\leadsto \color{blue}{\left(\frac{-2}{3} \cdot {\left(\frac{\varepsilon}{1}\right)}^{3} - \frac{2}{5} \cdot \frac{{\varepsilon}^{5}}{{1}^{5}}\right) - 2 \cdot \varepsilon}\]
  9. Final simplification0.2

    \[\leadsto \left(\frac{-2}{3} \cdot {\left(\frac{\varepsilon}{1}\right)}^{3} - \frac{2}{5} \cdot \frac{{\varepsilon}^{5}}{{1}^{5}}\right) - 2 \cdot \varepsilon\]

Reproduce

herbie shell --seed 2019347 
(FPCore (eps)
  :name "logq (problem 3.4.3)"
  :precision binary64

  :herbie-target
  (* -2 (+ (+ eps (/ (pow eps 3) 3)) (/ (pow eps 5) 5)))

  (log (/ (- 1 eps) (+ 1 eps))))