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); }
/// <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)}"); }
/// <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());