Average Error: 59.7 → 1.8
Time: 3.8m
Precision: 64
Internal Precision: 1408
\[-\frac{1}{\frac{\pi}{4}} \cdot \log \left(\frac{e^{\frac{\pi}{4} \cdot f} + e^{-\frac{\pi}{4} \cdot f}}{e^{\frac{\pi}{4} \cdot f} - e^{-\frac{\pi}{4} \cdot f}}\right)\]
\[\begin{array}{l} \mathbf{if}\;\frac{\pi}{4} \cdot f \le 0.04419439170710976:\\ \;\;\;\;-(\pi \cdot \left(\left(f \cdot \frac{1}{12}\right) \cdot f - \left(\frac{7}{5760} \cdot {f}^{4}\right) \cdot \left(\pi \cdot \pi\right)\right) + \left(\frac{4 \cdot \log \left(\frac{4}{\pi}\right) - 4 \cdot \log f}{\pi}\right))_*\\ \mathbf{else}:\\ \;\;\;\;-\log_* (1 + (e^{\frac{\log \left(\frac{e^{\left(-f\right) \cdot \frac{\pi}{4}} + e^{\frac{f \cdot \pi}{4}}}{e^{\frac{f \cdot \pi}{4}} - e^{\left(-f\right) \cdot \frac{\pi}{4}}}\right)}{\frac{\pi}{4}}} - 1)^*)\\ \end{array}\]

Error

Bits error versus f

Derivation

  1. Split input into 2 regimes
  2. if (* (/ PI 4) f) < 0.04419439170710976

    1. Initial program 60.2

      \[-\frac{1}{\frac{\pi}{4}} \cdot \log \left(\frac{e^{\frac{\pi}{4} \cdot f} + e^{-\frac{\pi}{4} \cdot f}}{e^{\frac{\pi}{4} \cdot f} - e^{-\frac{\pi}{4} \cdot f}}\right)\]
    2. Taylor expanded around 0 0.4

      \[\leadsto -\color{blue}{\left(\left(4 \cdot \frac{\log \left(\frac{4}{\pi}\right)}{\pi} + \frac{1}{12} \cdot \left(\pi \cdot {f}^{2}\right)\right) - \left(\frac{7}{5760} \cdot \left({\pi}^{3} \cdot {f}^{4}\right) + 4 \cdot \frac{\log f}{\pi}\right)\right)}\]
    3. Applied simplify0.4

      \[\leadsto \color{blue}{-(\pi \cdot \left(\left(f \cdot \frac{1}{12}\right) \cdot f - \left(\frac{7}{5760} \cdot {f}^{4}\right) \cdot \left(\pi \cdot \pi\right)\right) + \left(\frac{4}{\pi} \cdot \log \left(\frac{4}{\pi}\right) - \frac{4}{\pi} \cdot \log f\right))_*}\]
    4. Using strategy rm
    5. Applied associate-*l/0.4

      \[\leadsto -(\pi \cdot \left(\left(f \cdot \frac{1}{12}\right) \cdot f - \left(\frac{7}{5760} \cdot {f}^{4}\right) \cdot \left(\pi \cdot \pi\right)\right) + \left(\frac{4}{\pi} \cdot \log \left(\frac{4}{\pi}\right) - \color{blue}{\frac{4 \cdot \log f}{\pi}}\right))_*\]
    6. Applied associate-*l/0.4

      \[\leadsto -(\pi \cdot \left(\left(f \cdot \frac{1}{12}\right) \cdot f - \left(\frac{7}{5760} \cdot {f}^{4}\right) \cdot \left(\pi \cdot \pi\right)\right) + \left(\color{blue}{\frac{4 \cdot \log \left(\frac{4}{\pi}\right)}{\pi}} - \frac{4 \cdot \log f}{\pi}\right))_*\]
    7. Applied sub-div0.3

      \[\leadsto -(\pi \cdot \left(\left(f \cdot \frac{1}{12}\right) \cdot f - \left(\frac{7}{5760} \cdot {f}^{4}\right) \cdot \left(\pi \cdot \pi\right)\right) + \color{blue}{\left(\frac{4 \cdot \log \left(\frac{4}{\pi}\right) - 4 \cdot \log f}{\pi}\right)})_*\]

    if 0.04419439170710976 < (* (/ PI 4) f)

    1. Initial program 44.6

      \[-\frac{1}{\frac{\pi}{4}} \cdot \log \left(\frac{e^{\frac{\pi}{4} \cdot f} + e^{-\frac{\pi}{4} \cdot f}}{e^{\frac{\pi}{4} \cdot f} - e^{-\frac{\pi}{4} \cdot f}}\right)\]
    2. Using strategy rm
    3. Applied log1p-expm1-u44.6

      \[\leadsto -\color{blue}{\log_* (1 + (e^{\frac{1}{\frac{\pi}{4}} \cdot \log \left(\frac{e^{\frac{\pi}{4} \cdot f} + e^{-\frac{\pi}{4} \cdot f}}{e^{\frac{\pi}{4} \cdot f} - e^{-\frac{\pi}{4} \cdot f}}\right)} - 1)^*)}\]
    4. Applied simplify44.6

      \[\leadsto -\log_* (1 + \color{blue}{(e^{\frac{\log \left(\frac{e^{\left(-f\right) \cdot \frac{\pi}{4}} + e^{\frac{f \cdot \pi}{4}}}{e^{\frac{f \cdot \pi}{4}} - e^{\left(-f\right) \cdot \frac{\pi}{4}}}\right)}{\frac{\pi}{4}}} - 1)^*})\]
  3. Recombined 2 regimes into one program.

Runtime

Time bar (total: 3.8m)Debug logProfile

herbie shell --seed '#(1070100504 930361288 1279167582 284574201 1450237281 2578255382)' +o rules:numerics
(FPCore (f)
  :name "VandenBroeck and Keller, Equation (20)"
  (- (* (/ 1 (/ PI 4)) (log (/ (+ (exp (* (/ PI 4) f)) (exp (- (* (/ PI 4) f)))) (- (exp (* (/ PI 4) f)) (exp (- (* (/ PI 4) f)))))))))