I found a proplem when I use the function _IQNpow()
_iq16 ta, tb, tc;
float fa1, fa2, q, fTest;
the following code is to solve tc = a^(1/3)
q = 1.0/3.0;
fa1 = 0.027;
fa2 = 0.028;
ta = _FtoIQ16( fa1 );
tb = _FtoIQ16( q );
tc = _IQ16pow( ta, tb );
fTest = _IQ16toF( tc ); ----------> fTest = 3.7575836 Correct
ta = _FtoIQ16( fa2 );
tb = _FtoIQ16( q );
tc = _IQ16pow( ta, tb );
fTest = _IQ16toF( tc ); ----------> fTest = 0.26564026 Wrong
Anyone can help?
I found that for tc = a^(1/3)
if a >= 0.028, we get right results
if a <= 0.027 we get wrong results