private void calculateD(double[] b){
  int length=mExtremalIndices.size() - 1;
  mD=new double[length];
  for (int k=0; k < length; k++) {
    mD[k]=b[k] * (mGrid.getCosineFrequencyGrid()[mExtremalIndices.get(k)] - mGrid.getCosineFrequencyGrid()[mExtremalIndices.get(length)]);
  }
}

private void calculateD ( double [ ] b ) { int length = mExtremalIndices . size ( ) - 1 ; mD = new double [ length ] ; for ( int k = 0 ; k < length ; k ++ ) { mD [ k ] = b [ k ] * ( mGrid . getCosineFrequencyGrid ( ) [ mExtremalIndices . get ( k ) ] - mGrid . getCosineFrequencyGrid ( ) [ mExtremalIndices . get ( length ) ] ) ; } }
calculates the set of d values for the current extremal index set . implements oppenheim / schafer discrete time signal processing , 3e , 2016 , equation 116c
