CxTranslator.Net.x64 4.0.101

.NET Framework 4.7.2
There is a newer version of this package available.
See the version list below for details.
Install-Package CxTranslator.Net.x64 -Version 4.0.101
dotnet add package CxTranslator.Net.x64 --version 4.0.101
<PackageReference Include="CxTranslator.Net.x64" Version="4.0.101" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add CxTranslator.Net.x64 --version 4.0.101
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: CxTranslator.Net.x64, 4.0.101"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
// Install CxTranslator.Net.x64 as a Cake Addin
#addin nuget:?package=CxTranslator.Net.x64&version=4.0.101

// Install CxTranslator.Net.x64 as a Cake Tool
#tool nuget:?package=CxTranslator.Net.x64&version=4.0.101
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

CxTranslator.Net is fast and compact math parser/evaluator with pre-build feature and user-friendly interface. Implementing simple data type to cover complex numbers: real and imaginary parts it uses recursive descent and operator precedence rules to parse and evaluate run-time defined strings as math expressions. Imag part in math expression should have postfix i or j. For example: 3.5j

The valid math expressions should consist of: � Variables should start from letterand and be no more than 32 characters.The math expression may have unlimited number of variables. � Arithmetic operations : +, -, *, / , ^. � Functions - set of predefined functions : abs, acos, acosh, arg, asin, asinh, atan, atanh, conj, cos, cosh, exp, imag, log, log10, norm, proj, real, sin, sinh, sqrt, tan, tanh. Also, users can define their own function to improve performance and extend functionality.

The main characteristics of CxTranslator: � Extremely fast. � Friendly interface and error handling mechanism support. � Safe Multithreading. � Supports unlimited number of variables. � Can be extended by user defined functions.

using System;
using System.Numerics;
using EMS.Math.Cx;	//Namespace to use CxTranslator


namespace Cx.Net_Demo
{
    class Program
    {
        //User defined function
        static TCALC pow3(TCALC x)
        {
            //Must convert to Complex first
            Complex cmplx = new Complex(x.real, x.imag);

            //Do calculation
            Complex tmp = cmplx * cmplx * cmplx;

            //Transform result to TCalc data type
            TCALC result;
            result.real = tmp.Real;
            result.imag = tmp.Imaginary;
            return result;
        }



        unsafe static void Main(string[] args)
        {
            string mathExp = "x+2.3i*(1-sin(y/3.14)^2)-z";
            string varList = "x,y,z";
            TCALC[] data = new TCALC[3];
            data[0].real = 1.2; data[0].imag = 2.3;
            data[1].real = -3; data[1].imag = 0.005;
            data[2].real = 0.5; data[2].imag = -0.123;
            TCALC res = default(TCALC);

            //Initialize CxTranslator algorithm before we can use any function.
            Translator cx = new Translator();

            try
            {
                /*********************************************************
                Evaluate math expression for a given point "data"
                Arguments:
		mathExpression – math expression as string to be evaluated.
		varList – coma separated list of named variable. For example” 
		“x,y,z”.
		arguments – array of values for a given varList. First element 
		in the array corresponds to first named variable in varList, 
		second to second...
		Return:
		Result of evaluation.
		*********************************************************/
                res = cx.Evaluate(mathExp, varList, data);

                data[0].real = 2.3; data[0].imag = 1.3;
                data[1].real = -5; data[1].imag = 0.123;
                res = cx.Evaluate("x/y+5-3.1j+(x^2-y^2)", "x,y", data);
                
                /*********************************************************
                Add user defined function to EquTranslator.
		Arguments:
		funcName - name of the function as string. This name must 
			   be used in math expression.
		pFunction - pointer to user defined function.
                *********************************************************/
                cx.AddFunction("p3", pow3);

                //Calculate a set of points for one math expression
                //Build it first
                /*********************************************************
		The function prepares math expression but doesn’t evaluate it.
		It should be used when the same math expression must be evaluated 
                for a large set of points. If number of points is small 
		(not more than 10) function “Evaluate()” may work faster.
		Arguments:
		mathExpression – math expression as string to be parsed.
		varList – coma separated list of named variable. 
		For example” “x,y,z”.
		*********************************************************/
                cx.Build("3.14*p3(x)+sin(y)-sqrt(z+x)", "x,y,z");

                for (int i = 0; i < 100; i++)
                {
                    data[0].real = data[0].real + 1; data[0].imag = i;
                    data[1].real = i / 200; data[1].imag = 0.005 * i;
                    data[2].real = -5; data[2].imag = data[0].real * 0.123;

                    //Do calculation for a given point
                    /*********************************************************
                    The function evaluates math expression prepared by “Build(…)” 
		    for the given values.
                    Arguments:
                    arguments – array of values for a varList in “Build(…)”.
                    Return:
                    Result of evaluation.
                    *********************************************************/
                    res = cx.CalcFor(data);
                }

                //*********************************************************
                // Memory for data must be pinned in order to use 
                // "Compile" and "Run" functions.
                // Also, the code must defined as unsafe
                TCALC* pinData = stackalloc TCALC[3];

                /*********************************************************
		The function prepares math expression but doesn’t evaluate it.
		This method should be used when the same math expression must be 
                evaluated for a large set of points. If number of points is small 
                (not more than 5)  function “Evaluate()” may work faster.
		Arguments:
		mathExpression – math expression as string to be parsed.
		varList – coma separated list of named variable. For example” “x,y,z”.
		arguments – array of values for a varList.
		*********************************************************/
                cx.Compile(mathExp, varList, pinData);

                res = default(TCALC);
                for (int i = 0; i < 10000; i++)
                {
                    pinData[0].real = pinData[0].real + 0.0001; pinData[0].imag = i;
                    pinData[1].real = i / 2000; pinData[1].imag = i / 10000;
                    pinData[2].real = -5; pinData[2].imag = pinData[0].real * 0.0123;

                    //Do calculation for a given point
                    res = cx.Run();
                }

                //*********************************************************
                //Negative test

                /*********************************************************
		Remove user defined function from EquTranslator.
		Arguments:
		funcName - name of the function as a string.
		*********************************************************/
                cx.RemoveFunction("p3");

                res = cx.Evaluate("3.14*p3(x)+sin(y)-sqrt(z+x)", "x,y,z", data);
            }
            catch (TranslatorException ex)
            {
                Console.WriteLine(ex.ErrorCode);
                Console.WriteLine(ex.Message);
                Console.WriteLine(ex.ErrorPosition);
            }

        }
    }
}
Product Versions
.NET Framework net472 net48
Compatible target framework(s)
Additional computed target framework(s)
Learn more about Target Frameworks and .NET Standard.

This package has 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.

Version Downloads Last updated
4.1.264 168 2/26/2021
4.0.101 323 11/16/2019