function f=dpyramid(s,a);

%           f=dpyramid(s,a);
%
% Réalise la phase de redistribution pour l'algorithme à pyramide avec un
% filtre (spline cubique de paramètre a dans [0,1])
%        h(0)=a, h(1)=h(-1)=1/4 , h(2)=h(-2)=1/4-a/2, 
% h(k)=0 pour |k|>2. Pour une entrée (en ligne) de longueur 2^p+1, l'algorithme génère
% en sortie (en ligne) un signal digital de longueur 2^(p+1)+1. 
%
% Sur un signal digital de longueur 2^p+1, l'algorithme pyramidal
% s'implémente donc en : 
%
% r1=rpyramid(s,a); 
% rr1=dpyramid(r1,a);
% d1=s-rr1;
% r2=rpyramid(r1,a);
% rr2=dpyramid(r2,a);
% d2=r1-rr2; 
% etc. 


m=length(s);
M=2*m-1;
b=(1/4)-(a/2);
j=1:M;
y(j)=j;
y(1)=a*(s(1))+b*(s(2));
y(M)=a*(s(m))+b*(s(m-1));
k=1:(m-2);
y(2*k+1)=a*(s(k+1))+b*(s(k)+s(k+2));
l=1:(m-1);
y(2*l)=(1/4)*(s(l)+s(l+1));
f=2*y;