function accumulator1( v ) {
		var covij;
		var denom;
		var rdx;
		var cij;
		var m;
		var n;
		var r;
		var i;
		var j;
		if ( arguments.length === 0 ) {
			if ( N === 0 ) {
				return null;
			}
			return cov;
		}
		if ( !isVectorLike( v ) ) {
			throw new TypeError( format( 'invalid argument. Must provide a one-dimensional ndarray. Value: `%s`.', v ) );
		}
		if ( v.shape[ 0 ] !== order ) {
			throw new Error( format( 'invalid argument. Vector length must match covariance matrix dimensions. Expected: `%u`. Actual: `%u`.', order, v.shape[ 0 ] ) );
		}
		n = N;
		N += 1;
		r = n / N;

		denom = n || 1; // Bessel's correction (avoiding divide-by-zero below)

		for ( i = 0; i < order; i++ ) {
			m = mu.get( i );

			// Compute the residual:
			d[ i ] = v.get( i ) - m;

			// Update the sample mean:
			m += d[ i ] / N;
			mu.set( i, m );

			// Update the co-moments and covariance matrix, recognizing that the covariance matrix is symmetric...
			rdx = r * d[ i ]; // if `n=0`, `r=0.0`
			for ( j = 0; j <= i; j++ ) {
				cij = C.get( i, j ) + ( rdx*d[j] );
				C.set( i, j, cij );
				C.set( j, i, cij ); // via symmetry

				covij = cij / denom;
				cov.set( i, j, covij );
				cov.set( j, i, covij ); // via symmetry
			}
		}
		return cov;
	}
If provided a data vector, the accumulator function returns an updated unbiased sample covariance matrix. If not provided a data vector, the accumulator function returns the current unbiased sample covariance matrix.

@private
@param {ndarray} [v] - data vector
@throws {TypeError} must provide a 1-dimensional ndarray
@throws {Error} vector length must match covariance matrix dimensions
@returns {(ndarray|null)} unbiased sample covariance matrix or null