📄 extended.h
字号:
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 + -