U
    9%e~                     @   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   g/var/www/html/Darija-Ai-API/env/lib/python3.8/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*t| t tddgddggksJt| j| j| j| jgddddgksnttd\}}}}}}t|}|tddgd| dggkst|jd| kstt	|td|gddggkstt
||tddgd|| ggkstt|||tddg|| ||  || ggks:tt tddgddggksZtt|tddgd| dggkstt|tddgd| dggkstt|t	| }tddgd| dggtd|gddgg }	|j|	d	 kst|j|	d
 ks
t|j|	d kst|j|	d ks2ttd}
t||
t|g|
ggksZtt	|t||
 t|
| | g|
ggksttt|f|
fft|g|
ggkstt	|t||
 j|
| | kstt	|t||
 j|
ksttdddd}t|jddt t  s$ttt|jddt  sBttt|jtds\ttt|jtdsvtt	d}|| }tt|jtdsttt|jtdsttd\}}t||t|d  | ksttd\}}t||t|| tt ksttd\}}}t|||| ||  ksDtt|||| ||  ksdtt |||| ||  ksttt!||kstt|t!|ksttd\}}}t"|||d dd||d | |    d|   kstt"|||d |d|d |d   |d |d    ks4tt"|||d dtd|d |d   |d |d    ksvttd\}}}}t#||||dd |t|d |d  td |d  |d |d     d  kstt$t#||||dd ||d  |d |d  t|d |d  td |d  |d |d      |d  ksTtt#||||dd |ksrttddd\}}}t|||d}|j%|td |d  |d |d   d  kst|j|t|d |d  td |d   d  kst|j|kst|j&|t|  ks&t|j't(|t|d  | ksHt|j)d| t ks`ttddddd }t|jdd!t t  sttt|jtd"sttt|jtdstd S )#N            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
   AssertionError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wavelenr5   r   r   Zs_inZz_r_inlZw_iZw_ozr4   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