
(FPCore (u s)
:precision binary32
(let* ((t_0 (/ 1.0 (+ 1.0 (exp (/ PI s))))))
(*
(- s)
(log
(-
(/ 1.0 (+ (* u (- (/ 1.0 (+ 1.0 (exp (/ (- PI) s)))) t_0)) t_0))
1.0)))))
float code(float u, float s) {
float t_0 = 1.0f / (1.0f + expf((((float) M_PI) / s)));
return -s * logf(((1.0f / ((u * ((1.0f / (1.0f + expf((-((float) M_PI) / s)))) - t_0)) + t_0)) - 1.0f));
}
function code(u, s) t_0 = Float32(Float32(1.0) / Float32(Float32(1.0) + exp(Float32(Float32(pi) / s)))) return Float32(Float32(-s) * log(Float32(Float32(Float32(1.0) / Float32(Float32(u * Float32(Float32(Float32(1.0) / Float32(Float32(1.0) + exp(Float32(Float32(-Float32(pi)) / s)))) - t_0)) + t_0)) - Float32(1.0)))) end
function tmp = code(u, s) t_0 = single(1.0) / (single(1.0) + exp((single(pi) / s))); tmp = -s * log(((single(1.0) / ((u * ((single(1.0) / (single(1.0) + exp((-single(pi) / s)))) - t_0)) + t_0)) - single(1.0))); end
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{1}{1 + e^{\frac{\pi}{s}}}\\
\left(-s\right) \cdot \log \left(\frac{1}{u \cdot \left(\frac{1}{1 + e^{\frac{-\pi}{s}}} - t\_0\right) + t\_0} - 1\right)
\end{array}
\end{array}
Sampling outcomes in binary32 precision:
Herbie found 19 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (u s)
:precision binary32
(let* ((t_0 (/ 1.0 (+ 1.0 (exp (/ PI s))))))
(*
(- s)
(log
(-
(/ 1.0 (+ (* u (- (/ 1.0 (+ 1.0 (exp (/ (- PI) s)))) t_0)) t_0))
1.0)))))
float code(float u, float s) {
float t_0 = 1.0f / (1.0f + expf((((float) M_PI) / s)));
return -s * logf(((1.0f / ((u * ((1.0f / (1.0f + expf((-((float) M_PI) / s)))) - t_0)) + t_0)) - 1.0f));
}
function code(u, s) t_0 = Float32(Float32(1.0) / Float32(Float32(1.0) + exp(Float32(Float32(pi) / s)))) return Float32(Float32(-s) * log(Float32(Float32(Float32(1.0) / Float32(Float32(u * Float32(Float32(Float32(1.0) / Float32(Float32(1.0) + exp(Float32(Float32(-Float32(pi)) / s)))) - t_0)) + t_0)) - Float32(1.0)))) end
function tmp = code(u, s) t_0 = single(1.0) / (single(1.0) + exp((single(pi) / s))); tmp = -s * log(((single(1.0) / ((u * ((single(1.0) / (single(1.0) + exp((-single(pi) / s)))) - t_0)) + t_0)) - single(1.0))); end
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{1}{1 + e^{\frac{\pi}{s}}}\\
\left(-s\right) \cdot \log \left(\frac{1}{u \cdot \left(\frac{1}{1 + e^{\frac{-\pi}{s}}} - t\_0\right) + t\_0} - 1\right)
\end{array}
\end{array}
(FPCore (u s)
:precision binary32
(let* ((t_0 (exp (/ PI s)))
(t_1 (exp (- 0.0 (/ PI s))))
(t_2 (+ (/ u (+ 1.0 t_1)) (/ (+ -1.0 u) (- -1.0 t_0)))))
(*
(- s)
(log
(/
(+ -1.0 (pow t_2 -3.0))
(+
(pow t_2 -2.0)
(+ 1.0 (/ -1.0 (+ (/ (+ -1.0 u) (+ 1.0 t_0)) (/ u (- -1.0 t_1)))))))))))
float code(float u, float s) {
float t_0 = expf((((float) M_PI) / s));
float t_1 = expf((0.0f - (((float) M_PI) / s)));
float t_2 = (u / (1.0f + t_1)) + ((-1.0f + u) / (-1.0f - t_0));
return -s * logf(((-1.0f + powf(t_2, -3.0f)) / (powf(t_2, -2.0f) + (1.0f + (-1.0f / (((-1.0f + u) / (1.0f + t_0)) + (u / (-1.0f - t_1))))))));
}
function code(u, s) t_0 = exp(Float32(Float32(pi) / s)) t_1 = exp(Float32(Float32(0.0) - Float32(Float32(pi) / s))) t_2 = Float32(Float32(u / Float32(Float32(1.0) + t_1)) + Float32(Float32(Float32(-1.0) + u) / Float32(Float32(-1.0) - t_0))) return Float32(Float32(-s) * log(Float32(Float32(Float32(-1.0) + (t_2 ^ Float32(-3.0))) / Float32((t_2 ^ Float32(-2.0)) + Float32(Float32(1.0) + Float32(Float32(-1.0) / Float32(Float32(Float32(Float32(-1.0) + u) / Float32(Float32(1.0) + t_0)) + Float32(u / Float32(Float32(-1.0) - t_1))))))))) end
function tmp = code(u, s) t_0 = exp((single(pi) / s)); t_1 = exp((single(0.0) - (single(pi) / s))); t_2 = (u / (single(1.0) + t_1)) + ((single(-1.0) + u) / (single(-1.0) - t_0)); tmp = -s * log(((single(-1.0) + (t_2 ^ single(-3.0))) / ((t_2 ^ single(-2.0)) + (single(1.0) + (single(-1.0) / (((single(-1.0) + u) / (single(1.0) + t_0)) + (u / (single(-1.0) - t_1)))))))); end
\begin{array}{l}
\\
\begin{array}{l}
t_0 := e^{\frac{\pi}{s}}\\
t_1 := e^{0 - \frac{\pi}{s}}\\
t_2 := \frac{u}{1 + t\_1} + \frac{-1 + u}{-1 - t\_0}\\
\left(-s\right) \cdot \log \left(\frac{-1 + {t\_2}^{-3}}{{t\_2}^{-2} + \left(1 + \frac{-1}{\frac{-1 + u}{1 + t\_0} + \frac{u}{-1 - t\_1}}\right)}\right)
\end{array}
\end{array}
Initial program 99.0%
clear-numN/A
associate-/r/N/A
*-lowering-*.f32N/A
/-lowering-/.f32N/A
PI-lowering-PI.f3299.0%
Applied egg-rr99.0%
Applied egg-rr99.0%
*-lowering-*.f32N/A
neg-lowering-neg.f32N/A
log-lowering-log.f32N/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f32N/A
Applied egg-rr99.0%
Applied egg-rr99.1%
Final simplification99.1%
(FPCore (u s)
:precision binary32
(let* ((t_0 (exp (/ PI s))) (t_1 (exp (- 0.0 (/ PI s)))))
(*
(- s)
(log
(/
1.0
(/
(+ 1.0 (/ -1.0 (+ (/ (+ -1.0 u) (+ 1.0 t_0)) (/ u (- -1.0 t_1)))))
(+
-1.0
(pow (+ (/ u (+ 1.0 t_1)) (/ (+ -1.0 u) (- -1.0 t_0))) -2.0))))))))
float code(float u, float s) {
float t_0 = expf((((float) M_PI) / s));
float t_1 = expf((0.0f - (((float) M_PI) / s)));
return -s * logf((1.0f / ((1.0f + (-1.0f / (((-1.0f + u) / (1.0f + t_0)) + (u / (-1.0f - t_1))))) / (-1.0f + powf(((u / (1.0f + t_1)) + ((-1.0f + u) / (-1.0f - t_0))), -2.0f)))));
}
function code(u, s) t_0 = exp(Float32(Float32(pi) / s)) t_1 = exp(Float32(Float32(0.0) - Float32(Float32(pi) / s))) return Float32(Float32(-s) * log(Float32(Float32(1.0) / Float32(Float32(Float32(1.0) + Float32(Float32(-1.0) / Float32(Float32(Float32(Float32(-1.0) + u) / Float32(Float32(1.0) + t_0)) + Float32(u / Float32(Float32(-1.0) - t_1))))) / Float32(Float32(-1.0) + (Float32(Float32(u / Float32(Float32(1.0) + t_1)) + Float32(Float32(Float32(-1.0) + u) / Float32(Float32(-1.0) - t_0))) ^ Float32(-2.0))))))) end
function tmp = code(u, s) t_0 = exp((single(pi) / s)); t_1 = exp((single(0.0) - (single(pi) / s))); tmp = -s * log((single(1.0) / ((single(1.0) + (single(-1.0) / (((single(-1.0) + u) / (single(1.0) + t_0)) + (u / (single(-1.0) - t_1))))) / (single(-1.0) + (((u / (single(1.0) + t_1)) + ((single(-1.0) + u) / (single(-1.0) - t_0))) ^ single(-2.0)))))); end
\begin{array}{l}
\\
\begin{array}{l}
t_0 := e^{\frac{\pi}{s}}\\
t_1 := e^{0 - \frac{\pi}{s}}\\
\left(-s\right) \cdot \log \left(\frac{1}{\frac{1 + \frac{-1}{\frac{-1 + u}{1 + t\_0} + \frac{u}{-1 - t\_1}}}{-1 + {\left(\frac{u}{1 + t\_1} + \frac{-1 + u}{-1 - t\_0}\right)}^{-2}}}\right)
\end{array}
\end{array}
Initial program 99.0%
clear-numN/A
associate-/r/N/A
*-lowering-*.f32N/A
/-lowering-/.f32N/A
PI-lowering-PI.f3299.0%
Applied egg-rr99.0%
Applied egg-rr99.0%
*-lowering-*.f32N/A
neg-lowering-neg.f32N/A
log-lowering-log.f32N/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f32N/A
Applied egg-rr99.0%
flip-+N/A
clear-numN/A
/-lowering-/.f32N/A
Applied egg-rr99.1%
Final simplification99.1%
(FPCore (u s)
:precision binary32
(let* ((t_0 (exp (- 0.0 (/ PI s)))) (t_1 (exp (/ PI s))))
(*
s
(log
(/
(+ 1.0 (/ -1.0 (+ (/ (+ -1.0 u) (+ 1.0 t_1)) (/ u (- -1.0 t_0)))))
(+
-1.0
(pow (+ (/ u (+ 1.0 t_0)) (/ (+ -1.0 u) (- -1.0 t_1))) -2.0)))))))
float code(float u, float s) {
float t_0 = expf((0.0f - (((float) M_PI) / s)));
float t_1 = expf((((float) M_PI) / s));
return s * logf(((1.0f + (-1.0f / (((-1.0f + u) / (1.0f + t_1)) + (u / (-1.0f - t_0))))) / (-1.0f + powf(((u / (1.0f + t_0)) + ((-1.0f + u) / (-1.0f - t_1))), -2.0f))));
}
function code(u, s) t_0 = exp(Float32(Float32(0.0) - Float32(Float32(pi) / s))) t_1 = exp(Float32(Float32(pi) / s)) return Float32(s * log(Float32(Float32(Float32(1.0) + Float32(Float32(-1.0) / Float32(Float32(Float32(Float32(-1.0) + u) / Float32(Float32(1.0) + t_1)) + Float32(u / Float32(Float32(-1.0) - t_0))))) / Float32(Float32(-1.0) + (Float32(Float32(u / Float32(Float32(1.0) + t_0)) + Float32(Float32(Float32(-1.0) + u) / Float32(Float32(-1.0) - t_1))) ^ Float32(-2.0)))))) end
function tmp = code(u, s) t_0 = exp((single(0.0) - (single(pi) / s))); t_1 = exp((single(pi) / s)); tmp = s * log(((single(1.0) + (single(-1.0) / (((single(-1.0) + u) / (single(1.0) + t_1)) + (u / (single(-1.0) - t_0))))) / (single(-1.0) + (((u / (single(1.0) + t_0)) + ((single(-1.0) + u) / (single(-1.0) - t_1))) ^ single(-2.0))))); end
\begin{array}{l}
\\
\begin{array}{l}
t_0 := e^{0 - \frac{\pi}{s}}\\
t_1 := e^{\frac{\pi}{s}}\\
s \cdot \log \left(\frac{1 + \frac{-1}{\frac{-1 + u}{1 + t\_1} + \frac{u}{-1 - t\_0}}}{-1 + {\left(\frac{u}{1 + t\_0} + \frac{-1 + u}{-1 - t\_1}\right)}^{-2}}\right)
\end{array}
\end{array}
Initial program 99.0%
clear-numN/A
associate-/r/N/A
*-lowering-*.f32N/A
/-lowering-/.f32N/A
PI-lowering-PI.f3299.0%
Applied egg-rr99.0%
Applied egg-rr99.0%
*-lowering-*.f32N/A
neg-lowering-neg.f32N/A
log-lowering-log.f32N/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f32N/A
Applied egg-rr99.0%
flip-+N/A
clear-numN/A
log-recN/A
Applied egg-rr99.0%
Final simplification99.0%
(FPCore (u s)
:precision binary32
(*
(- s)
(log
(+
-1.0
(/
1.0
(+
(*
u
(+
(/ -1.0 (- -1.0 (exp (- 0.0 (/ PI s)))))
(/ -1.0 (+ 1.0 (exp (/ PI s))))))
(/ 1.0 (+ 1.0 (exp (* PI (/ 1.0 s)))))))))))
float code(float u, float s) {
return -s * logf((-1.0f + (1.0f / ((u * ((-1.0f / (-1.0f - expf((0.0f - (((float) M_PI) / s))))) + (-1.0f / (1.0f + expf((((float) M_PI) / s)))))) + (1.0f / (1.0f + expf((((float) M_PI) * (1.0f / s)))))))));
}
function code(u, s) return Float32(Float32(-s) * log(Float32(Float32(-1.0) + Float32(Float32(1.0) / Float32(Float32(u * Float32(Float32(Float32(-1.0) / Float32(Float32(-1.0) - exp(Float32(Float32(0.0) - Float32(Float32(pi) / s))))) + Float32(Float32(-1.0) / Float32(Float32(1.0) + exp(Float32(Float32(pi) / s)))))) + Float32(Float32(1.0) / Float32(Float32(1.0) + exp(Float32(Float32(pi) * Float32(Float32(1.0) / s)))))))))) end
function tmp = code(u, s) tmp = -s * log((single(-1.0) + (single(1.0) / ((u * ((single(-1.0) / (single(-1.0) - exp((single(0.0) - (single(pi) / s))))) + (single(-1.0) / (single(1.0) + exp((single(pi) / s)))))) + (single(1.0) / (single(1.0) + exp((single(pi) * (single(1.0) / s))))))))); end
\begin{array}{l}
\\
\left(-s\right) \cdot \log \left(-1 + \frac{1}{u \cdot \left(\frac{-1}{-1 - e^{0 - \frac{\pi}{s}}} + \frac{-1}{1 + e^{\frac{\pi}{s}}}\right) + \frac{1}{1 + e^{\pi \cdot \frac{1}{s}}}}\right)
\end{array}
Initial program 99.0%
clear-numN/A
associate-/r/N/A
*-lowering-*.f32N/A
/-lowering-/.f32N/A
PI-lowering-PI.f3299.0%
Applied egg-rr99.0%
Final simplification99.0%
(FPCore (u s)
:precision binary32
(*
(- s)
(log
(+
-1.0
(/
-1.0
(+
(/ (+ -1.0 u) (+ 1.0 (exp (/ PI s))))
(/ u (- -1.0 (exp (- 0.0 (/ PI s)))))))))))
float code(float u, float s) {
return -s * logf((-1.0f + (-1.0f / (((-1.0f + u) / (1.0f + expf((((float) M_PI) / s)))) + (u / (-1.0f - expf((0.0f - (((float) M_PI) / s)))))))));
}
function code(u, s) return Float32(Float32(-s) * log(Float32(Float32(-1.0) + Float32(Float32(-1.0) / Float32(Float32(Float32(Float32(-1.0) + u) / Float32(Float32(1.0) + exp(Float32(Float32(pi) / s)))) + Float32(u / Float32(Float32(-1.0) - exp(Float32(Float32(0.0) - Float32(Float32(pi) / s)))))))))) end
function tmp = code(u, s) tmp = -s * log((single(-1.0) + (single(-1.0) / (((single(-1.0) + u) / (single(1.0) + exp((single(pi) / s)))) + (u / (single(-1.0) - exp((single(0.0) - (single(pi) / s))))))))); end
\begin{array}{l}
\\
\left(-s\right) \cdot \log \left(-1 + \frac{-1}{\frac{-1 + u}{1 + e^{\frac{\pi}{s}}} + \frac{u}{-1 - e^{0 - \frac{\pi}{s}}}}\right)
\end{array}
Initial program 99.0%
clear-numN/A
associate-/r/N/A
*-lowering-*.f32N/A
/-lowering-/.f32N/A
PI-lowering-PI.f3299.0%
Applied egg-rr99.0%
Applied egg-rr99.0%
*-lowering-*.f32N/A
neg-lowering-neg.f32N/A
log-lowering-log.f32N/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f32N/A
Applied egg-rr99.0%
Final simplification99.0%
(FPCore (u s)
:precision binary32
(*
(- s)
(log
(+
-1.0
(/
-1.0
(+
(/ -1.0 (+ 1.0 (exp (/ PI s))))
(/ u (- -1.0 (exp (- 0.0 (/ PI s)))))))))))
float code(float u, float s) {
return -s * logf((-1.0f + (-1.0f / ((-1.0f / (1.0f + expf((((float) M_PI) / s)))) + (u / (-1.0f - expf((0.0f - (((float) M_PI) / s)))))))));
}
function code(u, s) return Float32(Float32(-s) * log(Float32(Float32(-1.0) + Float32(Float32(-1.0) / Float32(Float32(Float32(-1.0) / Float32(Float32(1.0) + exp(Float32(Float32(pi) / s)))) + Float32(u / Float32(Float32(-1.0) - exp(Float32(Float32(0.0) - Float32(Float32(pi) / s)))))))))) end
function tmp = code(u, s) tmp = -s * log((single(-1.0) + (single(-1.0) / ((single(-1.0) / (single(1.0) + exp((single(pi) / s)))) + (u / (single(-1.0) - exp((single(0.0) - (single(pi) / s))))))))); end
\begin{array}{l}
\\
\left(-s\right) \cdot \log \left(-1 + \frac{-1}{\frac{-1}{1 + e^{\frac{\pi}{s}}} + \frac{u}{-1 - e^{0 - \frac{\pi}{s}}}}\right)
\end{array}
Initial program 99.0%
clear-numN/A
associate-/r/N/A
*-lowering-*.f32N/A
/-lowering-/.f32N/A
PI-lowering-PI.f3299.0%
Applied egg-rr99.0%
Taylor expanded in s around -inf
mul-1-negN/A
unsub-negN/A
--lowering--.f32N/A
/-lowering-/.f32N/A
+-commutativeN/A
mul-1-negN/A
unsub-negN/A
--lowering--.f32N/A
associate-*r/N/A
/-lowering-/.f32N/A
*-lowering-*.f32N/A
unpow2N/A
*-lowering-*.f32N/A
PI-lowering-PI.f32N/A
PI-lowering-PI.f32N/A
PI-lowering-PI.f3297.1%
Simplified97.1%
Taylor expanded in s around 0
associate-*r*N/A
*-lowering-*.f32N/A
mul-1-negN/A
neg-lowering-neg.f32N/A
log-lowering-log.f32N/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f32N/A
Simplified98.8%
Final simplification98.8%
(FPCore (u s)
:precision binary32
(*
(- s)
(log
(+
-1.0
(/ -1.0 (+ (/ (+ -1.0 u) (+ 1.0 (exp (/ PI s)))) (/ u (+ -1.0 -1.0))))))))
float code(float u, float s) {
return -s * logf((-1.0f + (-1.0f / (((-1.0f + u) / (1.0f + expf((((float) M_PI) / s)))) + (u / (-1.0f + -1.0f))))));
}
function code(u, s) return Float32(Float32(-s) * log(Float32(Float32(-1.0) + Float32(Float32(-1.0) / Float32(Float32(Float32(Float32(-1.0) + u) / Float32(Float32(1.0) + exp(Float32(Float32(pi) / s)))) + Float32(u / Float32(Float32(-1.0) + Float32(-1.0)))))))) end
function tmp = code(u, s) tmp = -s * log((single(-1.0) + (single(-1.0) / (((single(-1.0) + u) / (single(1.0) + exp((single(pi) / s)))) + (u / (single(-1.0) + single(-1.0))))))); end
\begin{array}{l}
\\
\left(-s\right) \cdot \log \left(-1 + \frac{-1}{\frac{-1 + u}{1 + e^{\frac{\pi}{s}}} + \frac{u}{-1 + -1}}\right)
\end{array}
Initial program 99.0%
clear-numN/A
associate-/r/N/A
*-lowering-*.f32N/A
/-lowering-/.f32N/A
PI-lowering-PI.f3299.0%
Applied egg-rr99.0%
Applied egg-rr99.0%
*-lowering-*.f32N/A
neg-lowering-neg.f32N/A
log-lowering-log.f32N/A
sub-negN/A
metadata-evalN/A
+-lowering-+.f32N/A
Applied egg-rr99.0%
Taylor expanded in s around inf
Simplified38.4%
Final simplification38.4%
(FPCore (u s) :precision binary32 (* (- s) (log (+ -1.0 (- 2.0 (/ (+ (+ PI (* -4.0 (* PI (* u -0.5)))) (* PI -2.0)) s))))))
float code(float u, float s) {
return -s * logf((-1.0f + (2.0f - (((((float) M_PI) + (-4.0f * (((float) M_PI) * (u * -0.5f)))) + (((float) M_PI) * -2.0f)) / s))));
}
function code(u, s) return Float32(Float32(-s) * log(Float32(Float32(-1.0) + Float32(Float32(2.0) - Float32(Float32(Float32(Float32(pi) + Float32(Float32(-4.0) * Float32(Float32(pi) * Float32(u * Float32(-0.5))))) + Float32(Float32(pi) * Float32(-2.0))) / s))))) end
function tmp = code(u, s) tmp = -s * log((single(-1.0) + (single(2.0) - (((single(pi) + (single(-4.0) * (single(pi) * (u * single(-0.5))))) + (single(pi) * single(-2.0))) / s)))); end
\begin{array}{l}
\\
\left(-s\right) \cdot \log \left(-1 + \left(2 - \frac{\left(\pi + -4 \cdot \left(\pi \cdot \left(u \cdot -0.5\right)\right)\right) + \pi \cdot -2}{s}\right)\right)
\end{array}
Initial program 99.0%
flip-+N/A
clear-numN/A
/-lowering-/.f32N/A
Applied egg-rr99.0%
Taylor expanded in s around -inf
mul-1-negN/A
unsub-negN/A
--lowering--.f32N/A
/-lowering-/.f32N/A
Simplified25.6%
Final simplification25.6%
(FPCore (u s)
:precision binary32
(let* ((t_0 (* u (* PI -0.5)))
(t_1 (* PI (* PI PI)))
(t_2 (* t_1 (* (* u (* u u)) -0.125))))
(*
-4.0
(/
(/
-1.0
(/
(- (* PI (* (* PI PI) 0.015625)) t_2)
(- (* t_2 t_2) (* t_1 (* t_1 0.000244140625)))))
(+
(* (* PI PI) 0.0625)
(- (* (* u -0.5) (* PI t_0)) (* t_0 (* PI 0.25))))))))
float code(float u, float s) {
float t_0 = u * (((float) M_PI) * -0.5f);
float t_1 = ((float) M_PI) * (((float) M_PI) * ((float) M_PI));
float t_2 = t_1 * ((u * (u * u)) * -0.125f);
return -4.0f * ((-1.0f / (((((float) M_PI) * ((((float) M_PI) * ((float) M_PI)) * 0.015625f)) - t_2) / ((t_2 * t_2) - (t_1 * (t_1 * 0.000244140625f))))) / (((((float) M_PI) * ((float) M_PI)) * 0.0625f) + (((u * -0.5f) * (((float) M_PI) * t_0)) - (t_0 * (((float) M_PI) * 0.25f)))));
}
function code(u, s) t_0 = Float32(u * Float32(Float32(pi) * Float32(-0.5))) t_1 = Float32(Float32(pi) * Float32(Float32(pi) * Float32(pi))) t_2 = Float32(t_1 * Float32(Float32(u * Float32(u * u)) * Float32(-0.125))) return Float32(Float32(-4.0) * Float32(Float32(Float32(-1.0) / Float32(Float32(Float32(Float32(pi) * Float32(Float32(Float32(pi) * Float32(pi)) * Float32(0.015625))) - t_2) / Float32(Float32(t_2 * t_2) - Float32(t_1 * Float32(t_1 * Float32(0.000244140625)))))) / Float32(Float32(Float32(Float32(pi) * Float32(pi)) * Float32(0.0625)) + Float32(Float32(Float32(u * Float32(-0.5)) * Float32(Float32(pi) * t_0)) - Float32(t_0 * Float32(Float32(pi) * Float32(0.25))))))) end
function tmp = code(u, s) t_0 = u * (single(pi) * single(-0.5)); t_1 = single(pi) * (single(pi) * single(pi)); t_2 = t_1 * ((u * (u * u)) * single(-0.125)); tmp = single(-4.0) * ((single(-1.0) / (((single(pi) * ((single(pi) * single(pi)) * single(0.015625))) - t_2) / ((t_2 * t_2) - (t_1 * (t_1 * single(0.000244140625)))))) / (((single(pi) * single(pi)) * single(0.0625)) + (((u * single(-0.5)) * (single(pi) * t_0)) - (t_0 * (single(pi) * single(0.25)))))); end
\begin{array}{l}
\\
\begin{array}{l}
t_0 := u \cdot \left(\pi \cdot -0.5\right)\\
t_1 := \pi \cdot \left(\pi \cdot \pi\right)\\
t_2 := t\_1 \cdot \left(\left(u \cdot \left(u \cdot u\right)\right) \cdot -0.125\right)\\
-4 \cdot \frac{\frac{-1}{\frac{\pi \cdot \left(\left(\pi \cdot \pi\right) \cdot 0.015625\right) - t\_2}{t\_2 \cdot t\_2 - t\_1 \cdot \left(t\_1 \cdot 0.000244140625\right)}}}{\left(\pi \cdot \pi\right) \cdot 0.0625 + \left(\left(u \cdot -0.5\right) \cdot \left(\pi \cdot t\_0\right) - t\_0 \cdot \left(\pi \cdot 0.25\right)\right)}
\end{array}
\end{array}
Initial program 99.0%
clear-numN/A
associate-/r/N/A
*-lowering-*.f32N/A
/-lowering-/.f32N/A
PI-lowering-PI.f3299.0%
Applied egg-rr99.0%
Taylor expanded in s around -inf
*-commutativeN/A
*-lowering-*.f32N/A
cancel-sign-sub-invN/A
metadata-evalN/A
+-lowering-+.f32N/A
distribute-rgt-out--N/A
metadata-evalN/A
*-commutativeN/A
*-commutativeN/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f32N/A
PI-lowering-PI.f32N/A
*-lowering-*.f32N/A
*-commutativeN/A
*-lowering-*.f32N/A
PI-lowering-PI.f3212.1%
Simplified12.1%
+-commutativeN/A
flip3-+N/A
/-lowering-/.f32N/A
Applied egg-rr12.1%
Applied egg-rr12.1%
Final simplification12.1%
(FPCore (u s)
:precision binary32
(let* ((t_0 (* u (* PI -0.5))) (t_1 (* PI (* PI PI))))
(*
-4.0
(/
(* (* u (* u u)) (+ (* (/ t_1 (* u u)) (/ 0.015625 u)) (* t_1 -0.125)))
(+
(* (* PI PI) 0.0625)
(- (* (* u -0.5) (* PI t_0)) (* t_0 (* PI 0.25))))))))
float code(float u, float s) {
float t_0 = u * (((float) M_PI) * -0.5f);
float t_1 = ((float) M_PI) * (((float) M_PI) * ((float) M_PI));
return -4.0f * (((u * (u * u)) * (((t_1 / (u * u)) * (0.015625f / u)) + (t_1 * -0.125f))) / (((((float) M_PI) * ((float) M_PI)) * 0.0625f) + (((u * -0.5f) * (((float) M_PI) * t_0)) - (t_0 * (((float) M_PI) * 0.25f)))));
}
function code(u, s) t_0 = Float32(u * Float32(Float32(pi) * Float32(-0.5))) t_1 = Float32(Float32(pi) * Float32(Float32(pi) * Float32(pi))) return Float32(Float32(-4.0) * Float32(Float32(Float32(u * Float32(u * u)) * Float32(Float32(Float32(t_1 / Float32(u * u)) * Float32(Float32(0.015625) / u)) + Float32(t_1 * Float32(-0.125)))) / Float32(Float32(Float32(Float32(pi) * Float32(pi)) * Float32(0.0625)) + Float32(Float32(Float32(u * Float32(-0.5)) * Float32(Float32(pi) * t_0)) - Float32(t_0 * Float32(Float32(pi) * Float32(0.25))))))) end
function tmp = code(u, s) t_0 = u * (single(pi) * single(-0.5)); t_1 = single(pi) * (single(pi) * single(pi)); tmp = single(-4.0) * (((u * (u * u)) * (((t_1 / (u * u)) * (single(0.015625) / u)) + (t_1 * single(-0.125)))) / (((single(pi) * single(pi)) * single(0.0625)) + (((u * single(-0.5)) * (single(pi) * t_0)) - (t_0 * (single(pi) * single(0.25)))))); end
\begin{array}{l}
\\
\begin{array}{l}
t_0 := u \cdot \left(\pi \cdot -0.5\right)\\
t_1 := \pi \cdot \left(\pi \cdot \pi\right)\\
-4 \cdot \frac{\left(u \cdot \left(u \cdot u\right)\right) \cdot \left(\frac{t\_1}{u \cdot u} \cdot \frac{0.015625}{u} + t\_1 \cdot -0.125\right)}{\left(\pi \cdot \pi\right) \cdot 0.0625 + \left(\left(u \cdot -0.5\right) \cdot \left(\pi \cdot t\_0\right) - t\_0 \cdot \left(\pi \cdot 0.25\right)\right)}
\end{array}
\end{array}
Initial program 99.0%
clear-numN/A
associate-/r/N/A
*-lowering-*.f32N/A
/-lowering-/.f32N/A
PI-lowering-PI.f3299.0%
Applied egg-rr99.0%
Taylor expanded in s around -inf
*-commutativeN/A
*-lowering-*.f32N/A
cancel-sign-sub-invN/A
metadata-evalN/A
+-lowering-+.f32N/A
distribute-rgt-out--N/A
metadata-evalN/A
*-commutativeN/A
*-commutativeN/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f32N/A
PI-lowering-PI.f32N/A
*-lowering-*.f32N/A
*-commutativeN/A
*-lowering-*.f32N/A
PI-lowering-PI.f3212.1%
Simplified12.1%
+-commutativeN/A
flip3-+N/A
/-lowering-/.f32N/A
Applied egg-rr12.1%
Taylor expanded in u around inf
*-lowering-*.f32N/A
cube-multN/A
unpow2N/A
*-lowering-*.f32N/A
unpow2N/A
*-lowering-*.f32N/A
+-commutativeN/A
*-commutativeN/A
cube-multN/A
unpow2N/A
associate-*r*N/A
*-commutativeN/A
+-lowering-+.f32N/A
Simplified12.1%
Final simplification12.1%
(FPCore (u s)
:precision binary32
(let* ((t_0 (* PI (* u -0.5))) (t_1 (* u (* PI -0.5))))
(*
-4.0
(/
(+ (* 0.015625 (* PI (* PI PI))) (* (* u -0.5) (* t_0 (* PI t_0))))
(+
(* (* PI PI) 0.0625)
(- (* (* u -0.5) (* PI t_1)) (* t_1 (* PI 0.25))))))))
float code(float u, float s) {
float t_0 = ((float) M_PI) * (u * -0.5f);
float t_1 = u * (((float) M_PI) * -0.5f);
return -4.0f * (((0.015625f * (((float) M_PI) * (((float) M_PI) * ((float) M_PI)))) + ((u * -0.5f) * (t_0 * (((float) M_PI) * t_0)))) / (((((float) M_PI) * ((float) M_PI)) * 0.0625f) + (((u * -0.5f) * (((float) M_PI) * t_1)) - (t_1 * (((float) M_PI) * 0.25f)))));
}
function code(u, s) t_0 = Float32(Float32(pi) * Float32(u * Float32(-0.5))) t_1 = Float32(u * Float32(Float32(pi) * Float32(-0.5))) return Float32(Float32(-4.0) * Float32(Float32(Float32(Float32(0.015625) * Float32(Float32(pi) * Float32(Float32(pi) * Float32(pi)))) + Float32(Float32(u * Float32(-0.5)) * Float32(t_0 * Float32(Float32(pi) * t_0)))) / Float32(Float32(Float32(Float32(pi) * Float32(pi)) * Float32(0.0625)) + Float32(Float32(Float32(u * Float32(-0.5)) * Float32(Float32(pi) * t_1)) - Float32(t_1 * Float32(Float32(pi) * Float32(0.25))))))) end
function tmp = code(u, s) t_0 = single(pi) * (u * single(-0.5)); t_1 = u * (single(pi) * single(-0.5)); tmp = single(-4.0) * (((single(0.015625) * (single(pi) * (single(pi) * single(pi)))) + ((u * single(-0.5)) * (t_0 * (single(pi) * t_0)))) / (((single(pi) * single(pi)) * single(0.0625)) + (((u * single(-0.5)) * (single(pi) * t_1)) - (t_1 * (single(pi) * single(0.25)))))); end
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \pi \cdot \left(u \cdot -0.5\right)\\
t_1 := u \cdot \left(\pi \cdot -0.5\right)\\
-4 \cdot \frac{0.015625 \cdot \left(\pi \cdot \left(\pi \cdot \pi\right)\right) + \left(u \cdot -0.5\right) \cdot \left(t\_0 \cdot \left(\pi \cdot t\_0\right)\right)}{\left(\pi \cdot \pi\right) \cdot 0.0625 + \left(\left(u \cdot -0.5\right) \cdot \left(\pi \cdot t\_1\right) - t\_1 \cdot \left(\pi \cdot 0.25\right)\right)}
\end{array}
\end{array}
Initial program 99.0%
clear-numN/A
associate-/r/N/A
*-lowering-*.f32N/A
/-lowering-/.f32N/A
PI-lowering-PI.f3299.0%
Applied egg-rr99.0%
Taylor expanded in s around -inf
*-commutativeN/A
*-lowering-*.f32N/A
cancel-sign-sub-invN/A
metadata-evalN/A
+-lowering-+.f32N/A
distribute-rgt-out--N/A
metadata-evalN/A
*-commutativeN/A
*-commutativeN/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f32N/A
PI-lowering-PI.f32N/A
*-lowering-*.f32N/A
*-commutativeN/A
*-lowering-*.f32N/A
PI-lowering-PI.f3212.1%
Simplified12.1%
+-commutativeN/A
flip3-+N/A
/-lowering-/.f32N/A
Applied egg-rr12.1%
*-commutativeN/A
associate-*r*N/A
*-lowering-*.f32N/A
*-lowering-*.f32N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f32N/A
PI-lowering-PI.f32N/A
*-lowering-*.f32N/A
*-lowering-*.f32N/A
PI-lowering-PI.f32N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f32N/A
PI-lowering-PI.f32N/A
*-lowering-*.f32N/A
*-lowering-*.f3212.1%
Applied egg-rr12.1%
Final simplification12.1%
(FPCore (u s)
:precision binary32
(let* ((t_0 (* u (* PI -0.5))) (t_1 (* (* u -0.5) (* PI t_0))))
(*
-4.0
(/
(+ (* 0.015625 (* PI (* PI PI))) (* t_0 t_1))
(+ (* (* PI PI) 0.0625) (- t_1 (* t_0 (* PI 0.25))))))))
float code(float u, float s) {
float t_0 = u * (((float) M_PI) * -0.5f);
float t_1 = (u * -0.5f) * (((float) M_PI) * t_0);
return -4.0f * (((0.015625f * (((float) M_PI) * (((float) M_PI) * ((float) M_PI)))) + (t_0 * t_1)) / (((((float) M_PI) * ((float) M_PI)) * 0.0625f) + (t_1 - (t_0 * (((float) M_PI) * 0.25f)))));
}
function code(u, s) t_0 = Float32(u * Float32(Float32(pi) * Float32(-0.5))) t_1 = Float32(Float32(u * Float32(-0.5)) * Float32(Float32(pi) * t_0)) return Float32(Float32(-4.0) * Float32(Float32(Float32(Float32(0.015625) * Float32(Float32(pi) * Float32(Float32(pi) * Float32(pi)))) + Float32(t_0 * t_1)) / Float32(Float32(Float32(Float32(pi) * Float32(pi)) * Float32(0.0625)) + Float32(t_1 - Float32(t_0 * Float32(Float32(pi) * Float32(0.25))))))) end
function tmp = code(u, s) t_0 = u * (single(pi) * single(-0.5)); t_1 = (u * single(-0.5)) * (single(pi) * t_0); tmp = single(-4.0) * (((single(0.015625) * (single(pi) * (single(pi) * single(pi)))) + (t_0 * t_1)) / (((single(pi) * single(pi)) * single(0.0625)) + (t_1 - (t_0 * (single(pi) * single(0.25)))))); end
\begin{array}{l}
\\
\begin{array}{l}
t_0 := u \cdot \left(\pi \cdot -0.5\right)\\
t_1 := \left(u \cdot -0.5\right) \cdot \left(\pi \cdot t\_0\right)\\
-4 \cdot \frac{0.015625 \cdot \left(\pi \cdot \left(\pi \cdot \pi\right)\right) + t\_0 \cdot t\_1}{\left(\pi \cdot \pi\right) \cdot 0.0625 + \left(t\_1 - t\_0 \cdot \left(\pi \cdot 0.25\right)\right)}
\end{array}
\end{array}
Initial program 99.0%
clear-numN/A
associate-/r/N/A
*-lowering-*.f32N/A
/-lowering-/.f32N/A
PI-lowering-PI.f3299.0%
Applied egg-rr99.0%
Taylor expanded in s around -inf
*-commutativeN/A
*-lowering-*.f32N/A
cancel-sign-sub-invN/A
metadata-evalN/A
+-lowering-+.f32N/A
distribute-rgt-out--N/A
metadata-evalN/A
*-commutativeN/A
*-commutativeN/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f32N/A
PI-lowering-PI.f32N/A
*-lowering-*.f32N/A
*-commutativeN/A
*-lowering-*.f32N/A
PI-lowering-PI.f3212.1%
Simplified12.1%
+-commutativeN/A
flip3-+N/A
/-lowering-/.f32N/A
Applied egg-rr12.1%
Final simplification12.1%
(FPCore (u s)
:precision binary32
(let* ((t_0 (* u (* PI -0.5))))
(*
-4.0
(/
(+ (* 0.015625 (* PI (* PI PI))) (* t_0 (* (* u -0.5) (* PI t_0))))
(*
(* u u)
(+
(/ (* (* PI PI) 0.0625) (* u u))
(+ (* 0.125 (/ (* PI PI) u)) (* (* PI PI) 0.25))))))))
float code(float u, float s) {
float t_0 = u * (((float) M_PI) * -0.5f);
return -4.0f * (((0.015625f * (((float) M_PI) * (((float) M_PI) * ((float) M_PI)))) + (t_0 * ((u * -0.5f) * (((float) M_PI) * t_0)))) / ((u * u) * ((((((float) M_PI) * ((float) M_PI)) * 0.0625f) / (u * u)) + ((0.125f * ((((float) M_PI) * ((float) M_PI)) / u)) + ((((float) M_PI) * ((float) M_PI)) * 0.25f)))));
}
function code(u, s) t_0 = Float32(u * Float32(Float32(pi) * Float32(-0.5))) return Float32(Float32(-4.0) * Float32(Float32(Float32(Float32(0.015625) * Float32(Float32(pi) * Float32(Float32(pi) * Float32(pi)))) + Float32(t_0 * Float32(Float32(u * Float32(-0.5)) * Float32(Float32(pi) * t_0)))) / Float32(Float32(u * u) * Float32(Float32(Float32(Float32(Float32(pi) * Float32(pi)) * Float32(0.0625)) / Float32(u * u)) + Float32(Float32(Float32(0.125) * Float32(Float32(Float32(pi) * Float32(pi)) / u)) + Float32(Float32(Float32(pi) * Float32(pi)) * Float32(0.25))))))) end
function tmp = code(u, s) t_0 = u * (single(pi) * single(-0.5)); tmp = single(-4.0) * (((single(0.015625) * (single(pi) * (single(pi) * single(pi)))) + (t_0 * ((u * single(-0.5)) * (single(pi) * t_0)))) / ((u * u) * ((((single(pi) * single(pi)) * single(0.0625)) / (u * u)) + ((single(0.125) * ((single(pi) * single(pi)) / u)) + ((single(pi) * single(pi)) * single(0.25)))))); end
\begin{array}{l}
\\
\begin{array}{l}
t_0 := u \cdot \left(\pi \cdot -0.5\right)\\
-4 \cdot \frac{0.015625 \cdot \left(\pi \cdot \left(\pi \cdot \pi\right)\right) + t\_0 \cdot \left(\left(u \cdot -0.5\right) \cdot \left(\pi \cdot t\_0\right)\right)}{\left(u \cdot u\right) \cdot \left(\frac{\left(\pi \cdot \pi\right) \cdot 0.0625}{u \cdot u} + \left(0.125 \cdot \frac{\pi \cdot \pi}{u} + \left(\pi \cdot \pi\right) \cdot 0.25\right)\right)}
\end{array}
\end{array}
Initial program 99.0%
clear-numN/A
associate-/r/N/A
*-lowering-*.f32N/A
/-lowering-/.f32N/A
PI-lowering-PI.f3299.0%
Applied egg-rr99.0%
Taylor expanded in s around -inf
*-commutativeN/A
*-lowering-*.f32N/A
cancel-sign-sub-invN/A
metadata-evalN/A
+-lowering-+.f32N/A
distribute-rgt-out--N/A
metadata-evalN/A
*-commutativeN/A
*-commutativeN/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f32N/A
PI-lowering-PI.f32N/A
*-lowering-*.f32N/A
*-commutativeN/A
*-lowering-*.f32N/A
PI-lowering-PI.f3212.1%
Simplified12.1%
+-commutativeN/A
flip3-+N/A
/-lowering-/.f32N/A
Applied egg-rr12.1%
Taylor expanded in u around inf
*-lowering-*.f32N/A
unpow2N/A
*-lowering-*.f32N/A
cancel-sign-sub-invN/A
metadata-evalN/A
associate-+l+N/A
+-commutativeN/A
+-lowering-+.f32N/A
Simplified12.1%
Final simplification12.1%
(FPCore (u s)
:precision binary32
(/
(*
-4.0
(+
(* PI (* (* PI PI) 0.015625))
(* (* PI (* PI PI)) (* (* u (* u u)) -0.125))))
(+ (* (* PI (* u -0.5)) (* PI (- (* u -0.5) 0.25))) (* PI (* PI 0.0625)))))
float code(float u, float s) {
return (-4.0f * ((((float) M_PI) * ((((float) M_PI) * ((float) M_PI)) * 0.015625f)) + ((((float) M_PI) * (((float) M_PI) * ((float) M_PI))) * ((u * (u * u)) * -0.125f)))) / (((((float) M_PI) * (u * -0.5f)) * (((float) M_PI) * ((u * -0.5f) - 0.25f))) + (((float) M_PI) * (((float) M_PI) * 0.0625f)));
}
function code(u, s) return Float32(Float32(Float32(-4.0) * Float32(Float32(Float32(pi) * Float32(Float32(Float32(pi) * Float32(pi)) * Float32(0.015625))) + Float32(Float32(Float32(pi) * Float32(Float32(pi) * Float32(pi))) * Float32(Float32(u * Float32(u * u)) * Float32(-0.125))))) / Float32(Float32(Float32(Float32(pi) * Float32(u * Float32(-0.5))) * Float32(Float32(pi) * Float32(Float32(u * Float32(-0.5)) - Float32(0.25)))) + Float32(Float32(pi) * Float32(Float32(pi) * Float32(0.0625))))) end
function tmp = code(u, s) tmp = (single(-4.0) * ((single(pi) * ((single(pi) * single(pi)) * single(0.015625))) + ((single(pi) * (single(pi) * single(pi))) * ((u * (u * u)) * single(-0.125))))) / (((single(pi) * (u * single(-0.5))) * (single(pi) * ((u * single(-0.5)) - single(0.25)))) + (single(pi) * (single(pi) * single(0.0625)))); end
\begin{array}{l}
\\
\frac{-4 \cdot \left(\pi \cdot \left(\left(\pi \cdot \pi\right) \cdot 0.015625\right) + \left(\pi \cdot \left(\pi \cdot \pi\right)\right) \cdot \left(\left(u \cdot \left(u \cdot u\right)\right) \cdot -0.125\right)\right)}{\left(\pi \cdot \left(u \cdot -0.5\right)\right) \cdot \left(\pi \cdot \left(u \cdot -0.5 - 0.25\right)\right) + \pi \cdot \left(\pi \cdot 0.0625\right)}
\end{array}
Initial program 99.0%
clear-numN/A
associate-/r/N/A
*-lowering-*.f32N/A
/-lowering-/.f32N/A
PI-lowering-PI.f3299.0%
Applied egg-rr99.0%
Taylor expanded in s around -inf
*-commutativeN/A
*-lowering-*.f32N/A
cancel-sign-sub-invN/A
metadata-evalN/A
+-lowering-+.f32N/A
distribute-rgt-out--N/A
metadata-evalN/A
*-commutativeN/A
*-commutativeN/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f32N/A
PI-lowering-PI.f32N/A
*-lowering-*.f32N/A
*-commutativeN/A
*-lowering-*.f32N/A
PI-lowering-PI.f3212.1%
Simplified12.1%
add-exp-logN/A
exp-lowering-exp.f32N/A
log-lowering-log.f32N/A
PI-lowering-PI.f3212.1%
Applied egg-rr12.1%
Applied egg-rr12.1%
Final simplification12.1%
(FPCore (u s) :precision binary32 (* u (- (* PI 2.0) (/ PI u))))
float code(float u, float s) {
return u * ((((float) M_PI) * 2.0f) - (((float) M_PI) / u));
}
function code(u, s) return Float32(u * Float32(Float32(Float32(pi) * Float32(2.0)) - Float32(Float32(pi) / u))) end
function tmp = code(u, s) tmp = u * ((single(pi) * single(2.0)) - (single(pi) / u)); end
\begin{array}{l}
\\
u \cdot \left(\pi \cdot 2 - \frac{\pi}{u}\right)
\end{array}
Initial program 99.0%
clear-numN/A
associate-/r/N/A
*-lowering-*.f32N/A
/-lowering-/.f32N/A
PI-lowering-PI.f3299.0%
Applied egg-rr99.0%
Taylor expanded in s around -inf
*-commutativeN/A
*-lowering-*.f32N/A
cancel-sign-sub-invN/A
metadata-evalN/A
+-lowering-+.f32N/A
distribute-rgt-out--N/A
metadata-evalN/A
*-commutativeN/A
*-commutativeN/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f32N/A
PI-lowering-PI.f32N/A
*-lowering-*.f32N/A
*-commutativeN/A
*-lowering-*.f32N/A
PI-lowering-PI.f3212.1%
Simplified12.1%
Taylor expanded in u around inf
*-lowering-*.f32N/A
+-commutativeN/A
mul-1-negN/A
unsub-negN/A
--lowering--.f32N/A
*-commutativeN/A
*-lowering-*.f32N/A
PI-lowering-PI.f32N/A
/-lowering-/.f32N/A
PI-lowering-PI.f3212.1%
Simplified12.1%
(FPCore (u s) :precision binary32 (- (* 2.0 (* u PI)) PI))
float code(float u, float s) {
return (2.0f * (u * ((float) M_PI))) - ((float) M_PI);
}
function code(u, s) return Float32(Float32(Float32(2.0) * Float32(u * Float32(pi))) - Float32(pi)) end
function tmp = code(u, s) tmp = (single(2.0) * (u * single(pi))) - single(pi); end
\begin{array}{l}
\\
2 \cdot \left(u \cdot \pi\right) - \pi
\end{array}
Initial program 99.0%
clear-numN/A
associate-/r/N/A
*-lowering-*.f32N/A
/-lowering-/.f32N/A
PI-lowering-PI.f3299.0%
Applied egg-rr99.0%
Taylor expanded in s around -inf
*-commutativeN/A
*-lowering-*.f32N/A
cancel-sign-sub-invN/A
metadata-evalN/A
+-lowering-+.f32N/A
distribute-rgt-out--N/A
metadata-evalN/A
*-commutativeN/A
*-commutativeN/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f32N/A
PI-lowering-PI.f32N/A
*-lowering-*.f32N/A
*-commutativeN/A
*-lowering-*.f32N/A
PI-lowering-PI.f3212.1%
Simplified12.1%
Taylor expanded in u around 0
+-commutativeN/A
mul-1-negN/A
unsub-negN/A
--lowering--.f32N/A
*-lowering-*.f32N/A
*-commutativeN/A
*-lowering-*.f32N/A
PI-lowering-PI.f32N/A
PI-lowering-PI.f3212.1%
Simplified12.1%
Final simplification12.1%
(FPCore (u s) :precision binary32 (* PI (+ -1.0 (* u 2.0))))
float code(float u, float s) {
return ((float) M_PI) * (-1.0f + (u * 2.0f));
}
function code(u, s) return Float32(Float32(pi) * Float32(Float32(-1.0) + Float32(u * Float32(2.0)))) end
function tmp = code(u, s) tmp = single(pi) * (single(-1.0) + (u * single(2.0))); end
\begin{array}{l}
\\
\pi \cdot \left(-1 + u \cdot 2\right)
\end{array}
Initial program 99.0%
clear-numN/A
associate-/r/N/A
*-lowering-*.f32N/A
/-lowering-/.f32N/A
PI-lowering-PI.f3299.0%
Applied egg-rr99.0%
Taylor expanded in s around -inf
*-commutativeN/A
*-lowering-*.f32N/A
cancel-sign-sub-invN/A
metadata-evalN/A
+-lowering-+.f32N/A
distribute-rgt-out--N/A
metadata-evalN/A
*-commutativeN/A
*-commutativeN/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f32N/A
PI-lowering-PI.f32N/A
*-lowering-*.f32N/A
*-commutativeN/A
*-lowering-*.f32N/A
PI-lowering-PI.f3212.1%
Simplified12.1%
add-exp-logN/A
exp-lowering-exp.f32N/A
log-lowering-log.f32N/A
PI-lowering-PI.f3212.1%
Applied egg-rr12.1%
Taylor expanded in u around 0
associate-*r*N/A
distribute-rgt-outN/A
*-lowering-*.f32N/A
PI-lowering-PI.f32N/A
+-lowering-+.f32N/A
*-lowering-*.f3212.1%
Simplified12.1%
Final simplification12.1%
(FPCore (u s) :precision binary32 (- PI))
float code(float u, float s) {
return -((float) M_PI);
}
function code(u, s) return Float32(-Float32(pi)) end
function tmp = code(u, s) tmp = -single(pi); end
\begin{array}{l}
\\
-\pi
\end{array}
Initial program 99.0%
Taylor expanded in u around 0
mul-1-negN/A
neg-lowering-neg.f32N/A
PI-lowering-PI.f3212.0%
Simplified12.0%
(FPCore (u s) :precision binary32 0.0)
float code(float u, float s) {
return 0.0f;
}
real(4) function code(u, s)
real(4), intent (in) :: u
real(4), intent (in) :: s
code = 0.0e0
end function
function code(u, s) return Float32(0.0) end
function tmp = code(u, s) tmp = single(0.0); end
\begin{array}{l}
\\
0
\end{array}
Initial program 99.0%
clear-numN/A
associate-/r/N/A
*-lowering-*.f32N/A
/-lowering-/.f32N/A
PI-lowering-PI.f3299.0%
Applied egg-rr99.0%
Applied egg-rr99.0%
Taylor expanded in s around inf
mul-1-negN/A
distribute-rgt-neg-inN/A
distribute-rgt-outN/A
metadata-evalN/A
mul0-rgtN/A
metadata-evalN/A
metadata-evalN/A
metadata-evalN/A
metadata-evalN/A
metadata-evalN/A
*-lowering-*.f329.8%
Simplified9.8%
mul0-rgt9.8%
Applied egg-rr9.8%
herbie shell --seed 2024192
(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))))