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

📄 tcomplex.cpp

📁 编译类_Hss VC版_源代码支持表达式的编译执行,速度超快,支持实数和复数,并附带一个复数函数库你还可以同时找到VB和VC版和Delphi版
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//复数对数
void  TComplex::Ln    () 					//Z=Ln(Z1)
{
	__asm
	{
		 fld  _ExFloatPtr [_reg_this+_ExFloatByte]
		 fld  _ExFloatPtr [_reg_this]

          fld     st(1)
          fld     st(1)
          fpatan

          fxch    st(2)
          fmul    st,st(1)
          fxch    st(1)
          fmul    st,st(1)
          faddp   st(1),st

          fldln2 
          fxch    st(1)
          fyl2x

          Fld     _tempHalf
          fmulp   st(1),st

		 fstp  _ExFloatPtr [_reg_this]
		 fstp  _ExFloatPtr [_reg_this+_ExFloatByte]
  }
}

void  TComplex::Log2  () 				//Z=Log2(Z)
{
	__asm
	{
		 fld  _ExFloatPtr [_reg_this+_ExFloatByte]
		 fld  _ExFloatPtr [_reg_this]

          fld     st(1)
          fld     st(1)
          fpatan

          fxch    st(2)
          fmul    st,st(1)
          fxch    st(1)
          fmul    st,st(1)
          faddp   st(1),st

          fld1
          fxch    st(1)
          fyl2x

          Fld     _tempHalf
          fmulp   st(1),st

		 fstp  _ExFloatPtr [_reg_this]
		  fstp  _ExFloatPtr [_reg_this+_ExFloatByte]
  }


}

void  TComplex::Log10 () 					//Z=Log10(Z)
{
	__asm
	{
		 fld  _ExFloatPtr [_reg_this+_ExFloatByte]
		 fld  _ExFloatPtr [_reg_this]

          fld     st(1)
          fld     st(1)
          fpatan

          fxch    st(2)
          fmul    st,st(1)
          fxch    st(1)
          fmul    st,st(1)
          faddp   st(1),st

          fldlg2
          fxch    st(1)
          fyl2x

          Fld     _tempHalf
          fmulp   st(1),st

		 fstp  _ExFloatPtr [_reg_this]
		  fstp  _ExFloatPtr [_reg_this+_ExFloatByte]
  }


}

//复数三角函数
void  TComplex::Sin   ()          //Z=Sin(Z)
{
	__asm
	{
		 fld  _ExFloatPtr [_reg_this+_ExFloatByte]
		 fld  _ExFloatPtr [_reg_this]

          FSinCos
          Fxch      st(2)
          
			FLDL2E          
			FMULp   st(1),st
			FLD  ST(0)
			FRNDINT         
			FSUB  ST(1), ST 
			FXCH  ST(1)     
			F2XM1
			FLD1
			FADDp   st(1),st
			FSCALE          
			FSTP    ST(1)

          fld1
          fdiv      st,st(1)

          fld		_tempHalf

          fmul      st(2),st
          fmulp     st(1),st

          fld       st(1)
          fadd      st,st(1)
          fmulp     st(3),st

          fsubp     st(1),st
          fmulp     st(2),st

		 fstp  _ExFloatPtr [_reg_this]
		  fstp  _ExFloatPtr [_reg_this+_ExFloatByte]
	}
		

}

void  TComplex::Cos   ()            //Z=Cos(Z)
{
	__asm
	{
		 fld  _ExFloatPtr [_reg_this+_ExFloatByte]
		 fld  _ExFloatPtr [_reg_this]

          fchs
          fsincos
          fxch      st(1)
          Fxch      st(2)
          
			FLDL2E          
			FMULp   st(1),st
			FLD  ST(0)
			FRNDINT         
			FSUB  ST(1), ST 
			FXCH  ST(1)     
			F2XM1
			FLD1
			FADDp   st(1),st
			FSCALE          
			FSTP    ST(1)

          fld1
          fdiv      st,st(1)

          fld		_tempHalf

          fmul      st(2),st
          fmulp     st(1),st

          fld       st(1)
          fadd      st,st(1)
          fmulp     st(3),st

          fsubp     st(1),st
          fmulp     st(2),st

		 fstp  _ExFloatPtr [_reg_this]
		  fstp  _ExFloatPtr [_reg_this+_ExFloatByte]
	}
		

}	

