1 | LIB "tst.lib"; |
---|
2 | tst_init(); |
---|
3 | LIB "general.lib"; |
---|
4 | |
---|
5 | option(noredefine); |
---|
6 | |
---|
7 | proc vcheckdump(link l, string vn) |
---|
8 | { |
---|
9 | if (typeof(`vn`) != "proc" && typeof(`vn`) != "link") |
---|
10 | { |
---|
11 | write(l, `vn`); |
---|
12 | read(l); |
---|
13 | if (typeof(`vn`) == "ring") |
---|
14 | { |
---|
15 | setring `vn`; |
---|
16 | rcheckdump(l, names(`vn`)); |
---|
17 | } |
---|
18 | } |
---|
19 | } |
---|
20 | |
---|
21 | proc rcheckdump(link l, list nameslist) |
---|
22 | { |
---|
23 | int i; |
---|
24 | for (i=1; i<size(nameslist); i++) |
---|
25 | { |
---|
26 | vcheckdump(l, nameslist[i]); |
---|
27 | } |
---|
28 | } |
---|
29 | |
---|
30 | proc checkdump(link l) |
---|
31 | { |
---|
32 | rcheckdump(l, names()); |
---|
33 | } |
---|
34 | |
---|
35 | |
---|
36 | |
---|
37 | // data |
---|
38 | int i; |
---|
39 | int i1 = 1; |
---|
40 | int i2 = -100092; |
---|
41 | |
---|
42 | intvec iv; |
---|
43 | intvec iv1 = 1,2,3; |
---|
44 | intvec iv2 = -1,2,-3,4,-5; |
---|
45 | |
---|
46 | intmat im; |
---|
47 | intmat im1[2][3]=1,3,5,7,8; |
---|
48 | intmat im2[3][3]= -1,2,-3,4,-5; |
---|
49 | |
---|
50 | string s; |
---|
51 | string s1 = "Hello World"; |
---|
52 | |
---|
53 | list l; |
---|
54 | list l1 = i,iv,im,i1,iv1,im1; |
---|
55 | list l2 = l1, iv2, l, im2; |
---|
56 | |
---|
57 | ring r; |
---|
58 | |
---|
59 | poly p; |
---|
60 | number n; |
---|
61 | number n1 = 2; |
---|
62 | number n2 = -7; |
---|
63 | |
---|
64 | poly p1 = x + y; |
---|
65 | poly p2 = xyz - 2x3y4z5 + 3xy -4yz + 5z; |
---|
66 | poly p3 = p2^2; |
---|
67 | |
---|
68 | vector v; |
---|
69 | vector v1 = [p1, p2]; |
---|
70 | vector v2 = [p, p1,p2, p3] + p1*gen(5); |
---|
71 | |
---|
72 | ideal id; |
---|
73 | ideal id1 = p, p1, p2, p3; |
---|
74 | ideal id2 = p, p1+p2, p2+3, p1+p2+p3, p1, p2, p3; |
---|
75 | |
---|
76 | module mv; |
---|
77 | module mv1 = v, v1, v2; |
---|
78 | module mv2 = v1+v2, p1*v2, p2*v1, v, v1, v2; |
---|
79 | |
---|
80 | matrix m; |
---|
81 | matrix m1[2][3] = p, p1, p2, id1; |
---|
82 | matrix m2[4][4] = p, p1, p2, p3, id1, id2; |
---|
83 | |
---|
84 | ring rr = 32003,(a,b),dp; |
---|
85 | map f = r, a,b,a+b; |
---|
86 | map g = rr,a2,b2; |
---|
87 | map phi = g(f); |
---|
88 | |
---|
89 | |
---|
90 | ring r0 = 0, x, lp; |
---|
91 | number n; |
---|
92 | number n1 = 29734481274863241234589; |
---|
93 | number n2 = n1/(n1-6); |
---|
94 | |
---|
95 | poly p; |
---|
96 | poly p1 = n1*x + n2*x^4 + 7/3*x^2*x^5 - 6; |
---|
97 | poly p2 = x*x*x - 2*x^3*x^4*x^5 + 3*x*x -4*x*x + 5*x^2 + p1; |
---|
98 | poly p3 = p2*p2; |
---|
99 | |
---|
100 | |
---|
101 | // First, make two (preserves order of variables) ASCII-dumps of everything |
---|
102 | dump(":w _dump.txt"); |
---|
103 | killall(); |
---|
104 | getdump("_dump.txt"); |
---|
105 | |
---|
106 | // Does our version have MP? |
---|
107 | if (! (system("with", "MP"))) |
---|
108 | { |
---|
109 | // no -- so simply dump everything to stdout and exit |
---|
110 | dump(""); |
---|
111 | $; |
---|
112 | } |
---|
113 | |
---|
114 | // Yes, so let's make an MPfile dump |
---|
115 | dump("MPfile: _dump.mp"); |
---|
116 | killall(); |
---|
117 | getdump("MPfile:r _dump.mp"); |
---|
118 | |
---|
119 | // checkdump("MPfile: _dump.mp"); |
---|
120 | |
---|
121 | // MPfork dump |
---|
122 | link ll = "MPtcp:fork"; |
---|
123 | open(ll); |
---|
124 | if (status(ll, "openwrite", "yes")) |
---|
125 | { |
---|
126 | write(ll, quote(getdump(mp_ll))); dump(ll); read(ll); |
---|
127 | killall("not", "link"); |
---|
128 | write(ll, quote(dump(mp_ll))); getdump(ll); read(ll); |
---|
129 | |
---|
130 | checkdump(ll); |
---|
131 | } |
---|
132 | kill ll; |
---|
133 | |
---|
134 | |
---|
135 | // MPlaunch dump |
---|
136 | string sing = system("Singular"); |
---|
137 | |
---|
138 | if (size(sing)) |
---|
139 | { |
---|
140 | // check whether rsh works and whether remote Singular can be executed |
---|
141 | if (system("sh","rsh `hostname` -n test -x "+sing+" 1>/dev/null 2>&1")) |
---|
142 | { |
---|
143 | if (system("sh","remsh `hostname` -n test -x "+sing+" 1>/dev/null 2>&1")) |
---|
144 | { |
---|
145 | if (system("sh","ssh `hostname` -f test -x "+sing+" 1>/dev/null 2>&1")) |
---|
146 | { |
---|
147 | sing = ""; |
---|
148 | } |
---|
149 | } |
---|
150 | } |
---|
151 | |
---|
152 | if (size(sing)) |
---|
153 | { |
---|
154 | link ll = "MPtcp:launch"; |
---|
155 | open(ll); |
---|
156 | if (status(ll, "openwrite", "yes")) |
---|
157 | { |
---|
158 | kill sing; |
---|
159 | write(ll, quote(getdump(mp_ll))); dump(ll); read(ll); |
---|
160 | killall("not", "link"); |
---|
161 | write(ll, quote(dump(mp_ll))); getdump(ll); read(ll); |
---|
162 | |
---|
163 | checkdump(ll); |
---|
164 | } |
---|
165 | kill ll; |
---|
166 | } |
---|
167 | } |
---|
168 | |
---|
169 | if (defined(sing)) |
---|
170 | { |
---|
171 | kill sing; |
---|
172 | } |
---|
173 | tst_ignore(system("sh", "rm -rf _dump.*")); |
---|
174 | |
---|
175 | killall("proc"); |
---|
176 | dump(""); |
---|
177 | $ |
---|
178 | |
---|
179 | |
---|
180 | |
---|
181 | |
---|