| Alternative 1 | |
|---|---|
| Accuracy | 99.4% |
| Cost | 52616 |
(FPCore (x eps) :precision binary64 (- (tan (+ x eps)) (tan x)))
(FPCore (x eps)
:precision binary64
(let* ((t_0 (+ (tan x) (tan eps)))
(t_1 (* (tan x) (tan eps)))
(t_2 (- 1.0 (pow t_1 2.0))))
(if (<= eps -3.7e-5)
(- (/ t_0 (- 1.0 t_1)) (tan x))
(if (<= eps 5e-5)
(+
(/ t_0 (/ t_2 t_1))
(+
(* (/ (* eps eps) (pow (cos x) 3.0)) (pow (sin x) 3.0))
(fma
(pow eps 3.0)
(+ 0.3333333333333333 (/ (pow (sin x) 2.0) (pow (cos x) 2.0)))
eps)))
(- (* (/ t_0 t_2) (+ 1.0 t_1)) (tan x))))))double code(double x, double eps) {
return tan((x + eps)) - tan(x);
}
double code(double x, double eps) {
double t_0 = tan(x) + tan(eps);
double t_1 = tan(x) * tan(eps);
double t_2 = 1.0 - pow(t_1, 2.0);
double tmp;
if (eps <= -3.7e-5) {
tmp = (t_0 / (1.0 - t_1)) - tan(x);
} else if (eps <= 5e-5) {
tmp = (t_0 / (t_2 / t_1)) + ((((eps * eps) / pow(cos(x), 3.0)) * pow(sin(x), 3.0)) + fma(pow(eps, 3.0), (0.3333333333333333 + (pow(sin(x), 2.0) / pow(cos(x), 2.0))), eps));
} else {
tmp = ((t_0 / t_2) * (1.0 + t_1)) - tan(x);
}
return tmp;
}
function code(x, eps) return Float64(tan(Float64(x + eps)) - tan(x)) end
function code(x, eps) t_0 = Float64(tan(x) + tan(eps)) t_1 = Float64(tan(x) * tan(eps)) t_2 = Float64(1.0 - (t_1 ^ 2.0)) tmp = 0.0 if (eps <= -3.7e-5) tmp = Float64(Float64(t_0 / Float64(1.0 - t_1)) - tan(x)); elseif (eps <= 5e-5) tmp = Float64(Float64(t_0 / Float64(t_2 / t_1)) + Float64(Float64(Float64(Float64(eps * eps) / (cos(x) ^ 3.0)) * (sin(x) ^ 3.0)) + fma((eps ^ 3.0), Float64(0.3333333333333333 + Float64((sin(x) ^ 2.0) / (cos(x) ^ 2.0))), eps))); else tmp = Float64(Float64(Float64(t_0 / t_2) * Float64(1.0 + t_1)) - tan(x)); end return tmp end
code[x_, eps_] := N[(N[Tan[N[(x + eps), $MachinePrecision]], $MachinePrecision] - N[Tan[x], $MachinePrecision]), $MachinePrecision]
code[x_, eps_] := Block[{t$95$0 = N[(N[Tan[x], $MachinePrecision] + N[Tan[eps], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[Tan[x], $MachinePrecision] * N[Tan[eps], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(1.0 - N[Power[t$95$1, 2.0], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[eps, -3.7e-5], N[(N[(t$95$0 / N[(1.0 - t$95$1), $MachinePrecision]), $MachinePrecision] - N[Tan[x], $MachinePrecision]), $MachinePrecision], If[LessEqual[eps, 5e-5], N[(N[(t$95$0 / N[(t$95$2 / t$95$1), $MachinePrecision]), $MachinePrecision] + N[(N[(N[(N[(eps * eps), $MachinePrecision] / N[Power[N[Cos[x], $MachinePrecision], 3.0], $MachinePrecision]), $MachinePrecision] * N[Power[N[Sin[x], $MachinePrecision], 3.0], $MachinePrecision]), $MachinePrecision] + N[(N[Power[eps, 3.0], $MachinePrecision] * N[(0.3333333333333333 + N[(N[Power[N[Sin[x], $MachinePrecision], 2.0], $MachinePrecision] / N[Power[N[Cos[x], $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + eps), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(N[(t$95$0 / t$95$2), $MachinePrecision] * N[(1.0 + t$95$1), $MachinePrecision]), $MachinePrecision] - N[Tan[x], $MachinePrecision]), $MachinePrecision]]]]]]
\tan \left(x + \varepsilon\right) - \tan x
\begin{array}{l}
t_0 := \tan x + \tan \varepsilon\\
t_1 := \tan x \cdot \tan \varepsilon\\
t_2 := 1 - {t_1}^{2}\\
\mathbf{if}\;\varepsilon \leq -3.7 \cdot 10^{-5}:\\
\;\;\;\;\frac{t_0}{1 - t_1} - \tan x\\
\mathbf{elif}\;\varepsilon \leq 5 \cdot 10^{-5}:\\
\;\;\;\;\frac{t_0}{\frac{t_2}{t_1}} + \left(\frac{\varepsilon \cdot \varepsilon}{{\cos x}^{3}} \cdot {\sin x}^{3} + \mathsf{fma}\left({\varepsilon}^{3}, 0.3333333333333333 + \frac{{\sin x}^{2}}{{\cos x}^{2}}, \varepsilon\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{t_0}{t_2} \cdot \left(1 + t_1\right) - \tan x\\
\end{array}
| Original | 42.5% |
|---|---|
| Target | 76.8% |
| Herbie | 99.6% |
if eps < -3.69999999999999981e-5Initial program 53.1%
Applied egg-rr99.4%
[Start]53.1 | \[ \tan \left(x + \varepsilon\right) - \tan x
\] |
|---|---|
tan-sum [=>]99.4 | \[ \color{blue}{\frac{\tan x + \tan \varepsilon}{1 - \tan x \cdot \tan \varepsilon}} - \tan x
\] |
div-inv [=>]99.4 | \[ \color{blue}{\left(\tan x + \tan \varepsilon\right) \cdot \frac{1}{1 - \tan x \cdot \tan \varepsilon}} - \tan x
\] |
Simplified99.4%
[Start]99.4 | \[ \left(\tan x + \tan \varepsilon\right) \cdot \frac{1}{1 - \tan x \cdot \tan \varepsilon} - \tan x
\] |
|---|---|
associate-*r/ [=>]99.4 | \[ \color{blue}{\frac{\left(\tan x + \tan \varepsilon\right) \cdot 1}{1 - \tan x \cdot \tan \varepsilon}} - \tan x
\] |
*-rgt-identity [=>]99.4 | \[ \frac{\color{blue}{\tan x + \tan \varepsilon}}{1 - \tan x \cdot \tan \varepsilon} - \tan x
\] |
if -3.69999999999999981e-5 < eps < 5.00000000000000024e-5Initial program 30.7%
Applied egg-rr31.6%
[Start]30.7 | \[ \tan \left(x + \varepsilon\right) - \tan x
\] |
|---|---|
tan-sum [=>]31.6 | \[ \color{blue}{\frac{\tan x + \tan \varepsilon}{1 - \tan x \cdot \tan \varepsilon}} - \tan x
\] |
flip-- [=>]31.6 | \[ \frac{\tan x + \tan \varepsilon}{\color{blue}{\frac{1 \cdot 1 - \left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right)}{1 + \tan x \cdot \tan \varepsilon}}} - \tan x
\] |
associate-/r/ [=>]31.6 | \[ \color{blue}{\frac{\tan x + \tan \varepsilon}{1 \cdot 1 - \left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right)} \cdot \left(1 + \tan x \cdot \tan \varepsilon\right)} - \tan x
\] |
metadata-eval [=>]31.6 | \[ \frac{\tan x + \tan \varepsilon}{\color{blue}{1} - \left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right)} \cdot \left(1 + \tan x \cdot \tan \varepsilon\right) - \tan x
\] |
Applied egg-rr38.7%
[Start]31.6 | \[ \frac{\tan x + \tan \varepsilon}{1 - \left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right)} \cdot \left(1 + \tan x \cdot \tan \varepsilon\right) - \tan x
\] |
|---|---|
distribute-rgt-in [=>]31.6 | \[ \color{blue}{\left(1 \cdot \frac{\tan x + \tan \varepsilon}{1 - \left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right)} + \left(\tan x \cdot \tan \varepsilon\right) \cdot \frac{\tan x + \tan \varepsilon}{1 - \left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right)}\right)} - \tan x
\] |
*-un-lft-identity [<=]31.6 | \[ \left(\color{blue}{\frac{\tan x + \tan \varepsilon}{1 - \left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right)}} + \left(\tan x \cdot \tan \varepsilon\right) \cdot \frac{\tan x + \tan \varepsilon}{1 - \left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right)}\right) - \tan x
\] |
+-commutative [=>]31.6 | \[ \color{blue}{\left(\left(\tan x \cdot \tan \varepsilon\right) \cdot \frac{\tan x + \tan \varepsilon}{1 - \left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right)} + \frac{\tan x + \tan \varepsilon}{1 - \left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right)}\right)} - \tan x
\] |
*-commutative [<=]31.6 | \[ \left(\color{blue}{\frac{\tan x + \tan \varepsilon}{1 - \left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right)} \cdot \left(\tan x \cdot \tan \varepsilon\right)} + \frac{\tan x + \tan \varepsilon}{1 - \left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right)}\right) - \tan x
\] |
Taylor expanded in eps around 0 99.7%
Simplified99.7%
[Start]99.7 | \[ \frac{\tan x + \tan \varepsilon}{\frac{1 - {\left(\tan x \cdot \tan \varepsilon\right)}^{2}}{\tan x \cdot \tan \varepsilon}} + \left({\varepsilon}^{3} \cdot \left(0.3333333333333333 - -1 \cdot \frac{{\sin x}^{2}}{{\cos x}^{2}}\right) + \left(\varepsilon + \frac{{\varepsilon}^{2} \cdot {\sin x}^{3}}{{\cos x}^{3}}\right)\right)
\] |
|---|---|
associate-+r+ [=>]99.7 | \[ \frac{\tan x + \tan \varepsilon}{\frac{1 - {\left(\tan x \cdot \tan \varepsilon\right)}^{2}}{\tan x \cdot \tan \varepsilon}} + \color{blue}{\left(\left({\varepsilon}^{3} \cdot \left(0.3333333333333333 - -1 \cdot \frac{{\sin x}^{2}}{{\cos x}^{2}}\right) + \varepsilon\right) + \frac{{\varepsilon}^{2} \cdot {\sin x}^{3}}{{\cos x}^{3}}\right)}
\] |
+-commutative [=>]99.7 | \[ \frac{\tan x + \tan \varepsilon}{\frac{1 - {\left(\tan x \cdot \tan \varepsilon\right)}^{2}}{\tan x \cdot \tan \varepsilon}} + \color{blue}{\left(\frac{{\varepsilon}^{2} \cdot {\sin x}^{3}}{{\cos x}^{3}} + \left({\varepsilon}^{3} \cdot \left(0.3333333333333333 - -1 \cdot \frac{{\sin x}^{2}}{{\cos x}^{2}}\right) + \varepsilon\right)\right)}
\] |
associate-/l* [=>]99.7 | \[ \frac{\tan x + \tan \varepsilon}{\frac{1 - {\left(\tan x \cdot \tan \varepsilon\right)}^{2}}{\tan x \cdot \tan \varepsilon}} + \left(\color{blue}{\frac{{\varepsilon}^{2}}{\frac{{\cos x}^{3}}{{\sin x}^{3}}}} + \left({\varepsilon}^{3} \cdot \left(0.3333333333333333 - -1 \cdot \frac{{\sin x}^{2}}{{\cos x}^{2}}\right) + \varepsilon\right)\right)
\] |
associate-/r/ [=>]99.7 | \[ \frac{\tan x + \tan \varepsilon}{\frac{1 - {\left(\tan x \cdot \tan \varepsilon\right)}^{2}}{\tan x \cdot \tan \varepsilon}} + \left(\color{blue}{\frac{{\varepsilon}^{2}}{{\cos x}^{3}} \cdot {\sin x}^{3}} + \left({\varepsilon}^{3} \cdot \left(0.3333333333333333 - -1 \cdot \frac{{\sin x}^{2}}{{\cos x}^{2}}\right) + \varepsilon\right)\right)
\] |
unpow2 [=>]99.7 | \[ \frac{\tan x + \tan \varepsilon}{\frac{1 - {\left(\tan x \cdot \tan \varepsilon\right)}^{2}}{\tan x \cdot \tan \varepsilon}} + \left(\frac{\color{blue}{\varepsilon \cdot \varepsilon}}{{\cos x}^{3}} \cdot {\sin x}^{3} + \left({\varepsilon}^{3} \cdot \left(0.3333333333333333 - -1 \cdot \frac{{\sin x}^{2}}{{\cos x}^{2}}\right) + \varepsilon\right)\right)
\] |
fma-def [=>]99.7 | \[ \frac{\tan x + \tan \varepsilon}{\frac{1 - {\left(\tan x \cdot \tan \varepsilon\right)}^{2}}{\tan x \cdot \tan \varepsilon}} + \left(\frac{\varepsilon \cdot \varepsilon}{{\cos x}^{3}} \cdot {\sin x}^{3} + \color{blue}{\mathsf{fma}\left({\varepsilon}^{3}, 0.3333333333333333 - -1 \cdot \frac{{\sin x}^{2}}{{\cos x}^{2}}, \varepsilon\right)}\right)
\] |
sub-neg [=>]99.7 | \[ \frac{\tan x + \tan \varepsilon}{\frac{1 - {\left(\tan x \cdot \tan \varepsilon\right)}^{2}}{\tan x \cdot \tan \varepsilon}} + \left(\frac{\varepsilon \cdot \varepsilon}{{\cos x}^{3}} \cdot {\sin x}^{3} + \mathsf{fma}\left({\varepsilon}^{3}, \color{blue}{0.3333333333333333 + \left(--1 \cdot \frac{{\sin x}^{2}}{{\cos x}^{2}}\right)}, \varepsilon\right)\right)
\] |
mul-1-neg [=>]99.7 | \[ \frac{\tan x + \tan \varepsilon}{\frac{1 - {\left(\tan x \cdot \tan \varepsilon\right)}^{2}}{\tan x \cdot \tan \varepsilon}} + \left(\frac{\varepsilon \cdot \varepsilon}{{\cos x}^{3}} \cdot {\sin x}^{3} + \mathsf{fma}\left({\varepsilon}^{3}, 0.3333333333333333 + \left(-\color{blue}{\left(-\frac{{\sin x}^{2}}{{\cos x}^{2}}\right)}\right), \varepsilon\right)\right)
\] |
remove-double-neg [=>]99.7 | \[ \frac{\tan x + \tan \varepsilon}{\frac{1 - {\left(\tan x \cdot \tan \varepsilon\right)}^{2}}{\tan x \cdot \tan \varepsilon}} + \left(\frac{\varepsilon \cdot \varepsilon}{{\cos x}^{3}} \cdot {\sin x}^{3} + \mathsf{fma}\left({\varepsilon}^{3}, 0.3333333333333333 + \color{blue}{\frac{{\sin x}^{2}}{{\cos x}^{2}}}, \varepsilon\right)\right)
\] |
if 5.00000000000000024e-5 < eps Initial program 55.2%
Applied egg-rr99.4%
[Start]55.2 | \[ \tan \left(x + \varepsilon\right) - \tan x
\] |
|---|---|
tan-sum [=>]99.4 | \[ \color{blue}{\frac{\tan x + \tan \varepsilon}{1 - \tan x \cdot \tan \varepsilon}} - \tan x
\] |
flip-- [=>]99.4 | \[ \frac{\tan x + \tan \varepsilon}{\color{blue}{\frac{1 \cdot 1 - \left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right)}{1 + \tan x \cdot \tan \varepsilon}}} - \tan x
\] |
associate-/r/ [=>]99.4 | \[ \color{blue}{\frac{\tan x + \tan \varepsilon}{1 \cdot 1 - \left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right)} \cdot \left(1 + \tan x \cdot \tan \varepsilon\right)} - \tan x
\] |
metadata-eval [=>]99.4 | \[ \frac{\tan x + \tan \varepsilon}{\color{blue}{1} - \left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right)} \cdot \left(1 + \tan x \cdot \tan \varepsilon\right) - \tan x
\] |
Applied egg-rr99.4%
[Start]99.4 | \[ \frac{\tan x + \tan \varepsilon}{1 - \left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right)} \cdot \left(1 + \tan x \cdot \tan \varepsilon\right) - \tan x
\] |
|---|---|
expm1-log1p-u [=>]99.4 | \[ \frac{\tan x + \tan \varepsilon}{1 - \color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right)\right)\right)}} \cdot \left(1 + \tan x \cdot \tan \varepsilon\right) - \tan x
\] |
expm1-udef [=>]99.3 | \[ \frac{\tan x + \tan \varepsilon}{1 - \color{blue}{\left(e^{\mathsf{log1p}\left(\left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right)\right)} - 1\right)}} \cdot \left(1 + \tan x \cdot \tan \varepsilon\right) - \tan x
\] |
log1p-udef [=>]99.3 | \[ \frac{\tan x + \tan \varepsilon}{1 - \left(e^{\color{blue}{\log \left(1 + \left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right)\right)}} - 1\right)} \cdot \left(1 + \tan x \cdot \tan \varepsilon\right) - \tan x
\] |
add-exp-log [<=]99.4 | \[ \frac{\tan x + \tan \varepsilon}{1 - \left(\color{blue}{\left(1 + \left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right)\right)} - 1\right)} \cdot \left(1 + \tan x \cdot \tan \varepsilon\right) - \tan x
\] |
associate--l+ [=>]99.4 | \[ \frac{\tan x + \tan \varepsilon}{1 - \color{blue}{\left(1 + \left(\left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right) - 1\right)\right)}} \cdot \left(1 + \tan x \cdot \tan \varepsilon\right) - \tan x
\] |
pow2 [=>]99.4 | \[ \frac{\tan x + \tan \varepsilon}{1 - \left(1 + \left(\color{blue}{{\left(\tan x \cdot \tan \varepsilon\right)}^{2}} - 1\right)\right)} \cdot \left(1 + \tan x \cdot \tan \varepsilon\right) - \tan x
\] |
Simplified99.4%
[Start]99.4 | \[ \frac{\tan x + \tan \varepsilon}{1 - \left(1 + \left({\left(\tan x \cdot \tan \varepsilon\right)}^{2} - 1\right)\right)} \cdot \left(1 + \tan x \cdot \tan \varepsilon\right) - \tan x
\] |
|---|---|
associate-+r- [=>]99.4 | \[ \frac{\tan x + \tan \varepsilon}{1 - \color{blue}{\left(\left(1 + {\left(\tan x \cdot \tan \varepsilon\right)}^{2}\right) - 1\right)}} \cdot \left(1 + \tan x \cdot \tan \varepsilon\right) - \tan x
\] |
+-commutative [=>]99.4 | \[ \frac{\tan x + \tan \varepsilon}{1 - \left(\color{blue}{\left({\left(\tan x \cdot \tan \varepsilon\right)}^{2} + 1\right)} - 1\right)} \cdot \left(1 + \tan x \cdot \tan \varepsilon\right) - \tan x
\] |
associate--l+ [=>]99.4 | \[ \frac{\tan x + \tan \varepsilon}{1 - \color{blue}{\left({\left(\tan x \cdot \tan \varepsilon\right)}^{2} + \left(1 - 1\right)\right)}} \cdot \left(1 + \tan x \cdot \tan \varepsilon\right) - \tan x
\] |
metadata-eval [=>]99.4 | \[ \frac{\tan x + \tan \varepsilon}{1 - \left({\left(\tan x \cdot \tan \varepsilon\right)}^{2} + \color{blue}{0}\right)} \cdot \left(1 + \tan x \cdot \tan \varepsilon\right) - \tan x
\] |
+-rgt-identity [=>]99.4 | \[ \frac{\tan x + \tan \varepsilon}{1 - \color{blue}{{\left(\tan x \cdot \tan \varepsilon\right)}^{2}}} \cdot \left(1 + \tan x \cdot \tan \varepsilon\right) - \tan x
\] |
Final simplification99.6%
| Alternative 1 | |
|---|---|
| Accuracy | 99.4% |
| Cost | 52616 |
| Alternative 2 | |
|---|---|
| Accuracy | 99.4% |
| Cost | 46280 |
| Alternative 3 | |
|---|---|
| Accuracy | 99.4% |
| Cost | 46152 |
| Alternative 4 | |
|---|---|
| Accuracy | 99.4% |
| Cost | 33480 |
| Alternative 5 | |
|---|---|
| Accuracy | 99.4% |
| Cost | 33096 |
| Alternative 6 | |
|---|---|
| Accuracy | 99.4% |
| Cost | 32969 |
| Alternative 7 | |
|---|---|
| Accuracy | 77.9% |
| Cost | 26440 |
| Alternative 8 | |
|---|---|
| Accuracy | 77.9% |
| Cost | 26440 |
| Alternative 9 | |
|---|---|
| Accuracy | 58.5% |
| Cost | 6464 |
| Alternative 10 | |
|---|---|
| Accuracy | 31.6% |
| Cost | 64 |
herbie shell --seed 2023137
(FPCore (x eps)
:name "2tan (problem 3.3.2)"
:precision binary64
:herbie-target
(/ (sin eps) (* (cos x) (cos (+ x eps))))
(- (tan (+ x eps)) (tan x)))