void  TComplex::Tan   ()            //Z=Tan(Z)
{
	__asm
	{
		 fld  _ExFloatPtr [_reg_this+_ExFloatByte]
		 fld  _ExFloatPtr [_reg_this]


        fadd      st,st(0)
        fsincos
        fxch      st(2)
        fadd      st,st(0)

			FLDL2E          
			FMULp   st(1),st
			FLD  ST(0)
			FRNDINT         
			FSUB  ST(1), ST 
			FXCH  ST(1)     
			F2XM1
			FLD1
			FADDp   st(1),st
			FSCALE          
			FSTP    ST(1)

        fld1
        fdiv      st,st(1)

        fld			_tempHalf
        fmul      st(2),st
        fmulp     st(1),st

        fld       st(0)
        fsubr     st,st(2)
        fxch      st(4)
        faddp     st(1),st
        faddp     st(1),st

        fld1
        fdivrp    st(1),st
        fmul      st(2),st
        fmulp     st(1),st

		 fstp  _ExFloatPtr [_reg_this]
		  fstp  _ExFloatPtr [_reg_this+_ExFloatByte]
	}
		

}	

void  TComplex::Cot   ()           //Z=Cot(Z1) => 1/tan(Z)
{
  this->Tan();
  this->Rev();
}	
	
void  TComplex::Csc   ()            //Z=Csc(Z1) => 1/sin(Z)
{
  this->Sin();
  this->Rev();
}       

void  TComplex::Sec   ()            //Z=Sec(Z1) => 1/Cos(Z)
{
  this->Cos();
  this->Rev();
}

void  TComplex::ArcSin  ()         //Z=ArcSin(Z)
{
	__asm
	{
		 fld  _ExFloatPtr [_reg_this+_ExFloatByte]
		 fld  _ExFloatPtr [_reg_this]

            fld     st(0)
            fmul    st,st(2)
            fadd    st,st(0)
            fchs

            fld     st(1)
            fsub    st,st(3)
            fld     st(2)
            fadd    st,st(4)
            fmulp   st(1),st
            fld1
            fsubrp  st(1),st

            fld     st(1)
            fld     st(1)
            fpatan
            fld		_tempHalf
            fmulp   st(1),st

            fsincos
            fxch    st(2)
            fmul    st,st(0)
            fld     st(3)
            fmul    st,st(0)
            faddp   st(1),st
            fsqrt
            fsqrt


            fmul    st(2),st
            fmulp   st(1),st
            fstp    st(2)
            fsubrp  st(3),st
            faddp   st(1),st

            fld     st(0)
            fld     st(2)
            fpatan

            fxch    st(2)
            fmul    st,st(0)
            fxch    st(1)
            fmul    st,st(0)
            faddp   st(1),st

			fldln2     
			fxch  st(1)
			fyl2x      

            fld		_tempHalf
            fchs
            fmulp   st(1),st
            fxch    st(1)
        

		 fstp  _ExFloatPtr [_reg_this]
		  fstp  _ExFloatPtr [_reg_this+_ExFloatByte]
	}
		

}	

void  TComplex::ArcCos  ()          //Z=ArcCos(Z)
{
	__asm
	{
		 fld  _ExFloatPtr [_reg_this+_ExFloatByte]
		 fld  _ExFloatPtr [_reg_this]

            fld     st(0)
            fmul    st,st(2)
            fadd    st,st(0)
            //--

            fld     st(1)
            fsub    st,st(3)
            fld     st(2)
            fadd    st,st(4)
            fmulp   st(1),st
            fld1
            fsubp  st(1),st  //<->

            fld     st(1)
            fld     st(1)
            fpatan
            fld		_tempHalf
            fmulp   st(1),st

            fsincos
            fxch    st(2)
            fmul    st,st(0)
            fld     st(3)
            fmul    st,st(0)
            faddp   st(1),st
            fsqrt
            fsqrt


            fmul    st(2),st
            fmulp   st(1),st
            fstp    st(2)
            faddp   st(2),st   //<->
            faddp   st(2),st   //<->
            fxch    st(1)      //++

            fld     st(0)
            fld     st(2)
            fpatan

            fxch    st(2)
            fmul    st,st(0)
            fxch    st(1)
            fmul    st,st(0)
            faddp   st(1),st

			fldln2     
			fxch  st(1)
			fyl2x      

            fld		_tempHalf
            fchs
            fmulp   st(1),st
            fxch    st(1)


		 fstp  _ExFloatPtr [_reg_this]
		  fstp  _ExFloatPtr [_reg_this+_ExFloatByte]
	}
		

}	

