Example #1
0
    protected T TimeSolve <T>(IFormula formula, params object[] inputs)
    {
        var timer  = Stopwatch.StartNew();
        var result = formula.Solve <T>(inputs);

        timer.Stop();
        solveTimes.Add(timer.Elapsed.TotalMilliseconds);

        return(result);
    }
Example #2
0
        /// <param name="formula">Formula instance</param>
        /// <param name="input">Inputs for the function</param>
        /// <typeparam name="T">Type to cast solution to</typeparam>
        /// <returns>Solution casted to T</returns>
        public static T Solve <T>(this IFormula formula, params object[] input)
        {
            var result = formula.Solve(input);

            if (result is T v)
            {
                return(v);
            }

            try {
                return((T)System.Convert.ChangeType(result, typeof(T)));
            } catch (InvalidCastException) {}

            throw new SolveException($"Solution '{result}' of type {result?.GetType().ToString() ?? "unknown"} could not be converted to {typeof(T)}");
        }
Example #3
0
 /// <param name="input">Inputs for the function</param>
 /// <returns>Solution to the function based on given inputs</returns>
 public object Solve(params object[] input) => formula.Solve(initialInput.Concat(input).ToArray());