?

Average Accuracy: 100.0% → 100.0%
Time: 4.6s
Precision: binary64
Cost: 13376

?

\[\mathsf{log.f64}\left(\mathsf{+.f64}\left(\mathsf{/.f64}\left(1, x\right), \mathsf{/.f64}\left(\mathsf{sqrt.f64}\left(\mathsf{\_.f64}\left(1, \mathsf{*.f64}\left(x, x\right)\right)\right), x\right)\right)\right) \]
\[\mathsf{log.f64}\left(\mathsf{/.f64}\left(\mathsf{+.f64}\left(1, \mathsf{sqrt.f64}\left(\mathsf{\_.f64}\left(1, \mathsf{*.f64}\left(x, x\right)\right)\right)\right), x\right)\right) \]
(FPCore (x)
 :precision binary64
 (log.f64 (+.f64 (/.f64 1 x) (/.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))) x))))
(FPCore (x)
 :precision binary64
 (log.f64 (/.f64 (+.f64 1 (sqrt.f64 (-.f64 1 (*.f64 x x)))) x)))
\mathsf{log.f64}\left(\mathsf{+.f64}\left(\mathsf{/.f64}\left(1, x\right), \mathsf{/.f64}\left(\mathsf{sqrt.f64}\left(\mathsf{\_.f64}\left(1, \mathsf{*.f64}\left(x, x\right)\right)\right), x\right)\right)\right)
\mathsf{log.f64}\left(\mathsf{/.f64}\left(\mathsf{+.f64}\left(1, \mathsf{sqrt.f64}\left(\mathsf{\_.f64}\left(1, \mathsf{*.f64}\left(x, x\right)\right)\right)\right), x\right)\right)

Error?

