from scipy.special import gammaln from scipy.optimize import bisect import math as mt def inverse_log_gamma(logarg): assert(logarg > 0) a = 1 b = 2 while b < logarg: b = b*2 return bisect(lambda x: gammaln(x) - logarg, a, b) def inverse_factorial(logarg): g = inverse_log_gamma(logarg) return round(g)-1 print(inverse_factorial(mt.log(mt.factorial(42)))) print(inverse_factorial(mt.log(mt.factorial(171)))) print(inverse_factorial(gammaln(2025)/2))