EquTranslator 4.1.264
dotnet add package EquTranslator --version 4.1.264
NuGet\Install-Package EquTranslator -Version 4.1.264
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="EquTranslator" Version="4.1.264" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add EquTranslator --version 4.1.264
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: EquTranslator, 4.1.264"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install EquTranslator as a Cake Addin #addin nuget:?package=EquTranslator&version=4.1.264 // Install EquTranslator as a Cake Tool #tool nuget:?package=EquTranslator&version=4.1.264
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
EquTranslator is fast and compact math parser/evaluator with pre-build feature and user-friendly interface. It uses recursive descent and operator precedence rules to parse and evaluate run-time defined strings as math expressions.
Valid math expressions should consist of :
- Variables should start from a letter and be no more than 32 characters long. The math expression may have unlimited number of variables.
- Arithmetic operations : +, -, *, / , ^ .
- Functions - set of predefined functions: : abs(x), acos(x), asin(x), atan(x), ceil(x), cos(x), cosh(x), exp(x), floor(x), J0(x), J1(x), ln(x), log10(x), sin(x), sinh(x), sqrt(x), tan(x), tanh(x), Y0(x), Y1(x). Also, users can define their own function to improve performance and extend functionality.
The main characteristics of EquTranslator :
- Extremely fast.
- Friendly interface and error handling support.
- Safe Multithreading.
- Supports unlimited number of variables.
- Math expression must be presented as double byte(UNICODE) string.
- Can be extended by user defined functions.
- Target platform : x86 and x64.
You can find list of error messages in EquTypes.h file.
#include <iostream>
#include "EquWin32.h"
#include "EquTypes.h"
// Error handler
void ErrorHandler(EQUHANDLE hnd, int errCode, const wchar_t* message, const wchar_t* message2)
{
std::cout << "Error: " << message << ": " << message2 << std::endl;
throw errCode;
}
//User defined function
TCalc pow3(TCalc x)
{
return x * x * x;
}
int main(int argc, char* argv[])
{
const wchar_t* mathExp = L"1.2e-3+x+2.3*(1-sin(y/3.14)^2)-z";
const wchar_t* varList = L"x,y,z";
TCalc args[] = { 1, 2.5, 1.7e-2 };
TCalc res = TCalc(0);
EQUHANDLE equHnd = NULL;
// Initialize EquTranslator algorithm before we can use any function.
// Return value (handle) must be used in each function call.
equHnd = ::InitEquTranslator(
ErrorHandler //Error callback function
);
try
{
//Evaluate math expression for a given point "args"
res = ::Evaluate(equHnd, L"x+y+z", varList, args);
res = ::Evaluate(equHnd, mathExp, varList, args);
args[0] = 2.3; args[1] = -5;
res = ::Evaluate(equHnd, L"x/y+(x^2-y^2)", L"x,y", args);
//Add user defined function to EquTranslator
::AddFunction(equHnd, L"p3", pow3);
// Calculate set of points for one math expression
// Build it first
::Build(equHnd, L"3.14*p3(x)+sin(y)-sqrt(z+x)", L"x,y,z");
res = 0;
for (int i = 0; i < 10000; i++)
{
args[0] = args[0] + 1;
args[1] = (TCalc)i + 1;
args[2] = args[0] / args[1];
// Do calculation for a given point
res += ::CalcFor(equHnd, args);
}
// Another functions to calculate set of points for a given expression.
::Compile(equHnd, mathExp, varList, args);
res = 0;
for (int i = 0; i < 10000; i++)
{
args[0] = args[0] + 1;
args[1] = (TCalc)i + 1;
args[2] = args[0] / args[1];
// Do calculation for a given point
res += ::Run(equHnd);
}
}
catch (int errCode)
{
std::cout << "Error code: " << errCode << std::endl;
}
// Release resources
::CloseEquTranslator(equHnd);
return 0;
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
native | native is compatible. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
native 0.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.