Skip to content

Commit 6e5a07c

Browse files
eric-wieserutensil
authored andcommitted
Unpack tuples by name for clarity (#190)
This makes Sdop a little more consistent with Dop
1 parent fce2622 commit 6e5a07c

File tree

1 file changed

+15
-15
lines changed

1 file changed

+15
-15
lines changed

galgebra/mv.py

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1594,15 +1594,15 @@ def __call__(self, arg):
15941594
terms = []
15951595
for (coef, pdiff) in self.terms:
15961596
new_terms = pdiff(arg.terms)
1597-
new_terms = [ (coef * x[0], x[1]) for x in new_terms]
1597+
new_terms = [(coef * c, p) for c, p in new_terms]
15981598
terms += new_terms
15991599
return Sdop(terms, ga=self.Ga)
16001600
else:
1601-
return sum([x[0] * x[1](arg) for x in self.terms], S(0))
1601+
return sum([coef * pdiff(arg) for coef, pdiff in self.terms], S(0))
16021602

16031603

16041604
def __neg__(self):
1605-
return Sdop([(-x[0], x[1]) for x in self.terms], ga=self.Ga)
1605+
return Sdop([(-coef, pdiff) for coef, pdiff in self.terms], ga=self.Ga)
16061606

16071607
@staticmethod
16081608
def Add(sdop1, sdop2):
@@ -1658,15 +1658,15 @@ def __mul__(self, sdopr):
16581658
terms = []
16591659
for (coef, pdiff) in sdopl.terms:
16601660
Dsdopl = pdiff(sdopr.terms) # list of terms
1661-
Dsdopl = [(coef * x[0], x[1]) for x in Dsdopl]
1661+
Dsdopl = [(coef * c, p) for c, p in Dsdopl]
16621662
terms += Dsdopl
16631663
product = Sdop(terms, ga=sdopl.Ga)
16641664
return Sdop.consolidate_coefs(product)
16651665
else: # sdopr is a scalar or a multivector
1666-
return sum([x[0] * x[1](sdopr) for x in sdopl.terms], S(0)) # returns scalar
1666+
return sum([coef * pdiff(sdopr) for coef, pdiff in sdopl.terms], S(0)) # returns scalar
16671667

1668-
def __rmul__(self,sdop):
1669-
terms = [(sdop * x[0], x[1]) for x in self.terms]
1668+
def __rmul__(self, sdop):
1669+
terms = [(sdop * coef, pdiff) for coef, pdiff in self.terms]
16701670
return Sdop(terms, ga=self.Ga)
16711671

16721672
#################### Partial Derivative Operator Class #################
@@ -2066,14 +2066,14 @@ def Mul(dopl, dopr, op='*'): # General multiplication of Dop's
20662066
terms = []
20672067
for (coef, pdiff) in dopl.terms: #Apply each dopl term to dopr
20682068
Ddopl = pdiff(dopr.terms) # list of terms
2069-
Ddopl = [(Mv.Mul(coef, x[0], op=op), x[1]) for x in Ddopl]
2069+
Ddopl = [(Mv.Mul(coef, c, op=op), p) for c, p in Ddopl]
20702070
terms += Ddopl
20712071
product = Dop(terms, ga=ga)
20722072
else: # dopl and dopr operate on left argument
20732073
terms = []
20742074
for (coef, pdiff) in dopr.terms:
20752075
Ddopr = pdiff(dopl.terms) # list of terms
2076-
Ddopr = [(Mv.Mul(x[0], coef, op=op), x[1]) for x in Ddopr]
2076+
Ddopr = [(Mv.Mul(c, coef, op=op), p) for c, p in Ddopr]
20772077
terms += Ddopr
20782078
product = Dop(terms, ga=ga, cmpflg=True)
20792079
else:
@@ -2085,20 +2085,20 @@ def Mul(dopl, dopr, op='*'): # General multiplication of Dop's
20852085
ga = dopl.Ga
20862086

20872087
if not dopr.cmpflg: # dopr operates on right argument
2088-
terms = [(Mv.Mul(dopl, x[0], op=op), x[1]) for x in dopr.terms]
2088+
terms = [(Mv.Mul(dopl, coef, op=op), pdiff) for coef, pdiff in dopr.terms]
20892089
return Dop(terms, ga=ga) # returns Dop
20902090
else:
2091-
product = sum([Mv.Mul(x[1](dopl), x[0], op=op) for x in dopr.terms], Mv(0, ga=ga)) # returns multivector
2091+
product = sum([Mv.Mul(pdiff(dopl), coef, op=op) for coef, pdiff in dopr.terms], Mv(0, ga=ga)) # returns multivector
20922092
else: # dopr is a scalar or a multivector
20932093

20942094
if isinstance(dopr, Mv) and dopl.Ga != dopr.Ga:
20952095
raise ValueError('In Dop.Mul Dop arguments are not from same geometric algebra')
20962096
ga = dopl.Ga
20972097

20982098
if not dopl.cmpflg: # dopl operates on right argument
2099-
return sum([Mv.Mul(x[0], x[1](dopr), op=op) for x in dopl.terms], Mv(0, ga=ga)) # returns multivector
2099+
return sum([Mv.Mul(coef, pdiff(dopr), op=op) for coef, pdiff in dopl.terms], Mv(0, ga=ga)) # returns multivector
21002100
else:
2101-
terms = [(Mv.Mul(x[0], dopr, op=op), x[1]) for x in dopl.terms]
2101+
terms = [(Mv.Mul(coef, dopr, op=op), pdiff) for coef, pdiff in dopl.terms]
21022102
product = Dop(terms, ga=dopl.Ga, cmpflg=True) # returns Dop complement
21032103
if isinstance(product, Dop):
21042104
product = product.consolidate_coefs()
@@ -2177,8 +2177,8 @@ def _repr_latex_(self):
21772177
return latex_str
21782178

21792179
def is_scalar(self):
2180-
for x in self.terms:
2181-
if isinstance(x[0], Mv) and not x[0].is_scalar():
2180+
for coef, pdiff in self.terms:
2181+
if isinstance(coef, Mv) and not coef.is_scalar():
21822182
return False
21832183
return True
21842184

0 commit comments

Comments
 (0)