Average Error: 0.3 → 0.3
Time: 1.1min
Precision: binary32
\[\left(2.328306437 \cdot 10^{-10} \leq u \land u \leq 1\right) \land \left(0 \leq s \land s \leq 1.0651631\right)\]
\[\left(-s\right) \cdot \log \left(\frac{1}{u \cdot \left(\frac{1}{1 + e^{\frac{-\pi}{s}}} - \frac{1}{1 + e^{\frac{\pi}{s}}}\right) + \frac{1}{1 + e^{\frac{\pi}{s}}}} - 1\right) \]
\[\begin{array}{l} t_0 := \frac{u}{1 + e^{-\frac{\pi}{s}}} + \frac{1 - u}{1 + e^{\frac{\pi}{s}}}\\ -\mathsf{fma}\left(s, \mathsf{log1p}\left(\frac{1}{\sqrt{t_0}}\right), s \cdot \log \left({t_0}^{-0.5} + -1\right)\right) \end{array} \]
\left(-s\right) \cdot \log \left(\frac{1}{u \cdot \left(\frac{1}{1 + e^{\frac{-\pi}{s}}} - \frac{1}{1 + e^{\frac{\pi}{s}}}\right) + \frac{1}{1 + e^{\frac{\pi}{s}}}} - 1\right)
\begin{array}{l}
t_0 := \frac{u}{1 + e^{-\frac{\pi}{s}}} + \frac{1 - u}{1 + e^{\frac{\pi}{s}}}\\
-\mathsf{fma}\left(s, \mathsf{log1p}\left(\frac{1}{\sqrt{t_0}}\right), s \cdot \log \left({t_0}^{-0.5} + -1\right)\right)
\end{array}
(FPCore (u s)
 :precision binary32
 (*
  (- s)
  (log
   (-
    (/
     1.0
     (+
      (*
       u
       (- (/ 1.0 (+ 1.0 (exp (/ (- PI) s)))) (/ 1.0 (+ 1.0 (exp (/ PI s))))))
      (/ 1.0 (+ 1.0 (exp (/ PI s))))))
    1.0))))
(FPCore (u s)
 :precision binary32
 (let* ((t_0
         (+
          (/ u (+ 1.0 (exp (- (/ PI s)))))
          (/ (- 1.0 u) (+ 1.0 (exp (/ PI s)))))))
   (- (fma s (log1p (/ 1.0 (sqrt t_0))) (* s (log (+ (pow t_0 -0.5) -1.0)))))))
float code(float u, float s) {
	return -s * logf((1.0f / ((u * ((1.0f / (1.0f + expf(-((float) M_PI) / s))) - (1.0f / (1.0f + expf(((float) M_PI) / s))))) + (1.0f / (1.0f + expf(((float) M_PI) / s))))) - 1.0f);
}
float code(float u, float s) {
	float t_0 = (u / (1.0f + expf(-(((float) M_PI) / s)))) + ((1.0f - u) / (1.0f + expf(((float) M_PI) / s)));
	return -fmaf(s, log1pf(1.0f / sqrtf(t_0)), (s * logf(powf(t_0, -0.5f) + -1.0f)));
}

Error

Bits error versus u

Bits error versus s

