function xx = bin2dec(s, m, e, p, q)

// Conversion binaire IEEE-754 en valeur decimale

  biais = 2^(q-1)-1;
  
// Conversion de l'exposant binaire en valeur decimale non biaisee

  patternQ = (2*ones(1:q)).^[q-1:-1:0];
  expD = patternQ .* e *ones(q,1) - biais;

//  Recuperation des parties binaires entiere 
//  et fractionnaire et conversion de la partie
//  entiere en nombre entier decimal


  if (expD > 0) then           // La partie entiere est superieure a 1
    be = [1, m(1:expD)];
    xe = (2*be).^[expD:-1:0]*ones(expD+1,1);
    bf = [m(expD+1:p), zeros(1,expD)];
    xx = xe;

  elseif (expD == 0) then      // La partie entiere est egale a 1
    bf = m;
    xx = 1;
  else                         // La partie entiere est inferieure a 1
    expD = -expD;
    bf = [zeros(1,expD-1), 1, m(1:p-expD)];
    xx = 0;
  end;
  
//  Conversion de la partie fractionnaire binaire en fractionnaire decimal    
  
  xf = ((2*ones(1,p)).^[-1:-1:-p])*(bool2s(bf == ones(1,p)))';
 
//  Elaboration de la valeur decimale
    
  xx = xx + xf;      
  xx = xx*(-1)**s;
endfunction;
  
