                     virialzz +=  dx.z * dx.z * force_div2r;
                     }
 
-                // add up the force vector components (FLOPS: 7)
+                // add up the force vector components
                 force.x += dx.x * force_divr;
                 force.y += dx.y * force_divr;
                 force.z += dx.z * force_divr;

                    {
                    if (rsq >= ronsq && rsq < rcutsq)
                        {
                        // Implement XPLOR smoothing (FLOPS: 16)
                        Scalar old_pair_eng = pair_eng;
                        Scalar old_force_divr = force_divr;


        for (int neigh_idx = threadIdx.x%tpp; neigh_idx < n_neigh; neigh_idx+=tpp)
            {
                {
                // read the current neighbor index
                cur_j = next_j;
                if (neigh_idx+tpp < n_neigh)
                    {
                    next_j = __ldg(d_nlist + my_head + neigh_idx+tpp);
                    }
                // get the neighbor's position
                Scalar4 postypej = __ldg(d_pos + cur_j);
                Scalar3 posj = make_scalar3(postypej.x, postypej.y, postypej.z);

                Scalar dj = Scalar(0.0);
                if (evaluator::needsDiameter())
                    dj = __ldg(d_diameter + cur_j);

                Scalar qj = Scalar(0.0);
                if (evaluator::needsCharge())
                    qj = __ldg(d_charge + cur_j);

                // calculate dr (with periodic boundary conditions)
                Scalar3 dx = posi - posj;

                // apply periodic boundary conditions
                dx = box.minImage(dx);

                // calculate r squared
                Scalar rsq = dot(dx, dx);

                // access the per type pair parameters
