a
    kº”h\  ã                   @   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"   úT/var/www/auris/lib/python3.9/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J ‚t| tƒs$J ‚t| tƒs2J ‚t| tƒs@J ‚| jtdƒfksTJ ‚| jtƒ ksdJ ‚| j	du srJ ‚t dƒ} | jtdƒfksŽJ ‚t t
tƒ} | jt
tfksªJ ‚| jtƒ ksºJ ‚| j	du sÈJ ‚|  ¡ tksØJ ‚| jtt
tƒksìJ ‚|  t
t¡t ttƒksJ ‚tƒ } | tdƒks J ‚tƒ } | tdddƒks<J ‚t ƒ t dƒksPJ ‚d S )	NÚ0Fr	   r!   r-   r.   r/   Úpsi)r   Ú
isinstancer   r   r   Úlabelr   Úhilbert_spacer   Úis_commutativeÚxÚyÚ
dual_classr   ÚdualÚsubsr    r,   ©Úkr"   r"   r%   Útest_ket2   s,    
r@   c                  C   s   t dƒ} t| t ƒsJ ‚t| tƒs$J ‚t| tƒs2J ‚t| tƒs@J ‚| jtdƒfksTJ ‚| jtƒ ksdJ ‚| j	du srJ ‚t dƒ} | jtdƒfksŽJ ‚t t
tƒ} | jt
tfksªJ ‚| jtƒ ksºJ ‚| j	du sÈJ ‚|  ¡ tksØJ ‚| jtt
tƒksìJ ‚|  t
t¡t ttƒksJ ‚t ƒ t dƒksJ ‚d S )Nr3   Fr	   r4   )r   r5   r   r   r   r6   r   r7   r   r8   r9   r:   r;   r   r<   r=   )Úbr"   r"   r%   Útest_braT   s$    
rB   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^J ‚d S )Nr   é   é   éÿÿÿÿ)
r   r   r9   r   r   r   r   r
   r   ZHalf)Zk0Zk1r?   r"   r"   r%   Útest_opsp   s    ÿrF   c                  C   sš  t dtƒ} t| t ƒsJ ‚t| tƒs&J ‚t| tƒs4J ‚t| tƒsBJ ‚| jtdƒfksVJ ‚| jtdƒtfkslJ ‚| j	tkszJ ‚|  
¡ tksŠJ ‚| jtdtƒksžJ ‚|  td¡t ddƒks¸J ‚t tdƒ} | jtfksÒJ ‚| jttdƒfksèJ ‚tƒ } | jtdƒfksJ ‚| j	tdƒksJ ‚| tddƒks,J ‚tƒ } | jtdƒtdƒtdƒfksTJ ‚| j	tdƒkshJ ‚| tddddƒks€J ‚t ƒ t d	dƒks–J ‚d S )
Nr   rD   ç      à?r!   r1   r-   r.   r/   r4   )r   r1   r5   r   r   r   r6   r   ÚargsÚtimer;   r   r<   r=   r9   r   r0   r   r2   r>   r"   r"   r%   Útest_time_dep_ketx   s.    

"rJ   c                  C   sæ   t dtƒ} t| t ƒsJ ‚t| tƒs&J ‚t| tƒs4J ‚t| tƒsBJ ‚| jtdƒfksVJ ‚| jtdƒtfkslJ ‚| j	tkszJ ‚|  
¡ tksŠJ ‚| jtdtƒksžJ ‚t tdƒ}|jtfks¸J ‚|jttdƒfksÎJ ‚t ƒ t ddƒksâJ ‚d S )Nr   rG   r4   r1   )r   r1   r5   r   r   r   r6   r   rH   rI   r;   r   r<   r9   r   )rA   r?   r"   r"   r%   Útest_time_dep_braš   s    

rK   c                  C   s¢   t ddd} tdƒ}tdƒ}t|ƒtdƒks0J ‚t|ƒtdƒksDJ ‚t|ƒjdu sVJ ‚tdƒ}dt | | |  }t|ƒt| ƒt|ƒ dt t|ƒ  ksžJ ‚d S )	Nr9   T)Úcomplexr?   rA   FÚk2rD   )r   r   r   r   r8   r   r   )r9   r?   rA   rM   Úer"   r"   r%   Útest_bra_ket_dagger°   s    rO   c                     sÄ  t ddd\} }t ddd}t dddd}t| d | ƒ‰ ˆ  ¡ }ˆ j}ˆ jd	u sTJ ‚ˆ jtu sbJ ‚ˆ d
ƒdksrJ ‚|d
ƒdks‚J ‚||  t tfks˜J ‚tˆ | ƒtd|  | ƒks´J ‚tt	‡ fdd„ƒ t
ˆ ƒtt
ˆ jƒ| ƒksâJ ‚t
ˆ ƒtˆ ƒksöJ ‚t| d | |d |   | ddf|ddfƒ}|j}||  dks:J ‚|| dksLJ ‚|jd	u s\J ‚|jtdƒd kstJ ‚|ddƒdksˆJ ‚|ddƒdksœJ ‚tt|| ƒ|ƒtd|  d|  | ddf|ddfƒksÖJ ‚t
|ƒtt
|jƒg|jdd … ¢R Ž ksJ ‚t
|ƒt|ƒksJ ‚ttdƒ| d  | ddfƒ}|jdu sFJ ‚| ¡ |ksXJ ‚t
|ƒtt
|jƒ| ddfƒks|J ‚t
|ƒt|ƒks’J ‚tt|t |  | ƒ| d|fƒ}	|	jt|d ƒksÊJ ‚|	|d ƒdksàJ ‚|	dƒtd| t | ƒksJ ‚|	ddddtdt ƒks"J ‚|	 ¡ ttdƒt|ƒ t|t |  | ƒ | d|fƒks`J ‚t
|	ƒtt
|	jƒ| d|fƒks„J ‚t
|	ƒt|	ƒksšJ ‚t| d dƒ}
t|
jd ƒtksÀJ ‚d S )Nzx yT)ÚrealÚL)ÚpositiveÚn)ÚintegerrR   rD   Fé
   éd   i'  c                      s   ˆ   ¡ S )N)Ú	normalizer"   ©Úfr"   r%   Ú<lambda>Ì   ó    z#test_wavefunction.<locals>.<lambda>r   rC   )r   rC   )r   rD   é*   é   é   é   rG   )rS   rQ   r9   )r   r   ZprobZlimitsÚis_normalizedZnormr   r   r   ÚNotImplementedErrorr   Úexprr   r   rH   rW   r   r	   ÚtypeÚ	variablesr   )r9   r:   rQ   rS   ÚpZlimsÚgZlims_gÚhZpiabr?   r"   rX   r%   Útest_wavefunction½   sV    ,:.$ " .ÿ
$rh   c                  C   sh   t tƒttƒ } |  ¡ dks J ‚t tƒttd ƒ } |  ¡ dksDJ ‚t tƒttƒ } |  ¡ | ksdJ ‚d S )NrC   r   )r   r9   r   Zdoitr:   )Zbracketr"   r"   r%   Útest_orthogonal_statesð   s    ri   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   r9   r:   r1   r    r,   r0   r2   r@   rB   rF   rJ   rK   rO   rh   ri   r"   r"   r"   r%   Ú<module>   s8   0""3