code: @Override
    public double plus(double w1, double w2) {
      if (!isMember(w1) || !isMember(w2)) {
        return Double.NEGATIVE_INFINITY;
      }
      if (w1 == Double.POSITIVE_INFINITY) {
        return w2;
      } else if (w2 == Double.POSITIVE_INFINITY) {
        return w1;
      }
      return (double) -Math.log(Math.exp(-w1) + Math.exp(-w2));
    }
docs: /*
  (non-Javadoc)
  
  @see
  edu.cmu.sphinx.fst.weight.Semiring#plus(edu.cmu.sphinx.fst.weight.float,
  edu.cmu.sphinx.fst.weight.float)