Since OpenCL is safe and the CUDA backend has a failsafe now, this is not needed anymore.
Replace mul and add by mad and make them signed (even though this might cause problems for big arrays (as in 2G or more), it makes all others work on sm_2x+.