 // Attraction on edges
 __device__ void fa2Attraction(unsigned int gid, unsigned int numvertices,
     float* vxLocs, float* vyLocs, int numedges, unsigned int* edgeSources,
-    unsigned int* edgeTargets, float* forceX, float* forceY,
-    unsigned int* deg);
+    unsigned int* edgeTargets, float* forceX, float* forceY, unsigned int* deg);
 
 __device__ void fa2UpdateSwing(unsigned int gid, unsigned int numvertices,
     float* forceX, float* forceY, float* oldForceX, float* oldForceY,

  }
}

// FIXME Broken.
__device__ void fa2Attraction(unsigned int gid, unsigned int numvertices,
    float* vxLocs, float* vyLocs, int numedges, int* edgeSources,
    int* edgeTargets, float* forceX, float* forceY, unsigned int* deg)
{
  if (gid < numedges)
  {
    int v1Index = edgeSources[gid];
    int v2Index = edgeTargets[gid];

    float vx1 = vxLocs[v1Index];
    float vy1 = vyLocs[v1Index];
    float vx2 = vxLocs[v2Index];
    float vy2 = vyLocs[v2Index];

    vectorSubtract(&vx2, &vy2, vx1, vy1);
    vectorMultiply(&vx2, &vy2, 0.5);


    vectorAdd(&forceX[v1Index], &forceY[v1Index], vx2, vy2);
  }
}


    // Repulsion between vertices
    fa2Repulsion(gid, numvertices, vxLocs, vyLocs, forceX, forceY, numNeighbours);
    // Attraction on edges
    fa2Attraction(gid, numvertices, vxLocs, vyLocs, numedges, edgeSources,
        edgeTargets, forceX, forceY, numNeighbours);

    // Calculate speed of vertices.
    // Update swing of vertices.
