📄 polinomiala.c
字号:
#include <prototype.h>
#define N 16
#define Simulari 10
Word32 polinomiala(Word16 a[],Word16 x[])
{
#pragma align *a 8 //vectorii se vor considera aliniati in prog care apeleaza functia
#pragma align *x 8
int k,i;
Word32 rezultat[Simulari];
#pragma align rezultat 8
rezultat[Simulari]=0;
for (k=0;k<N;k++)
rezultat[i]=L_mac(rezultat[i],a[k],x[i]^k);
return rezultat[i];
}
/* Mai jos am exemplificat folosirea tehnicii split computation pentru a utiliza in paralel
toate cele 4 unitati ALU, insa am observat ca necesita un timp de rulare mult mai mare
si deci nu potrivita acestei aplicatii. Plus ca precizia este mai mica decat in cazul utilizarii
unei singure unitati ALU (din cauza acumularii in serie a erorilor fiecarui produs)
Word32 rezultat1[Simulari];
#pragma align rezultat1 8
Word32 rezultat2[Simulari];
#pragma align rezultat2 8
Word32 rezultat3[Simulari];
#pragma align rezultat3 8
Word32 rezultat4[Simulari];
#pragma align rezultat4 8
rezultat1[Simulari]=0;
rezultat2[Simulari]=0;
rezultat3[Simulari]=0;
rezultat4[Simulari]=0;
for (k=0;k<N;k=+4)
{ rezultat1[i]=L_mac(rezultat1[i],a[k],x[i]^k);
rezultat2[i]=L_mac(rezultat2[i],a[k+1],x[i]^(k+1));
rezultat3[i]=L_mac(rezultat3[i],a[k+2],x[i]^(k+2));
rezultat4[i]=L_mac(rezultat4[i],a[k+3],x[i]^(k+3));
}
rezultat1[i]=L_add(rezultat1[i],rezultat2[i]);
rezultat3[i]=L_add(rezultat3[i],rezultat4[i]);
rezultat1[i]=L_add(rezultat1[i],rezultat3[i]);
return rezultat1[i];
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -