docs: public double[] dot(Vec x, List<Double> qi)
      {
          double[] dots = new double[points.size()];
          final List<Vec> vecs = points.get(0).vecs;
          final List<Double> cache = points.get(0).kernelAccel;
          for(int i = 0; i < vecs.size(); i++)
          {
              double k_ix = k.eval(i, x, qi, vecs, cache);
              for(int j = 0; j < points.size(); j++)
              {
                  double alpha = points.get(j).alpha.getD(i);
                  if(alpha != 0)
                      dots[j] += k_ix*alpha;
              }
          }
          return dots;
      }