void  TComplex::ArcTan  ()          //Z=ArcTan(Z)
{
	__asm
	{
		 fld  _ExFloatPtr [_reg_this+_ExFloatByte]
		 fld  _ExFloatPtr [_reg_this]

         fld      st(0)
         fmul     st,st(0)
         fld      st(2)
         fmul     st,st(0)
         faddp    st(1),st

         fxch     st(2)
         fadd     st,st(0)
         fsub     st,st(2)
         fld1
         fsub     st(3),st
         fsub     st(1),st
         fdivrp   st(1),st

         fmul     st(2),st
         fmulp    st(1),st
         fadd     st,st(0)

         fld      st(1)
         fmul     st,st(0)
         fld      st(1)
         fmul     st,st(0)
         faddp    st(1),st

			fldln2     
			fxch  st(1)
			fyl2x      

         fld      _tempHalfHalf
         fmulp    st(1),st

         fxch     st(2)
         fpatan
         fld	  _tempHalf
		 fchs
         fmulp    st(1),st
                 

		 fstp  _ExFloatPtr [_reg_this]
		  fstp  _ExFloatPtr [_reg_this+_ExFloatByte]
	}
		

}	
		
void  TComplex::ArcCsc  ()          //Z=ArcCsc(Z)
{
  this->Rev();
  this->ArcSin();
}
		
void  TComplex::ArcSec  ()          //Z=ArcSec(Z)
{
  this->Rev();
  this->ArcCos();
}
 
void  TComplex::ArcCot  ()          //Z=ArcCot(Z)
{
  this->Rev();
  this->ArcTan();
}

void  TComplex::SinH  ()           //Z=SinH(Z)
{
    Extended zsh,zch,zs,zc;

    this->_Re.SinHCosH(&zsh,&zch);
    this->_Im.SinCos(&zs,&zc);
    this->_Re=zsh; this->_Re.Mul(zc);
    this->_Im=zch; this->_Im.Mul(zs);
}

void  TComplex::CosH  ()            //Z=CosH(Z)
{
    Extended zsh,zch,zs,zc;

    this->_Re.SinHCosH(&zsh,&zch);
    this->_Im.SinCos(&zs,&zc);
    this->_Re=zch; this->_Re.Mul(zc);
    this->_Im=zsh; this->_Im.Mul(zs);
}

void  TComplex::TanH  ()            //Z=TanH(Z)
{
    Extended zsh,zch,zs,zc;

    this->_Re.Mul(2);
    this->_Im.Mul(2);
    this->_Re.SinHCosH(&zsh,&zch);
    this->_Im.SinCos(&zs,&zc);

    zch.Add(zc);
    zch.Rev();

    this->_Re=zsh; this->_Re.Mul(zch);
    this->_Im=zs;  this->_Im.Mul(zch);

}
	
void  TComplex::CotH  ()            //Z=CotH(Z)
{
  this->TanH();
  this->Rev();
}

void  TComplex::CscH  ()            //Z=CscH(Z) => 1/sinH(Z)
{
  this->SinH();
  this->Rev();
}
		
void  TComplex::SecH  ()            //Z=SecH(Z) => 1/CosH(Z)
{
  this->CosH();
  this->Rev();
}

