UNPKG

5.98 kBtext/coffeescriptView Raw
1test_factorpoly = ->
2 run_test [
3
4 "bake=0",
5 "",
6
7 "factor((x+1)*(x+2)*(x+3),x)",
8 "(1+x)*(2+x)*(3+x)",
9
10 "factor((x+a)*(x^2+x+1),x)",
11 "(1+x+x^2)*(a+x)",
12
13 "factor(x*(x+1)*(x+2),x)",
14 "x*(1+x)*(2+x)",
15
16 # "factor((x+1)*(x+2)*(y+3)*(y+4),x,y)",
17 # "(1+x)*(2+x)*(3+y)*(4+y)",
18
19 # "factor((x+1)*(x+2)*(y+3)*(y+4),(x,y))",
20 # "(1+x)*(2+x)*(3+y)*(4+y)",
21
22 # "factor((x+1)*(x+2)*(y+3)*(y+4))",
23 # "(1+x)*(2+x)*(3+y)*(4+y)",
24
25 "factor((-2*x+3)*(x+4),x)",
26 "-(-3+2*x)*(4+x)",
27
28 "(-2*x+3)*(x+4)+(-3+2*x)*(4+x)",
29 "0",
30
31 # make sure sign of remaining poly is factored
32
33 "factor((x+1)*(-x^2+x+1),x)",
34 "-(-1-x+x^2)*(1+x)",
35
36 # sign handling
37
38 #++++++
39
40 "factor((x+1/2)*(+x+1/3)*(+x+1/4),x)",
41 "1/24*(1+2*x)*(1+3*x)*(1+4*x)",
42
43 "(x+1/2)*(+x+1/3)*(+x+1/4)-1/24*(1+2*x)*(1+3*x)*(1+4*x)",
44 "0",
45
46 #+++++-
47
48 "factor((x+1/2)*(+x+1/3)*(+x-1/4),x)",
49 "1/24*(-1+4*x)*(1+2*x)*(1+3*x)",
50
51 "(x+1/2)*(+x+1/3)*(+x-1/4)-1/24*(-1+4*x)*(1+2*x)*(1+3*x)",
52 "0",
53
54 #++++-+
55
56 "factor((x+1/2)*(+x+1/3)*(-x+1/4),x)",
57 "-1/24*(-1+4*x)*(1+2*x)*(1+3*x)",
58
59 "(x+1/2)*(+x+1/3)*(-x+1/4)+1/24*(-1+4*x)*(1+2*x)*(1+3*x)",
60 "0",
61
62 #++++--
63
64 "factor((x+1/2)*(+x+1/3)*(-x-1/4),x)",
65 "-1/24*(1+2*x)*(1+3*x)*(1+4*x)",
66
67 "(x+1/2)*(+x+1/3)*(-x-1/4)+1/24*(1+2*x)*(1+3*x)*(1+4*x)",
68 "0",
69
70 #+++-++
71
72 "factor((x+1/2)*(+x-1/3)*(+x+1/4),x)",
73 "1/24*(-1+3*x)*(1+2*x)*(1+4*x)",
74
75 "(x+1/2)*(+x-1/3)*(+x+1/4)-1/24*(-1+3*x)*(1+2*x)*(1+4*x)",
76 "0",
77
78 #+++-+-
79
80 "factor((x+1/2)*(+x-1/3)*(+x-1/4),x)",
81 "1/24*(-1+3*x)*(-1+4*x)*(1+2*x)",
82
83 "(x+1/2)*(+x-1/3)*(+x-1/4)-1/24*(-1+3*x)*(-1+4*x)*(1+2*x)",
84 "0",
85
86 #+++--+
87
88 "factor((x+1/2)*(+x-1/3)*(-x+1/4),x)",
89 "-1/24*(-1+3*x)*(-1+4*x)*(1+2*x)",
90
91 "(x+1/2)*(+x-1/3)*(-x+1/4)+1/24*(-1+3*x)*(-1+4*x)*(1+2*x)",
92 "0",
93
94 #+++---
95
96 "factor((x+1/2)*(+x-1/3)*(-x-1/4),x)",
97 "-1/24*(-1+3*x)*(1+2*x)*(1+4*x)",
98
99 "(x+1/2)*(+x-1/3)*(-x-1/4)+1/24*(-1+3*x)*(1+2*x)*(1+4*x)",
100 "0",
101
102 #++-+++
103
104 "factor((x+1/2)*(-x+1/3)*(+x+1/4),x)",
105 "-1/24*(-1+3*x)*(1+2*x)*(1+4*x)",
106
107 "(x+1/2)*(-x+1/3)*(+x+1/4)+1/24*(-1+3*x)*(1+2*x)*(1+4*x)",
108 "0",
109
110 #++-++-
111
112 "factor((x+1/2)*(-x+1/3)*(+x-1/4),x)",
113 "-1/24*(-1+3*x)*(-1+4*x)*(1+2*x)",
114
115 "(x+1/2)*(-x+1/3)*(+x-1/4)+1/24*(-1+3*x)*(-1+4*x)*(1+2*x)",
116 "0",
117
118 #++-+-+
119
120 "factor((x+1/2)*(-x+1/3)*(-x+1/4),x)",
121 "1/24*(-1+3*x)*(-1+4*x)*(1+2*x)",
122
123 "(x+1/2)*(-x+1/3)*(-x+1/4)-1/24*(-1+3*x)*(-1+4*x)*(1+2*x)",
124 "0",
125
126 #++-+--
127
128 "factor((x+1/2)*(-x+1/3)*(-x-1/4),x)",
129 "1/24*(-1+3*x)*(1+2*x)*(1+4*x)",
130
131 "(x+1/2)*(-x+1/3)*(-x-1/4)-1/24*(-1+3*x)*(1+2*x)*(1+4*x)",
132 "0",
133
134 #++--++
135
136 "factor((x+1/2)*(-x-1/3)*(+x+1/4),x)",
137 "-1/24*(1+2*x)*(1+3*x)*(1+4*x)",
138
139 "(x+1/2)*(-x-1/3)*(+x+1/4)+1/24*(1+2*x)*(1+3*x)*(1+4*x)",
140 "0",
141
142 #++--+-
143
144 "factor((x+1/2)*(-x-1/3)*(+x-1/4),x)",
145 "-1/24*(-1+4*x)*(1+2*x)*(1+3*x)",
146
147 "(x+1/2)*(-x-1/3)*(+x-1/4)+1/24*(-1+4*x)*(1+2*x)*(1+3*x)",
148 "0",
149
150 #++---+
151
152 "factor((x+1/2)*(-x-1/3)*(-x+1/4),x)",
153 "1/24*(-1+4*x)*(1+2*x)*(1+3*x)",
154
155 "(x+1/2)*(-x-1/3)*(-x+1/4)-1/24*(-1+4*x)*(1+2*x)*(1+3*x)",
156 "0",
157
158 #++----
159
160 "factor((x+1/2)*(-x-1/3)*(-x-1/4),x)",
161 "1/24*(1+2*x)*(1+3*x)*(1+4*x)",
162
163 "(x+1/2)*(-x-1/3)*(-x-1/4)-1/24*(1+2*x)*(1+3*x)*(1+4*x)",
164 "0",
165
166 #++++++
167
168 "factor((+x+a)*(+x+b)*(+x+c),x)",
169 "(a+x)*(b+x)*(c+x)",
170
171 "(a+x)*(b+x)*(c+x)-(a+x)*(b+x)*(c+x)",
172 "0",
173
174 #+++++-
175
176 "factor((+x+a)*(+x+b)*(+x-c),x)",
177 "(a+x)*(b+x)*(-c+x)",
178
179 "(+x+a)*(+x+b)*(+x-c)-(a+x)*(b+x)*(-c+x)",
180 "0",
181
182 #++++-+
183
184 "factor((+x+a)*(+x+b)*(-x+c),x)",
185 "-(a+x)*(b+x)*(-c+x)",
186
187 "(+x+a)*(+x+b)*(-x+c)+(a+x)*(b+x)*(-c+x)",
188 "0",
189
190 #++++--
191
192 "factor((+x+a)*(+x+b)*(-x-c),x)",
193 "-(a+x)*(b+x)*(c+x)",
194
195 "(+x+a)*(+x+b)*(-x-c)+(a+x)*(b+x)*(c+x)",
196 "0",
197
198 #++++
199
200 "factor((+a*x+b)*(+c*x+d),x)",
201 "(b+a*x)*(d+c*x)",
202
203 "(+a*x+b)*(+c*x+d)-(b+a*x)*(d+c*x)",
204 "0",
205
206 #+++-
207
208 "factor((+a*x+b)*(+c*x-d),x)",
209 "(b+a*x)*(-d+c*x)",
210
211 "(+a*x+b)*(+c*x-d)-(b+a*x)*(-d+c*x)",
212 "0",
213
214 #++-+
215
216 "factor((+a*x+b)*(-c*x+d),x)",
217 "-(b+a*x)*(-d+c*x)",
218
219 "(+a*x+b)*(-c*x+d)+(b+a*x)*(-d+c*x)",
220 "0",
221
222 #++--
223
224 "factor((+a*x+b)*(-c*x-d),x)",
225 "-(b+a*x)*(d+c*x)",
226
227 "(+a*x+b)*(-c*x-d)+(b+a*x)*(d+c*x)",
228 "0",
229
230 #+-++
231
232 "factor((+a*x-b)*(+c*x+d),x)",
233 "(d+c*x)*(-b+a*x)",
234
235 "(+a*x-b)*(+c*x+d)-(d+c*x)*(-b+a*x)",
236 "0",
237
238 #+-+-
239
240 "factor((+a*x-b)*(+c*x-d),x)",
241 "(-b+a*x)*(-d+c*x)",
242
243 "(+a*x-b)*(+c*x-d)-(-b+a*x)*(-d+c*x)",
244 "0",
245
246 #+--+
247
248 "factor((+a*x-b)*(-c*x+d),x)",
249 "-(-b+a*x)*(-d+c*x)",
250
251 "(+a*x-b)*(-c*x+d)+(-b+a*x)*(-d+c*x)",
252 "0",
253
254 #+---
255
256 "factor((+a*x-b)*(-c*x-d),x)",
257 "-(d+c*x)*(-b+a*x)",
258
259 "(+a*x-b)*(-c*x-d)+(d+c*x)*(-b+a*x)",
260 "0",
261
262 #-+++
263
264 "factor((-a*x+b)*(+c*x+d),x)",
265 "-(d+c*x)*(-b+a*x)",
266
267 "(-a*x+b)*(+c*x+d)+(d+c*x)*(-b+a*x)",
268 "0",
269
270 #-++-
271
272 "factor((-a*x+b)*(+c*x-d),x)",
273 "-(-b+a*x)*(-d+c*x)",
274
275 "(-a*x+b)*(+c*x-d)+(-b+a*x)*(-d+c*x)",
276 "0",
277
278 #-+-+
279
280 "factor((-a*x+b)*(-c*x+d),x)",
281 "(-b+a*x)*(-d+c*x)",
282
283 "(-a*x+b)*(-c*x+d)-(-b+a*x)*(-d+c*x)",
284 "0",
285
286 #-+--
287
288 "factor((-a*x+b)*(-c*x-d),x)",
289 "(d+c*x)*(-b+a*x)",
290
291 "(-a*x+b)*(-c*x-d)-(d+c*x)*(-b+a*x)",
292 "0",
293
294 #--++
295
296 "factor((-a*x-b)*(+c*x+d),x)",
297 "-(b+a*x)*(d+c*x)",
298
299 "(-a*x-b)*(+c*x+d)+(b+a*x)*(d+c*x)",
300 "0",
301
302 #--+-
303
304 "factor((-a*x-b)*(+c*x-d),x)",
305 "-(b+a*x)*(-d+c*x)",
306
307 "(-a*x-b)*(+c*x-d)+(b+a*x)*(-d+c*x)",
308 "0",
309
310 #---+
311
312 "factor((-a*x-b)*(-c*x+d),x)",
313 "(b+a*x)*(-d+c*x)",
314
315 "(-a*x-b)*(-c*x+d)-(b+a*x)*(-d+c*x)",
316 "0",
317
318 #----
319
320 "factor((-a*x-b)*(-c*x-d),x)",
321 "(b+a*x)*(d+c*x)",
322
323 "(-a*x-b)*(-c*x-d)-(b+a*x)*(d+c*x)",
324 "0",
325
326 # this used to cause divide by zero
327
328 # fixed by calling ispoly before calling coeff
329
330 # "factor(1/x+1)",
331 # "(1+x)/x",
332
333 # see if poly gets rationalized
334
335 # "(x+1)(x+2)(x+3)/x^3",
336 # "1+6/(x^3)+11/(x^2)+6/x",
337
338 # "factor(last)",
339 # "(1+x)*(2+x)*(3+x)/(x^3)",
340
341 # this used to fail
342
343 "factor(x,x)",
344 "x",
345
346 "factor(x^2,x)",
347 "x^2",
348
349 "factor(x^3,x)",
350 "x^3",
351
352 "bake=1",
353 "",
354
355 "y=(x+1)*(x+2)",
356 "",
357
358 "factor(y,z)",
359 "x^2+3*x+2",
360
361 "factor(y,y)",
362 "x^2+3*x+2",
363
364 "y=x^2+exp(x)",
365 "",
366
367 "factor(y)",
368 "x^2+exp(x)",
369 ]