docs: public void put(double[] val) {
      assert (val.length == mean.length);
      final double nwsum = wsum + 1.;
      // Compute new means
      for(int i = 0; i < mean.length; i++) {
        final double delta = val[i] - mean[i];
        nmea[i] = mean[i] + delta / nwsum;
      }
      // Update covariance matrix
      for(int i = 0; i < mean.length; i++) {
        for(int j = i; j < mean.length; j++) {
          // We DO want to use the new mean once and the old mean once!
          // It does not matter which one is which.
          double delta = (val[i] - nmea[i]) * (val[j] - mean[j]);
          elements[i][j] = elements[i][j] + delta;
          // Optimize via symmetry
          if(i != j) {
            elements[j][i] = elements[j][i] + delta;
          }
        }
      }
  
      // Use new values.
      wsum = nwsum;
      System.arraycopy(nmea, 0, mean, 0, nmea.length);
    }