Average Error: 0.1 → 0.1
Time: 12.5s
Precision: binary32
Cost: 9824
\[0 \leq s \land s \leq 1.0651631\]
\[\frac{e^{\frac{-\left|x\right|}{s}}}{\left(s \cdot \left(1 + e^{\frac{-\left|x\right|}{s}}\right)\right) \cdot \left(1 + e^{\frac{-\left|x\right|}{s}}\right)} \]
\[\frac{\frac{0.5}{e^{\mathsf{log1p}\left(\cosh \left(\frac{x}{s}\right)\right)}}}{s} \]
(FPCore (x s)
 :precision binary32
 (/
  (exp (/ (- (fabs x)) s))
  (* (* s (+ 1.0 (exp (/ (- (fabs x)) s)))) (+ 1.0 (exp (/ (- (fabs x)) s))))))
(FPCore (x s) :precision binary32 (/ (/ 0.5 (exp (log1p (cosh (/ x s))))) s))
float code(float x, float s) {
	return expf((-fabsf(x) / s)) / ((s * (1.0f + expf((-fabsf(x) / s)))) * (1.0f + expf((-fabsf(x) / s))));
}
float code(float x, float s) {
	return (0.5f / expf(log1pf(coshf((x / s))))) / s;
}
function code(x, s)
	return Float32(exp(Float32(Float32(-abs(x)) / s)) / Float32(Float32(s * Float32(Float32(1.0) + exp(Float32(Float32(-abs(x)) / s)))) * Float32(Float32(1.0) + exp(Float32(Float32(-abs(x)) / s)))))
end
function code(x, s)
	return Float32(Float32(Float32(0.5) / exp(log1p(cosh(Float32(x / s))))) / s)
end
\frac{e^{\frac{-\left|x\right|}{s}}}{\left(s \cdot \left(1 + e^{\frac{-\left|x\right|}{s}}\right)\right) \cdot \left(1 + e^{\frac{-\left|x\right|}{s}}\right)}
\frac{\frac{0.5}{e^{\mathsf{log1p}\left(\cosh \left(\frac{x}{s}\right)\right)}}}{s}

