clear, clc
% Compuertaidentidad
I2=eye(2);
I4=eye(4);

% Compuerta Hadamard
H=(sqrt(2)/2)* hadamard(2)

% Compuerta fase
S=[1 0; 0 1i]

% Compuerta pi/8 

T=[1 0;0 exp(1i*(pi/4))];

% T tarnspuesta conjugada
 T1=T';
 
 % Compuerta CNOT 
 
 CNOT=[1 0 0 0; 0 1 0 0; 0 0 0 1;0 0 1 0];
 
 % Compuerta CNOT ( el primer qubit controla el tercero y no modifica el
 % segundo
 
 CNOT313= [1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0;0 0 0 1 0 0 0 0; 0 0 0 0 0 1 0 0; 0 0 0 0 1 0 0 0; 0 0 0 0 0 0 0 1; 0 0 0 0 0 0 1 0]
 
 % Queremos llegar a
 
 Tff= [1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0;0 0 0 1 0 0 0 0; 0 0 0 0 1 0 0 0; 0 0 0 0 0 1 0 0; 0 0 0 0 0 0 0 1; 0 0 0 0 0 0 1 0]
 
 pause
 
 %%%%%%%%%% Etapas del circuito: son 13
 
 %Etapa1
 E1=kron(I4,H)
 
 % Etapa2
 
 E2=kron(I2,CNOT)
 
 %Etapa 3
 
 E3=kron(I4,T1)
 
 % Etapa 4
 
 E4=CNOT313
 
 % Etapa 5
 
  E5=kron(I4,T);
  
  %Etapa 6
  
  E6=kron(I2,CNOT)
  
  % Etapa 7
  
  E7=E3
  
  % Etapa 8
  
  E8=E4
  
  % Etapa 9
  
  E9=kron(kron(I2,T1),T)
  
  % Etapa 10
  
  E10=kron(CNOT,H)
  
  %Etapa 11
  
  E11=kron(kron(I2,T1),I2)
  
  %Etapa 12
  
  E12=kron(CNOT,I2)
  
  % Etapa 13
  
  E13=kron(kron(T,S),I2)
  
  % La compuerta de Toffoli
  pause
  
  Toff= E1*E2*E3*E4*E5*E6*E7*E8*E9*E10*E11*E12*E13
  
  % Para representar mejor 
  
  Toff=real(Toff)
  
 
 
