o
    jg~                     @   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   `/var/www/html/zoom/venv/lib/python3.10/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s%J | j| j| j| jgg dks5J td\}}}}}}t|}|tddgd| dggksSJ |jd| ks\J t|td|gddggkslJ t	||tddgd|| ggksJ t
|||tddg|| ||  || ggksJ t tddgddggksJ t|tddgd	| dggksJ 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sJ |j|	d ksJ |j|	d ksJ td}
t||
t|g|
ggks$J t|t||
 t|
| | g|
ggks<J tt|f|
fft|g|
ggksQJ t|t||
 j|
| | ksdJ t|t||
 j|
kssJ tdddd}t|jddt t  sJ tt|jddt  sJ tt|jtdsJ tt|jtdsJ 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s9J tt ||ksCJ t|t |ksMJ td\}}}t!|||d dd||d | |    d|   ksrJ t!|||d |d|d |d   |d |d    ksJ t!|||d dtd|d |d   |d |d    ksJ 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s!J t"||||dd |ks0J tddd \}}}t|||d}|j$|td |d  |d |d   d  ksZJ |j|t|d |d  td |d   d  ksvJ |j|ks~J |j%|t|  ksJ |j&t'|t|d  | ksJ |j(d| t ksJ 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)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   radius
divergencegouyr	   waist_approximation_limit)matdr+   hn1n2Rlensmulmul_matr(   pfsp1r)   wavelenr5   r   r   s_inz_r_inlw_iw_ozr4   r   r   r    test_gauss_opt   s       &"$$, 
*& $   $
&
*
8 B48"rM   N)$sympy.core.evalfr   sympy.core.numbersr   r   r   r   sympy.core.symbolr   (sympy.functions.elementary.miscellaneousr   (sympy.functions.elementary.trigonometricr	   sympy.matrices.denser
   sympy.polys.polytoolsr   sympy.physics.opticsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   rM   r   r   r   r    <module>   s    H