Comparison of Evaluators

Name
Approximate Speed Types
Operators
Built-in Functions Programmer-
Defined Functions
User-
Defined Variables
Documentation
Bugs
Error Handling
Reports Used Variables
Kylix Compatibility
Interface Complexity
TPegtopFormula
-0.5% longer than compiled code Real
+ - * / · :  ÷  % ^
Abs, ArcTan, Cos, Exp, Frac, ln, Log10, Log2, Neg, Round, Sign, Sin, Sqr, Sqrt, Tan
No
Register with parser No
none detected Raises one of 6 different custom exceptions during compilation phase. 
No
Should be compatible relatively simple
TParser
3% longer than compiled code
Real + - div mod / ^ *
tan sin cos sinh cosh arctan cotan arg exp ln log10 log2 sqr sqrt abs trunc int ceil floor heav sign zero ph rnd random max min power intpower logn
Yes: 1 or 2 arguments
Register with parser, 8 predefined variables also available
Yes
none detected
Raises one of 8 different custom Exceptions during compilation phase.
No
Should be compatible
relatively simple
TExpressionParser
18% longer than compiled code Real, "Boolean"
(Values between -0.1 and +0.1 are treated as False.  Other values are treated as True.)
< > = =< => == <= >= <> & && | || := : ! != + - ^ / \ * ( ) % ~ $ div mod in not or and xor
random exp if randg sqr sqrt abs round trunc ln log10 logN power pow intpower max min sin cos tan arcsin arccos arctan2 sinh cosh tanh arcsinh arccosh arctanh degtorad radtodeg
Yes: zero to four real number arguments arguments.
Register with parser Yes
Memory leak, not easily fixed
Raises a custom Exception during compilation phase. No
Should be compatible relatively simple
TExpressionCompiler
36% longer than compiled code Real (single, double, or extended)
= <> < <= > >= + - * /
none
Yes, 0 to 3 argument
Register with parser Yes? There is a help-file but it doesn't really explain anything.
Memory leak, but easily fixed
Raises a custom Exception during compilation phase. ?
Should be compatible Intermediate complexity
Symbolic.TExpression
94% longer than compiled code real
+ - * / ^ cos sin tan sqr sqrt exp ln inv cotan arcsin arccos arctan sinh cosh tanh arcsinh arccosh arctanh log10 log2 lnxp1 ! arctan2 step power hypot logn
No
Register with parser Yes.
Memory leak an other problems if attempt to use invalid expression
May raise one of 10 custom exception. However, with invalid expressions, there is an exception raised while trying to raise a different exception
Yes
No, might be possible to make it compatible without much trouble.
relatively simple
TRbwParser
120% longer than compiled code Real, Integer, Boolean, String
+ - * / > >= < <= = <> mod div not xor and or
AbsI AbsR ArcCos ArcCosh ArcSin ArcSinh ArcTan2 ArcTanh Copy Cos Cosh CaseB CaseI CaseR CaseS DegToRad FactorialI FactorialR Frac FloatToStr IfB IfI IfR IfS IntPower IntToStr Length ln log10 logN LowerCase MaxI MaxR MinI MinR Odd Pi Pos Power RadToDeg Round Sin Sinh SqrI SqrR Sqrt StrToInt StrToIntDef StrToFloat StrToFloatDef Tan Tanh Trunc UpperCase Interpolate Distance Abs Case Max Min Sqr Case If MultiInterpolate
Yes, unlimited arguments, variable number of arguments allowed
Register with parser
Yes
none detected Raises a custom Exception during compilation phase. Yes
Is compatible
Intermediate complexity
TExpressionEvaluator
2000% longer than compiled code Real + - * / ^
ArcCos, ArcCosD, ArcCosh, ArcSin, ArcSinD, ArcSinh, ArcTanh, Cosh, Cotan, Log10, Log2, Ln, Sinh, GradToRad, RadToGrad, Ceil, Floor, ArcTan, ArcTanD, Cos, CosD, Exp, Round, Sin, SinD, Sqr, Sqrt, Tan, TanD, Tanh, Trunc, DegToRad, RadToDeg
No Register with parser or via event
Only examples none detected raises custom exception during evaluation.
No
Should be compatible relatively simple
Pascal Script
2600% longer than compiled code Essentially a interpreted version of Object Pascal. Almost anything Object Pascal can do, it can do.
Examples and online documentation
none detected Raises Exception (but not a custom Exception) during compilation phase. ?
not compatible
complex
TStExpression
4800% longer than compiled code Real
+ - * / ^
abs, arctan, cos, exp, frac, int, trunc, ln, pi, round, sin, sqr, sqrt,
arccos, arcsin, arctan2, tan, cotan, hypot, cosh, sinh, tanh, arccosh, arcsinh, arctanh, lnxp1, log10, log2, logn, ceil, floor
Yes, 0 to 3 argument Register with parser or via event Extensive help files plus examples
none detected raises custom exception during evaluation. No
not compatible relatively simple
TMathParser
7700% longer than compiled code (Expression must be reinterpreted each time it is evaluated.)
Real
+ - * / abs atan cos exp ln round sin sqrt sqr tan trunc
No
Via event
Yes
none detected Calls OnParseError event during compilation phase. No
not compatible relatively simple
TExpressIt
44,000% longer than compiled code Variant
= <> >= <= > < + - & or xor * / ^ div mod and not - == Resembles Matches Contains In Starts Ends &&
True False MinInteger MaxInteger AsString AsInteger AsBoolean AsReal IsEmpty IsNull Max Min Average Ranged InRange Round Trunc Absolute Sign Square SquareRoot RandomRange RandomFrom Random IfThen PositionOf PartOf Insert Remove Length Format Uppercase Lowercase Evaluate Quote QuoteWith Dequote DequoteWith FieldCount FieldOf WordCount WordOf LineCount LineOf MinReal MaxReal Pi Exp Numerator Denominator Ceil Floor Tan Sin Cos ArcTan ArcSin ArcCos TanH SinH CosH ArcTanH ArcSinH ArcCosH RadToGrad RadToDeg RadToCycle GradToRad DegToRad CycleToRad Log10 Log2 LogN Ln GradToDeg GradToCycle DegToGrad DegToCycle CycleToGrad CycleToDeg CoTan ArcTan2 Hypot LnXP1 RandG LdExp Mean Sum SumOfSquares StdDev PopNStdDev Variance PopNVariance TotalVariance Norm Now TheDate TheTime AsDateTime DateOf TimeOf YearOf MonthOf WeekOf DayOf HourOf MinuteOf SecondOf MilliSecondOf DayOfYearOf DayOfWeekOf DateFor TimeFor DateTimeFor IsLeapYear IsInLeapYear DaysInAMonth DaysInMonth DaysInAYear DaysInYear StartOfYear EndOfYear StartOfMonth EndOfMonth StartOfWeek EndOfWeek StartOfDay EndOfDay MonthOfYear WeekOfYear DayOfYear HourOfYear MinuteOfYear SecondOfYear MilliSecondOfYear WeekOfMonth DayOfMonth HourOfMonth SecondOfMonth MilliSecondOfMonth DayOfWeek HourOfWeek MinuteOfWeek SecondOfWeek MilliSecondOfWeek HourOfDay MinuteOfDay SecondOfDay MilliSecondOfDay MinuteOfHour SecondOfHour MilliSecondOfHour SecondOfMinute MilliSecondOfMinute MilliSecondOfSecond WithinPastYears WithinPastMonths WithinPastWeeks WithinPastDays WithinPastHours WithinPastMinutes WithinPastSeconds WithinPastMilliSeconds YearsBetween MonthsBetween WeeksBetween DaysBetween HoursBetween MinutesBetween SecondsBetween MilliSecondsBetween YearSpan MonthSpan WeekSpan DaySpan HourSpan MinuteSpan SecondSpan MilliSecondSpan Exists DriveOf PathOf NameOf ShortNameOf FullNameOf ExtensionOf SizeOf LastChangeOf AttributesOf PathAndFile WithExtension RootOf FolderOf ParentOfPathOf DirOf UNCPathOf IsLocal OnlyNameOf CreationOf LastAccessOf EnglishSizeOf EnglishAttributesOf IsReadOnly IsHidden IsSystem IsDirectory IsArchive IsCompressed FileTypeOf ApplicationFor VersionValueOf VersionValueExists AskQuestion AskConfirmation AskForText AskForFile AskForPath True False Pi AsInteger AsBoolean AsReal AsComplex IsComplex IsEmpty IsNull IfThen RealOf ImaginaryOf ComplexFor Simplify Conjugate Inverse TimesPosI TimesNegI Norm Angle Exp Ln SquareRoot Cos Sin Tan ArcCos ArcSin ArcTan CosH SinH TanH ArcCosH ArcSinH ArcTanH
Yes
Via event Yes
none detected Execute function returns False.
?
not compatible Intermediate complexity
TCalcExpress
~630% longer than compiled code Real
+ - * / ^
cos, sin, tg, ctg, abs, sgn or sign, sqrt, ln, exp, arcsin, arccos, arctg or arctan, arcctg, sh or sinh, ch or cosh, th or tanh, cth or coth, heaviside
No
Register with parser Examples only
Tan function does not work correctly.
calls ShowMessage ('Error in formula.');
No
Should be compatible relatively simple