%***********************************************************************%
% Nom du fichier : balay2.m															%
%																								%
% Role du fichier : Teste la difference de temps d'execution entre 		%
%						  les balayages de Matlab et ceux du programme C.		%
%						  Pour 16 sources et 1000 points.							%
%***********************************************************************%

clear all;
close all;

dur=1000;
theta=20*pi/180;
signal(1,:)=vcircN(dur,2);
signal(2,:)=vcircN(dur,2);
signal(3,:)=vcircN(dur,2);
signal(4,:)=vcircN(dur,2);
signal(5,:)=vcircN(dur,2);
signal(6,:)=vcircN(dur,2);
signal(7,:)=vcircN(dur,2);
signal(8,:)=vcircN(dur,2);
signal(9,:)=vcircN(dur,2);
signal(10,:)=vcircN(dur,2);
signal(11,:)=vcircN(dur,2);
signal(12,:)=vcircN(dur,2);
signal(13,:)=vcircN(dur,2);
signal(14,:)=vcircN(dur,2);
signal(15,:)=vcircN(dur,2);
signal(16,:)=vcircN(dur,2);

A=(randn(16)+i*randn(16))*signal;
S=A;
w=-1;
r=16;

fprintf('Pour 16 sources et 1000 points\n');
fprintf('\n');

% Programme Matlab.
fprintf('Matlab\n');
if r==2,K=1;else,K=1+round(sqrt(r));end;  %%% K= NBRE MAXI DE BALAYAGES
tic
Rot=eye(r);
K=K+2;
for k=1:K,                         %%%%%% DEBUT BALAYAGES
Q=eye(r);
  for i=1:r-1,
  for j= i+1:r,
    S1ij=[S(i,:);S(j,:)];
    [qij,theta]=tfuni1(S1ij,w);  %%%%%% ROTATION PLANE SEPARANTE
    Sij=qij*S1ij;                  %%%%%% TRAITEMENT D'UNE PAIRE
    S(i,:)=Sij(1,:);S(j,:)=Sij(2,:);
    Qij=eye(r);Qij(i,i)=qij(1,1);Qij(i,j)=qij(1,2);
    Qij(j,i)=qij(2,1);Qij(j,j)=qij(2,2);
    Q=Qij*Q;                       %%%%%% CUMUL DE LA ROTATION SUR LE BALAY
  end;
  end;
  Rot=Rot*Q';                        %%%%%% CUMUL DE TOUTES LES ROTATIONS
end;
toc
Rot
fprintf('\n');

w=-1;
r=16;
S=A;

% Programme C.
fprintf('Programme C\n');
if r==2,K=1;else,K=1+round(sqrt(r));end;  %%% K= NBRE MAXI DE BALAYAGES
tic;
[Rot2]=balayage(S,r,K,w);
toc
Rot2




