diff --git a/loopy/frontend/fortran/__init__.py b/loopy/frontend/fortran/__init__.py index 2626069a0551a7e11c7b8703965423be8011860c..efdd07e8ab1f0ab32461f67c12920694b8eb6a26 100644 --- a/loopy/frontend/fortran/__init__.py +++ b/loopy/frontend/fortran/__init__.py @@ -82,6 +82,9 @@ def _extract_loopy_lines(source): raise LoopyError("non-comment source line in loopy block") remaining_lines.append(l) + + # Preserves line numbers in loopy code, for debuggability + loopy_lines.append("# "+l) continue cmt = comment_match.group(1) @@ -103,6 +106,9 @@ def _extract_loopy_lines(source): else: remaining_lines.append(l) + # Preserves line numbers in loopy code, for debuggability + loopy_lines.append("# "+l) + return "\n".join(remaining_lines), "\n".join(loopy_lines) diff --git a/loopy/frontend/fortran/translator.py b/loopy/frontend/fortran/translator.py index eaa2de68166644799b873398e0804fe10ceac772..97005cab607f1c1db5341ca3e29bd80ec7e761c1 100644 --- a/loopy/frontend/fortran/translator.py +++ b/loopy/frontend/fortran/translator.py @@ -300,16 +300,18 @@ class F2LoopyTranslator(FTreeWalkerBase): TYPE_MAP = { ("real", "4"): np.float32, ("real", "8"): np.float64, - ("real", "16"): np.float128, ("complex", "8"): np.complex64, ("complex", "16"): np.complex128, - ("complex", "32"): np.complex256, ("integer", ""): np.int32, ("integer", "4"): np.int32, ("integer", "8"): np.int64, } + if hasattr(np, "float128"): + TYPE_MAP[("real", "16")] = np.float128 + if hasattr(np, "complex256"): + TYPE_MAP[("complex", "32")] = np.complex256 def dtype_from_stmt(self, stmt): length, kind = stmt.selector