⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ccompilecomplex.h

📁 编译类_Hss VC版_源代码支持表达式的编译执行,速度超快,支持实数和复数,并附带一个复数函数库你还可以同时找到VB和VC版和Delphi版
💻 H
📖 第 1 页 / 共 2 页
字号:
    //设置随机函数Random()的初始种子值
    void      SetRandomize(int RandomSeed);

    //是否允许使用注释   (默认false)
    void      SetEnabledNote(bool  Value);

    //是否要优化常数浮点除法运算  (默认true)
    void      SetEnabledOptimizeDiv(bool  Value);

    //是否要优化堆栈  (默认true)
    void      SetEnabledOptimizeStack(bool  Value);

    //是否要优化常数运算 (默认true)
    void      SetEnabledOptimizeConst(bool  Value);

    // 获得版本号
    static double  GetVersion();

    //返回错误代码号
    int       GetErrorCode();

    //返回编译以后的程序指令区代码长度(字节)
    int       GetExeCodeLength();

    //返回编译以后的程序数据区代码长度(字节)
    int       GetExeParameterLength();

};
/*
       (*
       
       <<详细说明>>:

       0.支持复数函数表达式的编译执行;

       1.支持带复数参数编译,参数默认值为0+0*i;运行前请赋值;

       2.常数可以用科学计数法表示,如: -1.4E-4=-0.00014;
         系统定义的常量:  圆周率 PI=3.1415926535897932384626433832795...
                          逻辑真 true=1
                          逻辑假 false=0
         当标识符为e时,系统默认值为 自然数
           即 e=2.7182818284590452353602874713527...
           但它和PI,true,false不同,e可以重新赋值, pi,true,false是系统常量,e是用户变量

       3.使用多重括号并不会降低速度,特别是在不容易分清楚计算优先级的时候,请多使用括号;

       4.表达式中函数名和参数名等不区分大小写;关键字中不允许插入空格等字符;

       5.编译的文本长度几乎不受限制(只是受内存和编译时间等系统影响)

       6.利用错误号功能可以将错误描述翻译为其他语言;

       7.允许在表达式中使用注释(CCompileComplex.EnabledNote:=true;),注释写法为:
              单行注释:  双斜杠// 开始到一行结束(即遇到回车换行符)                                                              */
