function ret = Li (i, x, xi)
%
% function ret = Li (i, x, xi)
%
% Valuta il polinomio elementare di Lagrange L_i, costruito a partire
% dai punti xi, sui punti x.
n = length (xi) - 1;
ret = ones (size (x));
for j = 1:i - 1
  ret = ret .* (x - xi(j)) ./ (xi(i) - xi(j));
end
for j = i + 1:n + 1
  ret = ret .* (x - xi(j)) ./ (xi(i) - xi(j));
end
%!test
%! xi = rand (1, 4);
%! for j = 1:4
%!   for i = 1:4
%!     assert(Li (i, xi(j), xi), double(i==j))
%!   end
%! end
%!test
%! xi = rand (1, 4);
%! for j = 1:4
%!   for i = 1:4
%!     assert(Li (i, xi(j), xi),...
%!            prod((xi(j)-xi)./((xi(i)-xi)+(xi(i)==xi)))+(xi(i)==xi(j)))
%!   end
%! end
