FYI to_poly_solve



I've made some changes to to_poly_solve. For one, %solve is an alias for
to_poly_solve.
Also:

Return a nounform for cases %solve is unable to find a solution set:

 (%i22) %solve([a*x^42+x^2-1],[x]);
 (%o22) %solve([a*x^42+x^2-1],[x])

Substitution into a nounform should work:

 (%i23) sublis([a=0],%);
 (%o23) %union([x = -1],[x = 1])

Call Fourier elimination on linear inequalities:

 (%i24) %union([y+5 < x,x < 1-y,y < -2]);
 (%o24) %union([y+5 < x,x < 1-y,y < -2])

A somewhat improved Lambert W solver:

 (%i25) %solve(x^x = 2009,x);
 (%o25) %union([x = log(2009)/lambert_w(log(2009))])

Better rejection of spurious solutions:

 (%i26) nicedummies(%solve(sin(x) / x = 0,x));
 (%o26) %union(%if(2*%z0+1 # 0,[x = 2*%pi*%z0+%pi],%union()),
               %if(%z1 # 0,[x = 2*%pi*%z1],%union()))

 (%i27) sublis([%z1 = 0],%);
 (%o27) %union(%if(2*%z0+1 # 0,[x = 2*%pi*%z0+%pi],%union()))

It would be nice if Maxima "knew" that 2 * integer + 1 # 0 is true. Another
day.

I hope that these changes are mostly agreeable. I even updated the
to_poly_solve user documentation. Suggestions and bug reports are
always appreciated. And I do thank all of you that have already
pitched in and helped in various ways.

Barton