| Alternative 1 | |
|---|---|
| Accuracy | 98.5% |
| Cost | 33096 |
(FPCore (F l) :precision binary64 (- (* PI l) (* (/ 1.0 (* F F)) (tan (* PI l)))))
(FPCore (F l)
:precision binary64
(if (<= (* PI l) -1e+33)
(/ (+ (* PI l) 2.0) (* (/ (fma l PI 2.0) l) (/ 1.0 PI)))
(if (<= (* PI l) 2e+14)
(- (* PI l) (* (/ (tan (* PI l)) F) (/ 1.0 F)))
(+ (+ (* PI l) 1.0) -1.0))))double code(double F, double l) {
return (((double) M_PI) * l) - ((1.0 / (F * F)) * tan((((double) M_PI) * l)));
}
double code(double F, double l) {
double tmp;
if ((((double) M_PI) * l) <= -1e+33) {
tmp = ((((double) M_PI) * l) + 2.0) / ((fma(l, ((double) M_PI), 2.0) / l) * (1.0 / ((double) M_PI)));
} else if ((((double) M_PI) * l) <= 2e+14) {
tmp = (((double) M_PI) * l) - ((tan((((double) M_PI) * l)) / F) * (1.0 / F));
} else {
tmp = ((((double) M_PI) * l) + 1.0) + -1.0;
}
return tmp;
}
function code(F, l) return Float64(Float64(pi * l) - Float64(Float64(1.0 / Float64(F * F)) * tan(Float64(pi * l)))) end
function code(F, l) tmp = 0.0 if (Float64(pi * l) <= -1e+33) tmp = Float64(Float64(Float64(pi * l) + 2.0) / Float64(Float64(fma(l, pi, 2.0) / l) * Float64(1.0 / pi))); elseif (Float64(pi * l) <= 2e+14) tmp = Float64(Float64(pi * l) - Float64(Float64(tan(Float64(pi * l)) / F) * Float64(1.0 / F))); else tmp = Float64(Float64(Float64(pi * l) + 1.0) + -1.0); end return tmp end
code[F_, l_] := N[(N[(Pi * l), $MachinePrecision] - N[(N[(1.0 / N[(F * F), $MachinePrecision]), $MachinePrecision] * N[Tan[N[(Pi * l), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
code[F_, l_] := If[LessEqual[N[(Pi * l), $MachinePrecision], -1e+33], N[(N[(N[(Pi * l), $MachinePrecision] + 2.0), $MachinePrecision] / N[(N[(N[(l * Pi + 2.0), $MachinePrecision] / l), $MachinePrecision] * N[(1.0 / Pi), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[N[(Pi * l), $MachinePrecision], 2e+14], N[(N[(Pi * l), $MachinePrecision] - N[(N[(N[Tan[N[(Pi * l), $MachinePrecision]], $MachinePrecision] / F), $MachinePrecision] * N[(1.0 / F), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(N[(Pi * l), $MachinePrecision] + 1.0), $MachinePrecision] + -1.0), $MachinePrecision]]]
\pi \cdot \ell - \frac{1}{F \cdot F} \cdot \tan \left(\pi \cdot \ell\right)
\begin{array}{l}
\mathbf{if}\;\pi \cdot \ell \leq -1 \cdot 10^{+33}:\\
\;\;\;\;\frac{\pi \cdot \ell + 2}{\frac{\mathsf{fma}\left(\ell, \pi, 2\right)}{\ell} \cdot \frac{1}{\pi}}\\
\mathbf{elif}\;\pi \cdot \ell \leq 2 \cdot 10^{+14}:\\
\;\;\;\;\pi \cdot \ell - \frac{\tan \left(\pi \cdot \ell\right)}{F} \cdot \frac{1}{F}\\
\mathbf{else}:\\
\;\;\;\;\left(\pi \cdot \ell + 1\right) + -1\\
\end{array}
if (*.f64 (PI.f64) l) < -9.9999999999999995e32Initial program 63.9%
Simplified63.9%
[Start]63.9 | \[ \pi \cdot \ell - \frac{1}{F \cdot F} \cdot \tan \left(\pi \cdot \ell\right)
\] |
|---|---|
associate-*l/ [=>]63.9 | \[ \pi \cdot \ell - \color{blue}{\frac{1 \cdot \tan \left(\pi \cdot \ell\right)}{F \cdot F}}
\] |
*-lft-identity [=>]63.9 | \[ \pi \cdot \ell - \frac{\color{blue}{\tan \left(\pi \cdot \ell\right)}}{F \cdot F}
\] |
Taylor expanded in l around inf 99.6%
Applied egg-rr99.6%
[Start]99.6 | \[ \ell \cdot \pi
\] |
|---|---|
expm1-log1p-u [=>]0.0 | \[ \color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\ell \cdot \pi\right)\right)}
\] |
expm1-udef [=>]0.0 | \[ \color{blue}{e^{\mathsf{log1p}\left(\ell \cdot \pi\right)} - 1}
\] |
log1p-udef [=>]0.0 | \[ e^{\color{blue}{\log \left(1 + \ell \cdot \pi\right)}} - 1
\] |
add-exp-log [<=]99.6 | \[ \color{blue}{\left(1 + \ell \cdot \pi\right)} - 1
\] |
Simplified99.6%
[Start]99.6 | \[ \left(1 + \ell \cdot \pi\right) - 1
\] |
|---|---|
associate--l+ [=>]99.6 | \[ \color{blue}{1 + \left(\ell \cdot \pi - 1\right)}
\] |
Applied egg-rr44.3%
[Start]99.6 | \[ 1 + \left(\ell \cdot \pi - 1\right)
\] |
|---|---|
associate-+r- [=>]99.6 | \[ \color{blue}{\left(1 + \ell \cdot \pi\right) - 1}
\] |
flip-- [=>]44.3 | \[ \color{blue}{\frac{\left(1 + \ell \cdot \pi\right) \cdot \left(1 + \ell \cdot \pi\right) - 1 \cdot 1}{\left(1 + \ell \cdot \pi\right) + 1}}
\] |
+-commutative [=>]44.3 | \[ \frac{\color{blue}{\left(\ell \cdot \pi + 1\right)} \cdot \left(1 + \ell \cdot \pi\right) - 1 \cdot 1}{\left(1 + \ell \cdot \pi\right) + 1}
\] |
+-commutative [=>]44.3 | \[ \frac{\left(\ell \cdot \pi + 1\right) \cdot \color{blue}{\left(\ell \cdot \pi + 1\right)} - 1 \cdot 1}{\left(1 + \ell \cdot \pi\right) + 1}
\] |
fma-def [=>]44.3 | \[ \frac{\color{blue}{\mathsf{fma}\left(\ell, \pi, 1\right)} \cdot \left(\ell \cdot \pi + 1\right) - 1 \cdot 1}{\left(1 + \ell \cdot \pi\right) + 1}
\] |
fma-def [=>]44.3 | \[ \frac{\mathsf{fma}\left(\ell, \pi, 1\right) \cdot \color{blue}{\mathsf{fma}\left(\ell, \pi, 1\right)} - 1 \cdot 1}{\left(1 + \ell \cdot \pi\right) + 1}
\] |
metadata-eval [=>]44.3 | \[ \frac{\mathsf{fma}\left(\ell, \pi, 1\right) \cdot \mathsf{fma}\left(\ell, \pi, 1\right) - \color{blue}{1}}{\left(1 + \ell \cdot \pi\right) + 1}
\] |
+-commutative [=>]44.3 | \[ \frac{\mathsf{fma}\left(\ell, \pi, 1\right) \cdot \mathsf{fma}\left(\ell, \pi, 1\right) - 1}{\color{blue}{\left(\ell \cdot \pi + 1\right)} + 1}
\] |
fma-def [=>]44.3 | \[ \frac{\mathsf{fma}\left(\ell, \pi, 1\right) \cdot \mathsf{fma}\left(\ell, \pi, 1\right) - 1}{\color{blue}{\mathsf{fma}\left(\ell, \pi, 1\right)} + 1}
\] |
Simplified99.6%
[Start]44.3 | \[ \frac{\mathsf{fma}\left(\ell, \pi, 1\right) \cdot \mathsf{fma}\left(\ell, \pi, 1\right) - 1}{\mathsf{fma}\left(\ell, \pi, 1\right) + 1}
\] |
|---|---|
difference-of-sqr-1 [=>]44.3 | \[ \frac{\color{blue}{\left(\mathsf{fma}\left(\ell, \pi, 1\right) + 1\right) \cdot \left(\mathsf{fma}\left(\ell, \pi, 1\right) - 1\right)}}{\mathsf{fma}\left(\ell, \pi, 1\right) + 1}
\] |
fma-udef [=>]44.3 | \[ \frac{\left(\mathsf{fma}\left(\ell, \pi, 1\right) + 1\right) \cdot \left(\color{blue}{\left(\ell \cdot \pi + 1\right)} - 1\right)}{\mathsf{fma}\left(\ell, \pi, 1\right) + 1}
\] |
associate--l+ [=>]44.3 | \[ \frac{\left(\mathsf{fma}\left(\ell, \pi, 1\right) + 1\right) \cdot \color{blue}{\left(\ell \cdot \pi + \left(1 - 1\right)\right)}}{\mathsf{fma}\left(\ell, \pi, 1\right) + 1}
\] |
metadata-eval [=>]44.3 | \[ \frac{\left(\mathsf{fma}\left(\ell, \pi, 1\right) + 1\right) \cdot \left(\ell \cdot \pi + \color{blue}{0}\right)}{\mathsf{fma}\left(\ell, \pi, 1\right) + 1}
\] |
+-rgt-identity [=>]44.3 | \[ \frac{\left(\mathsf{fma}\left(\ell, \pi, 1\right) + 1\right) \cdot \color{blue}{\left(\ell \cdot \pi\right)}}{\mathsf{fma}\left(\ell, \pi, 1\right) + 1}
\] |
associate-/l* [=>]99.6 | \[ \color{blue}{\frac{\mathsf{fma}\left(\ell, \pi, 1\right) + 1}{\frac{\mathsf{fma}\left(\ell, \pi, 1\right) + 1}{\ell \cdot \pi}}}
\] |
fma-udef [=>]99.6 | \[ \frac{\color{blue}{\left(\ell \cdot \pi + 1\right)} + 1}{\frac{\mathsf{fma}\left(\ell, \pi, 1\right) + 1}{\ell \cdot \pi}}
\] |
associate-+l+ [=>]99.6 | \[ \frac{\color{blue}{\ell \cdot \pi + \left(1 + 1\right)}}{\frac{\mathsf{fma}\left(\ell, \pi, 1\right) + 1}{\ell \cdot \pi}}
\] |
metadata-eval [=>]99.6 | \[ \frac{\ell \cdot \pi + \color{blue}{2}}{\frac{\mathsf{fma}\left(\ell, \pi, 1\right) + 1}{\ell \cdot \pi}}
\] |
fma-udef [=>]99.6 | \[ \frac{\ell \cdot \pi + 2}{\frac{\color{blue}{\left(\ell \cdot \pi + 1\right)} + 1}{\ell \cdot \pi}}
\] |
associate-+l+ [=>]99.6 | \[ \frac{\ell \cdot \pi + 2}{\frac{\color{blue}{\ell \cdot \pi + \left(1 + 1\right)}}{\ell \cdot \pi}}
\] |
metadata-eval [=>]99.6 | \[ \frac{\ell \cdot \pi + 2}{\frac{\ell \cdot \pi + \color{blue}{2}}{\ell \cdot \pi}}
\] |
Applied egg-rr99.6%
[Start]99.6 | \[ \frac{\ell \cdot \pi + 2}{\frac{\ell \cdot \pi + 2}{\ell \cdot \pi}}
\] |
|---|---|
associate-/r* [=>]99.6 | \[ \frac{\ell \cdot \pi + 2}{\color{blue}{\frac{\frac{\ell \cdot \pi + 2}{\ell}}{\pi}}}
\] |
div-inv [=>]99.6 | \[ \frac{\ell \cdot \pi + 2}{\color{blue}{\frac{\ell \cdot \pi + 2}{\ell} \cdot \frac{1}{\pi}}}
\] |
fma-def [=>]99.6 | \[ \frac{\ell \cdot \pi + 2}{\frac{\color{blue}{\mathsf{fma}\left(\ell, \pi, 2\right)}}{\ell} \cdot \frac{1}{\pi}}
\] |
if -9.9999999999999995e32 < (*.f64 (PI.f64) l) < 2e14Initial program 84.7%
Simplified85.4%
[Start]84.7 | \[ \pi \cdot \ell - \frac{1}{F \cdot F} \cdot \tan \left(\pi \cdot \ell\right)
\] |
|---|---|
associate-*l/ [=>]85.4 | \[ \pi \cdot \ell - \color{blue}{\frac{1 \cdot \tan \left(\pi \cdot \ell\right)}{F \cdot F}}
\] |
*-lft-identity [=>]85.4 | \[ \pi \cdot \ell - \frac{\color{blue}{\tan \left(\pi \cdot \ell\right)}}{F \cdot F}
\] |
Applied egg-rr97.6%
[Start]85.4 | \[ \pi \cdot \ell - \frac{\tan \left(\pi \cdot \ell\right)}{F \cdot F}
\] |
|---|---|
associate-/r* [=>]97.6 | \[ \pi \cdot \ell - \color{blue}{\frac{\frac{\tan \left(\pi \cdot \ell\right)}{F}}{F}}
\] |
div-inv [=>]97.6 | \[ \pi \cdot \ell - \color{blue}{\frac{\tan \left(\pi \cdot \ell\right)}{F} \cdot \frac{1}{F}}
\] |
if 2e14 < (*.f64 (PI.f64) l) Initial program 63.4%
Simplified63.4%
[Start]63.4 | \[ \pi \cdot \ell - \frac{1}{F \cdot F} \cdot \tan \left(\pi \cdot \ell\right)
\] |
|---|---|
associate-*l/ [=>]63.4 | \[ \pi \cdot \ell - \color{blue}{\frac{1 \cdot \tan \left(\pi \cdot \ell\right)}{F \cdot F}}
\] |
*-lft-identity [=>]63.4 | \[ \pi \cdot \ell - \frac{\color{blue}{\tan \left(\pi \cdot \ell\right)}}{F \cdot F}
\] |
Taylor expanded in l around inf 99.4%
Applied egg-rr99.4%
[Start]99.4 | \[ \ell \cdot \pi
\] |
|---|---|
expm1-log1p-u [=>]90.6 | \[ \color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\ell \cdot \pi\right)\right)}
\] |
expm1-udef [=>]90.6 | \[ \color{blue}{e^{\mathsf{log1p}\left(\ell \cdot \pi\right)} - 1}
\] |
log1p-udef [=>]90.6 | \[ e^{\color{blue}{\log \left(1 + \ell \cdot \pi\right)}} - 1
\] |
add-exp-log [<=]99.4 | \[ \color{blue}{\left(1 + \ell \cdot \pi\right)} - 1
\] |
Final simplification98.5%
| Alternative 1 | |
|---|---|
| Accuracy | 98.5% |
| Cost | 33096 |
| Alternative 2 | |
|---|---|
| Accuracy | 98.6% |
| Cost | 32968 |
| Alternative 3 | |
|---|---|
| Accuracy | 96.5% |
| Cost | 26696 |
| Alternative 4 | |
|---|---|
| Accuracy | 98.1% |
| Cost | 13768 |
| Alternative 5 | |
|---|---|
| Accuracy | 91.9% |
| Cost | 13640 |
| Alternative 6 | |
|---|---|
| Accuracy | 91.9% |
| Cost | 13640 |
| Alternative 7 | |
|---|---|
| Accuracy | 91.5% |
| Cost | 13512 |
| Alternative 8 | |
|---|---|
| Accuracy | 79.2% |
| Cost | 7952 |
| Alternative 9 | |
|---|---|
| Accuracy | 79.2% |
| Cost | 7888 |
| Alternative 10 | |
|---|---|
| Accuracy | 79.2% |
| Cost | 7888 |
| Alternative 11 | |
|---|---|
| Accuracy | 79.2% |
| Cost | 7888 |
| Alternative 12 | |
|---|---|
| Accuracy | 91.5% |
| Cost | 7304 |
| Alternative 13 | |
|---|---|
| Accuracy | 79.3% |
| Cost | 6528 |
| Alternative 14 | |
|---|---|
| Accuracy | 3.3% |
| Cost | 64 |
herbie shell --seed 2023151
(FPCore (F l)
:name "VandenBroeck and Keller, Equation (6)"
:precision binary64
(- (* PI l) (* (/ 1.0 (* F F)) (tan (* PI l)))))