1 | LIB "tst.lib"; |
---|
2 | tst_init(); |
---|
3 | // |
---|
4 | // test script for liftstd command |
---|
5 | // |
---|
6 | pagelength = 10000; |
---|
7 | ring r1 = 32003,(x,y,z),(c,ls); |
---|
8 | r1; |
---|
9 | |
---|
10 | proc pmat (matrix m,list #) |
---|
11 | { |
---|
12 | if ( size(#) == 0) |
---|
13 | { |
---|
14 | //------------- main case: input is a matrix, no second argument--------------- |
---|
15 | int @elems; |
---|
16 | int @mlen; |
---|
17 | int @slen; |
---|
18 | int @c; |
---|
19 | int @r; |
---|
20 | //-------------- count maximal size of each column, and sum up ---------------- |
---|
21 | |
---|
22 | for ( @c=1; @c<=ncols(m); @c=@c+1) |
---|
23 | { int @len(@c); |
---|
24 | for (@r=1; @r<=nrows(m); @r=@r+1) |
---|
25 | { |
---|
26 | @elems = @elems + 1; |
---|
27 | string @s(@elems) = string(m[@r,@c])+","; |
---|
28 | @slen = size(@s(@elems)); |
---|
29 | if (@slen > @len(@c)) |
---|
30 | { |
---|
31 | @len(@c) = @slen; |
---|
32 | } |
---|
33 | } |
---|
34 | @mlen = @mlen + @len(@c); |
---|
35 | } |
---|
36 | //---------------------- print all - except last - rows ----------------------- |
---|
37 | |
---|
38 | string @aus; |
---|
39 | string @sep = " "; |
---|
40 | if (@mlen >= pagewidth) |
---|
41 | { |
---|
42 | @sep = newline; |
---|
43 | } |
---|
44 | |
---|
45 | for (@r=1; @r<nrows(m); @r=@r+1) |
---|
46 | { |
---|
47 | @elems = @r; |
---|
48 | @aus = ""; |
---|
49 | for (@c=1; @c<=ncols(m); @c=@c+1) |
---|
50 | { |
---|
51 | @aus = @aus + @s(@elems)[1,@len(@c)] + @sep; |
---|
52 | @elems = @elems + nrows(m); |
---|
53 | } |
---|
54 | @aus; |
---|
55 | } |
---|
56 | //--------------- print last row (no comma after last entry) ------------------ |
---|
57 | |
---|
58 | @aus = ""; |
---|
59 | @elems = nrows(m); |
---|
60 | for (@c=1; @c<ncols(m); @c=@c+1) |
---|
61 | { |
---|
62 | @aus = @aus + @s(@elems)[1,@len(@c)] + @sep; |
---|
63 | @elems = @elems + nrows(m); |
---|
64 | } |
---|
65 | @aus = @aus + string(m[nrows(m),ncols(m)]); |
---|
66 | @aus; |
---|
67 | return(); |
---|
68 | } |
---|
69 | //--------- second case: input is a matrix, second argument is given ---------- |
---|
70 | |
---|
71 | if ( size(#) == 1 ) |
---|
72 | { |
---|
73 | if ( typeof(#[1]) == "int" ) |
---|
74 | { |
---|
75 | string @aus; |
---|
76 | string @tmp; |
---|
77 | int @ll; |
---|
78 | int @c; |
---|
79 | int @r; |
---|
80 | for ( @r=1; @r<=nrows(m); @r=@r+1) |
---|
81 | { |
---|
82 | @aus = ""; |
---|
83 | for (@c=1; @c<=ncols(m); @c=@c+1) |
---|
84 | { |
---|
85 | @tmp = string(m[@r,@c]); |
---|
86 | @aus = @aus + @tmp[1,#[1]] + " "; |
---|
87 | } |
---|
88 | @aus; |
---|
89 | } |
---|
90 | } |
---|
91 | } |
---|
92 | } |
---|
93 | |
---|
94 | "-------------------------------"; |
---|
95 | ideal i1=maxideal(3); |
---|
96 | ideal i2=x6,y4,z5,xy,yz,xz; |
---|
97 | i2; |
---|
98 | matrix m1[3][3]=x,y,z,xz,yx,12zx,0,y2,3xy2; |
---|
99 | pmat(m1); |
---|
100 | liftstd(i2,m1); |
---|
101 | "---------------------------------"; |
---|
102 | vector v1=[x4,y2,xz2]; |
---|
103 | vector v2=[y3,x8,2z4]; |
---|
104 | module m=v1,v2; |
---|
105 | m; |
---|
106 | pmat(m1); |
---|
107 | liftstd(m,m1); |
---|
108 | "--------------------------------"; |
---|
109 | listvar(all); |
---|
110 | kill r1; |
---|
111 | ring R; |
---|
112 | poly f=x3+y7+z2+xyz; |
---|
113 | ideal i=jacob(f); |
---|
114 | matrix T; |
---|
115 | ideal sm=liftstd(i,T); |
---|
116 | matrix(sm)-matrix(i)*T; |
---|
117 | kill R; |
---|
118 | tst_status(1);$; |
---|