1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
void normalizeVecs(FLOAT vecs[], int n) {
FLOAT N[n];
#ifdef ipp
int stride2=sizeof(Ipp32f);
int stride0=3*stride2;
ippmL2Norm_va_32f(vecs,stride0,stride2,N,3,n);
Ipp32f iN[n];
ippsInv_32f_A24(N,iN,n);
Ipp32f vOut[n*3];
ippmMul_vaca_32f(vecs,stride0,stride2,iN,stride2,vOut,stride0,stride2,3,n);
cout << "vout" << endl;
for (int i=0; i<n; i++) {
for (int k=0; k<3; k++)
cout << vOut[3*i+k] << ' ';
cout << endl;
}
ippsCopy_32f(vOut,vecs,3*n);
cout << "vecs" << endl;
for (int i=0; i<n; i++) {
for (int k=0; k<3; k++)
cout << vecs[3*i+k] << ' ';
cout << endl;
}
#else
#pragma omp parallel
{
#pragma omp for
for (int i=0; i<n; i++)
N[i]=sqrt(pow(vecs[3*i],2)+pow(vecs[3*i+1],2)+pow(vecs[3*i+2],2));
#pragma omp for
for (int i=0; i<n; i++) {
vecs[3*i]/=N[i];
vecs[3*i+1]/=N[i];
vecs[3*i+2]/=N[i];
}
}
#endif
}
|