Average Error: 0.0 → 0.1
Time: 7.6s
Precision: binary64
Cost: 704
\[x - \frac{y}{1 + \frac{x \cdot y}{2}} \]
\[x + \frac{-1}{\frac{1}{y} + x \cdot 0.5} \]
(FPCore (x y) :precision binary64 (- x (/ y (+ 1.0 (/ (* x y) 2.0)))))
(FPCore (x y) :precision binary64 (+ x (/ -1.0 (+ (/ 1.0 y) (* x 0.5)))))
double code(double x, double y) {
	return x - (y / (1.0 + ((x * y) / 2.0)));
}
double code(double x, double y) {
	return x + (-1.0 / ((1.0 / y) + (x * 0.5)));
}
real(8) function code(x, y)
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    code = x - (y / (1.0d0 + ((x * y) / 2.0d0)))
end function
real(8) function code(x, y)
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    code = x + ((-1.0d0) / ((1.0d0 / y) + (x * 0.5d0)))
end function
public static double code(double x, double y) {
	return x - (y / (1.0 + ((x * y) / 2.0)));
}
public static double code(double x, double y) {
	return x + (-1.0 / ((1.0 / y) + (x * 0.5)));
}
def code(x, y):
	return x - (y / (1.0 + ((x * y) / 2.0)))
def code(x, y):
	return x + (-1.0 / ((1.0 / y) + (x * 0.5)))
function code(x, y)
	return Float64(x - Float64(y / Float64(1.0 + Float64(Float64(x * y) / 2.0))))
end
function code(x, y)
	return Float64(x + Float64(-1.0 / Float64(Float64(1.0 / y) + Float64(x * 0.5))))
end
function tmp = code(x, y)
	tmp = x - (y / (1.0 + ((x * y) / 2.0)));
end
function tmp = code(x, y)
	tmp = x + (-1.0 / ((1.0 / y) + (x * 0.5)));
