Alternative 1 | |
---|---|
Error | 0.1 |
Cost | 7360 |
\[x \cdot 1.875 - \left(x \cdot x\right) \cdot \left(x \cdot \mathsf{fma}\left(x, x \cdot -0.375, 1.25\right)\right)
\]
(FPCore (x) :precision binary64 (* x (- (/ 15.0 8.0) (* (* (sqrt (/ 3.0 8.0)) (pow x 2.0)) (- (sqrt (/ 25.0 6.0)) (* (sqrt (/ 3.0 8.0)) (pow x 2.0)))))))
(FPCore (x) :precision binary64 (- (* x 1.875) (* (* x x) (+ (* (pow x 3.0) -0.375) (* x 1.25)))))
double code(double x) { return x * ((15.0 / 8.0) - ((sqrt((3.0 / 8.0)) * pow(x, 2.0)) * (sqrt((25.0 / 6.0)) - (sqrt((3.0 / 8.0)) * pow(x, 2.0))))); }
double code(double x) { return (x * 1.875) - ((x * x) * ((pow(x, 3.0) * -0.375) + (x * 1.25))); }
real(8) function code(x) real(8), intent (in) :: x code = x * ((15.0d0 / 8.0d0) - ((sqrt((3.0d0 / 8.0d0)) * (x ** 2.0d0)) * (sqrt((25.0d0 / 6.0d0)) - (sqrt((3.0d0 / 8.0d0)) * (x ** 2.0d0))))) end function
real(8) function code(x) real(8), intent (in) :: x code = (x * 1.875d0) - ((x * x) * (((x ** 3.0d0) * (-0.375d0)) + (x * 1.25d0))) end function
public static double code(double x) { return x * ((15.0 / 8.0) - ((Math.sqrt((3.0 / 8.0)) * Math.pow(x, 2.0)) * (Math.sqrt((25.0 / 6.0)) - (Math.sqrt((3.0 / 8.0)) * Math.pow(x, 2.0))))); }
public static double code(double x) { return (x * 1.875) - ((x * x) * ((Math.pow(x, 3.0) * -0.375) + (x * 1.25))); }
def code(x): return x * ((15.0 / 8.0) - ((math.sqrt((3.0 / 8.0)) * math.pow(x, 2.0)) * (math.sqrt((25.0 / 6.0)) - (math.sqrt((3.0 / 8.0)) * math.pow(x, 2.0)))))
def code(x): return (x * 1.875) - ((x * x) * ((math.pow(x, 3.0) * -0.375) + (x * 1.25)))
function code(x) return Float64(x * Float64(Float64(15.0 / 8.0) - Float64(Float64(sqrt(Float64(3.0 / 8.0)) * (x ^ 2.0)) * Float64(sqrt(Float64(25.0 / 6.0)) - Float64(sqrt(Float64(3.0 / 8.0)) * (x ^ 2.0)))))) end
function code(x) return Float64(Float64(x * 1.875) - Float64(Float64(x * x) * Float64(Float64((x ^ 3.0) * -0.375) + Float64(x * 1.25)))) end
function tmp = code(x) tmp = x * ((15.0 / 8.0) - ((sqrt((3.0 / 8.0)) * (x ^ 2.0)) * (sqrt((25.0 / 6.0)) - (sqrt((3.0 / 8.0)) * (x ^ 2.0))))); end
function tmp = code(x) tmp = (x * 1.875) - ((x * x) * (((x ^ 3.0) * -0.375) + (x * 1.25))); end
code[x_] := N[(x * N[(N[(15.0 / 8.0), $MachinePrecision] - N[(N[(N[Sqrt[N[(3.0 / 8.0), $MachinePrecision]], $MachinePrecision] * N[Power[x, 2.0], $MachinePrecision]), $MachinePrecision] * N[(N[Sqrt[N[(25.0 / 6.0), $MachinePrecision]], $MachinePrecision] - N[(N[Sqrt[N[(3.0 / 8.0), $MachinePrecision]], $MachinePrecision] * N[Power[x, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
code[x_] := N[(N[(x * 1.875), $MachinePrecision] - N[(N[(x * x), $MachinePrecision] * N[(N[(N[Power[x, 3.0], $MachinePrecision] * -0.375), $MachinePrecision] + N[(x * 1.25), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
x \cdot \left(\frac{15}{8} - \left(\sqrt{\frac{3}{8}} \cdot {x}^{2}\right) \cdot \left(\sqrt{\frac{25}{6}} - \sqrt{\frac{3}{8}} \cdot {x}^{2}\right)\right)
x \cdot 1.875 - \left(x \cdot x\right) \cdot \left({x}^{3} \cdot -0.375 + x \cdot 1.25\right)
Results
Initial program 0.1
Simplified0.1
[Start]0.1 | \[ x \cdot \left(\frac{15}{8} - \left(\sqrt{\frac{3}{8}} \cdot {x}^{2}\right) \cdot \left(\sqrt{\frac{25}{6}} - \sqrt{\frac{3}{8}} \cdot {x}^{2}\right)\right)
\] |
---|---|
distribute-lft-out-- [<=]0.1 | \[ \color{blue}{x \cdot \frac{15}{8} - x \cdot \left(\left(\sqrt{\frac{3}{8}} \cdot {x}^{2}\right) \cdot \left(\sqrt{\frac{25}{6}} - \sqrt{\frac{3}{8}} \cdot {x}^{2}\right)\right)}
\] |
metadata-eval [=>]0.1 | \[ x \cdot \color{blue}{1.875} - x \cdot \left(\left(\sqrt{\frac{3}{8}} \cdot {x}^{2}\right) \cdot \left(\sqrt{\frac{25}{6}} - \sqrt{\frac{3}{8}} \cdot {x}^{2}\right)\right)
\] |
*-commutative [<=]0.1 | \[ x \cdot 1.875 - \color{blue}{\left(\left(\sqrt{\frac{3}{8}} \cdot {x}^{2}\right) \cdot \left(\sqrt{\frac{25}{6}} - \sqrt{\frac{3}{8}} \cdot {x}^{2}\right)\right) \cdot x}
\] |
*-commutative [=>]0.1 | \[ x \cdot 1.875 - \left(\color{blue}{\left({x}^{2} \cdot \sqrt{\frac{3}{8}}\right)} \cdot \left(\sqrt{\frac{25}{6}} - \sqrt{\frac{3}{8}} \cdot {x}^{2}\right)\right) \cdot x
\] |
associate-*l* [=>]0.1 | \[ x \cdot 1.875 - \color{blue}{\left({x}^{2} \cdot \left(\sqrt{\frac{3}{8}} \cdot \left(\sqrt{\frac{25}{6}} - \sqrt{\frac{3}{8}} \cdot {x}^{2}\right)\right)\right)} \cdot x
\] |
*-commutative [=>]0.1 | \[ x \cdot 1.875 - \color{blue}{\left(\left(\sqrt{\frac{3}{8}} \cdot \left(\sqrt{\frac{25}{6}} - \sqrt{\frac{3}{8}} \cdot {x}^{2}\right)\right) \cdot {x}^{2}\right)} \cdot x
\] |
associate-*l* [=>]0.1 | \[ x \cdot 1.875 - \color{blue}{\left(\sqrt{\frac{3}{8}} \cdot \left(\sqrt{\frac{25}{6}} - \sqrt{\frac{3}{8}} \cdot {x}^{2}\right)\right) \cdot \left({x}^{2} \cdot x\right)}
\] |
Applied egg-rr0.1
Applied egg-rr0.1
Final simplification0.1
Alternative 1 | |
---|---|
Error | 0.1 |
Cost | 7360 |
Alternative 2 | |
---|---|
Error | 0.1 |
Cost | 7296 |
Alternative 3 | |
---|---|
Error | 0.1 |
Cost | 7296 |
Alternative 4 | |
---|---|
Error | 0.1 |
Cost | 960 |
Alternative 5 | |
---|---|
Error | 3.9 |
Cost | 192 |
herbie shell --seed 1
(FPCore (x)
:name "x*(15/8-((sqrt(3/8)*x^2)*(sqrt(25/6)-(sqrt(3/8)*x^2))))"
:precision binary64
:pre (and (<= 0.0 x) (<= x 1e+18))
(* x (- (/ 15.0 8.0) (* (* (sqrt (/ 3.0 8.0)) (pow x 2.0)) (- (sqrt (/ 25.0 6.0)) (* (sqrt (/ 3.0 8.0)) (pow x 2.0)))))))