private void MathFunctions() { Register(config => config.Named("cos") .WithNumericParameter("value") .ReturnsNumeric() .WhenExecute(context => Simple(context, args => SystemFunctions.Cos(args[0])))); Register(config => config.Named("cosh") .WithNumericParameter("value") .WhenExecute(context => Simple(context, args => SystemFunctions.CosH(args[0]))) .ReturnsNumeric()); Register(config => config.Named("log2") .WithNumericParameter("value") .WhenExecute(context => Simple(context, args => SystemFunctions.Log2(args[0]))) .ReturnsNumeric()); Register(config => config.Named("log") .WithNumericParameter("value") .WithNumericParameter("newBase") .WhenExecute(context => Simple(context, args => SystemFunctions.Log(args[0], args[1])))); Register(config => config.Named("abs") .WithNumericParameter("value") .WhenExecute(context => Simple(context, args => SystemFunctions.Abs(args[0]))) .ReturnsNumeric()); Register(config => config.Named("tan") .WithNumericParameter("value") .WhenExecute(context => Simple(context, args => SystemFunctions.Tan(args[0]))) .ReturnsNumeric()); Register(config => config.Named("tanh") .WithNumericParameter("value") .WhenExecute(context => Simple(context, args => SystemFunctions.TanH(args[0]))) .ReturnsNumeric()); Register(config => config.Named("sin") .WithNumericParameter("value") .WhenExecute(context => Simple(context, args => SystemFunctions.Sin(args[0]))) .ReturnsNumeric()); Register(config => config.Named("round") .WithNumericParameter("value") .WithNumericParameter("precision") .WhenExecute(context => Simple(context, args => SystemFunctions.Round(args[0], args[1]))) .ReturnsNumeric()); // TODO: support function overloads //Register(config => config.Named("round") // .WithNumericParameter("value") // .WhenExecute(context => Simple(context, args => SystemFunctions.Round(args[0]))) // .ReturnsNumeric()); }