Table of Contents

Functions

Built-in Functions

The framework includes a set of already implemented functions.

Name Description Usage Result
Abs Returns the absolute value of a specified number. Abs(-1) 1d
Acos Returns the angle whose cosine is the specified number. Acos(1) 0d
Asin Returns the angle whose sine is the specified number. Asin(0) 0d
Atan Returns the angle whose tangent is the specified number. Atan(0) 0d
Ceiling Returns the smallest integer greater than or equal to the specified number. Ceiling(1.5) 2d
Cos Returns the cosine of the specified angle. Cos(0) 1d
Exp Returns e raised to the specified power. Exp(0) 1d
Floor Returns the largest integer less than or equal to the specified number. Floor(1.5) 1d
IEEERemainder Returns the remainder resulting from the division of a specified number by another specified number. IEEERemainder(3, 2) -1d
Ln Returns the natural logarithm of a specified number. Ln(1) 0d
Log Returns the logarithm of a specified number. Log(1, 10) 0d
Log10 Returns the base 10 logarithm of a specified number. Log10(1) 0d
Max Returns the larger of two specified numbers. Max(1, 2) 2
Min Returns the smaller of two numbers. Min(1, 2) 1
Pow Returns a specified number raised to the specified power. Pow(3, 2) 9d
Round Rounds a value to the nearest integer or specified number of decimal places. The mid number behaviour can be changed by using ExpressionOptions.RoundAwayFromZero during construction of the Expression object. Round(3.222, 2) 3.22d
Sign Returns a value indicating the sign of a number. Sign(-10) -1
Sin Returns the sine of the specified angle. Sin(0) 0d
Sqrt Returns the square root of a specified number. Sqrt(4) 2d
Tan Returns the tangent of the specified angle. Tan(0) 0d
Truncate Calculates the integral part of a number. Truncate(1.7) 1

It also includes other general purpose ones.

Name Description Usage Result
in Returns whether an element is in a set of values. in(1 + 1, 1, 2, 3) true
if Returns a value based on a condition. if(3 % 2 = 1, 'value is true', 'value is false') 'value is true'
ifs Returns a value based on evaluating a number of conditions, returning a default if none are true. ifs(foo > 50, "bar", foo > 75, "baz", "quux") if foo is between 50 and 75 "bar", foo greater than 75 "baz", otherwise "quux"

You can use comma (,) or semicolon (;) as argument separator.

If DecimalAsDefault is used all functions will cast the arguments to decimal.

You can get the functions from the <xref:NCalc.ExpressionBuiltInFuctions> class.

Custom Functions

Custom functions are created using the ExpressionFunction delegate. The parameters are Expression instances that can be lazy evaluated.

expression.Functions["SecretOperation"] = (args, context) => {
    return (int)args[0].Evaluate() + (int)args[1].Evaluate();
};

Using Event Handlers

You can also use event handlers to handle functions.

expression.EvaluateFunction += delegate(string name, FunctionArgs args)
    {
        if (name == "SecretOperation")
            args.Result = (int)args.Parameters[0].Evaluate() + (int)args.Parameters[1].Evaluate();
    };

Case Sensitivity

See case_sensitivity for more info.