 				#ifdef SINGLE_PRECISION
                 force = tex1Dfetch(rigid_data_force_tex, idx_body);
                 vel = tex1Dfetch(rigid_data_vel_tex, idx_body);
+				#elif defined ENABLE_TEXTURES
+				force = fetch_double4(rigid_data_force_tex, idx_body);
+				vel = fetch_double4(rigid_data_vel_tex, idx_body);
 				#else
 				force = rdata_force[idx_body];
 				vel = rdata_vel[idx_body];

texture<Scalar4, 1, cudaReadModeElementType> rigid_data_force_tex;
//! The texture for reading the rigid data torque array
texture<Scalar4, 1, cudaReadModeElementType> rigid_data_torque_tex;

//! The texture for reading the net force array
texture<Scalar4, 1, cudaReadModeElementType> net_force_tex;
#endif

//! Shared memory used in reducing sums

    dim3 grid(num_blocks, 1, 1);
    dim3 threads(block_size, 1, 1);
    
    #ifdef ENABLE_TEXTURES
	cudaError_t error = cudaBindTexture(0, rigid_data_body_indices_tex, rdata.body_indices, sizeof(Scalar) * n_group_bodies);
    if (error != cudaSuccess)
        return error;
