   return (a.x == b.x) && (a.y == b.y);
 }
 
-// float-float2
-static inline __host__ __device__ float2 operator-(float a, float2 b)
-{
-  return make_float2(a - b.x, a - b.y);
-}
-
 inline __device__ __host__ float2 sqr(float2 a)
 {
   return a*a;

  return (a.x == b.x) && (a.y == b.y) && (a.z == b.z) && (a.w == b.w);
}

// elementwise multiply
static inline __host__ __device__ float4 operator*(float4 a, float4 b)
{
    return make_float4(a.x * b.x, a.y * b.y, a.z * b.z,  a.w * b.w);
}

inline __device__ __host__ float4 sqr(float4 a)
{
  return a*a;

{
  return (a.x == b.x) && (a.y == b.y) && (a.z == b.z);
}

inline __device__ __host__ float3 sqr(float3 a)
{
