blob: 2bb24f569acb16facd18d2ef9ac801d3120cd03d [file] [log] [blame]
using System.Collections.Generic;
using OfficeOpenXml.FormulaParsing.ExpressionGraph;
namespace OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
public class Fact : ExcelFunction {
public override CompileResult Execute(
IEnumerable<FunctionArgument> arguments,
ParsingContext context) {
ValidateArguments(arguments, 1);
var number = ArgToDecimal(arguments, 0);
ThrowExcelErrorValueExceptionIf(() => number < 0, eErrorType.Na);
var result = 1d;
for (var x = 1; x < number; x++) {
result *= x;
}
return CreateResult(result, DataType.Integer);
}
}