src/color/kmeans/index.js
function ssq(j, i, sums, sumsOfSquares) {
  let sji; // s(j, i)
  if (j > 0) {
    let muji = (sums[i] - sums[j - 1]) / (i - j + 1); // mu(j, i)
    sji = sumsOfSquares[i] - sumsOfSquares[j - 1] - (i - j + 1) * muji * muji;
  } else {
    sji = sumsOfSquares[i] - sums[i] * sums[i] / (i + 1);
  }
  if (sji < 0) {
    return 0;
  }
  return sji;
}
function ssq(j, i, sums, sumsOfSquares) {
  let sji; // s(j, i)
  if (j > 0) {
    let muji = (sums[i] - sums[j - 1]) / (i - j + 1); // mu(j, i)
    sji = sumsOfSquares[i] - sumsOfSquares[j - 1] - (i - j + 1) * muji * muji;
  } else {
    sji = sumsOfSquares[i] - sums[i] * sums[i] / (i + 1);
  }
  if (sji < 0) {
    return 0;
  }
  return sji;
}
function ssq ( j , i , sums , sumsOfSquares ) { let sji ; // s(j, i) if ( j > 0 ) { let muji = ( sums [ i ] - sums [ j - 1 ] ) / ( i - j + 1 ) ; // mu(j, i) sji = sumsOfSquares [ i ] - sumsOfSquares [ j - 1 ] - ( i - j + 1 ) * muji * muji ; } else { sji = sumsOfSquares [ i ] - sums [ i ] * sums [ i ] / ( i + 1 ) ; } if ( sji < 0 ) { return 0 ; } return sji ; }
Generates incrementally computed values based on the sums and sums of
squares for the data array

@private
@param {number} j
@param {number} i
@param {Array<number>} sums
@param {Array<number>} sumsOfSquares
@return {number}
@example
ssq(0, 1, [-1, 0, 2], [1, 1, 5]);
Generates incrementally computed values based on the sums and sums of squares for the data array