void  TComplex::ArcSinH ()          //Z=ArcSinH(Z)
{
	__asm
	{
		 fld  _ExFloatPtr [_reg_this+_ExFloatByte]
		 fld  _ExFloatPtr [_reg_this]

            fld     st(0)
            fmul    st,st(2)
            fadd    st,st(0)

            fld     st(1)
            fsub    st,st(3)
            fld     st(2)
            fadd    st,st(4)
            fmulp   st(1),st
            fld1
            faddp   st(1),st     //

            fld     st(1)
            fld     st(1)
            fpatan
            fld		_tempHalf
            fmulp   st(1),st

            fsincos
            fxch    st(2)
            fmul    st,st(0)
            fld     st(3)
            fmul    st,st(0)
            faddp   st(1),st
            fsqrt
            fsqrt


            fmul    st(2),st
            fmulp   st(1),st
            fstp    st(2)
            faddp   st(2),st
            faddp   st(2),st
            fxch    st(1)

            fld     st(0)
            fld     st(2)
            fpatan

            fxch    st(2)
            fmul    st,st(0)
            fxch    st(1)
            fmul    st,st(0)
            faddp   st(1),st

			fldln2     
			fxch  st(1)
			fyl2x      

            fld		_tempHalf
            fmulp   st(1),st

		 fstp  _ExFloatPtr [_reg_this]
		  fstp  _ExFloatPtr [_reg_this+_ExFloatByte]
	}
		

}	

void  TComplex::ArcCosH ()          //Z=ArcCosH(Z)
{
	__asm
	{
		 fld  _ExFloatPtr [_reg_this+_ExFloatByte]
		 fld  _ExFloatPtr [_reg_this]

            fld     st(0)
            fmul    st,st(2)
            fadd    st,st(0)

            fld     st(1)
            fsub    st,st(3)
            fld     st(2)
            fadd    st,st(4)
            fmulp   st(1),st
            fld1
            fsubp   st(1),st     //与ArcSinH只有这里不同

            fld     st(1)
            fld     st(1)
            fpatan
            fld		_tempHalf
            fmulp   st(1),st

            fsincos
            fxch    st(2)
            fmul    st,st(0)
            fld     st(3)
            fmul    st,st(0)
            faddp   st(1),st
            fsqrt
            fsqrt


            fmul    st(2),st
            fmulp   st(1),st
            fstp    st(2)
            faddp   st(2),st
            faddp   st(2),st
            fxch    st(1)

            fld     st(0)
            fld     st(2)
            fpatan

            fxch    st(2)
            fmul    st,st(0)
            fxch    st(1)
            fmul    st,st(0)
            faddp   st(1),st

			fldln2     
			fxch  st(1)
			fyl2x      

            fld		_tempHalf
            fmulp   st(1),st
                 

		 fstp  _ExFloatPtr [_reg_this]
		  fstp  _ExFloatPtr [_reg_this+_ExFloatByte]
	}
		

}

void  TComplex::ArcTanH ()          //Z=ArcTanH(Z)
		
{
	__asm
	{
		 fld  _ExFloatPtr [_reg_this+_ExFloatByte]
		 fld  _ExFloatPtr [_reg_this]

         fxch     st(1)
         fchs

         fld      st(0)
         fmul     st,st(0)
         fld      st(2)
         fmul     st,st(0)
         faddp    st(1),st

         fxch     st(2)
         fadd     st,st(0)
         fsub     st,st(2)
         fld1
         fsub     st(3),st
         fsub     st(1),st
         fdivrp   st(1),st

         fmul     st(2),st
         fmulp    st(1),st
         fadd     st,st(0)

         fld      st(1)
         fmul     st,st(0)
         fld      st(1)
         fmul     st,st(0)
         faddp    st(1),st

			fldln2     
			fxch  st(1)
			fyl2x      

         fld	  _tempHalfHalf
         fmulp    st(1),st

         fxch     st(2)
         fpatan
         fld	  _tempHalf
         fmulp    st(1),st
         fxch     st(1)
         
		 fstp  _ExFloatPtr [_reg_this]
		  fstp  _ExFloatPtr [_reg_this+_ExFloatByte]
	}
		

}	
		
void  TComplex::ArcCscH ()          //Z=ArcCscH(Z)
{
  this->Rev();
  this->ArcSinH();
}

void  TComplex::ArcSecH ()          //Z=ArcSecH(Z)
{
  this->Rev();
  this->ArcCosH();
}
    
void  TComplex::ArcCotH ()          //Z=ArcCotH(Z)
{
  this->Rev();
  this->ArcTanH();
}

⌨️ 快捷键说明

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