
(FPCore (x0 x1) :precision binary64 (- (/ x0 (- 1.0 x1)) x0))
double code(double x0, double x1) {
return (x0 / (1.0 - x1)) - x0;
}
real(8) function code(x0, x1)
real(8), intent (in) :: x0
real(8), intent (in) :: x1
code = (x0 / (1.0d0 - x1)) - x0
end function
public static double code(double x0, double x1) {
return (x0 / (1.0 - x1)) - x0;
}
def code(x0, x1): return (x0 / (1.0 - x1)) - x0
function code(x0, x1) return Float64(Float64(x0 / Float64(1.0 - x1)) - x0) end
function tmp = code(x0, x1) tmp = (x0 / (1.0 - x1)) - x0; end
code[x0_, x1_] := N[(N[(x0 / N[(1.0 - x1), $MachinePrecision]), $MachinePrecision] - x0), $MachinePrecision]
\begin{array}{l}
\\
\frac{x0}{1 - x1} - x0
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 1 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (x0 x1) :precision binary64 (- (/ x0 (- 1.0 x1)) x0))
double code(double x0, double x1) {
return (x0 / (1.0 - x1)) - x0;
}
real(8) function code(x0, x1)
real(8), intent (in) :: x0
real(8), intent (in) :: x1
code = (x0 / (1.0d0 - x1)) - x0
end function
public static double code(double x0, double x1) {
return (x0 / (1.0 - x1)) - x0;
}
def code(x0, x1): return (x0 / (1.0 - x1)) - x0
function code(x0, x1) return Float64(Float64(x0 / Float64(1.0 - x1)) - x0) end
function tmp = code(x0, x1) tmp = (x0 / (1.0 - x1)) - x0; end
code[x0_, x1_] := N[(N[(x0 / N[(1.0 - x1), $MachinePrecision]), $MachinePrecision] - x0), $MachinePrecision]
\begin{array}{l}
\\
\frac{x0}{1 - x1} - x0
\end{array}
(FPCore (x0 x1) :precision binary64 (- (/ x0 (- 1.0 x1)) x0))
double code(double x0, double x1) {
return (x0 / (1.0 - x1)) - x0;
}
real(8) function code(x0, x1)
real(8), intent (in) :: x0
real(8), intent (in) :: x1
code = (x0 / (1.0d0 - x1)) - x0
end function
public static double code(double x0, double x1) {
return (x0 / (1.0 - x1)) - x0;
}
def code(x0, x1): return (x0 / (1.0 - x1)) - x0
function code(x0, x1) return Float64(Float64(x0 / Float64(1.0 - x1)) - x0) end
function tmp = code(x0, x1) tmp = (x0 / (1.0 - x1)) - x0; end
code[x0_, x1_] := N[(N[(x0 / N[(1.0 - x1), $MachinePrecision]), $MachinePrecision] - x0), $MachinePrecision]
\begin{array}{l}
\\
\frac{x0}{1 - x1} - x0
\end{array}
Initial program 87.7%
(FPCore (x0 x1) :precision binary64 (/ (* x0 x1) (- 1.0 x1)))
double code(double x0, double x1) {
return (x0 * x1) / (1.0 - x1);
}
real(8) function code(x0, x1)
real(8), intent (in) :: x0
real(8), intent (in) :: x1
code = (x0 * x1) / (1.0d0 - x1)
end function
public static double code(double x0, double x1) {
return (x0 * x1) / (1.0 - x1);
}
def code(x0, x1): return (x0 * x1) / (1.0 - x1)
function code(x0, x1) return Float64(Float64(x0 * x1) / Float64(1.0 - x1)) end
function tmp = code(x0, x1) tmp = (x0 * x1) / (1.0 - x1); end
code[x0_, x1_] := N[(N[(x0 * x1), $MachinePrecision] / N[(1.0 - x1), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{x0 \cdot x1}{1 - x1}
\end{array}
herbie shell --seed 2024180 -o setup:simplify
(FPCore (x0 x1)
:name "(- (/ x0 (- 1 x1)) x0)"
:precision binary64
:pre (or (and (== x0 1.855) (== x1 0.000209)) (and (== x0 2.985) (== x1 0.0186)))
:alt
(! :herbie-platform default (/ (* x0 x1) (- 1 x1)))
(- (/ x0 (- 1.0 x1)) x0))