   xj = coords[j].x;
   yj = coords[j].y;
 
-  xd = pow((xi - xj), 2.0);
-  yd = pow((yi - yj), 2.0);
+  xd = (xi - xj) * (xi - xj);
+  yd = (yi - yj) * (yi - yj);
 
   return (int) floor(sqrt(xd + yd) + 0.5);
 }

  register unsigned int iter = iterations;
  register int change;
  register struct best_2opt best = {0,0,999999};

  cities = num_cities;


}

__device__ int geo(int i, int j, struct city_coords *coords) {
  register int deg;
  register float xi, yi, xj, yj;
  register double PI = 3.141492;
  register double min, latitude_i, latitude_j, longitude_i, longitude_j, RRR, q1, q2, q3;

  // matrix[i] - 1 convert the 1 based matrix to the 0 based crap
  xi = coords[i].x;