Derivation

  1. Initial program 0.3

    \[\left(-s\right) \cdot \log \left(\frac{1}{u \cdot \left(\frac{1}{1 + e^{\frac{-\pi}{s}}} - \frac{1}{1 + e^{\frac{\pi}{s}}}\right) + \frac{1}{1 + e^{\frac{\pi}{s}}}} - 1\right) \]
  2. Simplified0.3

    \[\leadsto \color{blue}{\left(-s\right) \cdot \log \left(\frac{1}{\frac{u}{1 + e^{\frac{-\pi}{s}}} + \frac{1 - u}{1 + e^{\frac{\pi}{s}}}} + -1\right)} \]
  3. Applied distribute-lft-neg-out_binary320.3

    \[\leadsto \color{blue}{-s \cdot \log \left(\frac{1}{\frac{u}{1 + e^{\frac{-\pi}{s}}} + \frac{1 - u}{1 + e^{\frac{\pi}{s}}}} + -1\right)} \]
  4. Applied add-sqr-sqrt_binary320.4

    \[\leadsto -s \cdot \log \left(\frac{1}{\color{blue}{\sqrt{\frac{u}{1 + e^{\frac{-\pi}{s}}} + \frac{1 - u}{1 + e^{\frac{\pi}{s}}}} \cdot \sqrt{\frac{u}{1 + e^{\frac{-\pi}{s}}} + \frac{1 - u}{1 + e^{\frac{\pi}{s}}}}}} + -1\right) \]
  5. Applied add-sqr-sqrt_binary320.4

    \[\leadsto -s \cdot \log \left(\frac{\color{blue}{\sqrt{1} \cdot \sqrt{1}}}{\sqrt{\frac{u}{1 + e^{\frac{-\pi}{s}}} + \frac{1 - u}{1 + e^{\frac{\pi}{s}}}} \cdot \sqrt{\frac{u}{1 + e^{\frac{-\pi}{s}}} + \frac{1 - u}{1 + e^{\frac{\pi}{s}}}}} + -1\right) \]
  6. Applied times-frac_binary320.4

    \[\leadsto -s \cdot \log \left(\color{blue}{\frac{\sqrt{1}}{\sqrt{\frac{u}{1 + e^{\frac{-\pi}{s}}} + \frac{1 - u}{1 + e^{\frac{\pi}{s}}}}} \cdot \frac{\sqrt{1}}{\sqrt{\frac{u}{1 + e^{\frac{-\pi}{s}}} + \frac{1 - u}{1 + e^{\frac{\pi}{s}}}}}} + -1\right) \]
  7. Applied difference-of-sqr--1_binary320.4

    \[\leadsto -s \cdot \log \color{blue}{\left(\left(\frac{\sqrt{1}}{\sqrt{\frac{u}{1 + e^{\frac{-\pi}{s}}} + \frac{1 - u}{1 + e^{\frac{\pi}{s}}}}} + 1\right) \cdot \left(\frac{\sqrt{1}}{\sqrt{\frac{u}{1 + e^{\frac{-\pi}{s}}} + \frac{1 - u}{1 + e^{\frac{\pi}{s}}}}} - 1\right)\right)} \]
  8. Applied log-prod_binary320.5

    \[\leadsto -s \cdot \color{blue}{\left(\log \left(\frac{\sqrt{1}}{\sqrt{\frac{u}{1 + e^{\frac{-\pi}{s}}} + \frac{1 - u}{1 + e^{\frac{\pi}{s}}}}} + 1\right) + \log \left(\frac{\sqrt{1}}{\sqrt{\frac{u}{1 + e^{\frac{-\pi}{s}}} + \frac{1 - u}{1 + e^{\frac{\pi}{s}}}}} - 1\right)\right)} \]
  9. Applied distribute-rgt-in_binary320.5

    \[\leadsto -\color{blue}{\left(\log \left(\frac{\sqrt{1}}{\sqrt{\frac{u}{1 + e^{\frac{-\pi}{s}}} + \frac{1 - u}{1 + e^{\frac{\pi}{s}}}}} + 1\right) \cdot s + \log \left(\frac{\sqrt{1}}{\sqrt{\frac{u}{1 + e^{\frac{-\pi}{s}}} + \frac{1 - u}{1 + e^{\frac{\pi}{s}}}}} - 1\right) \cdot s\right)} \]
  10. Simplified0.5

    \[\leadsto -\left(\color{blue}{s \cdot \mathsf{log1p}\left(\frac{1}{\sqrt{\frac{u}{1 + e^{-\frac{\pi}{s}}} + \frac{1 - u}{1 + e^{\frac{\pi}{s}}}}}\right)} + \log \left(\frac{\sqrt{1}}{\sqrt{\frac{u}{1 + e^{\frac{-\pi}{s}}} + \frac{1 - u}{1 + e^{\frac{\pi}{s}}}}} - 1\right) \cdot s\right) \]
  11. Simplified0.5

    \[\leadsto -\left(s \cdot \mathsf{log1p}\left(\frac{1}{\sqrt{\frac{u}{1 + e^{-\frac{\pi}{s}}} + \frac{1 - u}{1 + e^{\frac{\pi}{s}}}}}\right) + \color{blue}{s \cdot \log \left(\frac{1}{\sqrt{\frac{u}{1 + e^{-\frac{\pi}{s}}} + \frac{1 - u}{1 + e^{\frac{\pi}{s}}}}} + -1\right)}\right) \]
  12. Applied fma-def_binary320.4

    \[\leadsto -\color{blue}{\mathsf{fma}\left(s, \mathsf{log1p}\left(\frac{1}{\sqrt{\frac{u}{1 + e^{-\frac{\pi}{s}}} + \frac{1 - u}{1 + e^{\frac{\pi}{s}}}}}\right), s \cdot \log \left(\frac{1}{\sqrt{\frac{u}{1 + e^{-\frac{\pi}{s}}} + \frac{1 - u}{1 + e^{\frac{\pi}{s}}}}} + -1\right)\right)} \]
  13. Applied pow1/2_binary320.4

    \[\leadsto -\mathsf{fma}\left(s, \mathsf{log1p}\left(\frac{1}{\sqrt{\frac{u}{1 + e^{-\frac{\pi}{s}}} + \frac{1 - u}{1 + e^{\frac{\pi}{s}}}}}\right), s \cdot \log \left(\frac{1}{\color{blue}{{\left(\frac{u}{1 + e^{-\frac{\pi}{s}}} + \frac{1 - u}{1 + e^{\frac{\pi}{s}}}\right)}^{0.5}}} + -1\right)\right) \]
  14. Applied pow-flip_binary320.3

    \[\leadsto -\mathsf{fma}\left(s, \mathsf{log1p}\left(\frac{1}{\sqrt{\frac{u}{1 + e^{-\frac{\pi}{s}}} + \frac{1 - u}{1 + e^{\frac{\pi}{s}}}}}\right), s \cdot \log \left(\color{blue}{{\left(\frac{u}{1 + e^{-\frac{\pi}{s}}} + \frac{1 - u}{1 + e^{\frac{\pi}{s}}}\right)}^{\left(-0.5\right)}} + -1\right)\right) \]
  15. Final simplification0.3

    \[\leadsto -\mathsf{fma}\left(s, \mathsf{log1p}\left(\frac{1}{\sqrt{\frac{u}{1 + e^{-\frac{\pi}{s}}} + \frac{1 - u}{1 + e^{\frac{\pi}{s}}}}}\right), s \cdot \log \left({\left(\frac{u}{1 + e^{-\frac{\pi}{s}}} + \frac{1 - u}{1 + e^{\frac{\pi}{s}}}\right)}^{-0.5} + -1\right)\right) \]

Reproduce

herbie shell --seed 2022024 
(FPCore (u s)
  :name "Sample trimmed logistic on [-pi, pi]"
  :precision binary32
  :pre (and (and (<= 2.328306437e-10 u) (<= u 1.0)) (and (<= 0.0 s) (<= s 1.0651631)))
  (* (- s) (log (- (/ 1.0 (+ (* u (- (/ 1.0 (+ 1.0 (exp (/ (- PI) s)))) (/ 1.0 (+ 1.0 (exp (/ PI s)))))) (/ 1.0 (+ 1.0 (exp (/ PI s)))))) 1.0))))