Mentions légales du service

Skip to content
Snippets Groups Projects
Commit e16d9f7b authored by Vincent Danjean's avatar Vincent Danjean
Browse files

Optimize rhyper.c for our use case

We do not need to get several values with the same parameters
So, we avoid to check and store the previous state
parent af98d52c
No related branches found
No related tags found
No related merge requests found
...@@ -140,14 +140,14 @@ int rhyper(int nn1, int nn2, int kk) ...@@ -140,14 +140,14 @@ int rhyper(int nn1, int nn2, int kk)
double xk, xm, xn, y1, ym, yn, yk, alv; double xk, xm, xn, y1, ym, yn, yk, alv;
/* These should become `thread_local globals' : */ /* These should become `thread_local globals' : */
static __thread int ks = -1; //int ks = -1;
static __thread int n1s = -1, n2s = -1; //int n1s = -1, n2s = -1;
static __thread int k, m; int k, m;
static __thread int minjx, maxjx, n1, n2; int minjx, maxjx, n1, n2;
static __thread double a, d, s, w; double a, d, s, w;
static __thread double tn, xl, xr, kl, kr, lamdl, lamdr, p1, p2, p3; double tn, xl, xr, kl, kr, lamdl, lamdr, p1, p2, p3;
/* check parameter validity */ /* check parameter validity */
...@@ -157,16 +157,16 @@ int rhyper(int nn1, int nn2, int kk) ...@@ -157,16 +157,16 @@ int rhyper(int nn1, int nn2, int kk)
/* if new parameter values, initialize */ /* if new parameter values, initialize */
reject = 1; reject = 1;
if (nn1 != n1s || nn2 != n2s) { //if (nn1 != n1s || nn2 != n2s) {
setup1 = 1; setup2 = 1; setup1 = 1; setup2 = 1;
} else if (kk != ks) { /*} else if (kk != ks) {
setup1 = 0; setup2 = 1; setup1 = 0; setup2 = 1;
} else { } else {
setup1 = 0; setup2 = 0; setup1 = 0; setup2 = 0;
} }*/
if (setup1) { if (setup1) {
n1s = nn1; //n1s = nn1;
n2s = nn2; //n2s = nn2;
tn = nn1 + nn2; tn = nn1 + nn2;
if (nn1 <= nn2) { if (nn1 <= nn2) {
n1 = nn1; n1 = nn1;
...@@ -177,7 +177,7 @@ int rhyper(int nn1, int nn2, int kk) ...@@ -177,7 +177,7 @@ int rhyper(int nn1, int nn2, int kk)
} }
} }
if (setup2) { if (setup2) {
ks = kk; //ks = kk;
if (kk + kk >= tn) { if (kk + kk >= tn) {
k = (int)(tn - kk); k = (int)(tn - kk);
} else { } else {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment