From a6d6235203a86cb555e1dce2cc0be1d95dbcfe9c Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Sun, 28 Jun 2015 18:53:57 -0500
Subject: [PATCH] Don't assume quad-precision is available (mainly for numpypy)

---
 loopy/frontend/fortran/__init__.py   | 6 ++++++
 loopy/frontend/fortran/translator.py | 6 ++++--
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/loopy/frontend/fortran/__init__.py b/loopy/frontend/fortran/__init__.py
index 2626069a0..efdd07e8a 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 eaa2de681..97005cab6 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
-- 
GitLab