|
| |
#define DESCRIPTION05 "x86 Fixed"
#define REQFEATURES05 RF_FPU
// とりあえず
void entry05(float coeff[SZOUTVECTOR][SZINVECTOR], float in_vector[SZINVECTOR],
float out_vector[SZOUTVECTOR], int count )
{
long
lcoeff[SZOUTVECTOR][SZINVECTOR];
long lin_vector[SZINVECTOR];
long
lout_vector[SZOUTVECTOR];
long
i,j,l,m;
// char buf[80];
// in_vectorを固定小数点 lin_vector
に変換(小数点位置は2に設定:1.0を越えてそうになかったので)
for (i=0; i<SZINVECTOR; i++)
{
f2lf(in_vector[i],&lin_vector[i],&l);
lfadj(&lin_vector[i],l,2);
}
// coeffを固定小数点 lcoeff
に変換(小数点位置は6に設定:整数部は2桁程度と判断)
for(i=0; i<SZOUTVECTOR; i++)
{
for (j=0; j<SZINVECTOR; j++)
{
f2lf(coeff[i][j],&lcoeff[i][j],&l);
lfadj(&lcoeff[i][j],l,6);
}
}
// 実際の演算部(結果は小数点位置8として得られる)
r2fixed(lcoeff, lin_vector, lout_vector, count);
for(i=0; i<SZOUTVECTOR; i++)
{
m = 8;
norm(&lout_vector[i],&m);
lf2f(lout_vector[i],m,&out_vector[i]);
}
}
|