Low level routine
eng -
fr
genint_c - random integer number generator computational routine
- n : size of vectors
- m : address of length vector of the binary words in number of bits (scalar)
- typ : address of type of binary generators (scalar)
- 0 : Generate random Non Return Zero (NRZ) single bits.
- 1 : Generate random Return Zero (RZ) single bits or unsigned integers.
- 2 : Generate random signed integers.
- y : address of output vector
/* genint_c subroutine
* Random Integer Number Generator
* IRCOM GROUP - Author : A.Layec
*/
/* REVISION HISTORY :
* $Log$
*/
#include "mod_num_lib.h"
/* genint_c routine de calcul de mots entiers aléatoires
* Entrées :
* n : taille du vecteur de sortie (scalaire)
* m : longueur des mots binaires des éléments du vecteur de sorties (scalaire)
* typ : type des générateurs binaires (scalaire)
* (typ=0: génére 1 seul bit codé NRZ
* =1: génère 1 seul bit codé RZ, ou un mot non signé
* =2: génère un mot codé code complément à 2)
* Sorties :
* y : vecteur de sortie
*
* dépendances
* math.h
*/
void genint_c(int *n,int *m,int *typ,double *y)
{
/*déclaration des variables compteurs*/
int k,i,j;
for(i=0;i<(*n);i++)
{
switch (*typ)
{
/*Type 0 -> dédié signal NRZ*/
case 0:
{
y[i]=(int)((rand()&1)*2-1);
break;
}
/*Type 1 -> mot non signé*/
case 1 :
{
k=1;
k=k<<(*m);
j=rand();
y[i]=(j&(k-1));
break;
}
/*Type 2 -> mot codé code complémént à 2*/
case 2 :
{
j=rand();
j -= 2<<((*m)-2);
j &= (2<<((*m)-1)) - 1;
j -= 2<<((*m)-2);
y[i]=j;
break;
}
break;
}
}
return;
}
IRCOM Group
Alan Layec