guava/src/com/google/common/math/LongMath.java
@GwtIncompatible // TODO
  public static long factorial(int n) {
    checkNonNegative("n", n);
    return (n < factorials.length) ? factorials[n] : Long.MAX_VALUE;
  }
@GwtIncompatible // TODO
  public static long factorial(int n) {
    checkNonNegative("n", n);
    return (n < factorials.length) ? factorials[n] : Long.MAX_VALUE;
  }
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}