@@ -1,461 +1,461 @@ -REDUCE 3.6, 15-Jul-95, patched to 6 Mar 96 ... - - -% wu.tst - -% Russell Bradford, 8 June 90. - -% Some tests for the Wu algorithm -% The order directives are not necessary for general use: they just -% help tie things down for testing purposes. - -% run after loading Wu code: in "wu.red"$ - -% test 1 - -order x,y,a,b; - - - -wu({x^2+y^2-a,x*y-b}, {x,y}); - - - 4 2 2 -{{{ - y + y *a - b , - x*y + b}, - - y}} - - -% test 2 - -order x,y,a,b; - - - -wu({x^2+y^2-a,x*y-b},{x,y,a,b}); - - - 2 -{{{b,y, - x + a},1}, - - 4 2 2 - {{ - y + y *a - b , - x*y + b}, - - y}} - - -% test 3 - -order x,y,z,r; - - - -wu({x^2+y^2+z^2-r^2, x*y+z^2-1, x*y*z-x^2-y^2-z+1}, {x,y,z}); - - - 3 2 2 -{{{z - z + r - 1, - - 4 2 2 2 2 2 2 2 - - y - y *z + y *r + z + z*r - z + r - 2, - - 2 - x*y + z - 1}, - - y}, - - 7 6 5 4 2 4 3 2 2 2 2 - {{z - z - 2*z + z *r + z + z - 2*z *r + z + r - 1, - - 2 3 2 2 - y *(z - z + r - 1), - - 2 - x*y + z - 1}, - - 3 2 2 - y*(z - z + r - 1)}} - - -% test 4 - -order x,y,z,r; - - - -wu({x^2+y^2+z^2-r^2, x*y+z^2-1, x*y*z-x^2-y^2-z+1}, {x,y,z,r}); - - - 3 2 2 -{{{z - z + r - 1, - - 4 2 2 2 2 2 2 2 - - y - y *z + y *r + z + z*r - z + r - 2, - - 2 - x*y + z - 1}, - - y}, - - 4 2 - {{r - 4*r + 3, - - 2 - z + r - 2, - - y, - - 2 2 - - x + r - 1}, - - 1}, - - 7 6 5 4 2 4 3 2 2 2 2 - {{z - z - 2*z + z *r + z + z - 2*z *r + z + r - 1, - - 2 3 2 2 - y *(z - z + r - 1), - - 2 - x*y + z - 1}, - - 3 2 2 - y*(z - z + r - 1)}} - - -% test 5 - -order x,y,z; - - - -wu({(x-1)*(y-1)*(z-1), (x-2)*(y-2)*(z-2), (x-3)*(y-3)*(z-3)}, {x,y,z}); - - - 2 -{{{z - 5*z + 6, - - 2 2 - 2*(y *z - 3*y - 4*y*z + 12*y + 3*z - 9), - - x*y*z - 3*x*y - 3*x*z + 9*x - 3*y*z + 9*y + 9*z - 27}, - - 2 2 - 2*(y*z - 6*y*z + 9*y - 3*z + 18*z - 27)}, - - {{z - 3,y - 2,2*(x - 1)},2}, - - 2 - {{z - 3,2*(y - 3*y + 2),x*y - 2*x - 2*y + 4}, - - 2*(y - 2)}, - - {{2*(z - 3),2*(y - 2),4*(x - 1)},16}, - - 2 - {{2*(z - 3),4*(y - 3*y + 2),2*(x*y - 2*x - 2*y + 4)}, - - 16*(y - 2)}, - - 2 - {{z - 5*z + 6, - - y*z - 3*y - 3*z + 9, - - 2*(x*z - 3*x - z + 3)}, - - 2 - 2*(z - 6*z + 9)}, - - 3 2 - {{2*(z - 6*z + 11*z - 6), - - y*z - 3*y - 3*z + 9, - - 2 2 - x*z - 5*x*z + 6*x - 2*z + 10*z - 12}, - - 3 2 - 2*(z - 8*z + 21*z - 18)}, - - 3 2 - {{4*(z - 6*z + 11*z - 6), - - 2 2 2 2 2 2 - y *z - 5*y *z + 6*y - 5*y*z + 25*y*z - 30*y + 6*z - 30*z + 36, - - x*y*z - 3*x*y - 3*x*z + 9*x - 3*y*z + 9*y + 9*z - 27}, - - 3 2 3 2 - 4*(y*z - 8*y*z + 21*y*z - 18*y - 3*z + 24*z - 63*z + 54)}} - - -% test 6 - -order x,y,z; - - - -wu({(x-1)*(y-1)*(z-1), (x-2)*(y-2)*(z-2), (x-3)*(y-3)*(z-3)}); - - - 2 -{{{z - 5*z + 6, - - 2 2 - 2*(y *z - 3*y - 4*y*z + 12*y + 3*z - 9), - - x*y*z - 3*x*y - 3*x*z + 9*x - 3*y*z + 9*y + 9*z - 27}, - - 2 2 - 2*(y*z - 6*y*z + 9*y - 3*z + 18*z - 27)}, - - {{z - 3,y - 2,2*(x - 1)},2}, - - 2 - {{z - 3,2*(y - 3*y + 2),x*y - 2*x - 2*y + 4}, - - 2*(y - 2)}, - - {{2*(z - 3),2*(y - 2),4*(x - 1)},16}, - - 2 - {{2*(z - 3),4*(y - 3*y + 2),2*(x*y - 2*x - 2*y + 4)}, - - 16*(y - 2)}, - - 2 - {{z - 5*z + 6, - - y*z - 3*y - 3*z + 9, - - 2*(x*z - 3*x - z + 3)}, - - 2 - 2*(z - 6*z + 9)}, - - 3 2 - {{2*(z - 6*z + 11*z - 6), - - y*z - 3*y - 3*z + 9, - - 2 2 - x*z - 5*x*z + 6*x - 2*z + 10*z - 12}, - - 3 2 - 2*(z - 8*z + 21*z - 18)}, - - 3 2 - {{4*(z - 6*z + 11*z - 6), - - 2 2 2 2 2 2 - y *z - 5*y *z + 6*y - 5*y*z + 25*y*z - 30*y + 6*z - 30*z + 36, - - x*y*z - 3*x*y - 3*x*z + 9*x - 3*y*z + 9*y + 9*z - 27}, - - 3 2 3 2 - 4*(y*z - 8*y*z + 21*y*z - 18*y - 3*z + 24*z - 63*z + 54)}} - - -% test 7 - -order x1,x2,x3,x4; - - - -p1 := x1+x2+x3+x4; - - -p1 := x1 + x2 + x3 + x4 - -p2 := x1*x2+x2*x3+x3*x4+x4*x1; - - -p2 := x1*x2 + x1*x4 + x2*x3 + x3*x4 - -p3 := x1*x2*x3+x2*x3*x4+x3*x4*x1+x4*x1*x2; - - -p3 := x1*x2*x3 + x1*x2*x4 + x1*x3*x4 + x2*x3*x4 - -p4 := x1*x2*x3*x4 - 1; - - -p4 := x1*x2*x3*x4 - 1 - - -wu({p1,p2,p3,p4}, {x1,x2,x3,x4}); - - - 4 -{{{x4*(x4 - 1), - - 2 - x4 *(x3 - x4), - - 2 2 2 - x4 *(x2 + 2*x2*x4 + x4 ), - - 2 - x4 *(x1 + x2 + 2*x4)}, - - 6 - x4 }, - - 4 - {{x4 - 1, - - 2 - x4 *(x3 - x4), - - 2 2 - 2*x4*(x2 + 2*x2*x4 + x4 ), - - 2 - x4 *(x1 + x2 + 2*x4)}, - - 5 - 2*x4 }, - - 4 - {{x4 - 1, - - x3 - x4, - - 2 2 - x2 + 2*x2*x4 + x4 , - - x1 + x2 + 2*x4}, - - 1}, - - 4 - {{x4 - 1, - - 2 2 - x3 - x4 , - - 2 3 3 - x2*x3*x4 - x2*x4 + x3*x4 - 1, - - 2 - x1*x3 - x1*x4 - x3*x4 + x4 }, - - 2 2 2 - x4 *(x3 - 2*x3*x4 + x4 )}, - - 8 4 - {{x4 - 2*x4 + 1, - - 2 2 - x3 - x4 , - - 2 3 3 - x2*x3*x4 - x2*x4 + x3*x4 - 1, - - 4 4 - x1*x4 - x1 + x3*x4 - x3}, - - 2 4 5 - x4 *(x3*x4 - x3 - x4 + x4)}, - - 2 4 - {{x4 *(x4 - 1), - - 3 - x4 *(x3 - x4), - - 3 2 2 - x4 *(x2 + 2*x2*x4 + x4 ), - - 3 - x4 *(x1 + x2 + 2*x4)}, - - 9 - x4 }, - - 4 - {{x4*(x4 - 1), - - 3 - x4 *(x3 - x4), - - 2 2 2 - 2*x4 *(x2 + 2*x2*x4 + x4 ), - - 3 - x4 *(x1 + x2 + 2*x4)}, - - 8 - 2*x4 }, - - 4 - {{x4 - 1, - - x4*(x3 - x4), - - 2 2 - x4*(x2 + 2*x2*x4 + x4 ), - - x4*(x1 + x2 + 2*x4)}, - - 3 - x4 }, - - 4 - {{x4*(x4 - 1), - - 2 2 2 - x4 *(x3 - x4 ), - - 2 3 3 - x4*(x2*x3*x4 - x2*x4 + x3*x4 - 1), - - 2 - x4*(x1*x3 - x1*x4 - x3*x4 + x4 )}, - - 6 2 2 - x4 *(x3 - 2*x3*x4 + x4 )}, - - 8 4 - {{x4*(x4 - 2*x4 + 1), - - 2 2 2 - x4 *(x3 - x4 ), - - 2 3 3 - x4*(x2*x3*x4 - x2*x4 + x3*x4 - 1), - - 4 4 - x4*(x1*x4 - x1 + x3*x4 - x3)}, - - 6 4 5 - x4 *(x3*x4 - x3 - x4 + x4)}, - - 3 2 2 3 - {{x3 *x4 + x3 *x4 - x3 - x4, - - 2 2 2 3 - x2*x3 - x2*x4 + x3 *x4 - x4 , - - 2 2 4 2 3 4 - x1*x3 *x4 - x1*x4 - x3 *x4 - x3*x4 + x3 + x4}, - - 4 4 2 2 4 - x4 *(x3 - 2*x3 *x4 + x4 )}} - - -% test 8 - -order x,y,z; - - - -wu({z*z,y*z-1,x*z-1}, {x,y,z}); - - -{{{1},1}} - - -end; -(TIME: wu 2330 2420) +REDUCE 3.6, 15-Jul-95, patched to 6 Mar 96 ... + + +% wu.tst + +% Russell Bradford, 8 June 90. + +% Some tests for the Wu algorithm +% The order directives are not necessary for general use: they just +% help tie things down for testing purposes. + +% run after loading Wu code: in "wu.red"$ + +% test 1 + +order x,y,a,b; + + + +wu({x^2+y^2-a,x*y-b}, {x,y}); + + + 4 2 2 +{{{ - y + y *a - b , - x*y + b}, + + y}} + + +% test 2 + +order x,y,a,b; + + + +wu({x^2+y^2-a,x*y-b},{x,y,a,b}); + + + 2 +{{{b,y, - x + a},1}, + + 4 2 2 + {{ - y + y *a - b , - x*y + b}, + + y}} + + +% test 3 + +order x,y,z,r; + + + +wu({x^2+y^2+z^2-r^2, x*y+z^2-1, x*y*z-x^2-y^2-z+1}, {x,y,z}); + + + 3 2 2 +{{{z - z + r - 1, + + 4 2 2 2 2 2 2 2 + - y - y *z + y *r + z + z*r - z + r - 2, + + 2 + x*y + z - 1}, + + y}, + + 7 6 5 4 2 4 3 2 2 2 2 + {{z - z - 2*z + z *r + z + z - 2*z *r + z + r - 1, + + 2 3 2 2 + y *(z - z + r - 1), + + 2 + x*y + z - 1}, + + 3 2 2 + y*(z - z + r - 1)}} + + +% test 4 + +order x,y,z,r; + + + +wu({x^2+y^2+z^2-r^2, x*y+z^2-1, x*y*z-x^2-y^2-z+1}, {x,y,z,r}); + + + 3 2 2 +{{{z - z + r - 1, + + 4 2 2 2 2 2 2 2 + - y - y *z + y *r + z + z*r - z + r - 2, + + 2 + x*y + z - 1}, + + y}, + + 4 2 + {{r - 4*r + 3, + + 2 + z + r - 2, + + y, + + 2 2 + - x + r - 1}, + + 1}, + + 7 6 5 4 2 4 3 2 2 2 2 + {{z - z - 2*z + z *r + z + z - 2*z *r + z + r - 1, + + 2 3 2 2 + y *(z - z + r - 1), + + 2 + x*y + z - 1}, + + 3 2 2 + y*(z - z + r - 1)}} + + +% test 5 + +order x,y,z; + + + +wu({(x-1)*(y-1)*(z-1), (x-2)*(y-2)*(z-2), (x-3)*(y-3)*(z-3)}, {x,y,z}); + + + 2 +{{{z - 5*z + 6, + + 2 2 + 2*(y *z - 3*y - 4*y*z + 12*y + 3*z - 9), + + x*y*z - 3*x*y - 3*x*z + 9*x - 3*y*z + 9*y + 9*z - 27}, + + 2 2 + 2*(y*z - 6*y*z + 9*y - 3*z + 18*z - 27)}, + + {{z - 3,y - 2,2*(x - 1)},2}, + + 2 + {{z - 3,2*(y - 3*y + 2),x*y - 2*x - 2*y + 4}, + + 2*(y - 2)}, + + {{2*(z - 3),2*(y - 2),4*(x - 1)},16}, + + 2 + {{2*(z - 3),4*(y - 3*y + 2),2*(x*y - 2*x - 2*y + 4)}, + + 16*(y - 2)}, + + 2 + {{z - 5*z + 6, + + y*z - 3*y - 3*z + 9, + + 2*(x*z - 3*x - z + 3)}, + + 2 + 2*(z - 6*z + 9)}, + + 3 2 + {{2*(z - 6*z + 11*z - 6), + + y*z - 3*y - 3*z + 9, + + 2 2 + x*z - 5*x*z + 6*x - 2*z + 10*z - 12}, + + 3 2 + 2*(z - 8*z + 21*z - 18)}, + + 3 2 + {{4*(z - 6*z + 11*z - 6), + + 2 2 2 2 2 2 + y *z - 5*y *z + 6*y - 5*y*z + 25*y*z - 30*y + 6*z - 30*z + 36, + + x*y*z - 3*x*y - 3*x*z + 9*x - 3*y*z + 9*y + 9*z - 27}, + + 3 2 3 2 + 4*(y*z - 8*y*z + 21*y*z - 18*y - 3*z + 24*z - 63*z + 54)}} + + +% test 6 + +order x,y,z; + + + +wu({(x-1)*(y-1)*(z-1), (x-2)*(y-2)*(z-2), (x-3)*(y-3)*(z-3)}); + + + 2 +{{{z - 5*z + 6, + + 2 2 + 2*(y *z - 3*y - 4*y*z + 12*y + 3*z - 9), + + x*y*z - 3*x*y - 3*x*z + 9*x - 3*y*z + 9*y + 9*z - 27}, + + 2 2 + 2*(y*z - 6*y*z + 9*y - 3*z + 18*z - 27)}, + + {{z - 3,y - 2,2*(x - 1)},2}, + + 2 + {{z - 3,2*(y - 3*y + 2),x*y - 2*x - 2*y + 4}, + + 2*(y - 2)}, + + {{2*(z - 3),2*(y - 2),4*(x - 1)},16}, + + 2 + {{2*(z - 3),4*(y - 3*y + 2),2*(x*y - 2*x - 2*y + 4)}, + + 16*(y - 2)}, + + 2 + {{z - 5*z + 6, + + y*z - 3*y - 3*z + 9, + + 2*(x*z - 3*x - z + 3)}, + + 2 + 2*(z - 6*z + 9)}, + + 3 2 + {{2*(z - 6*z + 11*z - 6), + + y*z - 3*y - 3*z + 9, + + 2 2 + x*z - 5*x*z + 6*x - 2*z + 10*z - 12}, + + 3 2 + 2*(z - 8*z + 21*z - 18)}, + + 3 2 + {{4*(z - 6*z + 11*z - 6), + + 2 2 2 2 2 2 + y *z - 5*y *z + 6*y - 5*y*z + 25*y*z - 30*y + 6*z - 30*z + 36, + + x*y*z - 3*x*y - 3*x*z + 9*x - 3*y*z + 9*y + 9*z - 27}, + + 3 2 3 2 + 4*(y*z - 8*y*z + 21*y*z - 18*y - 3*z + 24*z - 63*z + 54)}} + + +% test 7 + +order x1,x2,x3,x4; + + + +p1 := x1+x2+x3+x4; + + +p1 := x1 + x2 + x3 + x4 + +p2 := x1*x2+x2*x3+x3*x4+x4*x1; + + +p2 := x1*x2 + x1*x4 + x2*x3 + x3*x4 + +p3 := x1*x2*x3+x2*x3*x4+x3*x4*x1+x4*x1*x2; + + +p3 := x1*x2*x3 + x1*x2*x4 + x1*x3*x4 + x2*x3*x4 + +p4 := x1*x2*x3*x4 - 1; + + +p4 := x1*x2*x3*x4 - 1 + + +wu({p1,p2,p3,p4}, {x1,x2,x3,x4}); + + + 4 +{{{x4*(x4 - 1), + + 2 + x4 *(x3 - x4), + + 2 2 2 + x4 *(x2 + 2*x2*x4 + x4 ), + + 2 + x4 *(x1 + x2 + 2*x4)}, + + 6 + x4 }, + + 4 + {{x4 - 1, + + 2 + x4 *(x3 - x4), + + 2 2 + 2*x4*(x2 + 2*x2*x4 + x4 ), + + 2 + x4 *(x1 + x2 + 2*x4)}, + + 5 + 2*x4 }, + + 4 + {{x4 - 1, + + x3 - x4, + + 2 2 + x2 + 2*x2*x4 + x4 , + + x1 + x2 + 2*x4}, + + 1}, + + 4 + {{x4 - 1, + + 2 2 + x3 - x4 , + + 2 3 3 + x2*x3*x4 - x2*x4 + x3*x4 - 1, + + 2 + x1*x3 - x1*x4 - x3*x4 + x4 }, + + 2 2 2 + x4 *(x3 - 2*x3*x4 + x4 )}, + + 8 4 + {{x4 - 2*x4 + 1, + + 2 2 + x3 - x4 , + + 2 3 3 + x2*x3*x4 - x2*x4 + x3*x4 - 1, + + 4 4 + x1*x4 - x1 + x3*x4 - x3}, + + 2 4 5 + x4 *(x3*x4 - x3 - x4 + x4)}, + + 2 4 + {{x4 *(x4 - 1), + + 3 + x4 *(x3 - x4), + + 3 2 2 + x4 *(x2 + 2*x2*x4 + x4 ), + + 3 + x4 *(x1 + x2 + 2*x4)}, + + 9 + x4 }, + + 4 + {{x4*(x4 - 1), + + 3 + x4 *(x3 - x4), + + 2 2 2 + 2*x4 *(x2 + 2*x2*x4 + x4 ), + + 3 + x4 *(x1 + x2 + 2*x4)}, + + 8 + 2*x4 }, + + 4 + {{x4 - 1, + + x4*(x3 - x4), + + 2 2 + x4*(x2 + 2*x2*x4 + x4 ), + + x4*(x1 + x2 + 2*x4)}, + + 3 + x4 }, + + 4 + {{x4*(x4 - 1), + + 2 2 2 + x4 *(x3 - x4 ), + + 2 3 3 + x4*(x2*x3*x4 - x2*x4 + x3*x4 - 1), + + 2 + x4*(x1*x3 - x1*x4 - x3*x4 + x4 )}, + + 6 2 2 + x4 *(x3 - 2*x3*x4 + x4 )}, + + 8 4 + {{x4*(x4 - 2*x4 + 1), + + 2 2 2 + x4 *(x3 - x4 ), + + 2 3 3 + x4*(x2*x3*x4 - x2*x4 + x3*x4 - 1), + + 4 4 + x4*(x1*x4 - x1 + x3*x4 - x3)}, + + 6 4 5 + x4 *(x3*x4 - x3 - x4 + x4)}, + + 3 2 2 3 + {{x3 *x4 + x3 *x4 - x3 - x4, + + 2 2 2 3 + x2*x3 - x2*x4 + x3 *x4 - x4 , + + 2 2 4 2 3 4 + x1*x3 *x4 - x1*x4 - x3 *x4 - x3*x4 + x3 + x4}, + + 4 4 2 2 4 + x4 *(x3 - 2*x3 *x4 + x4 )}} + + +% test 8 + +order x,y,z; + + + +wu({z*z,y*z-1,x*z-1}, {x,y,z}); + + +{{{1},1}} + + +end; +(TIME: wu 2330 2420)