Here is the list of stuff where interpool is not reentrant.
Most of these are subs where I use a static to cache the 
result of a calculation that gets done over and over with
the same parameters.
It should be easy to make a function init_reentrant, which
would have to be called very early in each thread and would
call each of these caching functions once, to set their
values. Then, any further calls (with the same args! I would
have to make sure that the args don't change in the lifetime
of the thread) would be just reading from the static, so
there should be no problem...?


myrand.c: random() is possibly not reentrant?

closure.c: compareVectors
  static int nbMotsSaved ; /* compareVectors(NULL, NULL, nbMots) trick */

design.c: maxInterBetweenVars
  /* caching of params and result */
design.c: maxPoolsPerVar
  /* caching of params and result */

fonc.c: firstDivisor
  /* cache list of primes */

pools.c: nbmotparpool
  /* caching of params and result */
pools.c: getpoolvalue/setpoolvalue
  static MOT tabmask[ARCH+1] = MASKS ;
  static int nbvarparmot = (sizeof(MOT) * CHAR_BIT) >> 1 ;


poolInVector.c: nbMotsPerPoolsVec
  /* caching of params and result */
poolInVector.c: getPoolInVector/setPoolInVector
  static MOT tabmask[ARCH+1] = MASKS ;


solvexpNaive.c: updateVVAllNegPools_NegSVs
  static MOT** allNegSVs = NULL ;
  /* this is probably a hard one to avoid... */


newPools.c: findPoolsRec
  static int gamma = 0 ; /* cache result */


entropy.c: fillSigRandom
  static int* countForXpos = NULL ;
  /* result caching, not sure if it can be initialized once though... */


STDtoMCPD.c: getactivpool/setactivpool
  static MOT tabmask[ARCH+1] = MASKS ;
STDtoMCPD.c: buildMCPD_Files
  static int num = 0;


