U
    	-eU                     @   s  d dl mZ d dlmZ d dlmZ d dl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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 d dlmZ d dlm Z  d dl!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+ d dl,m-Z- ed\Z.Z/Z0G dd de"Z1G dd de"Z2G dd de$Z3G dd de$Z4dd Z5dd Z6dd Z7d d! Z8d"d# Z9d$d% Z:d&d' Z;d(d) Z<d*S )+    )Add)diff)Mul)IIntegerRationaloopi)Pow)S)Symbolsymbols)sympify)	conjugate)sqrt)sin)raises)Dagger)QExpr)
KetBra
TimeDepKet
TimeDepBraKetBaseBraBase	StateBaseWavefunctionOrthogonalKetOrthogonalBra)HilbertSpacezx,y,tc                   @   s   e Zd Zedd ZdS )	CustomKetc                 C   s   dS )N)test selfr"   r"   g/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/sympy/physics/quantum/tests/test_state.pydefault_args   s    zCustomKet.default_argsN__name__
__module____qualname__classmethodr&   r"   r"   r"   r%   r       s   r    c                   @   s   e Zd Zedd ZdS )CustomKetMultipleLabelsc                 C   s   dS )N)rthetaphir"   r#   r"   r"   r%   r&   !   s    z$CustomKetMultipleLabels.default_argsNr'   r"   r"   r"   r%   r,       s   r,   c                   @   s   e Zd Zedd ZdS )CustomTimeDepKetc                 C   s   dS )N)r!   tr"   r#   r"   r"   r%   r&   '   s    zCustomTimeDepKet.default_argsNr'   r"   r"   r"   r%   r0   &   s   r0   c                   @   s   e Zd Zedd ZdS )CustomTimeDepKetMultipleLabelsc                 C   s   dS )N)r-   r.   r/   r1   r"   r#   r"   r"   r%   r&   -   s    z+CustomTimeDepKetMultipleLabels.default_argsNr'   r"   r"   r"   r%   r2   ,   s   r2   c                  C   sT  t d} t| t stt| ts$tt| ts2tt| ts@t| jtdfksTt| jt	 ksdt| j
dksrtt d} | jtdfkstt tt} | jttfkst| jt	 kst| j
dkst|  tkst| jtttkst| ttt ttkstt } | tdks tt } | tdddks<tt  t dksPtd S )	N0Fr	   r!   r-   r.   r/   psi)r   
isinstanceAssertionErrorr   r   r   labelr   hilbert_spacer   is_commutativexy
dual_classr   dualsubsr    r,   kr"   r"   r%   test_ket2   s,    
rA   c                  C   s   t d} t| t stt| ts$tt| ts2tt| ts@t| jtdfksTt| jt	 ksdt| j
dksrtt d} | jtdfkstt tt} | jttfkst| jt	 kst| j
dkst|  tkst| jtttkst| ttt ttkstt  t dkstd S )Nr3   Fr	   r4   )r   r5   r6   r   r   r   r7   r   r8   r   r9   r:   r;   r<   r   r=   r>   )br"   r"   r%   test_braT   s$    
rC   c               	   C   sb   t d} t d}dt |  ttd |  }|ttdt| ttddttdtj	|ks^t
d S )Nr         )r   r   r:   r   r   r   r   r
   r   ZHalfr6   )Zk0Zk1r@   r"   r"   r%   test_opsp   s    rG   c                  C   s  t dt} t| t stt| ts&tt| ts4tt| tsBt| jtdfksVt| j	tdtfkslt| j
tkszt|  tkst| jtdtkst| tdt ddkstt td} | jtfkst| j	ttdfkstt } | jtdfkst| j
tdkst| tddks,tt } | jtdtdtdfksTt| j
tdksht| tddddkstt  t d	dkstd S )
Nr   rE         ?r!   r1   r-   r.   r/   r4   )r   r1   r5   r6   r   r   r   r7   r   argstimer<   r   r=   r>   r:   r   r0   r   r2   r?   r"   r"   r%   test_time_dep_ketx   s.    

"rK   c                  C   s   t dt} t| t stt| ts&tt| ts4tt| tsBt| jtdfksVt| j	tdtfkslt| j
tkszt|  tkst| jtdtkstt td}|jtfkst|j	ttdfkstt  t ddkstd S )Nr   rH   r4   r1   )r   r1   r5   r6   r   r   r   r7   r   rI   rJ   r<   r   r=   r:   r   )rB   r@   r"   r"   r%   test_time_dep_bra   s    

rL   c                  C   s   t ddd} td}td}t|tdks0tt|tdksDtt|jdksVttd}dt | | |  }t|t| t| dt t|  kstd S )	Nr:   T)complexr@   rB   Fk2rE   )r   r   r   r   r6   r9   r   r   )r:   r@   rB   rN   er"   r"   r%   test_bra_ket_dagger   s    rP   c                     s  t ddd\} }t ddd}t dddd}t| d |    } j} jd	ksTt jtksbt d
dksrt|d
dkst||  t tfkstt | td|  | kstt	t
 fdd t tt j| kstt t kstt| d | |d |   | ddf|ddf}|j}||  dks:t|| dksLt|jd	ks\t|jtdd kstt|dddkst|dddksttt|| |td|  d|  | ddf|ddfkstt|tt|jf|jdd   kstt|t|kstttd| d  | ddf}|jdksDt| |ksVtt|tt|j| ddfksztt|t|ksttt|t |  | | d|f}	|	jt|d kst|	|d dkst|	dtd| t | ks t|	ddddtdt ks t|	 ttdt| t|t |  |  | d|fks^tt|	tt|	j| d|fkstt|	t|	kstt| d d}
t|
jd tkstd S )Nzx yT)realL)positiven)integerrS   rE   F
   d   i'  c                      s      S )N)	normalizer"   fr"   r%   <lambda>       z#test_wavefunction.<locals>.<lambda>r   rD   )r   rD   )r   rE   *            rH   )rT   rR   r:   )r   r   ZprobZlimitsis_normalizedr6   Znormr   r   r   NotImplementedErrorr   exprr   r   rI   rX   r   r	   type	variablesr   )r:   r;   rR   rT   pZlimsgZlims_ghZpiabr@   r"   rY   r%   test_wavefunction   sV    ,:,$ " .
$ri   c                  C   sh   t ttt } |  dks tt tttd  } |  dksDtt ttt } |  | ksdtd S )NrD   r   )r   r:   r   Zdoitr6   r;   )Zbraketr"   r"   r%   test_orthogonal_states   s    rj   N)=Zsympy.core.addr   Zsympy.core.functionr   Zsympy.core.mulr   Zsympy.core.numbersr   r   r   r   r	   Zsympy.core.powerr
   Zsympy.core.singletonr   Zsympy.core.symbolr   r   Zsympy.core.sympifyr   Z$sympy.functions.elementary.complexesr   Z(sympy.functions.elementary.miscellaneousr   Z(sympy.functions.elementary.trigonometricr   Zsympy.testing.pytestr   Zsympy.physics.quantum.daggerr   Zsympy.physics.quantum.qexprr   Zsympy.physics.quantum.stater   r   r   r   r   r   r   r   r   r   Zsympy.physics.quantum.hilbertr   r:   r;   r1   r    r,   r0   r2   rA   rC   rG   rK   rL   rP   ri   rj   r"   r"   r"   r%   <module>   s8   0""3