| Alternative 1 | |
|---|---|
| Error | 0.5 |
| Cost | 7104 |
\[\begin{array}{l}
t_0 := \alpha \cdot \alpha + -1\\
\frac{t_0}{\pi \cdot \left(\left(1 + t_0 \cdot \left(cosTheta \cdot cosTheta\right)\right) \cdot \log \left(\alpha \cdot \alpha\right)\right)}
\end{array}
\]
(FPCore (cosTheta alpha) :precision binary32 (/ (- (* alpha alpha) 1.0) (* (* PI (log (* alpha alpha))) (+ 1.0 (* (* (- (* alpha alpha) 1.0) cosTheta) cosTheta)))))
(FPCore (cosTheta alpha)
:precision binary32
(let* ((t_0 (log (* alpha alpha))))
(/
(+ (* alpha alpha) -1.0)
(*
PI
(+ t_0 (* (* cosTheta (+ -1.0 (* alpha alpha))) (* cosTheta t_0)))))))float code(float cosTheta, float alpha) {
return ((alpha * alpha) - 1.0f) / ((((float) M_PI) * logf((alpha * alpha))) * (1.0f + ((((alpha * alpha) - 1.0f) * cosTheta) * cosTheta)));
}
float code(float cosTheta, float alpha) {
float t_0 = logf((alpha * alpha));
return ((alpha * alpha) + -1.0f) / (((float) M_PI) * (t_0 + ((cosTheta * (-1.0f + (alpha * alpha))) * (cosTheta * t_0))));
}
function code(cosTheta, alpha) return Float32(Float32(Float32(alpha * alpha) - Float32(1.0)) / Float32(Float32(Float32(pi) * log(Float32(alpha * alpha))) * Float32(Float32(1.0) + Float32(Float32(Float32(Float32(alpha * alpha) - Float32(1.0)) * cosTheta) * cosTheta)))) end
function code(cosTheta, alpha) t_0 = log(Float32(alpha * alpha)) return Float32(Float32(Float32(alpha * alpha) + Float32(-1.0)) / Float32(Float32(pi) * Float32(t_0 + Float32(Float32(cosTheta * Float32(Float32(-1.0) + Float32(alpha * alpha))) * Float32(cosTheta * t_0))))) end
function tmp = code(cosTheta, alpha) tmp = ((alpha * alpha) - single(1.0)) / ((single(pi) * log((alpha * alpha))) * (single(1.0) + ((((alpha * alpha) - single(1.0)) * cosTheta) * cosTheta))); end
function tmp = code(cosTheta, alpha) t_0 = log((alpha * alpha)); tmp = ((alpha * alpha) + single(-1.0)) / (single(pi) * (t_0 + ((cosTheta * (single(-1.0) + (alpha * alpha))) * (cosTheta * t_0)))); end
\frac{\alpha \cdot \alpha - 1}{\left(\pi \cdot \log \left(\alpha \cdot \alpha\right)\right) \cdot \left(1 + \left(\left(\alpha \cdot \alpha - 1\right) \cdot cosTheta\right) \cdot cosTheta\right)}
\begin{array}{l}
t_0 := \log \left(\alpha \cdot \alpha\right)\\
\frac{\alpha \cdot \alpha + -1}{\pi \cdot \left(t_0 + \left(cosTheta \cdot \left(-1 + \alpha \cdot \alpha\right)\right) \cdot \left(cosTheta \cdot t_0\right)\right)}
\end{array}
Results
Initial program 0.5
Simplified0.5
[Start]0.5 | \[ \frac{\alpha \cdot \alpha - 1}{\left(\pi \cdot \log \left(\alpha \cdot \alpha\right)\right) \cdot \left(1 + \left(\left(\alpha \cdot \alpha - 1\right) \cdot cosTheta\right) \cdot cosTheta\right)}
\] |
|---|---|
rational_best_oopsla_all_46_json_45_simplify-45 [=>]0.5 | \[ \frac{\color{blue}{\alpha \cdot \alpha + -1}}{\left(\pi \cdot \log \left(\alpha \cdot \alpha\right)\right) \cdot \left(1 + \left(\left(\alpha \cdot \alpha - 1\right) \cdot cosTheta\right) \cdot cosTheta\right)}
\] |
rational_best_oopsla_all_46_json_45_simplify-74 [=>]0.5 | \[ \frac{\alpha \cdot \alpha + -1}{\color{blue}{\left(1 + \left(\left(\alpha \cdot \alpha - 1\right) \cdot cosTheta\right) \cdot cosTheta\right) \cdot \left(\pi \cdot \log \left(\alpha \cdot \alpha\right)\right)}}
\] |
rational_best_oopsla_all_46_json_45_simplify-7 [=>]0.5 | \[ \frac{\alpha \cdot \alpha + -1}{\color{blue}{\pi \cdot \left(\left(1 + \left(\left(\alpha \cdot \alpha - 1\right) \cdot cosTheta\right) \cdot cosTheta\right) \cdot \log \left(\alpha \cdot \alpha\right)\right)}}
\] |
rational_best_oopsla_all_46_json_45_simplify-74 [=>]0.5 | \[ \frac{\alpha \cdot \alpha + -1}{\pi \cdot \left(\left(1 + \color{blue}{cosTheta \cdot \left(\left(\alpha \cdot \alpha - 1\right) \cdot cosTheta\right)}\right) \cdot \log \left(\alpha \cdot \alpha\right)\right)}
\] |
rational_best_oopsla_all_46_json_45_simplify-7 [=>]0.5 | \[ \frac{\alpha \cdot \alpha + -1}{\pi \cdot \left(\left(1 + \color{blue}{\left(\alpha \cdot \alpha - 1\right) \cdot \left(cosTheta \cdot cosTheta\right)}\right) \cdot \log \left(\alpha \cdot \alpha\right)\right)}
\] |
rational_best_oopsla_all_46_json_45_simplify-45 [=>]0.5 | \[ \frac{\alpha \cdot \alpha + -1}{\pi \cdot \left(\left(1 + \color{blue}{\left(\alpha \cdot \alpha + -1\right)} \cdot \left(cosTheta \cdot cosTheta\right)\right) \cdot \log \left(\alpha \cdot \alpha\right)\right)}
\] |
Applied egg-rr0.5
Simplified0.5
[Start]0.5 | \[ \frac{\alpha \cdot \alpha + -1}{\pi \cdot \log \left(\alpha \cdot \alpha\right) + \pi \cdot \left(\left(\left(\alpha \cdot \alpha + -1\right) \cdot cosTheta\right) \cdot \left(\log \left(\alpha \cdot \alpha\right) \cdot cosTheta\right)\right)}
\] |
|---|---|
rational_best_oopsla_all_46_json_45_simplify-74 [=>]0.5 | \[ \frac{\alpha \cdot \alpha + -1}{\color{blue}{\log \left(\alpha \cdot \alpha\right) \cdot \pi} + \pi \cdot \left(\left(\left(\alpha \cdot \alpha + -1\right) \cdot cosTheta\right) \cdot \left(\log \left(\alpha \cdot \alpha\right) \cdot cosTheta\right)\right)}
\] |
rational_best_oopsla_all_46_json_45_simplify-23 [=>]0.5 | \[ \frac{\alpha \cdot \alpha + -1}{\color{blue}{\pi \cdot \left(\log \left(\alpha \cdot \alpha\right) + \left(\left(\alpha \cdot \alpha + -1\right) \cdot cosTheta\right) \cdot \left(\log \left(\alpha \cdot \alpha\right) \cdot cosTheta\right)\right)}}
\] |
rational_best_oopsla_all_46_json_45_simplify-74 [=>]0.5 | \[ \frac{\alpha \cdot \alpha + -1}{\pi \cdot \left(\log \left(\alpha \cdot \alpha\right) + \color{blue}{\left(cosTheta \cdot \left(\alpha \cdot \alpha + -1\right)\right)} \cdot \left(\log \left(\alpha \cdot \alpha\right) \cdot cosTheta\right)\right)}
\] |
rational_best_oopsla_all_46_json_45_simplify-35 [=>]0.5 | \[ \frac{\alpha \cdot \alpha + -1}{\pi \cdot \left(\log \left(\alpha \cdot \alpha\right) + \left(cosTheta \cdot \color{blue}{\left(-1 + \alpha \cdot \alpha\right)}\right) \cdot \left(\log \left(\alpha \cdot \alpha\right) \cdot cosTheta\right)\right)}
\] |
rational_best_oopsla_all_46_json_45_simplify-74 [=>]0.5 | \[ \frac{\alpha \cdot \alpha + -1}{\pi \cdot \left(\log \left(\alpha \cdot \alpha\right) + \left(cosTheta \cdot \left(-1 + \alpha \cdot \alpha\right)\right) \cdot \color{blue}{\left(cosTheta \cdot \log \left(\alpha \cdot \alpha\right)\right)}\right)}
\] |
Final simplification0.5
| Alternative 1 | |
|---|---|
| Error | 0.5 |
| Cost | 7104 |
| Alternative 2 | |
|---|---|
| Error | 0.5 |
| Cost | 7104 |
| Alternative 3 | |
|---|---|
| Error | 0.8 |
| Cost | 6912 |
| Alternative 4 | |
|---|---|
| Error | 0.8 |
| Cost | 6912 |
| Alternative 5 | |
|---|---|
| Error | 10.6 |
| Cost | 6784 |
| Alternative 6 | |
|---|---|
| Error | 10.6 |
| Cost | 6784 |
| Alternative 7 | |
|---|---|
| Error | 1.6 |
| Cost | 6784 |
herbie shell --seed 2023090
(FPCore (cosTheta alpha)
:name "GTR1 distribution"
:precision binary32
:pre (and (and (<= 0.0 cosTheta) (<= cosTheta 1.0)) (and (<= 0.0001 alpha) (<= alpha 1.0)))
(/ (- (* alpha alpha) 1.0) (* (* PI (log (* alpha alpha))) (+ 1.0 (* (* (- (* alpha alpha) 1.0) cosTheta) cosTheta)))))