Tue Feb 10 12:26:27 2004 run on Linux
% Test file for i_solve and r_solve operators.
% Author: F.J.Wright@Maths.QMW.ac.uk
% Version 1.051, 16 Jan 1995

i_solve((x - 10)*(x + 20)*(x - 30)*(x + 40)*(x - 50));


{x=-20,x=-40,x=50,x=30,x=10}

% {x=-20,x=-40,x=50,x=30,x=10}

i_solve(x^4 - 1, x);


{x=1,x=-1}

% {x=1,x=-1}

i_solve(x^4 + 1);


{}

% {}

r_solve((x^2 - 1)*(x^2 - 9));


{x=1,x=-3,x=3,x=-1}

% {x=1,x=-3,x=3,x=-1}

r_solve(9x^2 - 1);


    1      - 1
{x=---,x=------}
    3      3

%     1      - 1
% {x=---,x=------}
%     3      3

r_solve(9x^2 - 4, x);


     - 2     2
{x=------,x=---}
     3       3

%      - 2     2
% {x=------,x=---}
%      3       3

r_solve(9x^2 + 16, x);


{}

% {}

r_solve((9x^2 - 16)*(x^2 - 9), x);


     - 4              4
{x=------,x=3,x=-3,x=---}
     3                3

%      - 4              4
% {x=------,x=3,x=-3,x=---}
%      3                3

% First two examples from Loos' paper:
% ===================================
r_solve(6x^4 - 11x^3 - x^2 - 4);


     - 2
{x=------,x=2}
     3

%      - 2
% {x=------,x=2}
%      3

r_solve(2x^3 + 12x^2 + 13x + 15);


{x=-5}

% {x=-5}

% Remaining four CORRECTED examples from Loos' paper:
% ==================================================
r_solve(2x^4 - 4x^3 + 3x^2 - 5x - 2);


{x=2}

% {x=2}

r_solve(6x^5 + 11x^4 - x^3 + 5x - 6);


     - 3     2
{x=------,x=---}
     2       3

%      - 3     2
% {x=------,x=---}
%      2       3

r_solve(x^5 - 5x^4 + 2x^3 - 25x^2 + 21x + 270);


{x=3,x=5,x=-2}

% {x=3,x=5,x=-2}

r_solve(2x^6 + x^5 - 9x^4 - 6x^3 - 5x^2 - 7x + 6);


    1
{x=---,x=-2}
    2

%     1
% {x=---,x=-2}
%     2

% Degenerate equations:
% ====================
i_solve 0;


{}

% {}

i_solve(0, x);


{x=arbint(1)}

% {x=arbint(1)}

r_solve(a = a, x);


{x=arbrat(2)}

% {x=arbrat(2)}

r_solve(x^2 - 1, y);


{}

% {}

% Test of options and multiplicity:
% ================================
i_solve(x^4 - 1, x, noeqs);


{1,-1}

% {1,-1}

i_solve((x^4 - 1)^3, x);


{x=1,x=-1}

% {x=1,x=-1}
root_multiplicities;


{3,3}

% {3,3}

on multiplicities;


i_solve((x^4 - 1)^3, x);


{x=1,x=1,x=1,x=-1,x=-1,x=-1}

% {x=1,x=1,x=1,x=-1,x=-1,x=-1}
root_multiplicities;


{}

% {}

i_solve((x^4 - 1)^3, x, separate);


{x=1,x=-1}

% {x=1,x=-1}
root_multiplicities;


{3,3}

% {3,3}
off multiplicities;



i_solve((x^4 - 1)^3, x, multiplicities);


{x=1,x=1,x=1,x=-1,x=-1,x=-1}

% {x=1,x=1,x=1,x=-1,x=-1,x=-1}
root_multiplicities;


{}

% {}

i_solve((x^4 - 1)^3, x, expand, noeqs);


{1,1,1,-1,-1,-1}

% {1,1,1,-1,-1,-1}
root_multiplicities;


{}

% {}

i_solve((x^4 - 1)^3, x, together);


{{x=1,3},{x=-1,3}}

% {{x=1,3},{x=-1,3}}
root_multiplicities;


{}

% {}

i_solve((x^4 - 1)^3, x, together, noeqs);


{{1,3},{-1,3}}

% {{1,3},{-1,3}}
root_multiplicities;


{}

% {}

i_solve((x^4 - 1)^3, x, nomul);


{x=-1,x=1}

% {x=-1,x=1}
root_multiplicities;


{}

% {}

% Test of error handling:
% ======================
on errcont;


r_solve();


***** r/i_solve called with no equations 

% ***** r/i_solve called with no equations 

r_solve(x^2 - a, x);


              2
*****  - a + x  invalid as univariate polynomial over Z

%               2
% *****  - a + x  invalid as univariate polynomial over Z

r_solve(x^2 - 1, x, foo);


***** foo invalid as optional r/i_solve argument

% ***** foo invalid as optional r/i_solve argument

r_solve({x^2 - 1}, x);


        2
***** {x  - 1} invalid as univariate polynomial over Z

%         2
% ***** {x  - 1} invalid as univariate polynomial over Z

on complex;


i_solve((x-1)*(x-i), x);


                    2
*****  - i*x + i + x  - x invalid as univariate polynomial over Z

%                     2
% *****  - i*x + i + x  - x invalid as univariate polynomial over Z

end$


Time for test: 10 ms
