docs: public static List<Integer> johnsonLindenstraussMinDim(int[] n, double... eps){
          Boolean basicCheck = n == null || n.length == 0 || eps == null || eps.length == 0;
          if (basicCheck)
              throw new IllegalArgumentException("Johnson-Lindenstrauss dimension estimation requires > 0 components and at least a relative error");
          for (double epsilon: eps){
              if (epsilon <= 0 || epsilon >= 1) {
                  throw new IllegalArgumentException("A relative error should be in ]0, 1[");
              }
          }
          List<Integer> res = new ArrayList(n.length * eps.length);
          for (double epsilon : eps){
              double denom = (Math.pow(epsilon, 2) / 2 - Math.pow(epsilon, 3) / 3);
              for (int components: n){
                  res.add((int) (4 * Math.log(components) / denom));
              }
          }
          return res;
      }