//            长段注释:  '{'、'}' 或'/*'、'*/' 之间的部分
/*
       8.系统使用的标识符除去下面列出的函数名(包括别名)外还有 :
         'PI'、'true'、'false'、'TCmCxSYS_IF_?'、'TCmCxSYS_Boolean??'、'TCmCxSYS_Const_*' 和 'TCmCxSYS_Function_i' 等,
         自定义的标识符名称请不要再次使用它们; (即前缀不能为'TCmCxSYS_')

       9.支持的复数函数:

         这里的实数域为:  R' ,  R'约为 (-1.1E+4932,-3.6E-4951) and [ 0 ] and (+3.6E-4951,+1.1E+4932)
         当实数属于(+-3.6E-4951,0) 时认为实数等于0
         
         复数的实部和虚部分别属于以上实数域R'

         以下形参Z,Z1,Z2没有特别指明都属于复数;
                 x属于实数(或为复数时虚部为零(不为零时忽略虚部))
                 N为整数(N为小数时也进行同样的计算,或为复数时虚部为零(不为零时忽略虚部))

       (函数计算的结果和中间结果也不能超出实数域 R')

       算符(函数)名称       书写格式和变量取值范围                   说明

       +        加法        Z1+Z2     或者: Add(Z1,Z2)
       -        减法        Z1-Z2     或者: Sub(Z1,Z2)
       *        乘法        Z1*Z2     或者: Mul(Z1,Z2)
       /        除法        Z1/Z2     或者: Div(Z1,Z2) ; Z2<>0+0*i
       ^        指数        Z1^Z2     或者: Power(Z1,Z2)、Z1**Z2     Z1^Z2
       PowerX   指数        PowerX(Z,x)                              Z^x
       XPower   指数        XPower(x,Z)                              x^Z

           ;复数参加布尔运算时就只考虑复数的实部
           ;比较运算产生的结果为逻辑值(真或假),即结果只可能为1或0
       =        等于        x=y                                      (2=3-1) =true =1
       <>       不等于      x<>y                                     (2<>3-1) =false =0
       <        小于        x<y                                      (2<3) =true
       >        大于        x>y                                      (2>3) =false
       <=       小于等于    x<=y                                     (Abs(Z)>=0) =true
       >=       大于等于    x>=y                                     (3>=PI) =false

           ;逻辑运算中 实部0表示 假(false),实部非0会被当作 真(true)来参加逻辑运算
           ;用大写X,Y表示逻辑值 (注意必须写扩号)
       ADD      逻辑与      (X) ADD (Y)                              (1>2) AND (true)=false
       OR       逻辑或      (X) OR (Y)                               (false) OR (true)=true
       XOR      逻辑异或    (X) XOR (Y)                              (true) XOR (true)=false
       NOT      逻辑非      NOT (X)                                  NOT (1)=false

       Sqr      平方        Sqr(Z)                                   注意平方和开方的函数名称
       Sqr2Z    平方+       Sqr2Z(Z)                                 Z^2+Z
       Sqr3     立方        Sqr3(Z)
       Sqr4     四方        Sqr4(Z)
       Sqrt     开方        Sqrt(Z)
       SqrtN    开N次方     SqrtN(Z,N)                               Z^(1/N)

       Exp      自然指数    Exp(Z)
       Ln       自然对数    Ln(Z)
       Log2     2的对数     Log2(Z)
       Log10    10的对数    Log10(Z)  或者:  Log(Z)
       LogN     N的对数     LogN(N,Z)

       Int      取整        Int(Z)   或者: Floor(Z)                  (向负穷大取整)
       Trunc    截断取整    Trunc(Z)                                 (向零取整)
       Round    四舍五入    Round(Z)                                 (四舍五入取整)
       Ceil     舍入取整    Ceil(Z)                                  (向正穷大取整)

       Max      最大值函数  Max(Z1,Z2)                               (返回复数绝对值最大的复数)
       Min      最小值函数  Min(Z1,Z2)                               (返回复数绝对值最小的复数)
       MaxX     最大值函数  MaxX(Z1,Z2)                              (返回实部值最大的复数)
       MinX     最小值函数  MinX(Z1,Z2)                              (返回实部值最小的复数)

       Real     求实部      Real(Z)
       Imag     求虚部      Imag(Z)
       Abs      绝对值      Abs(Z)                                   |Z|
       AbsSqr   绝对值平方  AbsSqr(Z)                                |Z|^2=x*x+y*y
       Arg      求复角      Arg(Z)  或: Angle(Z)                     值属于 -PI~PI
       FromPolar极坐标到复数FromPolar(Z)                             参数为极坐标 x=Z.x*Cos(Z.y) ; y:=Z.x*Sin(Z.y) ;
       ToPolar  复数到极坐标ToPolar(Z)                               x:=Sqrt(Z.x*Z.x+Z.y*Z.y) ; y:=ArcTan2(Z.y,Z.x);
       Conj     求共轭      Conj(Z)
       FLip     虚实交换    FLip(Z)
       Unity    归一化      Unity(Z)                                 Z/|Z|
       Distance 距离        Distance(Z1,Z2)                          |Z1-Z2|
       Rev      倒数        Rev(Z)
       Sgn      符号函数    Sgn(Z)
       Random   随机函数    Random(Z) 或者:RND(Z)、Rand(Z)
               (要产生真正的随机数,而不是固定随机数序列,请在创建或编译完成后
                取得表达式值之前调用一次CCompileComplex.SetRandomize();函数。)

       Sin      正弦        Sin(Z)
       Cos      余弦        Cos(Z)
       Tan      正切        Tan(Z)   或者: tg(Z)
       ArcSin   反正弦      ArcSin(Z)
       ArcCos   反余弦      ArcCos(Z)
       ArcTan   反正切      ArcTan(Z) 或者:  Arctg(Z)

       Cot      余切        Cot(Z)    或者: Ctg(Z)                   Cot(Z)=1/Tan(Z)
       Sec      正割        Sec(Z)                                   Sec(Z)=1/Cos(Z)
       Csc      余割        Csc(Z)                                   Csc(Z)=1/Sin(Z)
       ArcCot   反余切函数  ArcCot(Z) 或者: ArcCtg(Z)                ArcCot(Z)=ArcTan(1/Z)
       ArcSec   反正割函数  ArcSec(Z)                                ArcSec(Z)=ArcCos(1/Z)
       ArcCsc   反余割函数  ArcCsc(Z)                                ArcCsc(Z)=ArcSin(1/Z)

       SinH     双曲正弦    SinH(Z)
       CosH     双曲余弦    CosH(Z)
       TanH     双曲正切    TanH(Z)  或者: tgH(Z)
       ArcSinH  反双曲正弦  ArcSinH(Z)
       ArcCosH  反双曲余弦  ArcCosH(Z)
       ArcTanH  反双曲正切  ArcTanH(Z)  或者: ArctgH(Z)

       CotH     双曲余切       CotH(Z)  或者: CtgH(Z)
       SecH     双曲正割       SecH(Z)
       CscH     双曲余割       CscH(Z)
       ArcCotH  反双曲余切函数 ArcCotH(Z) 或者: ArcCtgH(Z)
       ArcSecH  反双曲正割函数 ArcSecH(Z)
       ArcCscH  反双曲余割函数 ArcCscH(Z)

       If       条件函数    If(s,r1,r2)                              If(True,2,3)=2; If(0,2,3)=3;
                (等价于高级语言的: If (s) Then Result:=r1 Else Result:=r2;)

       10. 运算符优先级表:
           由高到低
           ()             (包括各种函数)
           ^
           *  \  /  mod
           +  -
           =  <>  <  >  <=  >=
           AND、OR、XOR(NOT 可以看作函数)

       11. 更强大的功能请参看类的接口函数


*/

#endif // !defined(HSS_CCOMPILECOMPLEX_H__39855E25_8C8B_4800_ACF7_D2199F6B3276__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -