   dist_block = __clz(__brev(flags));
 
   const int distance = __clz(flags & lanemask_le()) + laneId - 31;
-  shmem[laneId] = inclusive_segscan_warp<WARP_SIZE2>(value, distance);
+  shmem[laneId] = inclusive_segscan_warp_step<WARP_SIZE2>(value, distance);
   const int val = shmem[WARP_SIZE - 1];
   return val;
 }

         ***/


        int n_total = calc_prefix(prefix,  nchild);              // inclusive scan to compute memory offset of each child (return total # of children)
        int offset  = prefix[laneId];
        offset     += n_offset - nchild;                                  // convert inclusive into exclusive scan for referencing purpose


        /******       APPROX          ******/
        /***********************************/

        /* binary prefix sum */
        flag = !split && use_node;
        n_total = warp_exclusive_scan(flag, offset);
        if (flag) approxM[n_approx + offset] = node;

        n_approx += n_total;

        while (n_approx >= DIM) 