Error

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 0.1

    \[\frac{e^{\frac{-\left|x\right|}{s}}}{\left(s \cdot \left(1 + e^{\frac{-\left|x\right|}{s}}\right)\right) \cdot \left(1 + e^{\frac{-\left|x\right|}{s}}\right)} \]
  2. Simplified0.2

    \[\leadsto \color{blue}{\frac{\frac{1}{s}}{e^{\frac{\left|x\right|}{s}} + \left(e^{\frac{\left|x\right|}{-s}} + 2\right)}} \]
    Proof
    (/.f32 (/.f32 1 s) (+.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (+.f32 (exp.f32 (/.f32 (fabs.f32 x) (neg.f32 s))) 2))): 0 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (+.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (+.f32 (exp.f32 (/.f32 (fabs.f32 x) (Rewrite<= mul-1-neg_binary32 (*.f32 -1 s)))) 2))): 0 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (+.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (+.f32 (exp.f32 (Rewrite=> associate-/r*_binary32 (/.f32 (/.f32 (fabs.f32 x) -1) s))) 2))): 0 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (+.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (+.f32 (exp.f32 (/.f32 (/.f32 (fabs.f32 x) (Rewrite<= metadata-eval (/.f32 1 -1))) s)) 2))): 0 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (+.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (+.f32 (exp.f32 (/.f32 (Rewrite<= associate-/l*_binary32 (/.f32 (*.f32 (fabs.f32 x) -1) 1)) s)) 2))): 0 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (+.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (+.f32 (exp.f32 (/.f32 (/.f32 (Rewrite<= *-commutative_binary32 (*.f32 -1 (fabs.f32 x))) 1) s)) 2))): 0 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (+.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (+.f32 (exp.f32 (/.f32 (/.f32 (Rewrite<= neg-mul-1_binary32 (neg.f32 (fabs.f32 x))) 1) s)) 2))): 0 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (+.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (+.f32 (exp.f32 (/.f32 (Rewrite=> /-rgt-identity_binary32 (neg.f32 (fabs.f32 x))) s)) 2))): 0 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (+.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (+.f32 (exp.f32 (Rewrite<= +-lft-identity_binary32 (+.f32 0 (/.f32 (neg.f32 (fabs.f32 x)) s)))) 2))): 0 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (+.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (+.f32 (exp.f32 (+.f32 (Rewrite<= +-inverses_binary32 (-.f32 (/.f32 (fabs.f32 x) s) (/.f32 (fabs.f32 x) s))) (/.f32 (neg.f32 (fabs.f32 x)) s))) 2))): 61 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (+.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (+.f32 (exp.f32 (+.f32 (Rewrite<= unsub-neg_binary32 (+.f32 (/.f32 (fabs.f32 x) s) (neg.f32 (/.f32 (fabs.f32 x) s)))) (/.f32 (neg.f32 (fabs.f32 x)) s))) 2))): 0 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (+.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (+.f32 (exp.f32 (+.f32 (+.f32 (/.f32 (fabs.f32 x) s) (Rewrite<= distribute-frac-neg_binary32 (/.f32 (neg.f32 (fabs.f32 x)) s))) (/.f32 (neg.f32 (fabs.f32 x)) s))) 2))): 0 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (+.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (+.f32 (exp.f32 (Rewrite<= associate-+r+_binary32 (+.f32 (/.f32 (fabs.f32 x) s) (+.f32 (/.f32 (neg.f32 (fabs.f32 x)) s) (/.f32 (neg.f32 (fabs.f32 x)) s))))) 2))): 0 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (+.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (+.f32 (Rewrite<= prod-exp_binary32 (*.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (exp.f32 (+.f32 (/.f32 (neg.f32 (fabs.f32 x)) s) (/.f32 (neg.f32 (fabs.f32 x)) s))))) 2))): 125 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (+.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (+.f32 (*.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (Rewrite<= prod-exp_binary32 (*.f32 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s)) (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s))))) 2))): 0 points increase in error, 1 points decrease in error
    (/.f32 (/.f32 1 s) (+.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (+.f32 (*.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (Rewrite=> prod-exp_binary32 (exp.f32 (+.f32 (/.f32 (neg.f32 (fabs.f32 x)) s) (/.f32 (neg.f32 (fabs.f32 x)) s))))) 2))): 1 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (+.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (+.f32 (Rewrite=> prod-exp_binary32 (exp.f32 (+.f32 (/.f32 (fabs.f32 x) s) (+.f32 (/.f32 (neg.f32 (fabs.f32 x)) s) (/.f32 (neg.f32 (fabs.f32 x)) s))))) 2))): 0 points increase in error, 125 points decrease in error
    (/.f32 (/.f32 1 s) (+.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (+.f32 (exp.f32 (+.f32 (/.f32 (fabs.f32 x) s) (Rewrite=> count-2_binary32 (*.f32 2 (/.f32 (neg.f32 (fabs.f32 x)) s))))) 2))): 0 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (+.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (+.f32 (exp.f32 (+.f32 (/.f32 (fabs.f32 x) s) (*.f32 2 (Rewrite=> distribute-frac-neg_binary32 (neg.f32 (/.f32 (fabs.f32 x) s)))))) 2))): 0 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (+.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (+.f32 (exp.f32 (+.f32 (/.f32 (fabs.f32 x) s) (*.f32 2 (Rewrite=> neg-mul-1_binary32 (*.f32 -1 (/.f32 (fabs.f32 x) s)))))) 2))): 0 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (+.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (+.f32 (exp.f32 (+.f32 (/.f32 (fabs.f32 x) s) (Rewrite=> associate-*r*_binary32 (*.f32 (*.f32 2 -1) (/.f32 (fabs.f32 x) s))))) 2))): 0 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (+.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (+.f32 (exp.f32 (Rewrite=> distribute-rgt1-in_binary32 (*.f32 (+.f32 (*.f32 2 -1) 1) (/.f32 (fabs.f32 x) s)))) 2))): 0 points increase in error, 61 points decrease in error
    (/.f32 (/.f32 1 s) (+.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (+.f32 (exp.f32 (*.f32 (+.f32 (Rewrite=> metadata-eval -2) 1) (/.f32 (fabs.f32 x) s))) 2))): 0 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (+.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (+.f32 (exp.f32 (*.f32 (Rewrite=> metadata-eval -1) (/.f32 (fabs.f32 x) s))) 2))): 0 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (+.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (+.f32 (exp.f32 (Rewrite<= neg-mul-1_binary32 (neg.f32 (/.f32 (fabs.f32 x) s)))) 2))): 0 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (+.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (+.f32 (exp.f32 (Rewrite<= distribute-frac-neg_binary32 (/.f32 (neg.f32 (fabs.f32 x)) s))) 2))): 0 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (+.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (+.f32 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s)) (Rewrite<= metadata-eval (+.f32 1 1))))): 0 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (+.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (Rewrite<= associate-+l+_binary32 (+.f32 (+.f32 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s)) 1) 1)))): 0 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (+.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (+.f32 (Rewrite<= +-commutative_binary32 (+.f32 1 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s)))) 1))): 0 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (Rewrite=> +-commutative_binary32 (+.f32 (+.f32 (+.f32 1 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s))) 1) (exp.f32 (/.f32 (fabs.f32 x) s))))): 0 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (Rewrite<= associate-+r+_binary32 (+.f32 (+.f32 1 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s))) (+.f32 1 (exp.f32 (/.f32 (fabs.f32 x) s)))))): 4 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (+.f32 (Rewrite<= *-rgt-identity_binary32 (*.f32 (+.f32 1 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s))) 1)) (+.f32 1 (exp.f32 (/.f32 (fabs.f32 x) s))))): 0 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (+.f32 (*.f32 (+.f32 1 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s))) 1) (+.f32 (Rewrite<= rgt-mult-inverse_binary32 (*.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (/.f32 1 (exp.f32 (/.f32 (fabs.f32 x) s))))) (exp.f32 (/.f32 (fabs.f32 x) s))))): 182 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (+.f32 (*.f32 (+.f32 1 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s))) 1) (+.f32 (*.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (Rewrite<= exp-neg_binary32 (exp.f32 (neg.f32 (/.f32 (fabs.f32 x) s))))) (exp.f32 (/.f32 (fabs.f32 x) s))))): 2 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (+.f32 (*.f32 (+.f32 1 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s))) 1) (+.f32 (*.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (exp.f32 (Rewrite<= distribute-frac-neg_binary32 (/.f32 (neg.f32 (fabs.f32 x)) s)))) (exp.f32 (/.f32 (fabs.f32 x) s))))): 0 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (+.f32 (*.f32 (+.f32 1 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s))) 1) (+.f32 (*.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s))) (Rewrite<= *-rgt-identity_binary32 (*.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) 1))))): 0 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (+.f32 (*.f32 (+.f32 1 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s))) 1) (Rewrite<= distribute-lft-in_binary32 (*.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (+.f32 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s)) 1))))): 2 points increase in error, 184 points decrease in error
    (/.f32 (/.f32 1 s) (+.f32 (*.f32 (+.f32 1 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s))) 1) (*.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (Rewrite<= +-commutative_binary32 (+.f32 1 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s))))))): 0 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (+.f32 (*.f32 (+.f32 1 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s))) 1) (Rewrite<= *-commutative_binary32 (*.f32 (+.f32 1 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s))) (exp.f32 (/.f32 (fabs.f32 x) s)))))): 0 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (Rewrite<= distribute-lft-in_binary32 (*.f32 (+.f32 1 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s))) (+.f32 1 (exp.f32 (/.f32 (fabs.f32 x) s)))))): 8 points increase in error, 3 points decrease in error
    (/.f32 (/.f32 1 s) (*.f32 (+.f32 1 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s))) (+.f32 (Rewrite<= rgt-mult-inverse_binary32 (*.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (/.f32 1 (exp.f32 (/.f32 (fabs.f32 x) s))))) (exp.f32 (/.f32 (fabs.f32 x) s))))): 182 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (*.f32 (+.f32 1 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s))) (+.f32 (*.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (Rewrite<= exp-neg_binary32 (exp.f32 (neg.f32 (/.f32 (fabs.f32 x) s))))) (exp.f32 (/.f32 (fabs.f32 x) s))))): 2 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (*.f32 (+.f32 1 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s))) (+.f32 (*.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (exp.f32 (Rewrite<= distribute-frac-neg_binary32 (/.f32 (neg.f32 (fabs.f32 x)) s)))) (exp.f32 (/.f32 (fabs.f32 x) s))))): 0 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (*.f32 (+.f32 1 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s))) (+.f32 (*.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s))) (Rewrite<= *-rgt-identity_binary32 (*.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) 1))))): 0 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (*.f32 (+.f32 1 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s))) (Rewrite<= distribute-lft-in_binary32 (*.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (+.f32 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s)) 1))))): 4 points increase in error, 184 points decrease in error
    (/.f32 (/.f32 1 s) (*.f32 (+.f32 1 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s))) (*.f32 (exp.f32 (/.f32 (fabs.f32 x) s)) (Rewrite<= +-commutative_binary32 (+.f32 1 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s))))))): 0 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 s) (*.f32 (+.f32 1 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s))) (Rewrite<= *-commutative_binary32 (*.f32 (+.f32 1 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s))) (exp.f32 (/.f32 (fabs.f32 x) s)))))): 0 points increase in error, 0 points decrease in error
    (Rewrite=> associate-/r*_binary32 (/.f32 (/.f32 (/.f32 1 s) (+.f32 1 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s)))) (*.f32 (+.f32 1 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s))) (exp.f32 (/.f32 (fabs.f32 x) s))))): 7 points increase in error, 3 points decrease in error
    (/.f32 (Rewrite<= associate-/r*_binary32 (/.f32 1 (*.f32 s (+.f32 1 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s)))))) (*.f32 (+.f32 1 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s))) (exp.f32 (/.f32 (fabs.f32 x) s)))): 8 points increase in error, 2 points decrease in error
    (Rewrite<= associate-/r*_binary32 (/.f32 1 (*.f32 (*.f32 s (+.f32 1 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s)))) (*.f32 (+.f32 1 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s))) (exp.f32 (/.f32 (fabs.f32 x) s)))))): 5 points increase in error, 10 points decrease in error
    (/.f32 1 (Rewrite<= associate-*l*_binary32 (*.f32 (*.f32 (*.f32 s (+.f32 1 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s)))) (+.f32 1 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s)))) (exp.f32 (/.f32 (fabs.f32 x) s))))): 6 points increase in error, 4 points decrease in error
    (Rewrite<= associate-/l/_binary32 (/.f32 (/.f32 1 (exp.f32 (/.f32 (fabs.f32 x) s))) (*.f32 (*.f32 s (+.f32 1 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s)))) (+.f32 1 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s)))))): 4 points increase in error, 8 points decrease in error
    (/.f32 (Rewrite<= exp-neg_binary32 (exp.f32 (neg.f32 (/.f32 (fabs.f32 x) s)))) (*.f32 (*.f32 s (+.f32 1 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s)))) (+.f32 1 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s))))): 5 points increase in error, 8 points decrease in error
    (/.f32 (exp.f32 (Rewrite<= distribute-frac-neg_binary32 (/.f32 (neg.f32 (fabs.f32 x)) s))) (*.f32 (*.f32 s (+.f32 1 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s)))) (+.f32 1 (exp.f32 (/.f32 (neg.f32 (fabs.f32 x)) s))))): 0 points increase in error, 0 points decrease in error
  3. Applied egg-rr0.8

    \[\leadsto \color{blue}{e^{\mathsf{log1p}\left(\frac{1}{s \cdot \left(2 + 2 \cdot \cosh \left(\frac{x}{s}\right)\right)}\right)} - 1} \]
  4. Simplified0.1

    \[\leadsto \color{blue}{\frac{1}{s \cdot \left(2 + 2 \cdot \cosh \left(\frac{x}{s}\right)\right)}} \]
    Proof
    (/.f32 1 (*.f32 s (+.f32 2 (*.f32 2 (cosh.f32 (/.f32 x s)))))): 0 points increase in error, 0 points decrease in error
    (Rewrite<= expm1-log1p_binary32 (expm1.f32 (log1p.f32 (/.f32 1 (*.f32 s (+.f32 2 (*.f32 2 (cosh.f32 (/.f32 x s))))))))): 61 points increase in error, 0 points decrease in error
    (Rewrite<= expm1-def_binary32 (-.f32 (exp.f32 (log1p.f32 (/.f32 1 (*.f32 s (+.f32 2 (*.f32 2 (cosh.f32 (/.f32 x s)))))))) 1)): 4 points increase in error, 3 points decrease in error
  5. Applied egg-rr0.2

    \[\leadsto \frac{1}{\color{blue}{\frac{\mathsf{fma}\left(\cosh \left(\frac{x}{s}\right), 2, 2\right)}{\frac{1}{s}}}} \]
  6. Applied egg-rr0.2

    \[\leadsto \color{blue}{0 + \frac{\frac{1}{s}}{\mathsf{fma}\left(\cosh \left(\frac{x}{s}\right), 2, 2\right)}} \]
  7. Simplified0.1

    \[\leadsto \color{blue}{\frac{\frac{0.5}{1 + \cosh \left(\frac{x}{s}\right)}}{s}} \]
    Proof
    (/.f32 (/.f32 1/2 (+.f32 1 (cosh.f32 (/.f32 x s)))) s): 0 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 (Rewrite<= metadata-eval (/.f32 1 2)) (+.f32 1 (cosh.f32 (/.f32 x s)))) s): 0 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 (/.f32 1 2) (Rewrite<= +-commutative_binary32 (+.f32 (cosh.f32 (/.f32 x s)) 1))) s): 0 points increase in error, 0 points decrease in error
    (/.f32 (Rewrite<= associate-/r*_binary32 (/.f32 1 (*.f32 2 (+.f32 (cosh.f32 (/.f32 x s)) 1)))) s): 0 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 (Rewrite<= *-commutative_binary32 (*.f32 (+.f32 (cosh.f32 (/.f32 x s)) 1) 2))) s): 0 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 (Rewrite<= distribute-lft1-in_binary32 (+.f32 (*.f32 (cosh.f32 (/.f32 x s)) 2) 2))) s): 0 points increase in error, 0 points decrease in error
    (/.f32 (/.f32 1 (Rewrite<= fma-udef_binary32 (fma.f32 (cosh.f32 (/.f32 x s)) 2 2))) s): 0 points increase in error, 0 points decrease in error
    (Rewrite<= associate-/r*_binary32 (/.f32 1 (*.f32 (fma.f32 (cosh.f32 (/.f32 x s)) 2 2) s))): 6 points increase in error, 0 points decrease in error
    (Rewrite<= associate-/l/_binary32 (/.f32 (/.f32 1 s) (fma.f32 (cosh.f32 (/.f32 x s)) 2 2))): 1 points increase in error, 9 points decrease in error
    (Rewrite<= +-lft-identity_binary32 (+.f32 0 (/.f32 (/.f32 1 s) (fma.f32 (cosh.f32 (/.f32 x s)) 2 2)))): 0 points increase in error, 0 points decrease in error
  8. Applied egg-rr0.1

    \[\leadsto \frac{\color{blue}{e^{\log 0.5 - \mathsf{log1p}\left(\cosh \left(\frac{x}{s}\right)\right)}}}{s} \]
  9. Simplified0.1

    \[\leadsto \frac{\color{blue}{\frac{0.5}{e^{\mathsf{log1p}\left(\cosh \left(\frac{x}{s}\right)\right)}}}}{s} \]
    Proof
    (/.f32 1/2 (exp.f32 (log1p.f32 (cosh.f32 (/.f32 x s))))): 0 points increase in error, 0 points decrease in error
    (/.f32 (Rewrite<= rem-exp-log_binary32 (exp.f32 (log.f32 1/2))) (exp.f32 (log1p.f32 (cosh.f32 (/.f32 x s))))): 0 points increase in error, 0 points decrease in error
    (Rewrite<= exp-diff_binary32 (exp.f32 (-.f32 (log.f32 1/2) (log1p.f32 (cosh.f32 (/.f32 x s)))))): 2 points increase in error, 8 points decrease in error
  10. Final simplification0.1

    \[\leadsto \frac{\frac{0.5}{e^{\mathsf{log1p}\left(\cosh \left(\frac{x}{s}\right)\right)}}}{s} \]

