(FPCore (x y) :precision binary64 (- (+ x y) x))
(FPCore (x y) :precision binary64 y)
double code(double x, double y) {
return (x + y) - x;
}
double code(double x, double y) {
return y;
}
real(8) function code(x, y)
real(8), intent (in) :: x
real(8), intent (in) :: y
code = (x + y) - x
end function
real(8) function code(x, y)
real(8), intent (in) :: x
real(8), intent (in) :: y
code = y
end function
public static double code(double x, double y) {
return (x + y) - x;
}
public static double code(double x, double y) {
return y;
}
def code(x, y): return (x + y) - x
def code(x, y): return y
function code(x, y) return Float64(Float64(x + y) - x) end
function code(x, y) return y end
function tmp = code(x, y) tmp = (x + y) - x; end
function tmp = code(x, y) tmp = y; end
code[x_, y_] := N[(N[(x + y), $MachinePrecision] - x), $MachinePrecision]
code[x_, y_] := y
\left(x + y\right) - x
y
Results
| Original | 53.3% |
|---|---|
| Target | 100.0% |
| Herbie | 100.0% |
Initial program 53.5%
Simplified100.0%
[Start]53.5 | \[ \left(x + y\right) - x
\] |
|---|---|
+-commutative [=>]53.5 | \[ \color{blue}{\left(y + x\right)} - x
\] |
associate--l+ [=>]100.0 | \[ \color{blue}{y + \left(x - x\right)}
\] |
+-inverses [=>]100.0 | \[ y + \color{blue}{0}
\] |
+-rgt-identity [=>]100.0 | \[ \color{blue}{y}
\] |
Final simplification100.0%
herbie shell --seed 2023160
(FPCore (x y)
:name "Graphics.Rendering.Chart.Plot.Pie:renderPie from Chart-1.5.3"
:precision binary64
:herbie-target
(- y 0.0)
(- (+ x y) x))