diff --git a/pymbolic/compiler.py b/pymbolic/compiler.py
index db5fec38884504455b5bd7731c325f265fc2bd83..cec0d08e879053442ac731431b7103a5727dea36 100644
--- a/pymbolic/compiler.py
+++ b/pymbolic/compiler.py
@@ -6,9 +6,26 @@ from pymbolic.mapper.stringifier import StringifyMapper, PREC_NONE, PREC_SUM, PR
 
 
 
+def _constant_mapper(c):
+    # work around numpy bug #1137 (locale-sensitive repr)
+    # http://projects.scipy.org/numpy/ticket/1137
+    try:
+        import numpy
+    except ImportError:
+        pass
+    else:
+        if isinstance(c, numpy.floating):
+            c = float(c)
+        elif isinstance(c, numpy.complexfloating):
+            c = complex(c)
+
+    return repr(c)
+
+
 class CompileMapper(StringifyMapper):
     def __init__(self):
-        StringifyMapper.__init__(self, constant_mapper=repr)
+        StringifyMapper.__init__(self, 
+                constant_mapper=_constant_mapper)
 
     def map_polynomial(self, expr, enclosing_prec):
         # Use Horner's scheme to evaluate the polynomial