code: public static double dotSparse(SparseNumberVector v1, SparseNumberVector v2) {
      double dot = 0.;
      int i1 = v1.iter(), i2 = v2.iter();
      while(v1.iterValid(i1) && v2.iterValid(i2)) {
        final int d1 = v1.iterDim(i1), d2 = v2.iterDim(i2);
        if(d1 < d2) {
          i1 = v1.iterAdvance(i1);
        }
        else if(d2 < d1) {
          i2 = v2.iterAdvance(i2);
        }
        else { // d1 == d2
          dot += v1.iterDoubleValue(i1) * v2.iterDoubleValue(i2);
          i1 = v1.iterAdvance(i1);
          i2 = v2.iterAdvance(i2);
        }
      }
      return dot;
    }
docs: Compute the dot product for two sparse vectors.
  
  @param v1 First vector
  @param v2 Second vector
  @return dot product