Skip to content

Commit d94f59e

Browse files
Merge pull request #424 from OceanParcels/JIT-support-power-operator
Adding support for power ('**') operator in JIT mode
2 parents 857c7f2 + 12975aa commit d94f59e

2 files changed

Lines changed: 8 additions & 1 deletion

File tree

parcels/codegenerator.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -538,7 +538,10 @@ def visit_BinOp(self, node):
538538
self.visit(node.left)
539539
self.visit(node.op)
540540
self.visit(node.right)
541-
node.ccode = "(%s %s %s)" % (node.left.ccode, node.op.ccode, node.right.ccode)
541+
if node.op.ccode == 'pow': # catching '**' pow statements
542+
node.ccode = "pow(%s, %s)" % (node.left.ccode, node.right.ccode)
543+
else:
544+
node.ccode = "(%s %s %s)" % (node.left.ccode, node.op.ccode, node.right.ccode)
542545
node.s_print = True
543546

544547
def visit_Add(self, node):
@@ -562,6 +565,9 @@ def visit_Div(self, node):
562565
def visit_Mod(self, node):
563566
node.ccode = "%"
564567

568+
def visit_Pow(self, node):
569+
node.ccode = "pow"
570+
565571
def visit_Num(self, node):
566572
node.ccode = str(node.n)
567573

tests/test_kernel_language.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ class TestParticle(ptype[mode]):
5353
('Sub', '6. - 2.', 4),
5454
('Mul', '3. * 5.', 15),
5555
('Div', '24. / 4.', 6),
56+
('Pow', '2 ** 3', 8),
5657
])
5758
def test_expression_float(fieldset, mode, name, expr, result, npart=10):
5859
""" Test basic arithmetic expressions """

0 commit comments

Comments
 (0)