a
    kh~                     @   s   d dl mZ d dl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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mZmZmZmZm Z m!Z! d	d
 Z"dd Z#dS )    )N)FloatIoopi)symbols)sqrt)atan2)Matrix)factor)BeamParameterCurvedMirrorCurvedRefraction
FlatMirrorFlatRefraction	FreeSpaceGeometricRayRayTransferMatrixThinLensconjugate_gauss_beamsgaussian_conjgeometric_conj_abgeometric_conj_afgeometric_conj_bfrayleigh2waistwaist2rayleighc                 C   s   t | t |kS )N)str)ab r   V/var/www/auris/lib/python3.9/site-packages/sympy/physics/optics/tests/test_gaussopt.pystreq   s    r!   c               	   C   s  t dddd} | tddgddggks*J | t tddgddggksJJ | j| j| j| jgg dksjJ td\}}}}}}t|}|tddgd| dggksJ |jd| ksJ t|td|gddggksJ t	||tddgd|| ggksJ t
|||tddg|| ||  || ggks4J t tddgddggksTJ t|tddgd	| dggkszJ t|tddgd| dggksJ t|t| }tddgd	| dggtd|gddgg }	|j|	d
 ksJ |j|	d ksJ |j|	d ksJ |j|	d ks,J td}
t||
t|g|
ggksTJ t|t||
 t|
| | g|
ggksJ tt|f|
fft|g|
ggksJ t|t||
 j|
| | ksJ t|t||
 j|
ksJ tdddd}t|jddt t  sJ tt|jddt  s<J tt|jtdsVJ tt|jtdspJ td}|| }tt|jtdsJ tt|jtdsJ td\}}t||t|d  | ksJ td\}}t||t|| tt ksJ td\}}}t|||| ||  ks>J t|||| ||  ks^J t|||| ||  ks~J tt ||ksJ t|t |ksJ td\}}}t!|||d dd||d | |    d|   ksJ t!|||d |d|d |d   |d |d    ks.J t!|||d dtd|d |d   |d |d    kspJ td\}}}}t"||||dd |t|d |d  td |d  |d |d     d  ksJ t#t"||||dd ||d  |d |d  t|d |d  td |d  |d |d      |d  ksNJ t"||||dd |kslJ tddd \}}}t|||d}|j$|td |d  |d |d   d  ksJ |j|t|d |d  td |d   d  ksJ |j|ksJ |j%|t|  ks J |j&t'|t|d  | ksBJ |j(d| t ksZJ tddddd!}t|jdd"t t  sJ tt|jtd#sJ tt|jtdsJ d S )$N            )r"   r#   r$   r%   zd f h n1 n2 Rr   )r   r   )r   r"   )r"   r   )r"   r"   angleg 4PSȡ>gMbP?)wgsHM0?g      ?gҔJ˵@
   gP?g(1EDa?z	w wavelenzz_r wavelenza b fzs_in z_r_in fzl w_i w_o f)fzz l w_0T)Zpositive)r)   ngsHM0@gݔJ˵'@))r   r
   ABCDr   r   r   r   r   r   r   r   heightr(   r   r!   qr   r   r   w_0r   z_rr)   r   r   r   r   r   r   r   r   r   r   ZradiusZ
divergenceZgouyr	   Zwaist_approximation_limit)matdr+   hZn1Zn2RZlensmulZmul_matr(   pfsp1r)   Zwavelenr4   r   r   Zs_inZz_r_inlZw_iZw_ozr3   r   r   r    test_gauss_opt   s        &"
 &&, 
*& $   $
&
*
8 B48"r?   N)$Zsympy.core.evalfr   Zsympy.core.numbersr   r   r   r   Zsympy.core.symbolr   Z(sympy.functions.elementary.miscellaneousr   Z(sympy.functions.elementary.trigonometricr	   Zsympy.matrices.denser
   Zsympy.polys.polytoolsr   Zsympy.physics.opticsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   r?   r   r   r   r    <module>   s   H