1 """
2 Generated low-level arithmetic inplace functions for CollectingField.
3
4 This file is generated by the src/mk_pairs_iops.py script.
5 See http://sympycore.googlecode.com/ for more information.
6
7 DO NOT CHANGE THIS FILE DIRECTLY!!!
8 """
9
10 from ..core import Expr
11 from ..arithmetic.numbers import mpqc, mpf, mpq, mpc, try_power
12 from ..utils import NUMBER, TERMS, FACTORS
13 new = Expr.__new__
14
15
16
18 if not pairs:
19 return cls.zero
20 if len(pairs)==1:
21 t, c = pairs.items()[0]
22 if c==1:
23 return t
24 if t==cls.one:
25 return cls(NUMBER, c)
26
27
28 _tmp2 = cls(TERMS, pairs)
29 return _tmp2
30
32 if not pairs:
33 return cls.one
34 elif len(pairs)==1:
35 t, c = pairs.items()[0]
36 if c==1:
37 return t
38 if t==cls.one:
39 return t
40
41
42 _tmp16 = cls(FACTORS, pairs)
43 return _tmp16
44
46 tobj = type(obj)
47 if tobj is cls:
48 head, data = obj.pair
49 if head is NUMBER:
50 if data:
51
52 _tmp30 = pairs_get(one)
53 if _tmp30 is None:
54 pairs[one] = data
55 else:
56 _tmp30 = _tmp30 + data
57 if _tmp30:
58 pairs[one] = _tmp30
59 else:
60 del pairs[one]
61 elif head is TERMS:
62 for t,c in data.iteritems():
63
64 _tmp37 = pairs_get(t)
65 if _tmp37 is None:
66 pairs[t] = c
67 else:
68 _tmp37 = _tmp37 + c
69 if _tmp37:
70 pairs[t] = _tmp37
71 else:
72 del pairs[t]
73 else:
74
75 _tmp44 = pairs_get(obj)
76 if _tmp44 is None:
77 pairs[obj] = 1
78 else:
79 _tmp44 = _tmp44 + 1
80 if _tmp44:
81 pairs[obj] = _tmp44
82 else:
83 del pairs[obj]
84
85 elif tobj is int or tobj is long or tobj is mpq or tobj is float or tobj is mpf or tobj is mpqc or tobj is mpc or tobj is complex:
86 if obj:
87
88 _tmp58 = pairs_get(one)
89 if _tmp58 is None:
90 pairs[one] = obj
91 else:
92 _tmp58 = _tmp58 + obj
93 if _tmp58:
94 pairs[one] = _tmp58
95 else:
96 del pairs[one]
97 else:
98 inplace_add(cls, cls.convert(obj), pairs, pairs_get, one)
99
101 if not coeff:
102 return
103 tobj = type(obj)
104 if tobj is cls:
105 head, data = obj.pair
106 if head is NUMBER:
107 value = coeff * data
108 if value:
109
110 _tmp65 = pairs_get(one)
111 if _tmp65 is None:
112 pairs[one] = value
113 else:
114 _tmp65 = _tmp65 + value
115 if _tmp65:
116 pairs[one] = _tmp65
117 else:
118 del pairs[one]
119 elif head is TERMS:
120 for t,c in data.iteritems():
121
122 _tmp72 = pairs_get(t)
123 if _tmp72 is None:
124 pairs[t] = coeff*c
125 else:
126 _tmp72 = _tmp72 + coeff*c
127 if _tmp72:
128 pairs[t] = _tmp72
129 else:
130 del pairs[t]
131 else:
132
133 _tmp79 = pairs_get(obj)
134 if _tmp79 is None:
135 pairs[obj] = coeff
136 else:
137 _tmp79 = _tmp79 + coeff
138 if _tmp79:
139 pairs[obj] = _tmp79
140 else:
141 del pairs[obj]
142
143 elif tobj is int or tobj is long or tobj is mpq or tobj is float or tobj is mpf or tobj is mpqc or tobj is mpc or tobj is complex:
144 value = coeff * obj
145 if value:
146
147 _tmp93 = pairs_get(one)
148 if _tmp93 is None:
149 pairs[one] = value
150 else:
151 _tmp93 = _tmp93 + value
152 if _tmp93:
153 pairs[one] = _tmp93
154 else:
155 del pairs[one]
156 else:
157 inplace_add2(cls, cls.convert(obj), coeff, pairs, pairs_get, one)
158
160 tobj = type(obj)
161 if tobj is cls:
162 head, data = obj.pair
163 if head is NUMBER:
164 value = data
165 if value:
166
167 _tmp100 = pairs_get(one)
168 if _tmp100 is None:
169 pairs[one] = - value
170 else:
171 _tmp100 = _tmp100 - value
172 if _tmp100:
173 pairs[one] = _tmp100
174 else:
175 del pairs[one]
176 elif head is TERMS:
177 for t,c in data.iteritems():
178
179 _tmp107 = pairs_get(t)
180 if _tmp107 is None:
181 pairs[t] = - c
182 else:
183 _tmp107 = _tmp107 - c
184 if _tmp107:
185 pairs[t] = _tmp107
186 else:
187 del pairs[t]
188 else:
189
190 _tmp114 = pairs_get(obj)
191 if _tmp114 is None:
192 pairs[obj] = - 1
193 else:
194 _tmp114 = _tmp114 - 1
195 if _tmp114:
196 pairs[obj] = _tmp114
197 else:
198 del pairs[obj]
199
200 elif tobj is int or tobj is long or tobj is mpq or tobj is float or tobj is mpf or tobj is mpqc or tobj is mpc or tobj is complex:
201 if obj:
202
203 _tmp128 = pairs_get(one)
204 if _tmp128 is None:
205 pairs[one] = - obj
206 else:
207 _tmp128 = _tmp128 - obj
208 if _tmp128:
209 pairs[one] = _tmp128
210 else:
211 del pairs[one]
212 else:
213 inplace_add(cls, cls.convert(obj), pairs, pairs_get, one)
214
216 tobj = type(obj)
217 if tobj is cls:
218 head, data = obj.pair
219 if head is NUMBER:
220 return data
221 elif head is TERMS:
222 if len(data)==1:
223 t, number = data.items()[0]
224
225 _tmp135 = pairs_get(t)
226 if _tmp135 is None:
227 pairs[t] = 1
228 else:
229 _tmp135 = _tmp135 + 1
230 if type(_tmp135) is cls and _tmp135.head is NUMBER:
231 _tmp135 = _tmp135.data
232 if _tmp135:
233 if t.head is NUMBER:
234 del pairs[t]
235 z, sym = try_power(t.data, _tmp135)
236 if sym:
237 for t1, c1 in sym:
238
239 tt = cls(NUMBER, t1)
240
241 _tmp149 = pairs_get(tt)
242 if _tmp149 is None:
243 pairs[tt] = c1
244 else:
245 _tmp149 = _tmp149 + c1
246 if _tmp149:
247 pairs[tt] = _tmp149
248 else:
249 del pairs[tt]
250 number = number * z
251 else:
252 pairs[t] = _tmp135
253 else:
254 del pairs[t]
255 return number
256 number = 1
257
258 _tmp156 = pairs_get(obj)
259 if _tmp156 is None:
260 pairs[obj] = 1
261 else:
262 _tmp156 = _tmp156 + 1
263 if type(_tmp156) is cls and _tmp156.head is NUMBER:
264 _tmp156 = _tmp156.data
265 if _tmp156:
266 if obj.head is NUMBER:
267 del pairs[obj]
268 z, sym = try_power(obj.data, _tmp156)
269 if sym:
270 for t1, c1 in sym:
271
272 tt = cls(NUMBER, t1)
273
274 _tmp170 = pairs_get(tt)
275 if _tmp170 is None:
276 pairs[tt] = c1
277 else:
278 _tmp170 = _tmp170 + c1
279 if _tmp170:
280 pairs[tt] = _tmp170
281 else:
282 del pairs[tt]
283 number = number * z
284 else:
285 pairs[obj] = _tmp156
286 else:
287 del pairs[obj]
288 return number
289 elif head is FACTORS:
290 number = 1
291 for t, c in data.iteritems():
292
293 _tmp177 = pairs_get(t)
294 if _tmp177 is None:
295 pairs[t] = c
296 else:
297 _tmp177 = _tmp177 + c
298 if type(_tmp177) is cls and _tmp177.head is NUMBER:
299 _tmp177 = _tmp177.data
300 if _tmp177:
301 if t.head is NUMBER:
302 del pairs[t]
303 z, sym = try_power(t.data, _tmp177)
304 if sym:
305 for t1, c1 in sym:
306
307 tt = cls(NUMBER, t1)
308
309 _tmp191 = pairs_get(tt)
310 if _tmp191 is None:
311 pairs[tt] = c1
312 else:
313 _tmp191 = _tmp191 + c1
314 if _tmp191:
315 pairs[tt] = _tmp191
316 else:
317 del pairs[tt]
318 number = number * z
319 else:
320 pairs[t] = _tmp177
321 else:
322 del pairs[t]
323 return number
324 else:
325 number = 1
326
327 _tmp198 = pairs_get(obj)
328 if _tmp198 is None:
329 pairs[obj] = 1
330 else:
331 _tmp198 = _tmp198 + 1
332 if type(_tmp198) is cls and _tmp198.head is NUMBER:
333 _tmp198 = _tmp198.data
334 if _tmp198:
335 if obj.head is NUMBER:
336 del pairs[obj]
337 z, sym = try_power(obj.data, _tmp198)
338 if sym:
339 for t1, c1 in sym:
340
341 tt = cls(NUMBER, t1)
342
343 _tmp212 = pairs_get(tt)
344 if _tmp212 is None:
345 pairs[tt] = c1
346 else:
347 _tmp212 = _tmp212 + c1
348 if _tmp212:
349 pairs[tt] = _tmp212
350 else:
351 del pairs[tt]
352 number = number * z
353 else:
354 pairs[obj] = _tmp198
355 else:
356 del pairs[obj]
357 return number
358
359 elif tobj is int or tobj is long or tobj is mpq or tobj is float or tobj is mpf or tobj is mpqc or tobj is mpc or tobj is complex:
360 return obj
361 else:
362 return inplace_mul(cls, cls.convert(obj), pairs, pairs_get)
363
365 if not exp:
366 return 1
367 tobj = type(obj)
368 if tobj is cls:
369 head, data = obj.pair
370 if head is NUMBER:
371 return data ** exp
372 elif head is TERMS:
373 if len(data)==1:
374 t, number = data.items()[0]
375 number = number ** exp
376
377 _tmp226 = pairs_get(t)
378 if _tmp226 is None:
379 pairs[t] = exp
380 else:
381 _tmp226 = _tmp226 + exp
382 if type(_tmp226) is cls and _tmp226.head is NUMBER:
383 _tmp226 = _tmp226.data
384 if _tmp226:
385 if t.head is NUMBER:
386 del pairs[t]
387 z, sym = try_power(t.data, _tmp226)
388 if sym:
389 for t1, c1 in sym:
390
391 tt = cls(NUMBER, t1)
392
393 _tmp240 = pairs_get(tt)
394 if _tmp240 is None:
395 pairs[tt] = c1
396 else:
397 _tmp240 = _tmp240 + c1
398 if _tmp240:
399 pairs[tt] = _tmp240
400 else:
401 del pairs[tt]
402 number = number * z
403 else:
404 pairs[t] = _tmp226
405 else:
406 del pairs[t]
407 return number
408 number = 1
409
410 _tmp247 = pairs_get(obj)
411 if _tmp247 is None:
412 pairs[obj] = exp
413 else:
414 _tmp247 = _tmp247 + exp
415 if type(_tmp247) is cls and _tmp247.head is NUMBER:
416 _tmp247 = _tmp247.data
417 if _tmp247:
418 if obj.head is NUMBER:
419 del pairs[obj]
420 z, sym = try_power(obj.data, _tmp247)
421 if sym:
422 for t1, c1 in sym:
423
424 tt = cls(NUMBER, t1)
425
426 _tmp261 = pairs_get(tt)
427 if _tmp261 is None:
428 pairs[tt] = c1
429 else:
430 _tmp261 = _tmp261 + c1
431 if _tmp261:
432 pairs[tt] = _tmp261
433 else:
434 del pairs[tt]
435 number = number * z
436 else:
437 pairs[obj] = _tmp247
438 else:
439 del pairs[obj]
440 return number
441 elif head is FACTORS:
442 number = 1
443 for t, c in data.iteritems():
444
445 _tmp268 = pairs_get(t)
446 if _tmp268 is None:
447 pairs[t] = c*exp
448 else:
449 _tmp268 = _tmp268 + c*exp
450 if type(_tmp268) is cls and _tmp268.head is NUMBER:
451 _tmp268 = _tmp268.data
452 if _tmp268:
453 if t.head is NUMBER:
454 del pairs[t]
455 z, sym = try_power(t.data, _tmp268)
456 if sym:
457 for t1, c1 in sym:
458
459 tt = cls(NUMBER, t1)
460
461 _tmp282 = pairs_get(tt)
462 if _tmp282 is None:
463 pairs[tt] = c1
464 else:
465 _tmp282 = _tmp282 + c1
466 if _tmp282:
467 pairs[tt] = _tmp282
468 else:
469 del pairs[tt]
470 number = number * z
471 else:
472 pairs[t] = _tmp268
473 else:
474 del pairs[t]
475 return number
476 else:
477 number = 1
478
479 _tmp289 = pairs_get(obj)
480 if _tmp289 is None:
481 pairs[obj] = exp
482 else:
483 _tmp289 = _tmp289 + exp
484 if type(_tmp289) is cls and _tmp289.head is NUMBER:
485 _tmp289 = _tmp289.data
486 if _tmp289:
487 if obj.head is NUMBER:
488 del pairs[obj]
489 z, sym = try_power(obj.data, _tmp289)
490 if sym:
491 for t1, c1 in sym:
492
493 tt = cls(NUMBER, t1)
494
495 _tmp303 = pairs_get(tt)
496 if _tmp303 is None:
497 pairs[tt] = c1
498 else:
499 _tmp303 = _tmp303 + c1
500 if _tmp303:
501 pairs[tt] = _tmp303
502 else:
503 del pairs[tt]
504 number = number * z
505 else:
506 pairs[obj] = _tmp289
507 else:
508 del pairs[obj]
509 return number
510
511 elif tobj is int or tobj is long or tobj is mpq or tobj is float or tobj is mpf or tobj is mpqc or tobj is mpc or tobj is complex:
512 return obj ** exp
513 else:
514 return inplace_mul2(cls, cls.convert(obj), exp, pairs, pairs_get)
515