Expand roots into a polynomial Challenge
Given the roots of a polynomial separated by spaces as input, output the expanded form of the polynomial.
For example, the input
1 2

represents this equation:
(x-1)(x-2)

And should output:
x^2-3x+2

The exact format of output is not important, it can be:
1x^2+-3x^1+2x^0

or:
0 0 0
1x^3+0x^2+0x^1+0

or:
3 14 15 92
1x^4+-124x^3+3241x^2+-27954x^1+57960

Scoring/Rules

eval and likes are disallowed.
You may use any version of Python or any other language.
MATL, 29 bytes
ljU&quot;1@_hX+]tn:Pqv'+%gx^%g'wYD

Input is an array with the roots.
EDITS:

(May 20, 2016): the X+ function has been removed, as Y+ includes its functionality. So in the above code replace X+ by Y+.
(September 29, 2017): due to changes in the YD function, w in the above code should be removed.

The following link includes those changes.
Try it online!
Explanation
This applies repeated convolution with terms of the form [1, -r] where r is a root.
l          % push number 1
jU         % take input string. Convert to number array
&quot;          % for each root r
  1        %   push number 1
  @_       %   push -r
  h        %   concatenate horizontally
  X+       %   convolve. This gradually builds array of coefficients
]          % end for each
tn:Pq      % produce array [n-1,n-2,...,0], where n is the number of roots
v          % concatenate vertically with array of coefficients
'+%gx^%g'  % format string, sprintf-style
w          % swap
YD         % sprintf. Implicitly display