X-Git-Url: https://git.auder.net/images/pieces/%22%20%20VariantRules.getPpath%28board%5Bi%5D%5Bj%5D%29%20%20%20%22.svg?a=blobdiff_plain;f=pkg%2Fsrc%2Ffunctions.c;h=89e84ef7518a7e3e686e098dabe4706af8175b27;hb=f47183deb252f12d532af81a491083f1411cacc8;hp=94ea12dd5e52036f45b6792160944d851329a874;hpb=5af71d43f3f2dba21c6667939fcff88923af3b7b;p=morpheus.git diff --git a/pkg/src/functions.c b/pkg/src/functions.c index 94ea12d..89e84ef 100644 --- a/pkg/src/functions.c +++ b/pkg/src/functions.c @@ -1,5 +1,5 @@ #include -#include +//#include // Index matrix (by columns) #define mi(i, j, d1, d2) (j*d1 + i) @@ -53,7 +53,7 @@ void Moments_M3(double* X, double* Y, int* pn, int* pd, double* M3) // with g(Zi, theta) = i-th contribution to all moments (size dim) - real moments void Compute_Omega(double* X, int* Y, double* M, int* pnc, int* pn, int* pd, double* W) { - int nc=*pnc, n=*pn, d=*pd; + int n=*pn, d=*pd; //,nc=*pnc int dim = d + d*d + d*d*d; //double* W = (double*)malloc(dim*dim*sizeof(double)); @@ -64,8 +64,9 @@ void Compute_Omega(double* X, int* Y, double* M, int* pnc, int* pn, int* pd, dou W[j*dim+k] = 0.0; } double* g = (double*)malloc(dim*sizeof(double)); - omp_set_num_threads(nc >= 1 ? nc : omp_get_num_procs()); - #pragma omp parallel for + // TODO: stabilize this (for now, random result) +// omp_set_num_threads(nc >= 1 ? nc : omp_get_num_procs()); +// #pragma omp parallel for for (int i=0; i=0; j--) + for (int j=0; j=0; k--) +// #pragma GCC unroll 32 + for (int k=j; k>=0; k--) W[baseIdx+k] += gj * g[k]; } } // Normalize W: x 1/n for (int j=0; j j + for (int j=0; j