| Alternative 1 | |
|---|---|
| Accuracy | 99.7% |
| Cost | 19712 |
\[\frac{{\left(e^{x}\right)}^{\log \left(\frac{x}{x + y}\right)}}{x}
\]

(FPCore (x y) :precision binary64 (/ (exp (* x (log (/ x (+ x y))))) x))
(FPCore (x y) :precision binary64 (/ (pow (exp x) (log (/ x (+ x y)))) x))
double code(double x, double y) {
return exp((x * log((x / (x + y))))) / x;
}
double code(double x, double y) {
return pow(exp(x), log((x / (x + y)))) / x;
}
real(8) function code(x, y)
real(8), intent (in) :: x
real(8), intent (in) :: y
code = exp((x * log((x / (x + y))))) / x
end function
real(8) function code(x, y)
real(8), intent (in) :: x
real(8), intent (in) :: y
code = (exp(x) ** log((x / (x + y)))) / x
end function
public static double code(double x, double y) {
return Math.exp((x * Math.log((x / (x + y))))) / x;
}
public static double code(double x, double y) {
return Math.pow(Math.exp(x), Math.log((x / (x + y)))) / x;
}
def code(x, y): return math.exp((x * math.log((x / (x + y))))) / x
def code(x, y): return math.pow(math.exp(x), math.log((x / (x + y)))) / x
function code(x, y) return Float64(exp(Float64(x * log(Float64(x / Float64(x + y))))) / x) end
function code(x, y) return Float64((exp(x) ^ log(Float64(x / Float64(x + y)))) / x) end
function tmp = code(x, y) tmp = exp((x * log((x / (x + y))))) / x; end
function tmp = code(x, y) tmp = (exp(x) ^ log((x / (x + y)))) / x; end
code[x_, y_] := N[(N[Exp[N[(x * N[Log[N[(x / N[(x + y), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / x), $MachinePrecision]
code[x_, y_] := N[(N[Power[N[Exp[x], $MachinePrecision], N[Log[N[(x / N[(x + y), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]], $MachinePrecision] / x), $MachinePrecision]
\frac{e^{x \cdot \log \left(\frac{x}{x + y}\right)}}{x}
\frac{{\left(e^{x}\right)}^{\log \left(\frac{x}{x + y}\right)}}{x}
Herbie found 2 alternatives:
| Alternative | Accuracy | Speedup |
|---|
Results
| Original | 83.6% |
|---|---|
| Target | 89.7% |
| Herbie | 99.7% |
Initial program 86.5%
Simplified99.9%
[Start]86.5% | \[ \frac{e^{x \cdot \log \left(\frac{x}{x + y}\right)}}{x}
\] |
|---|---|
exp-prod [=>]99.9% | \[ \frac{\color{blue}{{\left(e^{x}\right)}^{\log \left(\frac{x}{x + y}\right)}}}{x}
\] |
Final simplification99.9%
| Alternative 1 | |
|---|---|
| Accuracy | 99.7% |
| Cost | 19712 |
| Alternative 2 | |
|---|---|
| Accuracy | 97.1% |
| Cost | 192 |
herbie shell --seed 2023277
(FPCore (x y)
:name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, F"
:precision binary64
:herbie-target
(if (< y -3.7311844206647956e+94) (/ (exp (/ -1.0 y)) x) (if (< y 2.817959242728288e+37) (/ (pow (/ x (+ y x)) x) x) (if (< y 2.347387415166998e+178) (log (exp (/ (pow (/ x (+ y x)) x) x))) (/ (exp (/ -1.0 y)) x))))
(/ (exp (* x (log (/ x (+ x y))))) x))