 
     thrust::device_vector<type> d_p1 = h_p1;
     thrust::device_vector<type> d_result(n);
+
+#if THRUST_DEVICE_SYSTEM == THRUST_DEVICE_SYSTEM_CUDA
+    if(const CUDATestDriver *driver = dynamic_cast<const CUDATestDriver*>(&UnitTestDriver::s_driver()))
+    {
+      if(sizeof(T) == sizeof(double) && driver->current_device_architecture() < 130)
+      {
+        KNOWN_FAILURE;
+      } // end if
+    } // end if
+#endif
 
     thrust::transform(h_p1.begin(), h_p1.end(), h_result.begin(), complex_plane_functor());
     thrust::transform(d_p1.begin(), d_p1.end(), d_result.begin(), complex_plane_functor());    

    thrust::device_vector<type> d_p1 = h_p1;
    thrust::device_vector<type> d_p2 = h_p2;
    thrust::device_vector<type> d_result(n);

    thrust::transform(h_p1.begin(), h_p1.end(), h_p2.begin(), h_result.begin(), basic_arithmetic_functor());
    thrust::transform(d_p1.begin(), d_p1.end(), d_p2.begin(), d_result.begin(), basic_arithmetic_functor());    

    thrust::device_vector<type> d_p1 = h_p1;
    thrust::device_vector<type> d_result(n);

#if THRUST_DEVICE_SYSTEM == THRUST_DEVICE_SYSTEM_CUDA
    if(const CUDATestDriver *driver = dynamic_cast<const CUDATestDriver*>(&UnitTestDriver::s_driver()))
    {
      if(sizeof(T) == sizeof(double) && driver->current_device_architecture() < 130)
      {
        KNOWN_FAILURE;
      } // end if
    } // end if
#endif

    thrust::transform(h_p1.begin(), h_p1.end(), h_result.begin(), exp_functor());
    thrust::transform(d_p1.begin(), d_p1.end(), d_result.begin(), exp_functor());    
    ASSERT_ALMOST_EQUAL(h_result, d_result);
