void  cDico_SymbFN::AddF(Fonc_Num aF)
{
   Fonc_Num::tKindOfExpr aK = aF.KindOfExpr();

   if (
             (aK == Fonc_Num::eIsICste)
          || (aK == Fonc_Num::eIsRCste)
          || (aK == Fonc_Num::eIsVarSpec)
      )
      return;
   
   cCelDico_SFN & aCel = mDic[aF];

   // Lorsque l'expression est marquee comme interessante,
   // on force l'emission de symbole pour clarifier
   if (aF.HasNameCpp())
      aCel.mNbRef++;
   aCel.mNbRef++;
   if ((!aF.IsVarSpec()) && (aCel.mNbRef == 2))
   {
      aCel.mNum = mNumSymb++;
      tPair * aPair = &(*mDic.find(aF));
      mVSymb.push_back(aPair);
   }
}
void cDico_SymbFN::PutSymbs(cElCompileFN & anEnv)
{
   for (INT aK=0 ; aK<INT(mVSymb.size()) ; aK++)
   {
       tPair * aPair = mVSymb[aK];
       Fonc_Num aPF = aPair->first;
       anEnv << "   double "
	     << aPair->second.NameSymb() 
	     << " = "   
	     << aPF << ";" ;
       if (aPF.HasNameCpp())
          anEnv << " // " << aPF.NameCpp();
       anEnv << "\n";
       aPair->second.mSymbPut = true;
   }
   anEnv << "\n";
}