From 843aa041cdabca2b2aafe4247e2c9991f877b7cc Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Thu, 10 Jun 2021 12:39:26 -0500 Subject: [PATCH] Implement code generation for Fortran comparisons --- dagrt/codegen/expressions.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/dagrt/codegen/expressions.py b/dagrt/codegen/expressions.py index 8a8b8d2..f0bb2ba 100644 --- a/dagrt/codegen/expressions.py +++ b/dagrt/codegen/expressions.py @@ -123,6 +123,24 @@ def map_logical_and(self, expr, enclosing_prec): " .and. ", expr.children, PREC_LOGICAL_AND), enclosing_prec, PREC_LOGICAL_AND) + _comparison_to_fortran = { + "==": ".eq.", + "!=": ".ne.", + "<": ".lt.", + ">": ".gt.", + "<=": ".le.", + ">=": ".ge.", + } + + def map_comparison(self, expr, enclosing_prec, *args, **kwargs): + from pymbolic.mapper.stringifier import PREC_COMPARISON + return self.parenthesize_if_needed( + self.format("%s %s %s", + self.rec(expr.left, PREC_COMPARISON, *args, **kwargs), + self._comparison_to_fortran[expr.operator], + self.rec(expr.right, PREC_COMPARISON, *args, **kwargs)), + enclosing_prec, PREC_COMPARISON) + # }}}