/**
  * Sets the value of the existing point (abscissa, value) at index index to y. If the index is
  * negative, does not do anything. If the index equals the index of the last element of the signal
  * plus one, adds an element (index, y) to the signal at the index index. If the index is greateur
  * than the index of the last element of the signal plus one, does not do anything.
  *
  * @param index index of the exsisting point. If the point does not exists, adds it
  * @param y value to be given to the corresponding point (abscissa, value).
  */
 public void setValueOf(int index, double y) {
   if (index == this.getNbSamples()) {
     data.add(index, y);
   } else if ((index >= 0) && (index < this.getNbSamples())) {
     data.updateByIndex(index, y);
   }
 }
 /**
  * Updates an item in the series.
  *
  * @param x the x-value (<code>null</code> not permitted).
  * @param y the y-value (<code>null</code> permitted).
  * @throws SeriesException if there is no existing item with the specified x-value.
  */
 public void update(Number x, Number y) {
   int index = indexOf(x);
   if (index < 0) {
     throw new SeriesException("No observation for x = " + x);
   }
   updateByIndex(index, y);
 }
 /**
  * Looks for the element of the given abscissa and sets its value to ordiante. If there is no
  * points existing with the given abcisssa, adds a point (abscissa, ordinate) to the signal.
  * (actually, this method does the exact same thing as addElement).
  *
  * @param abscissa abscissa of the considered point
  * @param ordinate value to add or update in the signal
  */
 public void setElement(double abscissa, double ordinate) {
   int index = data.indexOf(abscissa);
   if (index < 0) {
     data.add(abscissa, ordinate);
   } else {
     data.updateByIndex(index, ordinate);
   }
 }