Alternative 1 | |
---|---|
Error | 9.1 |
Cost | 584 |
\[\begin{array}{l}
\mathbf{if}\;y \leq -1400:\\
\;\;\;\;0.5 \cdot y\\
\mathbf{elif}\;y \leq 1.15 \cdot 10^{-14}:\\
\;\;\;\;0.5 \cdot \frac{x}{y}\\
\mathbf{else}:\\
\;\;\;\;0.5 \cdot y\\
\end{array}
\]
(FPCore (y x) :precision binary64 (- y (/ (- (* y y) x) (* 2.0 y))))
(FPCore (y x) :precision binary64 (* 0.5 (+ y (/ x y))))
double code(double y, double x) { return y - (((y * y) - x) / (2.0 * y)); }
double code(double y, double x) { return 0.5 * (y + (x / y)); }
real(8) function code(y, x) real(8), intent (in) :: y real(8), intent (in) :: x code = y - (((y * y) - x) / (2.0d0 * y)) end function
real(8) function code(y, x) real(8), intent (in) :: y real(8), intent (in) :: x code = 0.5d0 * (y + (x / y)) end function
public static double code(double y, double x) { return y - (((y * y) - x) / (2.0 * y)); }
public static double code(double y, double x) { return 0.5 * (y + (x / y)); }
def code(y, x): return y - (((y * y) - x) / (2.0 * y))
def code(y, x): return 0.5 * (y + (x / y))
function code(y, x) return Float64(y - Float64(Float64(Float64(y * y) - x) / Float64(2.0 * y))) end
function code(y, x) return Float64(0.5 * Float64(y + Float64(x / y))) end
function tmp = code(y, x) tmp = y - (((y * y) - x) / (2.0 * y)); end
function tmp = code(y, x) tmp = 0.5 * (y + (x / y)); end
code[y_, x_] := N[(y - N[(N[(N[(y * y), $MachinePrecision] - x), $MachinePrecision] / N[(2.0 * y), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
code[y_, x_] := N[(0.5 * N[(y + N[(x / y), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
y - \frac{y \cdot y - x}{2 \cdot y}
0.5 \cdot \left(y + \frac{x}{y}\right)
Results
Initial program 18.0
Simplified0.0
[Start]18.0 | \[ y - \frac{y \cdot y - x}{2 \cdot y}
\] |
---|---|
sub-neg [=>]18.0 | \[ \color{blue}{y + \left(-\frac{y \cdot y - x}{2 \cdot y}\right)}
\] |
+-commutative [=>]18.0 | \[ \color{blue}{\left(-\frac{y \cdot y - x}{2 \cdot y}\right) + y}
\] |
neg-sub0 [=>]18.0 | \[ \color{blue}{\left(0 - \frac{y \cdot y - x}{2 \cdot y}\right)} + y
\] |
associate-+l- [=>]18.0 | \[ \color{blue}{0 - \left(\frac{y \cdot y - x}{2 \cdot y} - y\right)}
\] |
sub0-neg [=>]18.0 | \[ \color{blue}{-\left(\frac{y \cdot y - x}{2 \cdot y} - y\right)}
\] |
div-sub [=>]18.0 | \[ -\left(\color{blue}{\left(\frac{y \cdot y}{2 \cdot y} - \frac{x}{2 \cdot y}\right)} - y\right)
\] |
sub-neg [=>]18.0 | \[ -\left(\color{blue}{\left(\frac{y \cdot y}{2 \cdot y} + \left(-\frac{x}{2 \cdot y}\right)\right)} - y\right)
\] |
+-commutative [=>]18.0 | \[ -\left(\color{blue}{\left(\left(-\frac{x}{2 \cdot y}\right) + \frac{y \cdot y}{2 \cdot y}\right)} - y\right)
\] |
times-frac [=>]0.0 | \[ -\left(\left(\left(-\frac{x}{2 \cdot y}\right) + \color{blue}{\frac{y}{2} \cdot \frac{y}{y}}\right) - y\right)
\] |
*-inverses [=>]0.0 | \[ -\left(\left(\left(-\frac{x}{2 \cdot y}\right) + \frac{y}{2} \cdot \color{blue}{1}\right) - y\right)
\] |
*-rgt-identity [=>]0.0 | \[ -\left(\left(\left(-\frac{x}{2 \cdot y}\right) + \color{blue}{\frac{y}{2}}\right) - y\right)
\] |
associate--l+ [=>]0.0 | \[ -\color{blue}{\left(\left(-\frac{x}{2 \cdot y}\right) + \left(\frac{y}{2} - y\right)\right)}
\] |
+-commutative [=>]0.0 | \[ -\color{blue}{\left(\left(\frac{y}{2} - y\right) + \left(-\frac{x}{2 \cdot y}\right)\right)}
\] |
Final simplification0.0
Alternative 1 | |
---|---|
Error | 9.1 |
Cost | 584 |
Alternative 2 | |
---|---|
Error | 27.2 |
Cost | 192 |
herbie shell --seed 1
(FPCore (y x)
:name "y - (y*y - x) / (2 y)"
:precision binary64
:pre (and (and (<= -1.79e+308 y) (<= y 1.79e+308)) (and (<= -1.79e+308 x) (<= x 1.79e+308)))
(- y (/ (- (* y y) x) (* 2.0 y))))