| Alternative 1 | |
|---|---|
| Accuracy | 57.4% |
| Cost | 20420 |
\[\begin{array}{l}
t_0 := \frac{x}{y \cdot 2}\\
\mathbf{if}\;\frac{\tan t_0}{\sin t_0} \leq 6.6:\\
\;\;\;\;\frac{1}{\cos \left(\frac{0.5}{\frac{y}{x}}\right)}\\
\mathbf{else}:\\
\;\;\;\;1\\
\end{array}
\]
(FPCore (x y) :precision binary64 (/ (tan (/ x (* y 2.0))) (sin (/ x (* y 2.0)))))
(FPCore (x y)
:precision binary64
(let* ((t_0 (/ x (* y 2.0))))
(if (<= t_0 -1e+106)
1.0
(if (<= t_0 1e+144)
(/
1.0
(cos (* (cbrt (* 0.5 (/ x y))) (cbrt (* (pow (/ y x) -2.0) 0.25)))))
1.0))))double code(double x, double y) {
return tan((x / (y * 2.0))) / sin((x / (y * 2.0)));
}
double code(double x, double y) {
double t_0 = x / (y * 2.0);
double tmp;
if (t_0 <= -1e+106) {
tmp = 1.0;
} else if (t_0 <= 1e+144) {
tmp = 1.0 / cos((cbrt((0.5 * (x / y))) * cbrt((pow((y / x), -2.0) * 0.25))));
} else {
tmp = 1.0;
}
return tmp;
}
public static double code(double x, double y) {
return Math.tan((x / (y * 2.0))) / Math.sin((x / (y * 2.0)));
}
public static double code(double x, double y) {
double t_0 = x / (y * 2.0);
double tmp;
if (t_0 <= -1e+106) {
tmp = 1.0;
} else if (t_0 <= 1e+144) {
tmp = 1.0 / Math.cos((Math.cbrt((0.5 * (x / y))) * Math.cbrt((Math.pow((y / x), -2.0) * 0.25))));
} else {
tmp = 1.0;
}
return tmp;
}
function code(x, y) return Float64(tan(Float64(x / Float64(y * 2.0))) / sin(Float64(x / Float64(y * 2.0)))) end
function code(x, y) t_0 = Float64(x / Float64(y * 2.0)) tmp = 0.0 if (t_0 <= -1e+106) tmp = 1.0; elseif (t_0 <= 1e+144) tmp = Float64(1.0 / cos(Float64(cbrt(Float64(0.5 * Float64(x / y))) * cbrt(Float64((Float64(y / x) ^ -2.0) * 0.25))))); else tmp = 1.0; end return tmp end
code[x_, y_] := N[(N[Tan[N[(x / N[(y * 2.0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / N[Sin[N[(x / N[(y * 2.0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
code[x_, y_] := Block[{t$95$0 = N[(x / N[(y * 2.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$0, -1e+106], 1.0, If[LessEqual[t$95$0, 1e+144], N[(1.0 / N[Cos[N[(N[Power[N[(0.5 * N[(x / y), $MachinePrecision]), $MachinePrecision], 1/3], $MachinePrecision] * N[Power[N[(N[Power[N[(y / x), $MachinePrecision], -2.0], $MachinePrecision] * 0.25), $MachinePrecision], 1/3], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], 1.0]]]
\frac{\tan \left(\frac{x}{y \cdot 2}\right)}{\sin \left(\frac{x}{y \cdot 2}\right)}
\begin{array}{l}
t_0 := \frac{x}{y \cdot 2}\\
\mathbf{if}\;t_0 \leq -1 \cdot 10^{+106}:\\
\;\;\;\;1\\
\mathbf{elif}\;t_0 \leq 10^{+144}:\\
\;\;\;\;\frac{1}{\cos \left(\sqrt[3]{0.5 \cdot \frac{x}{y}} \cdot \sqrt[3]{{\left(\frac{y}{x}\right)}^{-2} \cdot 0.25}\right)}\\
\mathbf{else}:\\
\;\;\;\;1\\
\end{array}
Results
| Original | 45.1% |
|---|---|
| Target | 55.4% |
| Herbie | 57.5% |
if (/.f64 x (*.f64 y 2)) < -1.00000000000000009e106 or 1.00000000000000002e144 < (/.f64 x (*.f64 y 2)) Initial program 6.9%
Taylor expanded in x around 0 11.9%
if -1.00000000000000009e106 < (/.f64 x (*.f64 y 2)) < 1.00000000000000002e144Initial program 62.4%
Taylor expanded in x around inf 78.1%
Applied egg-rr78.2%
[Start]78.1 | \[ \frac{1}{\cos \left(0.5 \cdot \frac{x}{y}\right)}
\] |
|---|---|
clear-num [=>]78.2 | \[ \frac{1}{\cos \left(0.5 \cdot \color{blue}{\frac{1}{\frac{y}{x}}}\right)}
\] |
un-div-inv [=>]78.2 | \[ \frac{1}{\cos \color{blue}{\left(\frac{0.5}{\frac{y}{x}}\right)}}
\] |
Applied egg-rr78.1%
[Start]78.2 | \[ \frac{1}{\cos \left(\frac{0.5}{\frac{y}{x}}\right)}
\] |
|---|---|
add-cube-cbrt [=>]78.1 | \[ \frac{1}{\cos \color{blue}{\left(\left(\sqrt[3]{\frac{0.5}{\frac{y}{x}}} \cdot \sqrt[3]{\frac{0.5}{\frac{y}{x}}}\right) \cdot \sqrt[3]{\frac{0.5}{\frac{y}{x}}}\right)}}
\] |
associate-*l* [=>]78.1 | \[ \frac{1}{\cos \color{blue}{\left(\sqrt[3]{\frac{0.5}{\frac{y}{x}}} \cdot \left(\sqrt[3]{\frac{0.5}{\frac{y}{x}}} \cdot \sqrt[3]{\frac{0.5}{\frac{y}{x}}}\right)\right)}}
\] |
div-inv [=>]78.1 | \[ \frac{1}{\cos \left(\sqrt[3]{\color{blue}{0.5 \cdot \frac{1}{\frac{y}{x}}}} \cdot \left(\sqrt[3]{\frac{0.5}{\frac{y}{x}}} \cdot \sqrt[3]{\frac{0.5}{\frac{y}{x}}}\right)\right)}
\] |
clear-num [<=]78.1 | \[ \frac{1}{\cos \left(\sqrt[3]{0.5 \cdot \color{blue}{\frac{x}{y}}} \cdot \left(\sqrt[3]{\frac{0.5}{\frac{y}{x}}} \cdot \sqrt[3]{\frac{0.5}{\frac{y}{x}}}\right)\right)}
\] |
cbrt-unprod [=>]78.1 | \[ \frac{1}{\cos \left(\sqrt[3]{0.5 \cdot \frac{x}{y}} \cdot \color{blue}{\sqrt[3]{\frac{0.5}{\frac{y}{x}} \cdot \frac{0.5}{\frac{y}{x}}}}\right)}
\] |
div-inv [=>]78.1 | \[ \frac{1}{\cos \left(\sqrt[3]{0.5 \cdot \frac{x}{y}} \cdot \sqrt[3]{\color{blue}{\left(0.5 \cdot \frac{1}{\frac{y}{x}}\right)} \cdot \frac{0.5}{\frac{y}{x}}}\right)}
\] |
clear-num [<=]78.1 | \[ \frac{1}{\cos \left(\sqrt[3]{0.5 \cdot \frac{x}{y}} \cdot \sqrt[3]{\left(0.5 \cdot \color{blue}{\frac{x}{y}}\right) \cdot \frac{0.5}{\frac{y}{x}}}\right)}
\] |
div-inv [=>]78.1 | \[ \frac{1}{\cos \left(\sqrt[3]{0.5 \cdot \frac{x}{y}} \cdot \sqrt[3]{\left(0.5 \cdot \frac{x}{y}\right) \cdot \color{blue}{\left(0.5 \cdot \frac{1}{\frac{y}{x}}\right)}}\right)}
\] |
clear-num [<=]78.1 | \[ \frac{1}{\cos \left(\sqrt[3]{0.5 \cdot \frac{x}{y}} \cdot \sqrt[3]{\left(0.5 \cdot \frac{x}{y}\right) \cdot \left(0.5 \cdot \color{blue}{\frac{x}{y}}\right)}\right)}
\] |
swap-sqr [=>]78.1 | \[ \frac{1}{\cos \left(\sqrt[3]{0.5 \cdot \frac{x}{y}} \cdot \sqrt[3]{\color{blue}{\left(0.5 \cdot 0.5\right) \cdot \left(\frac{x}{y} \cdot \frac{x}{y}\right)}}\right)}
\] |
metadata-eval [=>]78.1 | \[ \frac{1}{\cos \left(\sqrt[3]{0.5 \cdot \frac{x}{y}} \cdot \sqrt[3]{\color{blue}{0.25} \cdot \left(\frac{x}{y} \cdot \frac{x}{y}\right)}\right)}
\] |
clear-num [=>]78.1 | \[ \frac{1}{\cos \left(\sqrt[3]{0.5 \cdot \frac{x}{y}} \cdot \sqrt[3]{0.25 \cdot \left(\color{blue}{\frac{1}{\frac{y}{x}}} \cdot \frac{x}{y}\right)}\right)}
\] |
clear-num [=>]78.1 | \[ \frac{1}{\cos \left(\sqrt[3]{0.5 \cdot \frac{x}{y}} \cdot \sqrt[3]{0.25 \cdot \left(\frac{1}{\frac{y}{x}} \cdot \color{blue}{\frac{1}{\frac{y}{x}}}\right)}\right)}
\] |
inv-pow [=>]78.1 | \[ \frac{1}{\cos \left(\sqrt[3]{0.5 \cdot \frac{x}{y}} \cdot \sqrt[3]{0.25 \cdot \left(\color{blue}{{\left(\frac{y}{x}\right)}^{-1}} \cdot \frac{1}{\frac{y}{x}}\right)}\right)}
\] |
inv-pow [=>]78.1 | \[ \frac{1}{\cos \left(\sqrt[3]{0.5 \cdot \frac{x}{y}} \cdot \sqrt[3]{0.25 \cdot \left({\left(\frac{y}{x}\right)}^{-1} \cdot \color{blue}{{\left(\frac{y}{x}\right)}^{-1}}\right)}\right)}
\] |
pow-prod-up [=>]78.1 | \[ \frac{1}{\cos \left(\sqrt[3]{0.5 \cdot \frac{x}{y}} \cdot \sqrt[3]{0.25 \cdot \color{blue}{{\left(\frac{y}{x}\right)}^{\left(-1 + -1\right)}}}\right)}
\] |
metadata-eval [=>]78.1 | \[ \frac{1}{\cos \left(\sqrt[3]{0.5 \cdot \frac{x}{y}} \cdot \sqrt[3]{0.25 \cdot {\left(\frac{y}{x}\right)}^{\color{blue}{-2}}}\right)}
\] |
Simplified78.1%
[Start]78.1 | \[ \frac{1}{\cos \left(\sqrt[3]{0.5 \cdot \frac{x}{y}} \cdot \sqrt[3]{0.25 \cdot {\left(\frac{y}{x}\right)}^{-2}}\right)}
\] |
|---|---|
*-commutative [=>]78.1 | \[ \frac{1}{\cos \left(\sqrt[3]{0.5 \cdot \frac{x}{y}} \cdot \sqrt[3]{\color{blue}{{\left(\frac{y}{x}\right)}^{-2} \cdot 0.25}}\right)}
\] |
Final simplification57.5%
| Alternative 1 | |
|---|---|
| Accuracy | 57.4% |
| Cost | 20420 |
| Alternative 2 | |
|---|---|
| Accuracy | 55.9% |
| Cost | 64 |
herbie shell --seed 2023151
(FPCore (x y)
:name "Diagrams.TwoD.Layout.CirclePacking:approxRadius from diagrams-contrib-1.3.0.5"
:precision binary64
:herbie-target
(if (< y -1.2303690911306994e+114) 1.0 (if (< y -9.102852406811914e-222) (/ (sin (/ x (* y 2.0))) (* (sin (/ x (* y 2.0))) (log (exp (cos (/ x (* y 2.0))))))) 1.0))
(/ (tan (/ x (* y 2.0))) (sin (/ x (* y 2.0)))))