diff --git a/pyopencl/characterize.py b/pyopencl/characterize.py
new file mode 100644
index 0000000000000000000000000000000000000000..b323047132b5754a718bd783d127bca8d0b41192
--- /dev/null
+++ b/pyopencl/characterize.py
@@ -0,0 +1,5 @@
+def has_double_support(dev):
+    for ext in dev.extensions.split(" "):
+        if ext == "cl_khr_fp64":
+            return True
+    return False
diff --git a/pyopencl/reduction.py b/pyopencl/reduction.py
index 85528b1903f02e1f085d3e0e23d2d63c73fb5608..94a266e4b4e60241c9a879e044a7fadcce4ed58d 100644
--- a/pyopencl/reduction.py
+++ b/pyopencl/reduction.py
@@ -180,7 +180,7 @@ def  get_reduction_source(
 
     from mako.template import Template
     from pytools import all
-    from pyopencl.tools import has_double_support
+    from pyopencl.characterize import has_double_support
     src = str(Template(KERNEL).render(
         out_type=out_type,
         arguments=arguments,
diff --git a/pyopencl/tools.py b/pyopencl/tools.py
index 41b355e950cf5a22804a75650db0ae0368c89b4e..7b59d4fcd7fb3468bd2b6f96e9212530a520f274 100644
--- a/pyopencl/tools.py
+++ b/pyopencl/tools.py
@@ -249,15 +249,6 @@ def parse_c_arg(c_arg):
 
 
 
-def has_double_support(dev):
-    for ext in dev.extensions.split(" "):
-        if ext == "cl_khr_fp64":
-            return True
-    return False
-
-
-
-
 def get_gl_sharing_context_properties():
     ctx_props = cl.context_properties
 
diff --git a/test/test_array.py b/test/test_array.py
index adabdcfc8780e655b83faafa14b233b409e673c4..2ac816b4c4df278bd8b323ee28918d4b6854e0bf 100644
--- a/test/test_array.py
+++ b/test/test_array.py
@@ -19,7 +19,7 @@ if have_cl():
     import pyopencl as cl
     from pyopencl.tools import pytest_generate_tests_for_pyopencl \
             as pytest_generate_tests
-    from pyopencl.tools import has_double_support
+    from pyopencl.characterize import has_double_support
 
 
 
diff --git a/test/test_clmath.py b/test/test_clmath.py
index b8f648de08e83a5711ed372f7ba6250a92176ec9..8e4a60f5b33a83e7156e9ecc7fb5f2e53edfcd82 100644
--- a/test/test_clmath.py
+++ b/test/test_clmath.py
@@ -16,6 +16,7 @@ if have_cl():
     import pyopencl.clmath as clmath
     from pyopencl.tools import pytest_generate_tests_for_pyopencl \
             as pytest_generate_tests
+    from pyopencl.characterize import has_double_support
 
 
 
@@ -26,15 +27,6 @@ sizes = [10, 128, 1<<10, 1<<11, 1<<13]
 
 
 
-def has_double_support(dev):
-    for ext in dev.extensions.split(" "):
-        if ext == "cl_khr_fp64":
-            return True
-    return False
-
-
-
-
 numpy_func_names = {
         "asin": "arcsin",
         "acos": "arccos",