Implementation note
-------------------

Funzioni mimic one-to-many
--------------------------
Il problema menzionato da peter wayner in relazione alla difficolta' di
rappresentare le frequenze > 50% non si presenta, in quanto in queste
situazioni si rinuncia alla codifica di informazione e viene usato un
generatore di numeri casuali.
In particolare nel file mimic.cc e' presente la definizione della soglia
di massimo errore di una probabilita'.

// limite per cui accettare una probabilit rispetto a quella desiderata
//   | p - p_desiderata | < P_EPSILON
#define P_EPSILON 0.2

Se l'errore  e' maggiore di P_EPSILON non viene codificata informazione e il
simbolo successivo viene scelto casualmente.
Cio' rende anche non deterministica la fase di codifica.


Funzione di hash
----------------
La funzione di hash utilizzata e' la seguente :

  I[i] bit i-esimo del file in input
  O[i] bit i-esimo del file di output
  R bitrate scelto per la funzione di hash
  ^ operatore XOR
  
  O[i] = I[0] ^ I[1] ^ ... ^ I[i*R+R-1]
  
L'eventuale carattere finale non completo (meno di 8 bit) del file di output
viene eliminato.

Prima di applicare la funzione di hash viene applicato automaticamente il 
seguente filtro :

  bool space = true;
  int c = getchar();
  while (c!=EOF) {
    if (isspace(c)) {
      if (!space) 
        putchar(' ');
      space = true;
    } else {
      putchar(c);
      space = false;
    }
    c = getchar();
  }
  

exmodel.cc exmimic.cc 
---------------------
Sono dei sorgenti di esempio di utilizzo delle mimic function.


testgen.cc
----------
Generatore di file di test utilizzati per la fase di check
