Standard Library
CSMic.StandardLibrary adds optional constants and common math functions to the core interpreter.
Install it from NuGet:
dotnet add package CSMic.StandardLibrary
Official package page:
https://www.nuget.org/packages/CSMic.StandardLibrary
Initialize
using CSMic;
using CSMic.StandardLibrary;
var interpreter = new InputInterpreter();
Initializer.InitializeAll(interpreter);
decimal result = interpreter.Interpret("max(10, abs(-12))");
// result == 12
Initializer.InitializeAll registers every standard function and constant.
Selective Initialization
Use narrower initializers when your application only wants part of the standard library:
InitializeAllFunctionsInitializeConstantsInitializeBaseFunctionsInitializeAngleFunctionsInitializeRoundingFunctionsInitializeTrigonometryFunctionsInitializeNumberTheoryFunctionsInitializeRandomFunctions
Example:
var interpreter = new InputInterpreter();
Initializer.InitializeConstants(interpreter);
Initializer.InitializeTrigonometryFunctions(interpreter);
decimal result = interpreter.Interpret("sin(pi / 2)");
Constants
InitializeConstants registers constants as interpreter variables:
pietauphigoldenratioeurlereuleromega
Example:
interpreter.Interpret("2 * pi");
interpreter.Interpret("tau / pi");
Function Groups
Base functions:
abs(value)sign(value)min(left, right)max(left, right)sqrt(value)pow(base, exponent)log(value, base)ln(value)lerp(start, end, amount)smoothstep(startEdge, endEdge, value)map(value, oldMinimum, oldMaximum, newMinimum, newMaximum)normalize(value, minimum, maximum)
Angle functions:
degrees(radians)radians(degrees)wrapangle(value, minimum, maximum)
Rounding functions:
floor(value)ceiling(value)truncate(value)frac(value)round(value, precision)clamp(value, minimum, maximum)
Trigonometry functions:
sin(value)cos(value)tan(value)asin(value)acos(value)atan(value)atan2(y, x)
Hyperbolic trigonometry functions:
sinh(value)cosh(value)tanh(value)asinh(value)acosh(value)atanh(value)
Number theory functions:
fac(value)ncr(n, r)npr(n, r)gcd(left, right)lcm(left, right)fib(index)iseven(value)isodd(value)isint(value)isprime(value)
Random functions:
flip()bern(probability)rand()rands(minimum, maximum)randn()randns(minimum, maximum)
Package Role
CSMic.StandardLibrary does not replace the core interpreter. It extends an InputInterpreter instance by registering ICodedFunction implementations and assigning constants.
You can combine standard-library functions with your own custom functions on the same interpreter.