Average Error: 0.0 → 0.0
Time: 3.6s
Precision: 64
\[\log \left(\frac{1}{x} + \frac{\sqrt{1 - x \cdot x}}{x}\right)\]
\[\log \left(\frac{1}{x} + \frac{\sqrt{\left(\sqrt{1} + x\right) \cdot \left(\sqrt{1} - x\right)}}{x}\right)\]
\log \left(\frac{1}{x} + \frac{\sqrt{1 - x \cdot x}}{x}\right)
\log \left(\frac{1}{x} + \frac{\sqrt{\left(\sqrt{1} + x\right) \cdot \left(\sqrt{1} - x\right)}}{x}\right)
double f(double x) {
        double r80908 = 1.0;
        double r80909 = x;
        double r80910 = r80908 / r80909;
        double r80911 = r80909 * r80909;
        double r80912 = r80908 - r80911;
        double r80913 = sqrt(r80912);
        double r80914 = r80913 / r80909;
        double r80915 = r80910 + r80914;
        double r80916 = log(r80915);
        return r80916;
}

double f(double x) {
        double r80917 = 1.0;
        double r80918 = x;
        double r80919 = r80917 / r80918;
        double r80920 = sqrt(r80917);
        double r80921 = r80920 + r80918;
        double r80922 = r80920 - r80918;
        double r80923 = r80921 * r80922;
        double r80924 = sqrt(r80923);
        double r80925 = r80924 / r80918;
        double r80926 = r80919 + r80925;
        double r80927 = log(r80926);
        return r80927;
}

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

    \[\log \left(\frac{1}{x} + \frac{\sqrt{1 - x \cdot x}}{x}\right)\]
  2. Using strategy rm
  3. Applied add-sqr-sqrt0.0

    \[\leadsto \log \left(\frac{1}{x} + \frac{\sqrt{\color{blue}{\sqrt{1} \cdot \sqrt{1}} - x \cdot x}}{x}\right)\]
  4. Applied difference-of-squares0.0

    \[\leadsto \log \left(\frac{1}{x} + \frac{\sqrt{\color{blue}{\left(\sqrt{1} + x\right) \cdot \left(\sqrt{1} - x\right)}}}{x}\right)\]
  5. Final simplification0.0

    \[\leadsto \log \left(\frac{1}{x} + \frac{\sqrt{\left(\sqrt{1} + x\right) \cdot \left(\sqrt{1} - x\right)}}{x}\right)\]

Reproduce

herbie shell --seed 2020057 
(FPCore (x)
  :name "Hyperbolic arc-(co)secant"
  :precision binary64
  (log (+ (/ 1 x) (/ (sqrt (- 1 (* x x))) x))))