/// <summary>Executes the function on specified numbers.</summary>
        /// <param name="numbers">The numbers used in the function.</param>
        /// <returns>The result of the function execution.</returns>
        /// <exception cref="ArgumentNullException">When numbers is null.</exception>
        /// <exception cref="ArgumentException">When the length of numbers do not equal <see cref="ArgumentCount"/>.</exception>
        public object Execute(object[] numbers)
        {
            base.Validate(numbers);

            string function = char.ToUpperInvariant(_function[0]) + _function.Substring(1);

            switch (function)
            {
            case "Abs":
                return(DataMath.Abs(numbers[0]));

            case "Acos":
                return(DataMath.Acos(numbers[0]));

            case "Asin":
                return(DataMath.Asin(numbers[0]));

            case "Atan":
                return(DataMath.Atan(numbers[0]));

            case "Cos":
                return(DataMath.Cos(numbers[0]));

            case "Exp":
                return(DataMath.Exp(numbers[0]));

            case "Log":
                return(DataMath.Log(numbers[0]));

            case "Log10":
                return(DataMath.Log10(numbers[0]));

            case "Sin":
                return(DataMath.Sin(numbers[0]));

            case "Sqrt":
                return(DataMath.Sqrt(numbers[0]));

            case "Tan":
                return(DataMath.Tan(numbers[0]));

            default:
                return(null);
            }
        }