The Complex Parser
http://www.geocities.com/CapeCanaveral/4434

Copyright (©) 1997, Diego A. Velez.

A powerful tool now available

Sometimes you need to create a function runtime. It was a big problem. This Delphi 2.00 and 2.01 unit lets you create your own functions runtime.

Specifications

Complex Functions:

+ - * / ^ Basic operators :Complex Addition, Subtraction, Multiplication, Division, Power
abs(z) absolute value of complex
re(z) real part of complex
im(z) imaginary part of complex
arg(z) angle of complex (-p..., pi]
sqrt(z) square root of complex
int(z) integer part. (z must be real, otherwise Error is generated)
u1(z) step (z must be real, otherwise Error is generated)
u2(z) ramp(z must be real, otherwise Error is generated)
sgn(z) sign (z must be real, otherwise Error is generated)
round(z) round (z must be real, otherwise Error is generated)
trunc(z) trunc (z must be real, otherwise Error is generated)
frac(z) fractional part of (z must be real, otherwise Error is generated)
sin(z) Complex Sin of z
cos(z) Complex Cos of z
tan(z) Complex Tan of z
asin(z) Complex Inverse Sin of z (Forget the error message of real parsers; remember that asin(1.365) does exist and has an important meanng !)
acos(z) Complex Inverse Cos of z
atan(z) Complex Inverse Tan of z
sinh(z) Complex Hyperbolc Sin of z
cosh(z) Complex Hyperbolc Cos of z
tanh(z) Complex Hyperbolc Tan of z
asinh(z) Complex Inverse Hyperbolc Sin of z
acosh(z) Complex Inverse Hyperbolc Cos of z
atanh(z) Complex Inverse Hyperbolc Tan of z
exp(z) Complex Exp of z
ln(z) Complex Ln of z
log(z) Complex log 10 of z
not(z) Boolean negation of
min(x,y) Returns the smaller of x and y (x and y must be real, otherwise Error is generated)
max(x,y) Returns the bigger of x and y (x and y must be real, otherwise Error is generated)
logx(z,b) Returns the log in b base of (b must be real, otherwise Error is generated)
if(condition, true_expr, false_expr) Returns true_expr if condition is different from (0,0), otherwise returns false_expr.
simpson(expr,a,b,m,var) Simpson integral of expr from a to b (expr, a b, and m must be real) respect the variable var.
pi Returns 3.141592654 + 0.00000000*i
i Returns 0.000000000 + 1.00000000*i
e Returns 2.718281828 + 0.00000000*i
= Returns 1 if the arguments have the same real and imaginary parts, otherwise returns 0.
< Returns 1 if the first argument is smaller than the second one, otherwise returns 0. (Both arguments must be real)
> Returns 1 if the first argument is bigger than the second one, otherwise returns 0. (Both arguments must be real)
>= Returns 1 if the first argument is bigger or equal than the second one, otherwise returns 0. (Both arguments must be real)
<= Returns 1 if the first argument is smaller or equal than the second one, otherwise returns 0. (Both arguments must be real)

Real Functions

+ - * / ^ Basic operators : Addition, Subtraction, Multiplication, Division, Power
abs(x) absolute value of x
sqrt(x) square root of x
int(x) integer part of x
u1(x) step
u2(x) ramp
sgn(x) sign
round(x) round
trunc(x) trunc
frac(x) fractional part of x
sin(x) Sin of x
cos(x) Cos of x
tan(x) Tan of x
asin(x) Inverse Sin of x
acos(x) Inverse Cos of x
atan(x) Inverse Tan of x
sinh(x) Hyperbolc Sin of x
cosh(x) Hyperbolc Cos of x
tanh(x) Hyperbolc Tan of x
asinh(x) Inverse Hyperbolc Sin of x
acosh(x) Inverse Hyperbolc Cos of x
atanh(x) Inverse Hyperbolc Tan of x
exp(x) Exp of x
ln(x) Ln of x
log(x) log 10 of x
not(x) Boolean negation of x
min(x,y) Returns the smaller of x and y
max(x,y) Returns the bigger of x and y
logx(z,b) Returns the log in b base of
if(condition, true_expr, false_expr) Returns true_expr if condition is different from 0, otherwise returns false_expr.
simpson(expr,a,b,m,var) Simpson integral of expr from a to b respect the variable var.
pi Returns 3.141592654
e Returns 2.718281828
= Returns 1 if the arguments are have the same value.
< Returns 1 if the first argument is smaller than the second one, otherwise returns 0.
> Returns 1 if the first argument is bigger than the second one, otherwise returns 0.
>= Returns 1 if the first argument is bigger or equal than the second one, otherwise returns 0.
<= Returns 1 if the first argument is smaller or equal than the second one, otherwise returns 0.

Easy to use: ... we're doing some hard work for you. You have more time for thinking in your application.

Real code fragment: 




Var
s : String; x, y, z : TComplex; { The Complex Type } t : Tree; { Defined also into the parse unit }
begin
  s := 'acos(10*5*x - 1/exp(y))';  { Don't worry, it has meaning in Complex Domain }
  t := CParse(s,'xy'); { You can use your OWN variables, they are NOT predefined ! }
  If BAnyParseError then 
    writeln('Wrong expression')  
  else
    begin
      X := Complex(1.23, 1.5);  { x = 1.23 + 1.5*i }
      Y := Complex(0.5, -0.5);  { y = 0.50 - 0.5*i }
      Z := CmxEval(t,X,Y,Complex(0,0));
      If BAnyEvalError then writeln('Evaluation - Time - Error : ', SError);
      ....
    end
end
Easy, not ? 


Applications

We're Beggining, so we have a gift for you... FREE...
COMPLEX AND REAL CALCULATOR



Download it NOW !
ccalc.zip


Ordering information

You can order the Delphi Compiled Unit of the Real and Complex Parser.

Pricing:

For payment procedures, please drop us a mail.


You can e-mail us at dvelez@col3.telecom.com.co

This page last updated on Apri1 1, 1997.
Copyright © 1997 Diego Velez.

Microsoft Windows 95 is a registered trademark of Microsoft Corporation.
Borland Delphi is a registered trademark of Borland International, Inc.