We use UCALC in a Delphi flight data system which proactively detects engine problems before they happen and monitors the way in which aircraft are flown. Typically, this can mean 5 million calculations per aircraft, with UCALC, this takes just a few minutes. Most impressive.
Paul Harrison - British Airways
Product Description
uCalc Fast Math Parser allows programs to evaluate math expressions that are defined at run time. Ease of implementation, flexibility, sturdiness and speed are at the core of the product's design. It includes direct support for Borland C++ Builder, Delphi, PowerBASIC (PB/DLL and PB/CC), Visual Basic (classic), .NET (C#, VB.NET etc), and Visual C++. uCalc FMP works with 32-bit and 64-bit Windows applications.
UCalc Fast Math Parser 2.0 proved to be an intuitive, efficient, heavy-duty tool which you can plug into enterprise-level applications.
Danny Kalev/Brian Noyes - Visual C++ Developer's Journal, p10, 4/00
Partial feature list
- Speedy parsing and evaluations
- Support for .NET, VB, PB, Delphi, VC++, BCB++, and more
- Library of standard arithmetic, trigonometric, relational (comparison), and miscellaneous routines (for both numbers and strings). See complete list of operators and functions
- User-defined operators and functions, with support for overloading, overshadowing, bootstrapping, or recursion; optional arguments, fixed or indefinite number of arguments; multi-statements separated by semicolons
- Function/operator definitions can either be self-contained, or attached to routines from your host program or any conventional DLLs such as the Windows API or other
- User operator definitions can be infix, prefix, or postfix, and can be given a precedence level; an operator can be alphanumeric or be composed of symbols
- User-defined variables (and constants) can be internal, or attached to a variable in your host program, or any valid memory address
- A user variable can be defined as a temporary local item
- Selected definitions can be locked to prevent redefinition
- Supported data types include: Byte, Integer, Long, Dword, Single, Double, Extended, Currency, SortedList, Table, LPCSTR (null-terminated string), FixedLength string, dynamic String, user-defined types, and more
- Multi-threading
- FPU control
- Exception handling (for overflow, division by zero, etc.) and general error handling
- User-defined character patterns and syntax constructs
- Items (functions, variables, operators, ...) can be renamed, or undefined
- uCalc FMP also inherits a host of other features from the uCalc Language Builder
Thanks to UCalc, we no longer hesitate to clean, calibrate, or correct data immediately, nor do we wait 50 minutes anymore.
Steve Jordi - Dr. Dobbs Journal, p64, 3/01
An expression parser for programmers
Let's say you're writing an application, and instead of hard-coding a pre-determined set of formulas, you want to let your users add their own, whenever they want. You started developing a math engine in-house, but gave up after several months. You found some solutions on the Internet. But now, you're looking for something that's faster, more flexible, and more reliable. You want something that will save your company development time and money. What you need then is uCalc Fast Math Parser.
UCalc is a commercial third-party application and not part of VB or VB.NET, but every scientific and engineering programmer should seriously check it out.
Christopher M. Frenz - Visual Basic and Visual Basic .NET for Scientists and Engineers, p 154
uCalc Fast Math Parser in a nutshell
Example 1
This lets the end-user evaluate an expression such as 6+4*5/2
UserExpr$ = InputBox$("Enter an expression",,"6+4*5/2")
Print ucEval(UserExpr$) ' Returns 16
Example 2
This user expression is very rapidly evaluated in a loop
(See the demo that comes with the download for a more complete example)
UserExpr$ = InputBox$("Enter an expression",,"x^2+x+1")
xPtr = ucDefineVariable("x As Double", VarPtr(x))
ExprPtr = ucParse(UserExpr$)
For x = 1 To 1000000
SumTotal = SumTotal + ucEvaluate(ExprPtr)
Next
It saved me a great deal of time and effort, and considerable stress as I was not looking forward to the prospect of programming the arithmetic parsing in VC++ myself.
Dr. K. Brazier - University of Liverpool