docs: protected double wDot(Vec x)
      {
          double a;
          if (reScale)
          {
              a = bias;
              if(!w.isSparse())//w is dense, jsut iterate over x
              {
                  for(IndexValue iv : x)
                  {
                      int j = iv.getIndex();
                      double xV = iv.getValue() - obvMin[j];
                      xV *= (maxScaled - minScaled) / (obvMax[j] - obvMin[j]);
                      xV += minScaled;
                      a += w.get(j)*xV;
                  }
                  return a;
              }
              //Compute the dot and rescale w/o extra spacein a sprase freindly way
              Iterator<IndexValue> wIter = w.getNonZeroIterator();
              Iterator<IndexValue> xIter = x.getNonZeroIterator();
              
  
              if(!wIter.hasNext() || !xIter.hasNext())
                  return a;
  
              IndexValue wIV = wIter.next();
              IndexValue xIV = xIter.next();
              do
              {
                  if (wIV.getIndex() == xIV.getIndex())
                  {
                      int j = xIV.getIndex();
                      double xV = xIV.getValue() - obvMin[j];
                      xV *= (maxScaled - minScaled) / (obvMax[j] - obvMin[j]);
                      xV += minScaled;
                      //Scaled, now add to result
                      a += wIV.getValue() * xV;
  
                      if (!wIter.hasNext() || !xIter.hasNext())
                          break;
                      wIV = wIter.next();
                      xIV = xIter.next();
                  }
                  else if (wIV.getIndex() < xIV.getIndex())
                      if (wIter.hasNext())
                          wIV = wIter.next();
                      else
                          break;
                  else if (wIV.getIndex() > xIV.getIndex())
                      if (xIter.hasNext())
                          xIV = xIter.next();
                      else
                          break;
              }
              while (wIV != null && xIV != null);
          }
          else
              a = w.dot(x) + bias;
          return a;
      }