Skip to content
Snippets Groups Projects

Add CustomSympyPrinter._print_Sum

Closed Stephan Seitz requested to merge seitz/pystencils:print_sympy_sum into master
1 unresolved thread
1 file
+ 24
0
Compare changes
  • Side-by-side
  • Inline
@@ -384,6 +384,30 @@ class CustomSympyPrinter(CCodePrinter):
@@ -384,6 +384,30 @@ class CustomSympyPrinter(CCodePrinter):
else:
else:
return res
return res
 
def _print_Sum(self, expr):
 
template = jinja2.Template(
 
"""[&]() {
 
{{dtype}} sum = ({{dtype}}) 0;
 
for ( {{iterator_dtype}} {{var}} = {{start}}; {{condition}}; {{var}} += {{increment}} ) {
 
sum += {{expr}};
 
}
 
return sum;
 
}()""")
 
var = expr.limits[0][0]
 
start = expr.limits[0][1]
 
end = expr.limits[0][2]
 
code = template.render(
 
dtype='float',
Please register or sign in to reply
 
iterator_dtype='int',
 
var=self._print(var),
 
start=self._print(start),
 
end=self._print(end),
 
expr=self._print(expr.function),
 
increment=str(1),
 
condition=self._print(var) + ' <= ' + self._print(end) # if start < end else '>='
 
)
 
return code
 
_print_Max = C89CodePrinter._print_Max
_print_Max = C89CodePrinter._print_Max
_print_Min = C89CodePrinter._print_Min
_print_Min = C89CodePrinter._print_Min
Loading