#include "IQmathLib.h"         // Include header for IQmath library
#include "abc_to_dq.h"









/////////////////////////////////////////////////


#pragma CODE_SECTION(abc_to_dq_calc,".fast_run");
void abc_to_dq_calc(ABC_TO_DQ *v)
{
	static _iq iq_two_third_pi = _IQ(6.283185307179586476925286766559/3.0);
	static _iq iq_two_third = _IQ(2.0/3.0);
	
	v->Id = _IQmpy(iq_two_third,_IQmpy(v->Ia, _IQsin(v->Tetta)) + _IQmpy(v->Ib, _IQsin(v->Tetta - iq_two_third_pi)) + _IQmpy(v->Ic, _IQsin(v->Tetta + iq_two_third_pi)));
	v->Iq = _IQmpy(iq_two_third,_IQmpy(v->Ia, _IQcos(v->Tetta)) + _IQmpy(v->Ib, _IQcos(v->Tetta - iq_two_third_pi)) + _IQmpy(v->Ic, _IQcos(v->Tetta + iq_two_third_pi)));  
}


#pragma CODE_SECTION(abc_to_dq_calc_v2,".fast_run");
void abc_to_dq_calc_v2(ABC_TO_DQ *v)
{
	static _iq iq_two_third_pi = _IQ(6.283185307179586476925286766559/3.0);
	static _iq iq_two_third = _IQ(2.0/3.0);
	
	v->Id = _IQmpy(iq_two_third,_IQmpy(v->Ia, _IQcos(v->Tetta)) + _IQmpy(v->Ib, _IQcos(v->Tetta - iq_two_third_pi)) + _IQmpy(v->Ic, _IQcos(v->Tetta + iq_two_third_pi)));
	v->Iq = _IQmpy(iq_two_third,_IQmpy(-v->Ia, _IQsin(v->Tetta)) - _IQmpy(v->Ib, _IQcos(v->Tetta - iq_two_third_pi)) - _IQmpy(v->Ic, _IQcos(v->Tetta + iq_two_third_pi)));  
}


/////////////////////////////////////////////////