| Alternative 1 | |
|---|---|
| Accuracy | 99.5% |
| Cost | 23136 |
\[\begin{array}{l}
t_0 := \frac{-\left|x\right|}{s}\\
t_1 := \frac{\left|x\right|}{s}\\
\frac{\frac{e^{t_0}}{s}}{\frac{2}{e^{t_1}} + \left(e^{t_0 - t_1} + 1\right)}
\end{array}
\]

(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 (let* ((t_0 (/ (- (fabs x)) s)) (t_1 (/ (fabs x) s))) (/ (/ (exp t_0) s) (+ (/ 2.0 (exp t_1)) (+ (exp (- t_0 t_1)) 1.0)))))
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) {
float t_0 = -fabsf(x) / s;
float t_1 = fabsf(x) / s;
return (expf(t_0) / s) / ((2.0f / expf(t_1)) + (expf((t_0 - t_1)) + 1.0f));
}
real(4) function code(x, s)
real(4), intent (in) :: x
real(4), intent (in) :: s
code = exp((-abs(x) / s)) / ((s * (1.0e0 + exp((-abs(x) / s)))) * (1.0e0 + exp((-abs(x) / s))))
end function
real(4) function code(x, s)
real(4), intent (in) :: x
real(4), intent (in) :: s
real(4) :: t_0
real(4) :: t_1
t_0 = -abs(x) / s
t_1 = abs(x) / s
code = (exp(t_0) / s) / ((2.0e0 / exp(t_1)) + (exp((t_0 - t_1)) + 1.0e0))
end function
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) t_0 = Float32(Float32(-abs(x)) / s) t_1 = Float32(abs(x) / s) return Float32(Float32(exp(t_0) / s) / Float32(Float32(Float32(2.0) / exp(t_1)) + Float32(exp(Float32(t_0 - t_1)) + Float32(1.0)))) end
function tmp = code(x, s) tmp = exp((-abs(x) / s)) / ((s * (single(1.0) + exp((-abs(x) / s)))) * (single(1.0) + exp((-abs(x) / s)))); end
function tmp = code(x, s) t_0 = -abs(x) / s; t_1 = abs(x) / s; tmp = (exp(t_0) / s) / ((single(2.0) / exp(t_1)) + (exp((t_0 - t_1)) + single(1.0))); 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)}
\begin{array}{l}
t_0 := \frac{-\left|x\right|}{s}\\
t_1 := \frac{\left|x\right|}{s}\\
\frac{\frac{e^{t_0}}{s}}{\frac{2}{e^{t_1}} + \left(e^{t_0 - t_1} + 1\right)}
\end{array}
Herbie found 18 alternatives:
| Alternative | Accuracy | Speedup |
|---|
Results
Initial program 99.7%
Simplified99.8%
[Start]99.7% | \[ \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)}
\] |
|---|---|
/-rgt-identity [<=]99.7% | \[ \color{blue}{\frac{\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)}}{1}}
\] |
associate-/l/ [=>]99.7% | \[ \color{blue}{\frac{e^{\frac{-\left|x\right|}{s}}}{1 \cdot \left(\left(s \cdot \left(1 + e^{\frac{-\left|x\right|}{s}}\right)\right) \cdot \left(1 + e^{\frac{-\left|x\right|}{s}}\right)\right)}}
\] |
*-lft-identity [=>]99.7% | \[ \frac{e^{\frac{-\left|x\right|}{s}}}{\color{blue}{\left(s \cdot \left(1 + e^{\frac{-\left|x\right|}{s}}\right)\right) \cdot \left(1 + e^{\frac{-\left|x\right|}{s}}\right)}}
\] |
+-commutative [=>]99.7% | \[ \frac{e^{\frac{-\left|x\right|}{s}}}{\left(s \cdot \left(1 + e^{\frac{-\left|x\right|}{s}}\right)\right) \cdot \color{blue}{\left(e^{\frac{-\left|x\right|}{s}} + 1\right)}}
\] |
distribute-rgt-in [=>]99.8% | \[ \frac{e^{\frac{-\left|x\right|}{s}}}{\color{blue}{e^{\frac{-\left|x\right|}{s}} \cdot \left(s \cdot \left(1 + e^{\frac{-\left|x\right|}{s}}\right)\right) + 1 \cdot \left(s \cdot \left(1 + e^{\frac{-\left|x\right|}{s}}\right)\right)}}
\] |
*-lft-identity [=>]99.8% | \[ \frac{e^{\frac{-\left|x\right|}{s}}}{e^{\frac{-\left|x\right|}{s}} \cdot \left(s \cdot \left(1 + e^{\frac{-\left|x\right|}{s}}\right)\right) + \color{blue}{s \cdot \left(1 + e^{\frac{-\left|x\right|}{s}}\right)}}
\] |
+-commutative [=>]99.8% | \[ \frac{e^{\frac{-\left|x\right|}{s}}}{e^{\frac{-\left|x\right|}{s}} \cdot \left(s \cdot \left(1 + e^{\frac{-\left|x\right|}{s}}\right)\right) + s \cdot \color{blue}{\left(e^{\frac{-\left|x\right|}{s}} + 1\right)}}
\] |
distribute-rgt-in [=>]99.8% | \[ \frac{e^{\frac{-\left|x\right|}{s}}}{e^{\frac{-\left|x\right|}{s}} \cdot \left(s \cdot \left(1 + e^{\frac{-\left|x\right|}{s}}\right)\right) + \color{blue}{\left(e^{\frac{-\left|x\right|}{s}} \cdot s + 1 \cdot s\right)}}
\] |
*-lft-identity [=>]99.8% | \[ \frac{e^{\frac{-\left|x\right|}{s}}}{e^{\frac{-\left|x\right|}{s}} \cdot \left(s \cdot \left(1 + e^{\frac{-\left|x\right|}{s}}\right)\right) + \left(e^{\frac{-\left|x\right|}{s}} \cdot s + \color{blue}{s}\right)}
\] |
Taylor expanded in s around 0 99.8%
Simplified99.8%
[Start]99.8% | \[ \frac{e^{-1 \cdot \frac{\left|x\right|}{s}}}{s \cdot \left(1 + \left(\frac{e^{-1 \cdot \frac{\left|x\right|}{s}}}{e^{\frac{\left|x\right|}{s}}} + 2 \cdot \frac{1}{e^{\frac{\left|x\right|}{s}}}\right)\right)}
\] |
|---|---|
associate-/r* [=>]99.8% | \[ \color{blue}{\frac{\frac{e^{-1 \cdot \frac{\left|x\right|}{s}}}{s}}{1 + \left(\frac{e^{-1 \cdot \frac{\left|x\right|}{s}}}{e^{\frac{\left|x\right|}{s}}} + 2 \cdot \frac{1}{e^{\frac{\left|x\right|}{s}}}\right)}}
\] |
mul-1-neg [=>]99.8% | \[ \frac{\frac{e^{\color{blue}{-\frac{\left|x\right|}{s}}}}{s}}{1 + \left(\frac{e^{-1 \cdot \frac{\left|x\right|}{s}}}{e^{\frac{\left|x\right|}{s}}} + 2 \cdot \frac{1}{e^{\frac{\left|x\right|}{s}}}\right)}
\] |
+-commutative [=>]99.8% | \[ \frac{\frac{e^{-\frac{\left|x\right|}{s}}}{s}}{\color{blue}{\left(\frac{e^{-1 \cdot \frac{\left|x\right|}{s}}}{e^{\frac{\left|x\right|}{s}}} + 2 \cdot \frac{1}{e^{\frac{\left|x\right|}{s}}}\right) + 1}}
\] |
+-commutative [=>]99.8% | \[ \frac{\frac{e^{-\frac{\left|x\right|}{s}}}{s}}{\color{blue}{\left(2 \cdot \frac{1}{e^{\frac{\left|x\right|}{s}}} + \frac{e^{-1 \cdot \frac{\left|x\right|}{s}}}{e^{\frac{\left|x\right|}{s}}}\right)} + 1}
\] |
associate-+l+ [=>]99.8% | \[ \frac{\frac{e^{-\frac{\left|x\right|}{s}}}{s}}{\color{blue}{2 \cdot \frac{1}{e^{\frac{\left|x\right|}{s}}} + \left(\frac{e^{-1 \cdot \frac{\left|x\right|}{s}}}{e^{\frac{\left|x\right|}{s}}} + 1\right)}}
\] |
associate-*r/ [=>]99.8% | \[ \frac{\frac{e^{-\frac{\left|x\right|}{s}}}{s}}{\color{blue}{\frac{2 \cdot 1}{e^{\frac{\left|x\right|}{s}}}} + \left(\frac{e^{-1 \cdot \frac{\left|x\right|}{s}}}{e^{\frac{\left|x\right|}{s}}} + 1\right)}
\] |
metadata-eval [=>]99.8% | \[ \frac{\frac{e^{-\frac{\left|x\right|}{s}}}{s}}{\frac{\color{blue}{2}}{e^{\frac{\left|x\right|}{s}}} + \left(\frac{e^{-1 \cdot \frac{\left|x\right|}{s}}}{e^{\frac{\left|x\right|}{s}}} + 1\right)}
\] |
Final simplification99.8%
| Alternative 1 | |
|---|---|
| Accuracy | 99.5% |
| Cost | 23136 |
| Alternative 2 | |
|---|---|
| Accuracy | 99.5% |
| Cost | 16448 |
| Alternative 3 | |
|---|---|
| Accuracy | 99.5% |
| Cost | 13248 |
| Alternative 4 | |
|---|---|
| Accuracy | 99.0% |
| Cost | 13248 |
| Alternative 5 | |
|---|---|
| Accuracy | 98.3% |
| Cost | 10184 |
| Alternative 6 | |
|---|---|
| Accuracy | 99.2% |
| Cost | 10148 |
| Alternative 7 | |
|---|---|
| Accuracy | 98.9% |
| Cost | 10148 |
| Alternative 8 | |
|---|---|
| Accuracy | 96.0% |
| Cost | 7368 |
| Alternative 9 | |
|---|---|
| Accuracy | 95.8% |
| Cost | 7048 |
| Alternative 10 | |
|---|---|
| Accuracy | 89.3% |
| Cost | 3688 |
| Alternative 11 | |
|---|---|
| Accuracy | 84.5% |
| Cost | 941 |
| Alternative 12 | |
|---|---|
| Accuracy | 75.0% |
| Cost | 553 |
| Alternative 13 | |
|---|---|
| Accuracy | 74.1% |
| Cost | 480 |
| Alternative 14 | |
|---|---|
| Accuracy | 74.5% |
| Cost | 480 |
| Alternative 15 | |
|---|---|
| Accuracy | 58.7% |
| Cost | 361 |
| Alternative 16 | |
|---|---|
| Accuracy | 58.7% |
| Cost | 361 |
| Alternative 17 | |
|---|---|
| Accuracy | 57.4% |
| Cost | 297 |
| Alternative 18 | |
|---|---|
| Accuracy | 14.9% |
| Cost | 96 |
herbie shell --seed 2023263
(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))))))