| Alternative 1 | |
|---|---|
| Accuracy | 99.5% |
| Cost | 78528 |
(FPCore (x eps) :precision binary64 (- (tan (+ x eps)) (tan x)))
(FPCore (x eps)
:precision binary64
(let* ((t_0 (/ (sin eps) (cos eps))) (t_1 (+ (tan x) (tan eps))))
(if (<= eps -1.28e+16)
(-
(/
(* t_1 (fma (tan x) (tan eps) 1.0))
(- 1.0 (* (tan eps) (* (tan eps) (pow (tan x) 2.0)))))
(tan x))
(if (<= eps 2.1e-11)
(+
(/
(* (tan x) (* (sin eps) (/ (tan x) (cos eps))))
(- 1.0 (* t_0 (tan x))))
(/ t_0 (- 1.0 (/ (* eps (sin x)) (cos x)))))
(fma (/ 1.0 (- 1.0 (* (tan x) (tan eps)))) 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 = sin(eps) / cos(eps);
double t_1 = tan(x) + tan(eps);
double tmp;
if (eps <= -1.28e+16) {
tmp = ((t_1 * fma(tan(x), tan(eps), 1.0)) / (1.0 - (tan(eps) * (tan(eps) * pow(tan(x), 2.0))))) - tan(x);
} else if (eps <= 2.1e-11) {
tmp = ((tan(x) * (sin(eps) * (tan(x) / cos(eps)))) / (1.0 - (t_0 * tan(x)))) + (t_0 / (1.0 - ((eps * sin(x)) / cos(x))));
} else {
tmp = fma((1.0 / (1.0 - (tan(x) * tan(eps)))), 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(sin(eps) / cos(eps)) t_1 = Float64(tan(x) + tan(eps)) tmp = 0.0 if (eps <= -1.28e+16) tmp = Float64(Float64(Float64(t_1 * fma(tan(x), tan(eps), 1.0)) / Float64(1.0 - Float64(tan(eps) * Float64(tan(eps) * (tan(x) ^ 2.0))))) - tan(x)); elseif (eps <= 2.1e-11) tmp = Float64(Float64(Float64(tan(x) * Float64(sin(eps) * Float64(tan(x) / cos(eps)))) / Float64(1.0 - Float64(t_0 * tan(x)))) + Float64(t_0 / Float64(1.0 - Float64(Float64(eps * sin(x)) / cos(x))))); else tmp = fma(Float64(1.0 / Float64(1.0 - Float64(tan(x) * tan(eps)))), t_1, Float64(-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[Sin[eps], $MachinePrecision] / N[Cos[eps], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[Tan[x], $MachinePrecision] + N[Tan[eps], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[eps, -1.28e+16], N[(N[(N[(t$95$1 * N[(N[Tan[x], $MachinePrecision] * N[Tan[eps], $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] / N[(1.0 - N[(N[Tan[eps], $MachinePrecision] * N[(N[Tan[eps], $MachinePrecision] * N[Power[N[Tan[x], $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[Tan[x], $MachinePrecision]), $MachinePrecision], If[LessEqual[eps, 2.1e-11], N[(N[(N[(N[Tan[x], $MachinePrecision] * N[(N[Sin[eps], $MachinePrecision] * N[(N[Tan[x], $MachinePrecision] / N[Cos[eps], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(1.0 - N[(t$95$0 * N[Tan[x], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(t$95$0 / N[(1.0 - N[(N[(eps * N[Sin[x], $MachinePrecision]), $MachinePrecision] / N[Cos[x], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(1.0 / N[(1.0 - N[(N[Tan[x], $MachinePrecision] * N[Tan[eps], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$1 + (-N[Tan[x], $MachinePrecision])), $MachinePrecision]]]]]
\tan \left(x + \varepsilon\right) - \tan x
\begin{array}{l}
t_0 := \frac{\sin \varepsilon}{\cos \varepsilon}\\
t_1 := \tan x + \tan \varepsilon\\
\mathbf{if}\;\varepsilon \leq -1.28 \cdot 10^{+16}:\\
\;\;\;\;\frac{t_1 \cdot \mathsf{fma}\left(\tan x, \tan \varepsilon, 1\right)}{1 - \tan \varepsilon \cdot \left(\tan \varepsilon \cdot {\tan x}^{2}\right)} - \tan x\\
\mathbf{elif}\;\varepsilon \leq 2.1 \cdot 10^{-11}:\\
\;\;\;\;\frac{\tan x \cdot \left(\sin \varepsilon \cdot \frac{\tan x}{\cos \varepsilon}\right)}{1 - t_0 \cdot \tan x} + \frac{t_0}{1 - \frac{\varepsilon \cdot \sin x}{\cos x}}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{1}{1 - \tan x \cdot \tan \varepsilon}, t_1, -\tan x\right)\\
\end{array}
| Original | 42.1% |
|---|---|
| Target | 76.2% |
| Herbie | 98.9% |
if eps < -1.28e16Initial program 54.3%
Applied egg-rr99.4%
[Start]54.3 | \[ \tan \left(x + \varepsilon\right) - \tan x
\] |
|---|---|
tan-sum [=>]99.5 | \[ \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
\] |
Simplified99.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
\] |
|---|---|
associate-*l/ [=>]99.4 | \[ \color{blue}{\frac{\left(\tan x + \tan \varepsilon\right) \cdot \left(1 + \tan x \cdot \tan \varepsilon\right)}{1 - \left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right)}} - \tan x
\] |
+-commutative [=>]99.4 | \[ \frac{\left(\tan x + \tan \varepsilon\right) \cdot \color{blue}{\left(\tan x \cdot \tan \varepsilon + 1\right)}}{1 - \left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right)} - \tan x
\] |
fma-def [=>]99.4 | \[ \frac{\left(\tan x + \tan \varepsilon\right) \cdot \color{blue}{\mathsf{fma}\left(\tan x, \tan \varepsilon, 1\right)}}{1 - \left(\tan x \cdot \tan \varepsilon\right) \cdot \left(\tan x \cdot \tan \varepsilon\right)} - \tan x
\] |
associate-*r* [=>]99.4 | \[ \frac{\left(\tan x + \tan \varepsilon\right) \cdot \mathsf{fma}\left(\tan x, \tan \varepsilon, 1\right)}{1 - \color{blue}{\left(\left(\tan x \cdot \tan \varepsilon\right) \cdot \tan x\right) \cdot \tan \varepsilon}} - \tan x
\] |
*-commutative [=>]99.4 | \[ \frac{\left(\tan x + \tan \varepsilon\right) \cdot \mathsf{fma}\left(\tan x, \tan \varepsilon, 1\right)}{1 - \color{blue}{\tan \varepsilon \cdot \left(\left(\tan x \cdot \tan \varepsilon\right) \cdot \tan x\right)}} - \tan x
\] |
*-commutative [=>]99.4 | \[ \frac{\left(\tan x + \tan \varepsilon\right) \cdot \mathsf{fma}\left(\tan x, \tan \varepsilon, 1\right)}{1 - \tan \varepsilon \cdot \left(\color{blue}{\left(\tan \varepsilon \cdot \tan x\right)} \cdot \tan x\right)} - \tan x
\] |
associate-*l* [=>]99.4 | \[ \frac{\left(\tan x + \tan \varepsilon\right) \cdot \mathsf{fma}\left(\tan x, \tan \varepsilon, 1\right)}{1 - \tan \varepsilon \cdot \color{blue}{\left(\tan \varepsilon \cdot \left(\tan x \cdot \tan x\right)\right)}} - \tan x
\] |
unpow2 [<=]99.4 | \[ \frac{\left(\tan x + \tan \varepsilon\right) \cdot \mathsf{fma}\left(\tan x, \tan \varepsilon, 1\right)}{1 - \tan \varepsilon \cdot \left(\tan \varepsilon \cdot \color{blue}{{\tan x}^{2}}\right)} - \tan x
\] |
if -1.28e16 < eps < 2.0999999999999999e-11Initial program 30.6%
Applied egg-rr32.1%
[Start]30.6 | \[ \tan \left(x + \varepsilon\right) - \tan x
\] |
|---|---|
tan-sum [=>]32.5 | \[ \color{blue}{\frac{\tan x + \tan \varepsilon}{1 - \tan x \cdot \tan \varepsilon}} - \tan x
\] |
add-sqr-sqrt [=>]32.1 | \[ \frac{\tan x + \tan \varepsilon}{\color{blue}{\sqrt{1 - \tan x \cdot \tan \varepsilon} \cdot \sqrt{1 - \tan x \cdot \tan \varepsilon}}} - \tan x
\] |
associate-/r* [=>]32.1 | \[ \color{blue}{\frac{\frac{\tan x + \tan \varepsilon}{\sqrt{1 - \tan x \cdot \tan \varepsilon}}}{\sqrt{1 - \tan x \cdot \tan \varepsilon}}} - \tan x
\] |
Taylor expanded in x around inf 32.5%
Simplified61.3%
[Start]32.5 | \[ \left(\frac{\sin \varepsilon}{\cos \varepsilon \cdot \left(1 - \frac{\sin x \cdot \sin \varepsilon}{\cos \varepsilon \cdot \cos x}\right)} + \frac{\sin x}{\cos x \cdot \left(1 - \frac{\sin x \cdot \sin \varepsilon}{\cos \varepsilon \cdot \cos x}\right)}\right) - \frac{\sin x}{\cos x}
\] |
|---|---|
associate--l+ [=>]61.3 | \[ \color{blue}{\frac{\sin \varepsilon}{\cos \varepsilon \cdot \left(1 - \frac{\sin x \cdot \sin \varepsilon}{\cos \varepsilon \cdot \cos x}\right)} + \left(\frac{\sin x}{\cos x \cdot \left(1 - \frac{\sin x \cdot \sin \varepsilon}{\cos \varepsilon \cdot \cos x}\right)} - \frac{\sin x}{\cos x}\right)}
\] |
associate-/r* [=>]61.3 | \[ \color{blue}{\frac{\frac{\sin \varepsilon}{\cos \varepsilon}}{1 - \frac{\sin x \cdot \sin \varepsilon}{\cos \varepsilon \cdot \cos x}}} + \left(\frac{\sin x}{\cos x \cdot \left(1 - \frac{\sin x \cdot \sin \varepsilon}{\cos \varepsilon \cdot \cos x}\right)} - \frac{\sin x}{\cos x}\right)
\] |
*-commutative [<=]61.3 | \[ \frac{\frac{\sin \varepsilon}{\cos \varepsilon}}{1 - \frac{\sin x \cdot \sin \varepsilon}{\color{blue}{\cos x \cdot \cos \varepsilon}}} + \left(\frac{\sin x}{\cos x \cdot \left(1 - \frac{\sin x \cdot \sin \varepsilon}{\cos \varepsilon \cdot \cos x}\right)} - \frac{\sin x}{\cos x}\right)
\] |
associate-/l* [=>]61.3 | \[ \frac{\frac{\sin \varepsilon}{\cos \varepsilon}}{1 - \color{blue}{\frac{\sin x}{\frac{\cos x \cdot \cos \varepsilon}{\sin \varepsilon}}}} + \left(\frac{\sin x}{\cos x \cdot \left(1 - \frac{\sin x \cdot \sin \varepsilon}{\cos \varepsilon \cdot \cos x}\right)} - \frac{\sin x}{\cos x}\right)
\] |
*-commutative [=>]61.3 | \[ \frac{\frac{\sin \varepsilon}{\cos \varepsilon}}{1 - \frac{\sin x}{\frac{\color{blue}{\cos \varepsilon \cdot \cos x}}{\sin \varepsilon}}} + \left(\frac{\sin x}{\cos x \cdot \left(1 - \frac{\sin x \cdot \sin \varepsilon}{\cos \varepsilon \cdot \cos x}\right)} - \frac{\sin x}{\cos x}\right)
\] |
associate-/l* [=>]61.3 | \[ \frac{\frac{\sin \varepsilon}{\cos \varepsilon}}{1 - \frac{\sin x}{\color{blue}{\frac{\cos \varepsilon}{\frac{\sin \varepsilon}{\cos x}}}}} + \left(\frac{\sin x}{\cos x \cdot \left(1 - \frac{\sin x \cdot \sin \varepsilon}{\cos \varepsilon \cdot \cos x}\right)} - \frac{\sin x}{\cos x}\right)
\] |
Applied egg-rr89.5%
[Start]61.3 | \[ \frac{\frac{\sin \varepsilon}{\cos \varepsilon}}{1 - \frac{\sin x}{\frac{\cos \varepsilon}{\frac{\sin \varepsilon}{\cos x}}}} + \left(\frac{\frac{\sin x}{\cos x}}{1 - \frac{\sin x}{\frac{\cos \varepsilon}{\frac{\sin \varepsilon}{\cos x}}}} - \frac{\sin x}{\cos x}\right)
\] |
|---|---|
clear-num [=>]55.2 | \[ \frac{\frac{\sin \varepsilon}{\cos \varepsilon}}{1 - \frac{\sin x}{\frac{\cos \varepsilon}{\frac{\sin \varepsilon}{\cos x}}}} + \left(\frac{\frac{\sin x}{\cos x}}{1 - \frac{\sin x}{\frac{\cos \varepsilon}{\frac{\sin \varepsilon}{\cos x}}}} - \color{blue}{\frac{1}{\frac{\cos x}{\sin x}}}\right)
\] |
frac-sub [=>]55.9 | \[ \frac{\frac{\sin \varepsilon}{\cos \varepsilon}}{1 - \frac{\sin x}{\frac{\cos \varepsilon}{\frac{\sin \varepsilon}{\cos x}}}} + \color{blue}{\frac{\frac{\sin x}{\cos x} \cdot \frac{\cos x}{\sin x} - \left(1 - \frac{\sin x}{\frac{\cos \varepsilon}{\frac{\sin \varepsilon}{\cos x}}}\right) \cdot 1}{\left(1 - \frac{\sin x}{\frac{\cos \varepsilon}{\frac{\sin \varepsilon}{\cos x}}}\right) \cdot \frac{\cos x}{\sin x}}}
\] |
Simplified99.7%
[Start]89.5 | \[ \frac{\frac{\sin \varepsilon}{\cos \varepsilon}}{1 - \frac{\sin x}{\frac{\cos \varepsilon}{\frac{\sin \varepsilon}{\cos x}}}} + \frac{\left(\tan x \cdot \frac{1}{\tan x} - 1\right) + \frac{1}{\frac{\cos \varepsilon}{\sin \varepsilon}} \cdot \tan x}{\frac{1 + \frac{-1}{\frac{\frac{\cos \varepsilon}{\sin \varepsilon}}{\tan x}}}{\tan x}}
\] |
|---|---|
associate-/r/ [=>]89.6 | \[ \frac{\frac{\sin \varepsilon}{\cos \varepsilon}}{1 - \frac{\sin x}{\frac{\cos \varepsilon}{\frac{\sin \varepsilon}{\cos x}}}} + \color{blue}{\frac{\left(\tan x \cdot \frac{1}{\tan x} - 1\right) + \frac{1}{\frac{\cos \varepsilon}{\sin \varepsilon}} \cdot \tan x}{1 + \frac{-1}{\frac{\frac{\cos \varepsilon}{\sin \varepsilon}}{\tan x}}} \cdot \tan x}
\] |
+-commutative [=>]89.6 | \[ \frac{\frac{\sin \varepsilon}{\cos \varepsilon}}{1 - \frac{\sin x}{\frac{\cos \varepsilon}{\frac{\sin \varepsilon}{\cos x}}}} + \frac{\color{blue}{\frac{1}{\frac{\cos \varepsilon}{\sin \varepsilon}} \cdot \tan x + \left(\tan x \cdot \frac{1}{\tan x} - 1\right)}}{1 + \frac{-1}{\frac{\frac{\cos \varepsilon}{\sin \varepsilon}}{\tan x}}} \cdot \tan x
\] |
rgt-mult-inverse [=>]99.7 | \[ \frac{\frac{\sin \varepsilon}{\cos \varepsilon}}{1 - \frac{\sin x}{\frac{\cos \varepsilon}{\frac{\sin \varepsilon}{\cos x}}}} + \frac{\frac{1}{\frac{\cos \varepsilon}{\sin \varepsilon}} \cdot \tan x + \left(\color{blue}{1} - 1\right)}{1 + \frac{-1}{\frac{\frac{\cos \varepsilon}{\sin \varepsilon}}{\tan x}}} \cdot \tan x
\] |
metadata-eval [=>]99.7 | \[ \frac{\frac{\sin \varepsilon}{\cos \varepsilon}}{1 - \frac{\sin x}{\frac{\cos \varepsilon}{\frac{\sin \varepsilon}{\cos x}}}} + \frac{\frac{1}{\frac{\cos \varepsilon}{\sin \varepsilon}} \cdot \tan x + \color{blue}{0}}{1 + \frac{-1}{\frac{\frac{\cos \varepsilon}{\sin \varepsilon}}{\tan x}}} \cdot \tan x
\] |
+-rgt-identity [=>]99.7 | \[ \frac{\frac{\sin \varepsilon}{\cos \varepsilon}}{1 - \frac{\sin x}{\frac{\cos \varepsilon}{\frac{\sin \varepsilon}{\cos x}}}} + \frac{\color{blue}{\frac{1}{\frac{\cos \varepsilon}{\sin \varepsilon}} \cdot \tan x}}{1 + \frac{-1}{\frac{\frac{\cos \varepsilon}{\sin \varepsilon}}{\tan x}}} \cdot \tan x
\] |
associate-*l/ [=>]99.7 | \[ \frac{\frac{\sin \varepsilon}{\cos \varepsilon}}{1 - \frac{\sin x}{\frac{\cos \varepsilon}{\frac{\sin \varepsilon}{\cos x}}}} + \color{blue}{\frac{\left(\frac{1}{\frac{\cos \varepsilon}{\sin \varepsilon}} \cdot \tan x\right) \cdot \tan x}{1 + \frac{-1}{\frac{\frac{\cos \varepsilon}{\sin \varepsilon}}{\tan x}}}}
\] |
Taylor expanded in eps around 0 98.6%
if 2.0999999999999999e-11 < eps Initial program 53.0%
Applied egg-rr99.1%
[Start]53.0 | \[ \tan \left(x + \varepsilon\right) - \tan x
\] |
|---|---|
tan-sum [=>]99.2 | \[ \color{blue}{\frac{\tan x + \tan \varepsilon}{1 - \tan x \cdot \tan \varepsilon}} - \tan x
\] |
div-inv [=>]99.1 | \[ \color{blue}{\left(\tan x + \tan \varepsilon\right) \cdot \frac{1}{1 - \tan x \cdot \tan \varepsilon}} - \tan x
\] |
*-commutative [=>]99.1 | \[ \color{blue}{\frac{1}{1 - \tan x \cdot \tan \varepsilon} \cdot \left(\tan x + \tan \varepsilon\right)} - \tan x
\] |
Applied egg-rr99.2%
[Start]99.1 | \[ \frac{1}{1 - \tan x \cdot \tan \varepsilon} \cdot \left(\tan x + \tan \varepsilon\right) - \tan x
\] |
|---|---|
fma-neg [=>]99.2 | \[ \color{blue}{\mathsf{fma}\left(\frac{1}{1 - \tan x \cdot \tan \varepsilon}, \tan x + \tan \varepsilon, -\tan x\right)}
\] |
Final simplification98.9%
| Alternative 1 | |
|---|---|
| Accuracy | 99.5% |
| Cost | 78528 |
| Alternative 2 | |
|---|---|
| Accuracy | 99.4% |
| Cost | 65284 |
| Alternative 3 | |
|---|---|
| Accuracy | 99.4% |
| Cost | 46088 |
| Alternative 4 | |
|---|---|
| Accuracy | 99.4% |
| Cost | 39433 |
| Alternative 5 | |
|---|---|
| Accuracy | 99.4% |
| Cost | 39172 |
| Alternative 6 | |
|---|---|
| Accuracy | 99.4% |
| Cost | 32969 |
| Alternative 7 | |
|---|---|
| Accuracy | 77.3% |
| Cost | 26441 |
| Alternative 8 | |
|---|---|
| Accuracy | 77.3% |
| Cost | 26441 |
| Alternative 9 | |
|---|---|
| Accuracy | 58.0% |
| Cost | 12992 |
| Alternative 10 | |
|---|---|
| Accuracy | 39.8% |
| Cost | 6720 |
| Alternative 11 | |
|---|---|
| Accuracy | 3.6% |
| Cost | 128 |
| Alternative 12 | |
|---|---|
| Accuracy | 4.2% |
| Cost | 64 |
herbie shell --seed 2023136
(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)))