////
/// @author Takeru Suzuki
////

/// Returns the factorial of a non-negative integer.
/// @since 1.12.0 - The Sith
/// @param {Number} $x A non-negative integer.
/// @return {Number} - modified number
/// @throw **@warn** Argument for `fact()` must be a positive integer
/// @example
///   fact(0) // 1
///   fact(8) // 40320
@function fact($x, $test: false) {
	@if $x < 0 or  $x != floor($x) {
		@if not $test {
			@warn "Argument for `fact()` must be a positive integer.";
		}

		@return null;
	}

	$ret: 1;

	@while $x > 0 {
		$ret: $ret * $x;
		$x: $x - 1;
	}

	@return $ret;
}
