Skip to content
Snippets Groups Projects
Commit 10808308 authored by Andreas Klöckner's avatar Andreas Klöckner
Browse files

Merge branch 'l2p' into 'master'

Help CSE in l2p

See merge request !104
parents 55489f3d 72cf4849
No related branches found
No related tags found
1 merge request!104Help CSE in l2p
Pipeline #15009 failed
...@@ -133,7 +133,7 @@ class VolumeTaylorLocalExpansionBase(LocalExpansionBase): ...@@ -133,7 +133,7 @@ class VolumeTaylorLocalExpansionBase(LocalExpansionBase):
bvec = bvec * rscale**-1 bvec = bvec * rscale**-1
result = sum( result = sum(
coeff coeff
* mi_power(bvec, mi) * mi_power(bvec, mi, evaluate=False)
/ mi_factorial(mi) / mi_factorial(mi)
for coeff, mi in zip( for coeff, mi in zip(
evaluated_coeffs, self.get_full_coefficient_identifiers())) evaluated_coeffs, self.get_full_coefficient_identifiers()))
......
...@@ -111,6 +111,14 @@ if not have_unevaluated_expr: ...@@ -111,6 +111,14 @@ if not have_unevaluated_expr:
return x return x
if USE_SYMENGINE:
def unevaluated_pow(a, b):
return sym.Pow(a, b)
else:
def unevaluated_pow(a, b):
return sym.Pow(a, b, evaluate=False)
# {{{ debugging of sympy CSE via Maxima # {{{ debugging of sympy CSE via Maxima
class _DerivativeKiller(IdentityMapperBase): class _DerivativeKiller(IdentityMapperBase):
......
...@@ -55,10 +55,15 @@ def mi_factorial(mi): ...@@ -55,10 +55,15 @@ def mi_factorial(mi):
return result return result
def mi_power(vector, mi): def mi_power(vector, mi, evaluate=True):
result = 1 result = 1
for mi_i, vec_i in zip(mi, vector): for mi_i, vec_i in zip(mi, vector):
result *= vec_i**mi_i if mi_i == 1:
result *= vec_i
elif evaluate:
result *= vec_i**mi_i
else:
result *= sym.unevaluated_pow(vec_i, mi_i)
return result return result
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment