docs: public static double logpdf(double val, double loc, double scale, double shape1, double shape2) {
      val = (val - loc) / scale;
      final double logc = logcdf(val, shape1, shape2);
      if(shape1 != 0.) {
        val = shape1 * val;
        if(val >= 1) {
          return Double.NEGATIVE_INFINITY;
        }
        val = (1. - 1. / shape1) * FastMath.log1p(-val);
      }
      if(Double.isInfinite(val)) {
        return Double.NEGATIVE_INFINITY;
      }
      return -val - FastMath.log(scale) + logc * (1. - shape2);
    }