# General factorial function written in Python.
# Works transparently with integers and floating point.
# Gives an error for negative or non-integer input values.

def fact(x):
	"Return x! (x factorial)."
	if (x < 0 or (x % 1.0) != 0.0):
		raise ValueError, "Factorial argument must be a positive integer."
		return
	if (x == 0):
		return x + 1
	d = x
	while (x > 2):
		x -= 1
		temp = d * x
		if (temp <= d):
			raise ValueError, "Factorial result too large."
			return
		d = temp
	return d


syntax highlighted by Code2HTML, v. 0.9.1