Derivation?

  1. Initial program 100.0%

    \[\mathsf{log.f64}\left(\mathsf{+.f64}\left(\mathsf{/.f64}\left(1, x\right), \mathsf{/.f64}\left(\mathsf{sqrt.f64}\left(\mathsf{\_.f64}\left(1, \mathsf{*.f64}\left(x, x\right)\right)\right), x\right)\right)\right) \]
  2. Applied egg-rr99.9%

    \[\leadsto \mathsf{log.f64}\left(\color{blue}{\mathsf{\_.f64}\left(\mathsf{exp.f64}\left(\mathsf{log1p.f64}\left(\mathsf{*.f64}\left(\mathsf{/.f64}\left(1, x\right), \mathsf{+.f64}\left(1, \mathsf{sqrt.f64}\left(\mathsf{\_.f64}\left(1, \mathsf{*.f64}\left(x, x\right)\right)\right)\right)\right)\right)\right), 1\right)}\right) \]
    Proof

    [Start]100.0

    \[ \mathsf{log.f64}\left(\mathsf{+.f64}\left(\mathsf{/.f64}\left(1, x\right), \mathsf{/.f64}\left(\mathsf{sqrt.f64}\left(\mathsf{\_.f64}\left(1, \mathsf{*.f64}\left(x, x\right)\right)\right), x\right)\right)\right) \]

    expm1-log1p-u [=>]99.9

    \[ \mathsf{log.f64}\left(\color{blue}{\mathsf{expm1.f64}\left(\mathsf{log1p.f64}\left(\mathsf{+.f64}\left(\mathsf{/.f64}\left(1, x\right), \mathsf{/.f64}\left(\mathsf{sqrt.f64}\left(\mathsf{\_.f64}\left(1, \mathsf{*.f64}\left(x, x\right)\right)\right), x\right)\right)\right)\right)}\right) \]

    expm1-udef [=>]99.9

    \[ \mathsf{log.f64}\left(\color{blue}{\mathsf{\_.f64}\left(\mathsf{exp.f64}\left(\mathsf{log1p.f64}\left(\mathsf{+.f64}\left(\mathsf{/.f64}\left(1, x\right), \mathsf{/.f64}\left(\mathsf{sqrt.f64}\left(\mathsf{\_.f64}\left(1, \mathsf{*.f64}\left(x, x\right)\right)\right), x\right)\right)\right)\right), 1\right)}\right) \]

    *-un-lft-identity [=>]99.9

    \[ \mathsf{log.f64}\left(\mathsf{\_.f64}\left(\mathsf{exp.f64}\left(\mathsf{log1p.f64}\left(\mathsf{+.f64}\left(\color{blue}{\mathsf{*.f64}\left(1, \mathsf{/.f64}\left(1, x\right)\right)}, \mathsf{/.f64}\left(\mathsf{sqrt.f64}\left(\mathsf{\_.f64}\left(1, \mathsf{*.f64}\left(x, x\right)\right)\right), x\right)\right)\right)\right), 1\right)\right) \]

    div-inv [=>]99.9

    \[ \mathsf{log.f64}\left(\mathsf{\_.f64}\left(\mathsf{exp.f64}\left(\mathsf{log1p.f64}\left(\mathsf{+.f64}\left(\mathsf{*.f64}\left(1, \mathsf{/.f64}\left(1, x\right)\right), \color{blue}{\mathsf{*.f64}\left(\mathsf{sqrt.f64}\left(\mathsf{\_.f64}\left(1, \mathsf{*.f64}\left(x, x\right)\right)\right), \mathsf{/.f64}\left(1, x\right)\right)}\right)\right)\right), 1\right)\right) \]

    distribute-rgt-out [=>]99.9

    \[ \mathsf{log.f64}\left(\mathsf{\_.f64}\left(\mathsf{exp.f64}\left(\mathsf{log1p.f64}\left(\color{blue}{\mathsf{*.f64}\left(\mathsf{/.f64}\left(1, x\right), \mathsf{+.f64}\left(1, \mathsf{sqrt.f64}\left(\mathsf{\_.f64}\left(1, \mathsf{*.f64}\left(x, x\right)\right)\right)\right)\right)}\right)\right), 1\right)\right) \]
  3. Simplified100.0%

    \[\leadsto \mathsf{log.f64}\left(\color{blue}{\mathsf{/.f64}\left(\mathsf{+.f64}\left(1, \mathsf{sqrt.f64}\left(\mathsf{\_.f64}\left(1, \mathsf{*.f64}\left(x, x\right)\right)\right)\right), x\right)}\right) \]
    Proof

    [Start]99.9

    \[ \mathsf{log.f64}\left(\mathsf{\_.f64}\left(\mathsf{exp.f64}\left(\mathsf{log1p.f64}\left(\mathsf{*.f64}\left(\mathsf{/.f64}\left(1, x\right), \mathsf{+.f64}\left(1, \mathsf{sqrt.f64}\left(\mathsf{\_.f64}\left(1, \mathsf{*.f64}\left(x, x\right)\right)\right)\right)\right)\right)\right), 1\right)\right) \]

    expm1-def [=>]99.9

    \[ \mathsf{log.f64}\left(\color{blue}{\mathsf{expm1.f64}\left(\mathsf{log1p.f64}\left(\mathsf{*.f64}\left(\mathsf{/.f64}\left(1, x\right), \mathsf{+.f64}\left(1, \mathsf{sqrt.f64}\left(\mathsf{\_.f64}\left(1, \mathsf{*.f64}\left(x, x\right)\right)\right)\right)\right)\right)\right)}\right) \]

    expm1-log1p [=>]100.0

    \[ \mathsf{log.f64}\left(\color{blue}{\mathsf{*.f64}\left(\mathsf{/.f64}\left(1, x\right), \mathsf{+.f64}\left(1, \mathsf{sqrt.f64}\left(\mathsf{\_.f64}\left(1, \mathsf{*.f64}\left(x, x\right)\right)\right)\right)\right)}\right) \]

    +-commutative [<=]100.0

    \[ \mathsf{log.f64}\left(\mathsf{*.f64}\left(\mathsf{/.f64}\left(1, x\right), \color{blue}{\mathsf{+.f64}\left(\mathsf{sqrt.f64}\left(\mathsf{\_.f64}\left(1, \mathsf{*.f64}\left(x, x\right)\right)\right), 1\right)}\right)\right) \]

    associate-*l/ [=>]100.0

    \[ \mathsf{log.f64}\left(\color{blue}{\mathsf{/.f64}\left(\mathsf{*.f64}\left(1, \mathsf{+.f64}\left(\mathsf{sqrt.f64}\left(\mathsf{\_.f64}\left(1, \mathsf{*.f64}\left(x, x\right)\right)\right), 1\right)\right), x\right)}\right) \]

    *-lft-identity [=>]100.0

    \[ \mathsf{log.f64}\left(\mathsf{/.f64}\left(\color{blue}{\mathsf{+.f64}\left(\mathsf{sqrt.f64}\left(\mathsf{\_.f64}\left(1, \mathsf{*.f64}\left(x, x\right)\right)\right), 1\right)}, x\right)\right) \]

    +-commutative [=>]100.0

    \[ \mathsf{log.f64}\left(\mathsf{/.f64}\left(\color{blue}{\mathsf{+.f64}\left(1, \mathsf{sqrt.f64}\left(\mathsf{\_.f64}\left(1, \mathsf{*.f64}\left(x, x\right)\right)\right)\right)}, x\right)\right) \]
  4. Final simplification100.0%

    \[\leadsto \mathsf{log.f64}\left(\mathsf{/.f64}\left(\mathsf{+.f64}\left(1, \mathsf{sqrt.f64}\left(\mathsf{\_.f64}\left(1, \mathsf{*.f64}\left(x, x\right)\right)\right)\right), x\right)\right) \]

Alternatives

Alternative 1
Accuracy99.5%
Cost6976
\[\mathsf{log.f64}\left(\mathsf{+.f64}\left(\mathsf{*.f64}\left(x, \frac{-1}{2}\right), \mathsf{*.f64}\left(2, \mathsf{/.f64}\left(1, x\right)\right)\right)\right) \]
Alternative 2
Accuracy99.2%
Cost6656
\[\mathsf{neg.f64}\left(\mathsf{log.f64}\left(\mathsf{*.f64}\left(x, \frac{1}{2}\right)\right)\right) \]
Alternative 3
Accuracy99.1%
Cost6592
\[\mathsf{log.f64}\left(\mathsf{/.f64}\left(2, x\right)\right) \]

Error

Reproduce?

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