ó
¡¼™\c           @   sÆ   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 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 „  Z d „  Z d S(   iÿÿÿÿ(
   t   atan2t   factort   Floatt   It   Matrixt   Nt   oot   pit   sqrtt   symbols(   t   BeamParametert   CurvedMirrort   CurvedRefractiont
   FlatMirrort   FlatRefractiont	   FreeSpacet   GeometricRayt   RayTransferMatrixt   ThinLenst   conjugate_gauss_beamst   gaussian_conjt   geometric_conj_abt   geometric_conj_aft   geometric_conj_bft   rayleigh2waistt   waist2rayleighc         C   s   t  |  ƒ t  | ƒ k S(   N(   t   str(   t   at   b(    (    sG   lib/python2.7/site-packages/sympy/physics/optics/tests/test_gaussopt.pyt   streq
   s    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 so t ‚ |  j |  j |  j |  j g d d d d g k s¥ t ‚ t d ƒ \ } } } } } } t | ƒ } | t d d g d | d g g ƒ k sý t ‚ | j d | k st ‚ t	 | ƒ t d | g d d g g ƒ k sFt ‚ 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 sðt ‚ t | ƒ t d d g d | d g g ƒ k s$t ‚ t | ƒ t d d g d | d g g ƒ k sXt ‚ t | ƒ t	 | ƒ } t d d g d | d g g ƒ t d | g d d g g ƒ }	 | j |	 d k sÅt ‚ | j |	 d k sÞt ‚ | j |	 d k s÷t ‚ | j |	 d k st ‚ t d	 ƒ }
 t | |
 ƒ t | g |
 g g ƒ k sIt ‚ t	 | ƒ t | |
 ƒ t |
 | | g |
 g g ƒ k sˆt ‚ t t | f |
 f f ƒ ƒ t | g |
 g g ƒ k sÄt ‚ t	 | ƒ t | |
 ƒ j |
 | | k sôt ‚ t	 | ƒ t | |
 ƒ j |
 k st ‚ t d
 d d d ƒ} t | j d d t t ƒ sUt ‚ t t | j ƒ d d t ƒ s{t ‚ t t | j ƒ t d ƒ ƒ sŸt ‚ t t | j ƒ t d ƒ ƒ sÃt ‚ t	 d ƒ } | | } t t | j ƒ t d ƒ ƒ sýt ‚ t t | j ƒ t d ƒ ƒ s!t ‚ t d ƒ \ } } t | | ƒ t | d | k sZt ‚ t d ƒ \ } } t | | ƒ t | | ƒ t t ƒ k s›t ‚ t d ƒ \ } } } t | | ƒ | | | | k s×t ‚ t | | ƒ | | | | k sþt ‚ t  | | ƒ | | | | k s%t ‚ t t! | ƒ | k s@t ‚ t | t! ƒ | k s[t ‚ t d ƒ \ } } } t" | | | ƒ d d d | | d | | d | k s³t ‚ t" | | | ƒ d | d | d | d | d | d k sùt ‚ t" | | | ƒ d d t d | d | d | d | d ƒ k sEt ‚ t d ƒ \ } } } } t# | | | d | ƒd | t | d | d t d | d | d | d ƒ d k sÀt ‚ t$ t# | | | d | ƒd ƒ | | d | d | d t | d | d t d | d | d | d ƒ | d k sDt ‚ t# | | | d | ƒd | k slt ‚ t d d t% ƒ\ } } } t | | d | ƒ} | j& | t d | d | d | d d k sÕt ‚ | j | t | d | d t d | d d ƒ k s	t ‚ | j | k s)	t ‚ | j' | t | k sF	t ‚ | j( t) | t | d | ƒ k sp	t ‚ | j* d | t k s	t ‚ d  S(   Ni   i   i   i   s   d f h n1 n2 Ri    iÿÿÿÿiþÿÿÿt   angleg 4PSªÈ¡>t   wgü©ñÒMbP?g´ìsHM0þ?g      ð?gÒ”ªJËµ@i
   g“µ’’P?g(1E£ÜDa?s	   w wavelens   z_r wavelens   a b fs   s_in z_r_in fs   l w_i w_o ft   fs   z l rt   positive(   i    i    (   i    i   (   i   i    (   i   i   (+   R   R   t   AssertionErrort   At   Bt   Ct   DR	   R   R   R   R   R   R   R   t   heightR   R
   R   t   qR   R   R   t   w_0R   t   z_rR   R   R   R   R   R   R   R   R   R   R   t   Truet   radiust
   divergencet   gouyR    t   waist_approximation_limit(   t   matt   dR    t   ht   n1t   n2t   Rt   lenst   mult   mul_matR   t   pt   fst   p1R   t   wavelenR*   R   R   t   s_int   z_r_int   lt   w_it   w_ot   z(    (    sG   lib/python2.7/site-packages/sympy/physics/optics/tests/test_gaussopt.pyt   test_gauss_opt   sˆ    *06.07C-44>-<<0($&$$
$$'/'''@CIGe(9?*N(   t   sympyR    R   R   R   R   R   R   R   R   R	   t   sympy.physics.opticsR
   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   RC   (    (    (    sG   lib/python2.7/site-packages/sympy/physics/optics/tests/test_gaussopt.pyt   <module>   s   Fj	