function [eta1,eta2]=verifie_nullite_gauss_symb(c,n)


%	verifie_nullite_gauss_symb : calcul de l'orthogonalité  et de la normalisation des polynômes en symbolique
%
% *********************************************************
%
%	[eta1,eta2]=verifie_nullite_gauss_symb(c,n) : 
%        vérifie en symbolique que les polynômes de Gauss P_0, ..., P_n
%        sont orthogonaux avec la condition de normalité :
%            P_r(1)=1 pour Legendre et Tchebytchev
%            P_r(0)=1 pour Laguerre
%            le coefficient domimant de P_r est 2^{r} pour Hermite
%
%	variables d'entrées : 
%    *  n : entier naturel.
%     * c définit la méthode : 
%            c=1 : Gauss-Legendre,
%            c=2 : Gauss-Tchebytchev,
%            c=3 : Gauss-Hermite,
%            c=4 : Gauss-Laguerre.
%	variables de sortie eta1 et eta2 où en symbolique, 
%       eta1=0 si max_{0<=r<=n} |P_r(1)-1|=0 pour Legendre et Tchebychev
%              si max_{0<=r<=n} |P_r(0)-1|=0 pour Laguerre
%              si max_{0<=r<=n} |2^r-coefficient dominant(P_r)|=0 pour Hermite
%          et 
%       eta2=0 si max_{0<=r,s<=n, r~=s}|<P_r,P_s>|=0 
%              (en symbolique)
%
%   eta1 et eta2 doivent être nuls.
%
% 
% ************ Fonctions auxiliaires utilisées ************
%
%    calcul_poly_gauss_symb, polyval_symb
%
% *********************************************************


% Contrôles d'entrée
% nombre d'arguments
if nargin~=2
   error('nombre d''arguments de la fonction incorrect');
end
% autres tests éventuels 
if (fix(n)~=n) | (n<0)
   error('l''entier n doit être un entier naturel');
end
if ~((c==1) | (c==2) | (c==3) | (c==4))
   error('c doit être un entier égal à 1, 2, 3 ou 4');
end

% Corps d'algorithme.
P=calcul_poly_gauss_symb(c,n);
ind=0;
if (c==1) | (c==2)
   for r=0:n
      auxi=polyval_symb(P(r+1,1:r+1),1)-sym(1);
      indloc=~(auxi==0);
      ind=max(ind,indloc);
   end
end
if (c==3)
   for r=0:n
      auxi=P(r+1,1);
      auxi=auxi-2^(sym(r));
      indloc=~(auxi==0);
      ind=max(ind,indloc);
   end
end
if (c==4) 
   for r=0:n
      auxi=polyval_symb(P(r+1,1:r+1),0)-sym(1);
      indloc=~(auxi==0);
      ind=max(ind,indloc);
   end
end
eta1=ind;
disp('vérification initiale');
if ~(ind)
   disp('ok !!');
else
   disp('erreur !!');
end
syms x a b;
switch c
   case 1
      a=sym(-1);
      b=sym(1);
      w=sym(1);      
   case 2
      a=sym(-1);
      b=sym(1);
      w=1/sqrt(1-x^2);      
   case 3
      a=-sym(inf);
      b=sym(inf);
      w=exp(-x^2);
   case 4
      a=sym(0);
      b=sym(+inf);
      w=exp(-x);
   end     
ind=0;   
for r=0:n
   for s=0:r-1
      f=polyval_symb(P(r+1,1:r+1),x);
      g=polyval_symb(P(s+1,1:s+1),x);
      auxi=simplify(int(f*g*w,a,b));
      indloc=~(auxi==0);
      ind=max(indloc,ind);
   end
   disp(['vérification pour r=',int2str(r)]);
   if ~(ind)
      disp('ok !!');
   else
      disp('erreur !!');
   end
end
eta2=ind;
