U
    ZÊ¹j‹  ã                   @   sÀ   d dl mZmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZmZmZ d dlmZmZmZmZmZmZ d dlmZ d d	lmZ d d
lmZ d dlmZ dd„ Zdd„ Zdd„ Z dS )é    )ÚIÚpi)ÚSymbol)Úexp)Úsqrt)ÚMatrix)ÚQFTÚIQFTÚRkGate)ÚZGateÚSwapGateÚHadamardGateÚCGateÚ	PhaseGateÚTGate)ÚQubit)Úqapply)Ú	represent)Úsignc               	   C   sÀ   t dƒ} td| ƒj| kst‚td| ƒjdks0t‚tddƒtdƒksFt‚tddƒtdƒks\t‚tddƒtdƒksrt‚ttd| ƒdd�t	ddgdt
t| ƒd t t dt| ƒ  ƒggƒks¼t‚d S )NÚxé   ©r   é   é   r   ©Znqubits)r   r
   ÚkÚAssertionErrorÚtargetsr   r   r   r   r   r   r   r   r   Úabs)r   © r   úc/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/physics/quantum/tests/test_qft.pyÚtest_RkGate   s     ÿ2ÿr!   c                   C   sZ  t ddƒ ¡ tddƒtdƒ tdtdƒƒ tdƒ tdtdƒƒ tdtdƒƒ tdƒ ks^t‚tddƒ ¡ tdƒtdt	ddƒƒ tdt	ddƒƒ tdƒ tdt	ddƒƒ tdƒ tddƒ ksÂt‚t
t ddƒdd	�td
d„ tdƒD ƒƒksît‚t ddƒ ¡ �st‚tt ddƒ ¡ tdddƒ ƒ ¡ ttdƒtdƒ tdƒ tdddƒ ƒ ¡ k�sVt‚d S )Nr   r   r   )r   r   r   éþÿÿÿéýÿÿÿr   c                    s"   g | ]‰ ‡ fd d„t dƒD ƒ‘qS )c                    s4   g | ],}t d t t d ƒ|ˆ  d  tdƒ ‘qS )r   é   )r   r   r   r   )Ú.0Úi©Újr   r    Ú
<listcomp>(   s     z3test_quantum_fourier.<locals>.<listcomp>.<listcomp>r$   )Úrange)r%   r   r'   r    r)   (   s     z(test_quantum_fourier.<locals>.<listcomp>r$   é   )r   Ú	decomposer   r   r   r   r   r   r	   r
   r   r   r*   r   r   Úexpandr   r   r   r    Útest_quantum_fourier   s:    ÿÿÿþÿ&ÿÿÿÿÿÿ""ÿr.   c                  C   sF   t ddƒ} t| dd�}t|  ¡ dd�}|jdd�|jdd�ksBt‚d S )Nr   r   r   é
   )Ún)r   r   r,   Zevalfr   )ÚcÚaÚbr   r   r    Útest_qft_represent0   s    
r4   N)!Zsympy.core.numbersr   r   Zsympy.core.symbolr   Z&sympy.functions.elementary.exponentialr   Z(sympy.functions.elementary.miscellaneousr   Zsympy.matrices.denser   Zsympy.physics.quantum.qftr   r	   r
   Zsympy.physics.quantum.gater   r   r   r   r   r   Zsympy.physics.quantum.qubitr   Zsympy.physics.quantum.qapplyr   Zsympy.physics.quantum.representr   Z$sympy.functions.elementary.complexesr   r!   r.   r4   r   r   r   r    Ú<module>   s    