code: @Override
      public double membership(double x) {
          if (Double.isNaN(x)) {
              return Double.NaN;
          }
          double a = 1.0 + Math.exp(-rising * (x - left));
          double b = 1.0 + Math.exp(-falling * (x - right));
          return height * 1.0 / (a * b);
      }
docs: Computes the membership function evaluated at `x`
  
  @param x
  @return ` h (a \times b)`
  
  where `h` is the height,
  `a= 1 / (1 + \exp(-s_l *\times (x - i_l))) `,
  `b = 1 / (1 + \exp(-s_r \times (x - i_r)))`,
  `i_l` is the left inflection of the SigmoidProduct,
  `s_l` is the left slope of the SigmoidProduct,
  `i_r` is the right inflection of the SigmoidProduct,
  `s_r` is the right slope of the SigmoidProduct