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

📄 extended.h

📁 编译类_Hss VC版_源代码支持表达式的编译执行,速度超快,支持实数和复数,并附带一个复数函数库你还可以同时找到VB和VC版和Delphi版
💻 H
📖 第 1 页 / 共 3 页
字号:
                                                            fsubrp st(1),st
                                                            fstp  _ExFloatPtr [eax] 
															pop   eax } 
                                                  return *this;  }
    Extended& operator*=(const double xf)       { __asm{    push  eax
															fld	  xf
                                                            mov   eax,this
                                                            fld   _ExFloatPtr [eax]
                                                            fmulp st(1),st
                                                            fstp  _ExFloatPtr [eax] 
															pop   eax } 
                                                  return *this;  }
    Extended& operator/=(const double xf)       { __asm{    push  eax
															fld	  xf
                                                            mov   eax,this
                                                            fld   _ExFloatPtr [eax]
                                                            fdivrp st(1),st
                                                            fstp  _ExFloatPtr [eax] 
															pop   eax }
                                                  return *this;  }
    Extended& operator+=(const long double xf)  { return *this+=double(xf); }
    Extended& operator-=(const long double xf)  { return *this-=double(xf); }
    Extended& operator*=(const long double xf)  { return *this*=double(xf); }
    Extended& operator/=(const long double xf)  { return *this/=double(xf); }
    Extended& operator+=(const float xf)        { return *this+=double(xf); }
    Extended& operator-=(const float xf)        { return *this-=double(xf); }
    Extended& operator*=(const float xf)        { return *this*=double(xf); }
    Extended& operator/=(const float xf)        { return *this/=double(xf); }

    Extended& operator+=(const __int64 xi)      { return *this+=Extended(xi); }
    Extended& operator-=(const __int64 xi)      { return *this-=Extended(xi); }
    Extended& operator*=(const __int64 xi)      { return *this*=Extended(xi); }
    Extended& operator/=(const __int64 xi)      { return *this/=Extended(xi); }
    Extended& operator+=(const int xi)          { return *this+=double(xi); }
    Extended& operator-=(const int xi)          { return *this-=double(xi); }
    Extended& operator*=(const int xi)          { return *this*=double(xi); }
    Extended& operator/=(const int xi)          { return *this/=double(xi); }

    friend  const  Extended  operator-(const Extended& x )	{       Extended rs;
                                                        __asm { push  eax
																mov   eax,[x]
																fld   _ExFloatPtr [eax]
																fchs
																fstp  _ExFloatPtr [rs]
																pop   eax }
                                                        return rs;}
    friend  const  Extended  operator+(const Extended& x )  { return x; }

    friend  const Extended  operator+(const Extended &x0, const Extended &x1)  { Extended r(x0); return r+=x1; }
    friend  const Extended  operator-(const Extended &x0, const Extended &x1)  { Extended r(x0); return r-=x1; }
    friend  const Extended  operator*(const Extended &x0, const Extended &x1)  { Extended r(x0); return r*=x1; }
    friend  const Extended  operator/(const Extended &x0, const Extended &x1)  { Extended r(x0); return r/=x1; }
    
    friend  const Extended  operator+(const Extended &x, const double& xf)     { Extended r(x);  return r+=xf; }
    friend  const Extended  operator+(const double& xf, const Extended &x)     { Extended r(x);  return r+=xf; }
    friend  const Extended  operator-(const Extended &x, const double& xf)     { Extended r(x);  return r-=xf; }
    friend  const Extended  operator-(const double& xf, const Extended &x)     { Extended r(xf);  return r-=x; }
    friend  const Extended  operator*(const Extended &x, const double& xf)     { Extended r(x);  return r*=xf; }
    friend  const Extended  operator*(const double& xf, const Extended &x)     { Extended r(x);  return r*=xf; }
    friend  const Extended  operator/(const Extended &x, const double& xf)     { Extended r(x);  return r/=xf; }
    friend  const Extended  operator/(const double& xf, const Extended &x)     { Extended r(xf);  return r/=x; }
    friend  const Extended  operator+(const Extended &x, const long double& xf) { return x+double(xf); }
    friend  const Extended  operator+(const long double& xf, const Extended &x) { return x+double(xf); }
    friend  const Extended  operator-(const Extended &x, const long double& xf) { return x-double(xf); }
    friend  const Extended  operator-(const long double& xf, const Extended &x) { return double(xf)-x; }
    friend  const Extended  operator*(const Extended &x, const long double& xf) { return x*double(xf); }
    friend  const Extended  operator*(const long double& xf, const Extended &x) { return x*double(xf); }
    friend  const Extended  operator/(const Extended &x, const long double& xf) { return x/double(xf); }
    friend  const Extended  operator/(const long double& xf, const Extended &x) { return double(xf)/x; }

    friend  const Extended  operator+(const Extended &x, const float& xf)      { return x+double(xf); }
    friend  const Extended  operator+(const float& xf, const Extended &x)      { return x+double(xf); }
    friend  const Extended  operator-(const Extended &x, const float& xf)      { return x-double(xf); }
    friend  const Extended  operator-(const float& xf, const Extended &x)      { return double(xf)-x; }
    friend  const Extended  operator*(const Extended &x, const float& xf)      { return x*double(xf); }
    friend  const Extended  operator*(const float& xf, const Extended &x)      { return x*double(xf); }
    friend  const Extended  operator/(const Extended &x, const float& xf)      { return x/double(xf); }
    friend  const Extended  operator/(const float& xf, const Extended &x)      { return double(xf)/x; }

    friend  const Extended  operator+(const Extended &x, const int& xi)        { return x+double(xi); }
    friend  const Extended  operator+(const int& xi, const Extended &x)        { return x+double(xi); }
    friend  const Extended  operator-(const Extended &x, const int& xi)        { return x-double(xi); }
    friend  const Extended  operator-(const int& xi, const Extended &x)        { return double(xi)-x; }
    friend  const Extended  operator*(const Extended &x, const int& xi)        { return x*double(xi); }
    friend  const Extended  operator*(const int& xi, const Extended &x)        { return x*double(xi); }
    friend  const Extended  operator/(const Extended &x, const int& xi)        { return x/double(xi); }
    friend  const Extended  operator/(const int& xi, const Extended &x)        { return double(xi)/x; }
    friend  const Extended  operator+(const Extended &x, const __int64& xi)    { return x+Extended(xi); }
    friend  const Extended  operator+(const __int64& xi, const Extended &x)    { return x+Extended(xi); }
    friend  const Extended  operator-(const Extended &x, const __int64& xi)    { return x-Extended(xi); }
    friend  const Extended  operator-(const __int64& xi, const Extended &x)    { return Extended(xi)-x; }
    friend  const Extended  operator*(const Extended &x, const __int64& xi)    { return x*Extended(xi); }
    friend  const Extended  operator*(const __int64& xi, const Extended &x)    { return x*Extended(xi); }
    friend  const Extended  operator/(const Extended &x, const __int64& xi)    { return x/Extended(xi); }
    friend  const Extended  operator/(const __int64& xi, const Extended &x)    { return Extended(xi)/x; }

    friend  bool operator==(const Extended &x0, const Extended &x1)     {   DWORD* p0=(DWORD*)(&x0);
                                                                            DWORD* p1=(DWORD*)(&x1);
                                                                            return ( *p0==*p1 )
                                                                                && ( *(DWORD*)(DWORD(p0)+4)==*(DWORD*)(DWORD(p1)+4) )
                                                                                && ( *(WORD*)(DWORD(p0)+8)==*(WORD*)(DWORD(p1)+8) ); }
    friend  bool operator!=(const Extended &x0, const Extended &x1)     {   return !(x0==x1); }

    friend  bool operator> (const Extended &x0, const Extended &x1);
    friend  bool operator< (const Extended &x0, const Extended &x1) { return  (x1>x0); }
    friend  bool operator>=(const Extended &x0, const Extended &x1) { return !(x1>x0); }
    friend  bool operator<=(const Extended &x0, const Extended &x1) { return !(x0>x1); }

    friend  bool operator==(const Extended &x, const long double& xf){ return x==Extended(xf); }
    friend  bool operator==(const long double& xf, const Extended &x){ return x==Extended(xf); }
    friend  bool operator!=(const Extended &x, const long double& xf){ return x!=Extended(xf); }
    friend  bool operator!=(const long double& xf, const Extended &x){ return x!=Extended(xf); }
    friend  bool operator> (const Extended &x, const long double& xf){ return x > Extended(xf) ; }
    friend  bool operator> (const long double& xf, const Extended &x){ return Extended(xf) > x ; }
    friend  bool operator< (const Extended &x, const long double& xf){ return Extended(xf) > x; }
    friend  bool operator< (const long double& xf, const Extended &x){ return x > Extended(xf); }
    friend  bool operator>=(const Extended &x, const long double& xf){ return !(Extended(xf) > x); }
    friend  bool operator>=(const long double& xf, const Extended &x){ return !(x > Extended(xf)); }
    friend  bool operator<=(const Extended &x, const long double& xf){ return !(x > Extended(xf)); }
    friend  bool operator<=(const long double& xf, const Extended &x){ return !(Extended(xf) > x); }


    friend  bool operator==(const Extended &x, const double& xf){ return x==Extended(xf); }
    friend  bool operator==(const double& xf, const Extended &x){ return x==Extended(xf); }
    friend  bool operator!=(const Extended &x, const double& xf){ return x!=Extended(xf); }
    friend  bool operator!=(const double& xf, const Extended &x){ return x!=Extended(xf); }
    friend  bool operator> (const Extended &x, const double& xf){ return x > Extended(xf) ; }
    friend  bool operator> (const double& xf, const Extended &x){ return Extended(xf) > x ; }
    friend  bool operator< (const Extended &x, const double& xf){ return Extended(xf) > x; }
    friend  bool operator< (const double& xf, const Extended &x){ return x > Extended(xf); }
    friend  bool operator>=(const Extended &x, const double& xf){ return !(Extended(xf) > x); }
    friend  bool operator>=(const double& xf, const Extended &x){ return !(x > Extended(xf)); }
    friend  bool operator<=(const Extended &x, const double& xf){ return !(x > Extended(xf)); }
    friend  bool operator<=(const double& xf, const Extended &x){ return !(Extended(xf) > x); }

    friend  bool operator==(const Extended &x, const float& xf){ return x==Extended(xf); }
    friend  bool operator==(const float& xf, const Extended &x){ return x==Extended(xf); }
    friend  bool operator!=(const Extended &x, const float& xf){ return x!=Extended(xf); }
    friend  bool operator!=(const float& xf, const Extended &x){ return x!=Extended(xf); }
    friend  bool operator> (const Extended &x, const float& xf){ return x > Extended(xf) ; }
    friend  bool operator> (const float& xf, const Extended &x){ return Extended(xf) > x ; }
    friend  bool operator< (const Extended &x, const float& xf){ return Extended(xf) > x; }
    friend  bool operator< (const float& xf, const Extended &x){ return x > Extended(xf); }
    friend  bool operator>=(const Extended &x, const float& xf){ return !(Extended(xf) > x); }
    friend  bool operator>=(const float& xf, const Extended &x){ return !(x > Extended(xf)); }
    friend  bool operator<=(const Extended &x, const float& xf){ return !(x > Extended(xf)); }
    friend  bool operator<=(const float& xf, const Extended &x){ return !(Extended(xf) > x); }

    friend  bool operator==(const Extended &x, const __int64& xi){ return x==Extended(xi); }
    friend  bool operator==(const __int64& xi, const Extended &x){ return x==Extended(xi); }
    friend  bool operator!=(const Extended &x, const __int64& xi){ return x!=Extended(xi); }
    friend  bool operator!=(const __int64& xi, const Extended &x){ return x!=Extended(xi); }
    friend  bool operator> (const Extended &x, const __int64& xi){ return x > Extended(xi) ; }
    friend  bool operator> (const __int64& xi, const Extended &x){ return Extended(xi) > x ; }
    friend  bool operator< (const Extended &x, const __int64& xi){ return Extended(xi) > x; }
    friend  bool operator< (const __int64& xi, const Extended &x){ return x > Extended(xi); }
    friend  bool operator>=(const Extended &x, const __int64& xi){ return !(Extended(xi) > x); }
    friend  bool operator>=(const __int64& xi, const Extended &x){ return !(x > Extended(xi)); }
    friend  bool operator<=(const Extended &x, const __int64& xi){ return !(x > Extended(xi)); }
    friend  bool operator<=(const __int64& xi, const Extended &x){ return !(Extended(xi) > x); }

    friend  bool operator==(const Extended &x, const int& xi){ return x==Extended(xi); }
    friend  bool operator==(const int& xi, const Extended &x){ return x==Extended(xi); }
    friend  bool operator!=(const Extended &x, const int& xi){ return x!=Extended(xi); }
    friend  bool operator!=(const int& xi, const Extended &x){ return x!=Extended(xi); }
    friend  bool operator> (const Extended &x, const int& xi){ return x > Extended(xi) ; }
    friend  bool operator> (const int& xi, const Extended &x){ return Extended(xi) > x ; }
    friend  bool operator< (const Extended &x, const int& xi){ return Extended(xi) > x; }
    friend  bool operator< (const int& xi, const Extended &x){ return x > Extended(xi); }
    friend  bool operator>=(const Extended &x, const int& xi){ return !(Extended(xi) > x); }
    friend  bool operator>=(const int& xi, const Extended &x){ return !(x > Extended(xi)); }
    friend  bool operator<=(const Extended &x, const int& xi){ return !(x > Extended(xi)); }
    friend  bool operator<=(const int& xi, const Extended &x){ return !(Extended(xi) > x); }

    //下面封装了一些数学函数,以支持Extended;
    //  其实在运算中可是把Extended看作double而调用关于double的数学函数,
    //  封装这些函数可以保持Extended的运算精度,并加快Extended的数学运算

   	template <class T>   void    Add     (const T & x) { this->Add (Extended(x)); }
    template <class T>   void    Sub     (const T & x) { this->Sub (Extended(x)); }
    template <class T>   void    Mul     (const T & x) { this->Mul (Extended(x)); }
    template <class T>   void    Div     (const T & x) { this->Div (Extended(x)); }
    template <class T>   void    Divi    (const T & x) { this->Divi(Extended(x)); }
    template <class T>   void    Mod     (const T & x) { this->Mod (Extended(x)); }
    void    Add     (const Extended & x);
    void    Sub     (const Extended & x);
    void    Mul     (const Extended & x);
    void    Div     (const Extended & x);
    void    Divi    (const Extended & x); //整除

⌨️ 快捷键说明

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