void WebRtcIlbcfix_NearestNeighbor(
    int16_t *index, /* (o) index of array element closest to value */
    int16_t *array, /* (i) data array (Q2) */
    int16_t value, /* (i) value (Q2) */
    int16_t arlength /* (i) dimension of data array (==8) */
                                   ){
  int i;
  int16_t diff;
  /* Stack based */
  int32_t crit[8];

  /* Calculate square distance */
  for(i=0;i<arlength;i++){
    diff=array[i]-value;
    crit[i]=WEBRTC_SPL_MUL_16_16(diff, diff);
  }

  /* Find the minimum square distance */
  *index=WebRtcSpl_MinIndexW32(crit, (int16_t)arlength);
}
void WebRtcIlbcfix_NearestNeighbor(
    iLBC_Dec_Inst_t *iLBCdec_inst,
    /* (i) Decoder state */
    WebRtc_Word16 *index, /* (o) index of array element closest to value */
    WebRtc_Word16 *array, /* (i) data array (Q2) */
    WebRtc_Word16 value, /* (i) value (Q2) */
    WebRtc_Word16 arlength /* (i) dimension of data array (==8) */
                                   ){
  int i;
  WebRtc_Word16 diff;
  /* Stack based */
  WebRtc_Word32 crit[8];
  /* The input variable iLBCdec_inst is unused if not using scratch memory */
  iLBCdec_inst = iLBCdec_inst;

  /* Calculate square distance */
  for(i=0;i<arlength;i++){
    diff=array[i]-value;
    crit[i]=WEBRTC_SPL_MUL_16_16(diff, diff);
  }

  /* Find the minimum square distance */
  *index=WebRtcSpl_MinIndexW32(crit, (WebRtc_Word16)arlength);
}