| Alternative 1 | |
|---|---|
| Error | 0.9 |
| Cost | 7104 |
\[\frac{x + \sin x}{0.4 + \frac{\frac{-12}{x}}{x}}
\]
(FPCore (x) :precision binary64 (- (sin x) x))
(FPCore (x)
:precision binary64
(/
(+ x (sin x))
(+
(+
0.4
(fma -0.0002698412698412698 (pow x 4.0) (* -0.015714285714285715 (* x x))))
(/ -12.0 (* x x)))))double code(double x) {
return sin(x) - x;
}
double code(double x) {
return (x + sin(x)) / ((0.4 + fma(-0.0002698412698412698, pow(x, 4.0), (-0.015714285714285715 * (x * x)))) + (-12.0 / (x * x)));
}
function code(x) return Float64(sin(x) - x) end
function code(x) return Float64(Float64(x + sin(x)) / Float64(Float64(0.4 + fma(-0.0002698412698412698, (x ^ 4.0), Float64(-0.015714285714285715 * Float64(x * x)))) + Float64(-12.0 / Float64(x * x)))) end
code[x_] := N[(N[Sin[x], $MachinePrecision] - x), $MachinePrecision]
code[x_] := N[(N[(x + N[Sin[x], $MachinePrecision]), $MachinePrecision] / N[(N[(0.4 + N[(-0.0002698412698412698 * N[Power[x, 4.0], $MachinePrecision] + N[(-0.015714285714285715 * N[(x * x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(-12.0 / N[(x * x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\sin x - x
\frac{x + \sin x}{\left(0.4 + \mathsf{fma}\left(-0.0002698412698412698, {x}^{4}, -0.015714285714285715 \cdot \left(x \cdot x\right)\right)\right) + \frac{-12}{x \cdot x}}
| Original | 19.5 |
|---|---|
| Target | 0.1 |
| Herbie | 0.6 |
Initial program 19.5
Applied egg-rr19.5
Applied egg-rr20.2
Simplified20.2
[Start]20.2 | \[ {\left({\left(\sqrt{\sin x - x}\right)}^{0.3333333333333333} \cdot {\left(\sqrt{\sin x - x}\right)}^{0.3333333333333333}\right)}^{3}
\] |
|---|---|
unpow1/3 [=>]20.2 | \[ {\left(\color{blue}{\sqrt[3]{\sqrt{\sin x - x}}} \cdot {\left(\sqrt{\sin x - x}\right)}^{0.3333333333333333}\right)}^{3}
\] |
unpow1/3 [=>]20.2 | \[ {\left(\sqrt[3]{\sqrt{\sin x - x}} \cdot \color{blue}{\sqrt[3]{\sqrt{\sin x - x}}}\right)}^{3}
\] |
Applied egg-rr19.5
Taylor expanded in x around 0 0.7
Simplified0.6
[Start]0.7 | \[ \frac{x + \sin x}{\left(0.4 + \left(-0.0002698412698412698 \cdot {x}^{4} + -0.015714285714285715 \cdot {x}^{2}\right)\right) - 12 \cdot \frac{1}{{x}^{2}}}
\] |
|---|---|
fma-def [=>]0.7 | \[ \frac{x + \sin x}{\left(0.4 + \color{blue}{\mathsf{fma}\left(-0.0002698412698412698, {x}^{4}, -0.015714285714285715 \cdot {x}^{2}\right)}\right) - 12 \cdot \frac{1}{{x}^{2}}}
\] |
unpow2 [=>]0.7 | \[ \frac{x + \sin x}{\left(0.4 + \mathsf{fma}\left(-0.0002698412698412698, {x}^{4}, -0.015714285714285715 \cdot \color{blue}{\left(x \cdot x\right)}\right)\right) - 12 \cdot \frac{1}{{x}^{2}}}
\] |
associate-*r/ [=>]0.6 | \[ \frac{x + \sin x}{\left(0.4 + \mathsf{fma}\left(-0.0002698412698412698, {x}^{4}, -0.015714285714285715 \cdot \left(x \cdot x\right)\right)\right) - \color{blue}{\frac{12 \cdot 1}{{x}^{2}}}}
\] |
metadata-eval [=>]0.6 | \[ \frac{x + \sin x}{\left(0.4 + \mathsf{fma}\left(-0.0002698412698412698, {x}^{4}, -0.015714285714285715 \cdot \left(x \cdot x\right)\right)\right) - \frac{\color{blue}{12}}{{x}^{2}}}
\] |
unpow2 [=>]0.6 | \[ \frac{x + \sin x}{\left(0.4 + \mathsf{fma}\left(-0.0002698412698412698, {x}^{4}, -0.015714285714285715 \cdot \left(x \cdot x\right)\right)\right) - \frac{12}{\color{blue}{x \cdot x}}}
\] |
Final simplification0.6
| Alternative 1 | |
|---|---|
| Error | 0.9 |
| Cost | 7104 |
| Alternative 2 | |
|---|---|
| Error | 1.1 |
| Cost | 6976 |
| Alternative 3 | |
|---|---|
| Error | 1.1 |
| Cost | 6976 |
| Alternative 4 | |
|---|---|
| Error | 1.2 |
| Cost | 6656 |
| Alternative 5 | |
|---|---|
| Error | 1.2 |
| Cost | 448 |
| Alternative 6 | |
|---|---|
| Error | 59.8 |
| Cost | 128 |
herbie shell --seed 2023057
(FPCore (x)
:name "bug500 (missed optimization)"
:precision binary64
:pre (and (< -1000.0 x) (< x 1000.0))
:herbie-target
(if (< (fabs x) 0.07) (- (+ (- (/ (pow x 3.0) 6.0) (/ (pow x 5.0) 120.0)) (/ (pow x 7.0) 5040.0))) (- (sin x) x))
(- (sin x) x))