@@ -198,8 +198,7 @@ def _validate_deriv_order(deriv_order, dims):
198198 """
199199 if deriv_order is None :
200200 deriv_order = (1 ,)* len (dims )
201- if not isinstance (deriv_order , Iterable ):
202- deriv_order = as_tuple (deriv_order )
201+ deriv_order = as_tuple (deriv_order )
203202 if len (deriv_order ) != len (dims ):
204203 raise ValueError (
205204 'Length of `deriv_order` does not match the length of dimensions'
@@ -599,7 +598,7 @@ def _eval_expand_nest(self, **hints):
599598 # actually expanded if derivatives are incompatible.
600599 # The nested derivative is evaluated by:
601600 # 1. Chaining together the variables with which to differentiate wrt
602- new_expr = self .expr .args [ 0 ]
601+ new_expr = self .expr .expr
603602 new_dims = [
604603 (d , ii )
605604 for d , ii in zip (
@@ -696,21 +695,20 @@ def _eval_expand_product_rule(self, **hints):
696695 more difficult to implement.
697696 """
698697 if self .expr .is_Mul and len (self .dims ) == 1 :
698+ args = self .expr .args
699699 if self .deriv_order == (1 ,):
700700 return Add (* [
701- Mul (* self . expr . args [:ii ], self .func (m ), * self . expr . args [ii + 1 :])
702- for ii , m in enumerate (self . expr . args )
701+ Mul (* args [:ii ], self .func (m ), * args [ii + 1 :])
702+ for ii , m in enumerate (args )
703703 ])
704- elif self .deriv_order == (2 ,) and len (self .expr .args ) == 2 :
705- return Add (
706- Mul (self .func (self .expr .args [0 ]), self .expr .args [1 ]),
707- Mul (
708- 2 ,
709- self .func (self .expr .args [0 ], deriv_order = 1 ),
710- self .func (self .expr .args [1 ], deriv_order = 1 )
711- ),
712- Mul (self .expr .args [0 ], self .func (self .expr .args [1 ]))
713- )
704+ elif self .deriv_order == (2 ,) and len (args ) == 2 :
705+ return args [1 ]* self .func (args [0 ]) + \
706+ 2 * self .func (
707+ args [0 ], deriv_order = 1
708+ )* self .func (
709+ args [1 ], deriv_order = 1
710+ ) + \
711+ args [0 ]* self .func (args [1 ])
714712 else :
715713 # Note: It _is_ possible to implement the product rule for many
716714 # more cases, but the number of terms in the resultant expression
0 commit comments