\[\left(0 \leq x \land x \leq 1000000000\right) \land \left(-1 \leq \varepsilon \land \varepsilon \leq 1\right)\]
\[x - \sqrt{x \cdot x - \varepsilon}
\]
↓
\[\begin{array}{l}
\mathbf{if}\;x - \sqrt{x \cdot x - \varepsilon} \leq -2 \cdot 10^{-150}:\\
\;\;\;\;\frac{\varepsilon}{x + \mathsf{hypot}\left(x, \sqrt{-\varepsilon}\right)}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(0.125, \frac{\varepsilon}{x \cdot x} \cdot \frac{\varepsilon}{x}, \frac{\varepsilon}{x} \cdot 0.5\right)\\
\end{array}
\]
(FPCore (x eps) :precision binary64 (- x (sqrt (- (* x x) eps))))
↓
(FPCore (x eps)
:precision binary64
(if (<= (- x (sqrt (- (* x x) eps))) -2e-150)
(/ eps (+ x (hypot x (sqrt (- eps)))))
(fma 0.125 (* (/ eps (* x x)) (/ eps x)) (* (/ eps x) 0.5))))
double code(double x, double eps) {
return x - sqrt(((x * x) - eps));
}
↓
double code(double x, double eps) {
double tmp;
if ((x - sqrt(((x * x) - eps))) <= -2e-150) {
tmp = eps / (x + hypot(x, sqrt(-eps)));
} else {
tmp = fma(0.125, ((eps / (x * x)) * (eps / x)), ((eps / x) * 0.5));
}
return tmp;
}
function code(x, eps)
return Float64(x - sqrt(Float64(Float64(x * x) - eps)))
end
↓
function code(x, eps)
tmp = 0.0
if (Float64(x - sqrt(Float64(Float64(x * x) - eps))) <= -2e-150)
tmp = Float64(eps / Float64(x + hypot(x, sqrt(Float64(-eps)))));
else
tmp = fma(0.125, Float64(Float64(eps / Float64(x * x)) * Float64(eps / x)), Float64(Float64(eps / x) * 0.5));
end
return tmp
end
code[x_, eps_] := N[(x - N[Sqrt[N[(N[(x * x), $MachinePrecision] - eps), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
↓
code[x_, eps_] := If[LessEqual[N[(x - N[Sqrt[N[(N[(x * x), $MachinePrecision] - eps), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], -2e-150], N[(eps / N[(x + N[Sqrt[x ^ 2 + N[Sqrt[(-eps)], $MachinePrecision] ^ 2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(0.125 * N[(N[(eps / N[(x * x), $MachinePrecision]), $MachinePrecision] * N[(eps / x), $MachinePrecision]), $MachinePrecision] + N[(N[(eps / x), $MachinePrecision] * 0.5), $MachinePrecision]), $MachinePrecision]]
x - \sqrt{x \cdot x - \varepsilon}
↓
\begin{array}{l}
\mathbf{if}\;x - \sqrt{x \cdot x - \varepsilon} \leq -2 \cdot 10^{-150}:\\
\;\;\;\;\frac{\varepsilon}{x + \mathsf{hypot}\left(x, \sqrt{-\varepsilon}\right)}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(0.125, \frac{\varepsilon}{x \cdot x} \cdot \frac{\varepsilon}{x}, \frac{\varepsilon}{x} \cdot 0.5\right)\\
\end{array}
Alternatives
| Alternative 1 |
|---|
| Accuracy | 97.8% |
|---|
| Cost | 14276 |
|---|
\[\begin{array}{l}
t_0 := x - \sqrt{x \cdot x - \varepsilon}\\
\mathbf{if}\;t_0 \leq -2 \cdot 10^{-150}:\\
\;\;\;\;t_0\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(0.125, \frac{\varepsilon}{x \cdot x} \cdot \frac{\varepsilon}{x}, \frac{\varepsilon}{x} \cdot 0.5\right)\\
\end{array}
\]
| Alternative 2 |
|---|
| Accuracy | 97.9% |
|---|
| Cost | 13764 |
|---|
\[\begin{array}{l}
t_0 := x - \sqrt{x \cdot x - \varepsilon}\\
\mathbf{if}\;t_0 \leq -2 \cdot 10^{-150}:\\
\;\;\;\;t_0\\
\mathbf{else}:\\
\;\;\;\;\frac{\varepsilon}{x + \left(x + \frac{\varepsilon}{x} \cdot -0.5\right)}\\
\end{array}
\]
| Alternative 3 |
|---|
| Accuracy | 77.4% |
|---|
| Cost | 7053 |
|---|
\[\begin{array}{l}
\mathbf{if}\;\varepsilon \leq -9.2 \cdot 10^{-270} \lor \neg \left(\varepsilon \leq -5.5 \cdot 10^{-282}\right) \land \varepsilon \leq -9 \cdot 10^{-300}:\\
\;\;\;\;x - \sqrt{-\varepsilon}\\
\mathbf{else}:\\
\;\;\;\;\frac{\varepsilon}{x + \left(x + \frac{\varepsilon}{x} \cdot -0.5\right)}\\
\end{array}
\]
| Alternative 4 |
|---|
| Accuracy | 46.1% |
|---|
| Cost | 704 |
|---|
\[\frac{\varepsilon}{x + \left(x + \frac{\varepsilon}{x} \cdot -0.5\right)}
\]
| Alternative 5 |
|---|
| Accuracy | 46.1% |
|---|
| Cost | 704 |
|---|
\[\frac{\varepsilon}{\frac{\varepsilon}{x} \cdot -0.5 + x \cdot 2}
\]
| Alternative 6 |
|---|
| Accuracy | 45.2% |
|---|
| Cost | 320 |
|---|
\[\frac{\varepsilon}{x} \cdot 0.5
\]
| Alternative 7 |
|---|
| Accuracy | 5.4% |
|---|
| Cost | 192 |
|---|
\[x \cdot -2
\]
| Alternative 8 |
|---|
| Accuracy | 3.5% |
|---|
| Cost | 64 |
|---|
\[x
\]