Alternatives

Alternative 1
Error2.6
Cost3492
\[\begin{array}{l} \mathbf{if}\;x \leq 2.000000047484456 \cdot 10^{-33}:\\ \;\;\;\;\frac{0.25}{s} \cdot e^{\frac{x}{s}}\\ \mathbf{elif}\;x \leq 5.000000058430487 \cdot 10^{-8}:\\ \;\;\;\;\frac{1}{s \cdot \left(\frac{x}{\frac{s \cdot s}{x}} + 4\right)}\\ \mathbf{else}:\\ \;\;\;\;\left(1 + \frac{s}{x \cdot x}\right) + -1\\ \end{array} \]
Alternative 2
Error0.1
Cost3488
\[\frac{\frac{0.5}{\cosh \left(\frac{x}{s}\right) + 1}}{s} \]
Alternative 3
Error5.5
Cost552
\[\begin{array}{l} t_0 := \left(1 + \frac{s}{x \cdot x}\right) + -1\\ \mathbf{if}\;x \leq -0.0001500000071246177:\\ \;\;\;\;t_0\\ \mathbf{elif}\;x \leq 5.000000058430487 \cdot 10^{-8}:\\ \;\;\;\;\frac{1}{s \cdot \left(4 + \frac{x}{s} \cdot \frac{x}{s}\right)}\\ \mathbf{else}:\\ \;\;\;\;t_0\\ \end{array} \]
Alternative 4
Error4.8
Cost552
\[\begin{array}{l} t_0 := \left(1 + \frac{s}{x \cdot x}\right) + -1\\ \mathbf{if}\;x \leq -0.0001500000071246177:\\ \;\;\;\;t_0\\ \mathbf{elif}\;x \leq 5.000000058430487 \cdot 10^{-8}:\\ \;\;\;\;\frac{1}{s \cdot \left(4 + \frac{x}{\frac{s}{\frac{x}{s}}}\right)}\\ \mathbf{else}:\\ \;\;\;\;t_0\\ \end{array} \]
Alternative 5
Error4.2
Cost552
\[\begin{array}{l} t_0 := \left(1 + \frac{s}{x \cdot x}\right) + -1\\ \mathbf{if}\;x \leq -0.0001500000071246177:\\ \;\;\;\;t_0\\ \mathbf{elif}\;x \leq 5.000000058430487 \cdot 10^{-8}:\\ \;\;\;\;\frac{1}{s \cdot \left(\frac{x}{\frac{s \cdot s}{x}} + 4\right)}\\ \mathbf{else}:\\ \;\;\;\;t_0\\ \end{array} \]
Alternative 6
Error6.3
Cost424
\[\begin{array}{l} t_0 := \left(1 + \frac{s}{x \cdot x}\right) + -1\\ \mathbf{if}\;x \leq -4.999999980020986 \cdot 10^{-12}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;x \leq 5.000000058430487 \cdot 10^{-8}:\\ \;\;\;\;\frac{0.25}{s}\\ \mathbf{else}:\\ \;\;\;\;t_0\\ \end{array} \]
Alternative 7
Error12.1
Cost360
\[\begin{array}{l} \mathbf{if}\;x \leq -0.019999999552965164:\\ \;\;\;\;\frac{s}{x \cdot x}\\ \mathbf{elif}\;x \leq 5.000000058430487 \cdot 10^{-8}:\\ \;\;\;\;\frac{0.25}{s}\\ \mathbf{else}:\\ \;\;\;\;\frac{s}{x} \cdot \frac{1}{x}\\ \end{array} \]
Alternative 8
Error11.6
Cost360
\[\begin{array}{l} t_0 := \frac{1}{x \cdot \frac{x}{s}}\\ \mathbf{if}\;x \leq -0.019999999552965164:\\ \;\;\;\;t_0\\ \mathbf{elif}\;x \leq 5.000000058430487 \cdot 10^{-8}:\\ \;\;\;\;\frac{0.25}{s}\\ \mathbf{else}:\\ \;\;\;\;t_0\\ \end{array} \]
Alternative 9
Error12.0
Cost296
\[\begin{array}{l} t_0 := \frac{s}{x \cdot x}\\ \mathbf{if}\;x \leq -0.019999999552965164:\\ \;\;\;\;t_0\\ \mathbf{elif}\;x \leq 5.000000058430487 \cdot 10^{-8}:\\ \;\;\;\;\frac{0.25}{s}\\ \mathbf{else}:\\ \;\;\;\;t_0\\ \end{array} \]
Alternative 10
Error23.5
Cost96
\[\frac{0.25}{s} \]

Error

Reproduce

herbie shell --seed 2022329 
(FPCore (x s)
  :name "Logistic distribution"
  :precision binary32
  :pre (and (<= 0.0 s) (<= s 1.0651631))
  (/ (exp (/ (- (fabs x)) s)) (* (* s (+ 1.0 (exp (/ (- (fabs x)) s)))) (+ 1.0 (exp (/ (- (fabs x)) s))))))