end
code[x_, y_] := N[(x - N[(y / N[(1.0 + N[(N[(x * y), $MachinePrecision] / 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
code[x_, y_] := N[(x + N[(-1.0 / N[(N[(1.0 / y), $MachinePrecision] + N[(x * 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
x - \frac{y}{1 + \frac{x \cdot y}{2}}
x + \frac{-1}{\frac{1}{y} + x \cdot 0.5}

Error

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 0.0

    \[x - \frac{y}{1 + \frac{x \cdot y}{2}} \]
  2. Simplified0.1

    \[\leadsto \color{blue}{x + \frac{-1}{\mathsf{fma}\left(x, 0.5, \frac{1}{y}\right)}} \]
    Proof

    [Start]0.0

    \[ x - \frac{y}{1 + \frac{x \cdot y}{2}} \]

    sub-neg [=>]0.0

    \[ \color{blue}{x + \left(-\frac{y}{1 + \frac{x \cdot y}{2}}\right)} \]

    neg-mul-1 [=>]0.0

    \[ x + \color{blue}{-1 \cdot \frac{y}{1 + \frac{x \cdot y}{2}}} \]

    associate-*r/ [=>]0.0

    \[ x + \color{blue}{\frac{-1 \cdot y}{1 + \frac{x \cdot y}{2}}} \]

    associate-/l* [=>]0.1

    \[ x + \color{blue}{\frac{-1}{\frac{1 + \frac{x \cdot y}{2}}{y}}} \]

    associate-/l* [=>]0.1

    \[ x + \frac{-1}{\frac{1 + \color{blue}{\frac{x}{\frac{2}{y}}}}{y}} \]

    remove-double-neg [<=]0.1

    \[ x + \frac{-1}{\frac{1 + \frac{\color{blue}{-\left(-x\right)}}{\frac{2}{y}}}{y}} \]

    distribute-frac-neg [=>]0.1

    \[ x + \frac{-1}{\frac{1 + \color{blue}{\left(-\frac{-x}{\frac{2}{y}}\right)}}{y}} \]

    unsub-neg [=>]0.1

    \[ x + \frac{-1}{\frac{\color{blue}{1 - \frac{-x}{\frac{2}{y}}}}{y}} \]

    div-sub [=>]0.1

    \[ x + \frac{-1}{\color{blue}{\frac{1}{y} - \frac{\frac{-x}{\frac{2}{y}}}{y}}} \]

    associate-/r/ [=>]0.1

    \[ x + \frac{-1}{\frac{1}{y} - \frac{\color{blue}{\frac{-x}{2} \cdot y}}{y}} \]

    associate-/l* [=>]0.1

    \[ x + \frac{-1}{\frac{1}{y} - \color{blue}{\frac{\frac{-x}{2}}{\frac{y}{y}}}} \]

    remove-double-neg [<=]0.1

    \[ x + \frac{-1}{\frac{1}{y} - \frac{\frac{-x}{2}}{\frac{y}{\color{blue}{-\left(-y\right)}}}} \]

    mul-1-neg [<=]0.1

    \[ x + \frac{-1}{\frac{1}{y} - \frac{\frac{-x}{2}}{\frac{y}{\color{blue}{-1 \cdot \left(-y\right)}}}} \]

    associate-/r* [=>]0.1

    \[ x + \frac{-1}{\frac{1}{y} - \frac{\frac{-x}{2}}{\color{blue}{\frac{\frac{y}{-1}}{-y}}}} \]

    associate-/l* [<=]0.1

    \[ x + \frac{-1}{\frac{1}{y} - \color{blue}{\frac{\frac{-x}{2} \cdot \left(-y\right)}{\frac{y}{-1}}}} \]

    metadata-eval [<=]0.1

    \[ x + \frac{-1}{\frac{1}{y} - \frac{\frac{-x}{2} \cdot \left(-y\right)}{\frac{y}{\color{blue}{\frac{1}{-1}}}}} \]

    associate-/l* [<=]0.1

    \[ x + \frac{-1}{\frac{1}{y} - \frac{\frac{-x}{2} \cdot \left(-y\right)}{\color{blue}{\frac{y \cdot -1}{1}}}} \]

    *-commutative [<=]0.1

    \[ x + \frac{-1}{\frac{1}{y} - \frac{\frac{-x}{2} \cdot \left(-y\right)}{\frac{\color{blue}{-1 \cdot y}}{1}}} \]

    neg-mul-1 [<=]0.1

    \[ x + \frac{-1}{\frac{1}{y} - \frac{\frac{-x}{2} \cdot \left(-y\right)}{\frac{\color{blue}{-y}}{1}}} \]

    /-rgt-identity [=>]0.1

    \[ x + \frac{-1}{\frac{1}{y} - \frac{\frac{-x}{2} \cdot \left(-y\right)}{\color{blue}{-y}}} \]

    associate-/l* [=>]0.1

    \[ x + \frac{-1}{\frac{1}{y} - \color{blue}{\frac{\frac{-x}{2}}{\frac{-y}{-y}}}} \]

    *-inverses [=>]0.1

    \[ x + \frac{-1}{\frac{1}{y} - \frac{\frac{-x}{2}}{\color{blue}{1}}} \]

    /-rgt-identity [=>]0.1

    \[ x + \frac{-1}{\frac{1}{y} - \color{blue}{\frac{-x}{2}}} \]
  3. Applied egg-rr0.1

    \[\leadsto x + \frac{-1}{\color{blue}{\frac{1}{y} + x \cdot 0.5}} \]
  4. Final simplification0.1

    \[\leadsto x + \frac{-1}{\frac{1}{y} + x \cdot 0.5} \]

Alternatives

Alternative 1
Error7.4
Cost850
\[\begin{array}{l} \mathbf{if}\;y \leq -6.2 \cdot 10^{+174} \lor \neg \left(y \leq -1.55 \cdot 10^{+164} \lor \neg \left(y \leq -1 \cdot 10^{+64}\right) \land y \leq 1.76 \cdot 10^{+204}\right):\\ \;\;\;\;x + \frac{-2}{x}\\ \mathbf{else}:\\ \;\;\;\;x - y\\ \end{array} \]
Alternative 2
Error16.3
Cost192
\[x - y \]

Error

Reproduce

herbie shell --seed 2023016 
(FPCore (x y)
  :name "Data.Number.Erf:$cinvnormcdf from erf-2.0.0.0, B"
  :precision binary64
  (- x (/ y (+ 1.0 (/ (* x y) 2.0)))))