Average Error: 0.0 → 0.5
Time: 30.5s
Precision: 64
\[\frac{2}{e^{x} + e^{-x}}\]
\[\sqrt{2} \cdot \frac{\sqrt{2}}{e^{x} + e^{-x}}\]
\frac{2}{e^{x} + e^{-x}}
\sqrt{2} \cdot \frac{\sqrt{2}}{e^{x} + e^{-x}}
double f(double x) {
        double r53686 = 2.0;
        double r53687 = x;
        double r53688 = exp(r53687);
        double r53689 = -r53687;
        double r53690 = exp(r53689);
        double r53691 = r53688 + r53690;
        double r53692 = r53686 / r53691;
        return r53692;
}

double f(double x) {
        double r53693 = 2.0;
        double r53694 = sqrt(r53693);
        double r53695 = x;
        double r53696 = exp(r53695);
        double r53697 = -r53695;
        double r53698 = exp(r53697);
        double r53699 = r53696 + r53698;
        double r53700 = r53694 / r53699;
        double r53701 = r53694 * r53700;
        return r53701;
}

Error

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 0.0

    \[\frac{2}{e^{x} + e^{-x}}\]
  2. Using strategy rm
  3. Applied *-un-lft-identity0.0

    \[\leadsto \frac{2}{\color{blue}{1 \cdot \left(e^{x} + e^{-x}\right)}}\]
  4. Applied add-sqr-sqrt0.5

    \[\leadsto \frac{\color{blue}{\sqrt{2} \cdot \sqrt{2}}}{1 \cdot \left(e^{x} + e^{-x}\right)}\]
  5. Applied times-frac0.5

    \[\leadsto \color{blue}{\frac{\sqrt{2}}{1} \cdot \frac{\sqrt{2}}{e^{x} + e^{-x}}}\]
  6. Simplified0.5

    \[\leadsto \color{blue}{\sqrt{2}} \cdot \frac{\sqrt{2}}{e^{x} + e^{-x}}\]
  7. Final simplification0.5

    \[\leadsto \sqrt{2} \cdot \frac{\sqrt{2}}{e^{x} + e^{-x}}\]

Reproduce

herbie shell --seed 2019291 
(FPCore (x)
  :name "Hyperbolic secant"
  :precision binary64
  (/ 2 (+ (exp x) (exp (- x)))))