Package sympycore :: Package basealgebra :: Module pairs_iops
[hide private]
[frames] | no frames]

Source Code for Module sympycore.basealgebra.pairs_iops

  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   
17 -def return_terms(cls, pairs, new=new):
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 #RETURN_NEW(HEAD=TERMS; DATA=pairs) 27 #NEWINSTANCE(OBJ=_tmp2; HEAD=TERMS; DATA=pairs) 28 _tmp2 = cls(TERMS, pairs) 29 return _tmp2
30
31 -def return_factors(cls, pairs, new=new):
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 #RETURN_NEW(HEAD=FACTORS; DATA=pairs) 41 #NEWINSTANCE(OBJ=_tmp16; HEAD=FACTORS; DATA=pairs) 42 _tmp16 = cls(FACTORS, pairs) 43 return _tmp16
44
45 -def inplace_add(cls, obj, pairs, pairs_get, one):
46 tobj = type(obj) 47 if tobj is cls: 48 head, data = obj.pair 49 if head is NUMBER: 50 if data: 51 #ADD_TERM_VALUE_DICT(DICT=pairs; DICT_GET=pairs_get; TERM=one; VALUE=data; SIGN=+; USIGN=) 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 #ADD_TERM_VALUE_DICT(DICT=pairs; DICT_GET=pairs_get; TERM=t; VALUE=c; SIGN=+; USIGN=) 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 #ADD_TERM_VALUE_DICT(DICT=pairs; DICT_GET=pairs_get; TERM=obj; VALUE=1; SIGN=+; USIGN=) 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 #ELIF_CHECK_NUMBER(T=tobj) 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 #ADD_TERM_VALUE_DICT(DICT=pairs; DICT_GET=pairs_get; TERM=one; VALUE=obj; SIGN=+; USIGN=) 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
100 -def inplace_add2(cls, obj, coeff, pairs, pairs_get, one):
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 #ADD_TERM_VALUE_DICT(DICT=pairs; DICT_GET=pairs_get; TERM=one; VALUE=value; SIGN=+; USIGN=) 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 #ADD_TERM_VALUE_DICT(DICT=pairs; DICT_GET=pairs_get; TERM=t; VALUE=coeff*c; SIGN=+; USIGN=) 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 #ADD_TERM_VALUE_DICT(DICT=pairs; DICT_GET=pairs_get; TERM=obj; VALUE=coeff; SIGN=+; USIGN=) 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 #ELIF_CHECK_NUMBER(T=tobj) 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 #ADD_TERM_VALUE_DICT(DICT=pairs; DICT_GET=pairs_get; TERM=one; VALUE=value; SIGN=+; USIGN=) 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
159 -def inplace_sub(cls, obj, pairs, pairs_get, one):
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 #ADD_TERM_VALUE_DICT(DICT=pairs; DICT_GET=pairs_get; TERM=one; VALUE=value; SIGN=-; USIGN=-) 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 #ADD_TERM_VALUE_DICT(DICT=pairs; DICT_GET=pairs_get; TERM=t; VALUE=c; SIGN=-; USIGN=-) 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 #ADD_TERM_VALUE_DICT(DICT=pairs; DICT_GET=pairs_get; TERM=obj; VALUE=1; SIGN=-; USIGN=-) 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 #ELIF_CHECK_NUMBER(T=tobj) 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 #ADD_TERM_VALUE_DICT(DICT=pairs; DICT_GET=pairs_get; TERM=one; VALUE=obj; SIGN=-; USIGN=-) 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
215 -def inplace_mul(cls, obj, pairs, pairs_get, try_power=try_power, NUMBER=NUMBER):
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 #MUL_FACTOR_VALUE_DICT(DICT=pairs; DICT_GET=pairs_get; FACTOR=t; VALUE=1; SIGN=+; USIGN=; NUMBER=number) 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 #NEWINSTANCE(OBJ=tt; HEAD=NUMBER; DATA=t1) 239 tt = cls(NUMBER, t1) 240 #ADD_TERM_VALUE_DICT(DICT=pairs; DICT_GET=pairs_get; TERM=tt; VALUE=c1; SIGN=+; USIGN=) 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 #MUL_FACTOR_VALUE_DICT(DICT=pairs; DICT_GET=pairs_get; FACTOR=obj; VALUE=1; SIGN=+; USIGN=; NUMBER=number) 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 #NEWINSTANCE(OBJ=tt; HEAD=NUMBER; DATA=t1) 272 tt = cls(NUMBER, t1) 273 #ADD_TERM_VALUE_DICT(DICT=pairs; DICT_GET=pairs_get; TERM=tt; VALUE=c1; SIGN=+; USIGN=) 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 #MUL_FACTOR_VALUE_DICT(DICT=pairs; DICT_GET=pairs_get; FACTOR=t; VALUE=c; SIGN=+; USIGN=; NUMBER=number) 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 #NEWINSTANCE(OBJ=tt; HEAD=NUMBER; DATA=t1) 307 tt = cls(NUMBER, t1) 308 #ADD_TERM_VALUE_DICT(DICT=pairs; DICT_GET=pairs_get; TERM=tt; VALUE=c1; SIGN=+; USIGN=) 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 #MUL_FACTOR_VALUE_DICT(DICT=pairs; DICT_GET=pairs_get; FACTOR=obj; VALUE=1; SIGN=+; USIGN=; NUMBER=number) 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 #NEWINSTANCE(OBJ=tt; HEAD=NUMBER; DATA=t1) 341 tt = cls(NUMBER, t1) 342 #ADD_TERM_VALUE_DICT(DICT=pairs; DICT_GET=pairs_get; TERM=tt; VALUE=c1; SIGN=+; USIGN=) 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 #ELIF_CHECK_NUMBER(T=tobj) 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
364 -def inplace_mul2(cls, obj, exp, pairs, pairs_get, try_power=try_power, NUMBER=NUMBER):
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 #MUL_FACTOR_VALUE_DICT(DICT=pairs; DICT_GET=pairs_get; FACTOR=t; VALUE=exp; SIGN=+; USIGN=; NUMBER=number) 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 #NEWINSTANCE(OBJ=tt; HEAD=NUMBER; DATA=t1) 391 tt = cls(NUMBER, t1) 392 #ADD_TERM_VALUE_DICT(DICT=pairs; DICT_GET=pairs_get; TERM=tt; VALUE=c1; SIGN=+; USIGN=) 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 #MUL_FACTOR_VALUE_DICT(DICT=pairs; DICT_GET=pairs_get; FACTOR=obj; VALUE=exp; SIGN=+; USIGN=; NUMBER=number) 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 #NEWINSTANCE(OBJ=tt; HEAD=NUMBER; DATA=t1) 424 tt = cls(NUMBER, t1) 425 #ADD_TERM_VALUE_DICT(DICT=pairs; DICT_GET=pairs_get; TERM=tt; VALUE=c1; SIGN=+; USIGN=) 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 #MUL_FACTOR_VALUE_DICT(DICT=pairs; DICT_GET=pairs_get; FACTOR=t; VALUE=c*exp; SIGN=+; USIGN=; NUMBER=number) 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 #NEWINSTANCE(OBJ=tt; HEAD=NUMBER; DATA=t1) 459 tt = cls(NUMBER, t1) 460 #ADD_TERM_VALUE_DICT(DICT=pairs; DICT_GET=pairs_get; TERM=tt; VALUE=c1; SIGN=+; USIGN=) 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 #MUL_FACTOR_VALUE_DICT(DICT=pairs; DICT_GET=pairs_get; FACTOR=obj; VALUE=exp; SIGN=+; USIGN=; NUMBER=number) 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 #NEWINSTANCE(OBJ=tt; HEAD=NUMBER; DATA=t1) 493 tt = cls(NUMBER, t1) 494 #ADD_TERM_VALUE_DICT(DICT=pairs; DICT_GET=pairs_get; TERM=tt; VALUE=c1; SIGN=+; USIGN=) 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 #ELIF_CHECK_NUMBER(T=tobj) 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