code: public static long factoriall(int n) {
          checkNonNegative("n", n);
          return (n < long_factorials.length) ? long_factorials[n] : Long.MAX_VALUE;
      }
docs: Returns {@code n!}, that is, the product of the first {@code n} positive integers, {@code 1} if
  {@code n == 0}, or {@link Long#MAX_VALUE} if the result does not fit in a {@code long}.
  
  @throws IllegalArgumentException if {@code n < 0}