18Fermer20
cidrolinLe 12/10/2009 à 22:36
Flanker (./17) :
lent avec CORDIC ? normalement c'est plus rapide, justement


float f3tan(float angle)
{// cordic, 3 fois plus lent que celui de la TI
	angle = fmod(angle, PI);
	//return tan(angle);
	float theta[7];
	theta[0]=0.78539816339744830962;
	theta[1]=0.099668652491162027378;
	theta[2]=0.0099996666866652382063;
	theta[3]=0.00099999966666686666652;
	theta[4]=0.000099999999666666668667;
	theta[5]=0.0000099999999996666666667;
	theta[6]=0.00000099999999999966666667;
	int k = 0;
	float X = 1;
	float Y = 0;
	const float epsilon = 0.01;
	while (angle > epsilon)
	{
		while (angle < theta[k])
		{
			k++;
		}
	angle=angle-theta[k];
	float temp = X;
	X = X - pow(10,-k)*Y;
	Y = Y + pow(10,-k)*temp;
	}
	return Y/X;
}



Ou j'm'a gouré ?



Kevin Kofler (./18) :
Je pense que AMS utilise Cordic.



Oui, c'est ce qui semble le plus courant pour ce genre de calcul. Mais je comprends pas pourquoi mon implémentation est si lente (je vais finir par croire en les vertus magiques de l'ASM... ou en mon incompétence !)