
    \h=                     (   S SK r S SKJrJr  S SKJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJrJr  S SKJrJrJr  S S	KJr  S S
KJrJr  S SKJr  S SKJr  S SKJr  S SKJrJ r J!r!J"r"  S SK#J$r$J%r%  S SK&J'r'J(r(  S SK)J*r*J+r+J,r,J-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5J6r6J7r7J8r8J9r9  S SK:J;r;J<r<  S SK=J>r>  S SK?J@r@JArA  S SKBJCrC  \" S5      rD\" S5      rE\" S5      rFS rGS rHS rIS rJS rKS rLS rMS-S  jrNS! rOS" rPS# rQS$ rRS% rSS& rTS' rUS( rVS) rWS* rX\;S+ 5       rY\CS, 5       rZg).    N)piRational)Pow)S)Symbol)Abs)explog)cossinsinc)MatrixSymbol)assumingQ)import_module)ccode)MatrixSolve)log2exp2expm1log1p)	logaddexp
logaddexp2)cosm1powm1)optimize	cosm1_optlog2_optexp2_opt	expm1_opt	log1p_opt	powm1_opt
optims_c99create_expand_pow_optimization
matinv_optlogaddexp_optlogaddexp2_optoptims_numpyoptims_scipy	sinc_optsFuncMinusOneOptim)XFAILskip)lambdify)compile_link_import_stringshas_c)	may_xfailcythonnumpyscipyc                  V   [        S5      n S[        SU -  S-   5      -  [        S5      -  n[        U[        /5      nUS[	        SU -  S-   5      -  :X  d   eUR                  [        5      U:X  d   eS[        SU -  S-   5      -  S[        S5      -  -  n[        U[        /5      nUS[	        SU -  S-   5      -  S-  :X  d   eUR                  [        5      U:X  d   e[        U 5      [        S5      -  n[        U[        /5      nU[	        U 5      :X  d   eUR                  [        5      U:X  d   e[        U 5      [        S5      -  [        U S-   5      -   n[        U[        /5      nU[	        U 5      [        S5      [	        U S-   5      -  -   :X  d   eUR                  [        5      U:X  d   e[        S5      n	[        U	[        /5      n
X:X  d   e[        U S-   5      [        S5      -  n[        U[        /5      n[        U5      S	:X  d   eUR                  [        5      U:X  d   eg )
Nx                     zlog2(x + 3))r   r
   r   r   r   rewritestr)r6   expr1opt1expr2opt2expr3opt3expr4opt4expr5opt5expr6opt6s                Z/var/www/auris/envauris/lib/python3.13/site-packages/sympy/codegen/tests/test_rewriting.pytest_log2_optrM       s   sAc!A#'lNCF#EEH:&D1T!A#']?"""<<%%%c!A#'lNBs1vI&EEH:&D1T!A#']?2%%%%<<%%%F3q6MEEH:&D47??<<%%%F3q6MC!H$EEH:&D47SVD1I-----<<%%%GEEH:&D==AJs1vEEH:&Dt9%%%<<%%%    c                      [        S5      n SSU -  -   n[        U[        /5      nUS[        U 5      -   :X  d   eUR	                  [
        5      U:X  d   eSSU -  -   nU[        U[        /5      :X  d   eg )Nr6   r<   r:   r8   )r   r   r   r   r>   r   )r6   r@   rA   rB   s       rL   test_exp2_optrP   @   sw    sA1HEEH:&D1tAw;<<%%%1HEHUXJ////rN   c                    ^ [        S5      m[        T5      S-
  n [        U [        /5      n[	        T5      U-
  S:X  d   eUR                  [        5      U :X  d   eS[        T5      -  S-
  n[        U[        /5      nS[	        T5      -  U:X  d   eUR                  [        5      U:X  d   eS[        T5      -  S-
  n[        U[        /5      nS[	        T5      -  S-
  U:X  d   eUR                  [        5      U:X  d   e[        [        [        SS9nU[        XF/5      :X  d   eU[        X/5      :X  d   eU[        X&/5      :X  d   eS[        T5      -  [        T5      -   S-
  n[        U[        /5      nS[	        T5      -  [        T5      -   U:X  d   eUR                  [        5      U:X  d   eS[        ST-  5      -  S-
  n	[        U	[        /5      n
S[	        ST-  5      -  U
:X  d   eU
R                  [        5      U	:X  d   eS[        T5      -  S-   [        T5      S-   -  S-   n[        U[        /5      nUR                  5       UR                  5       ::  d   eU4S	 jn[        U" U5      U" U5      -
  5      S
:  d   e[        S5      nS[        T5      -  S-
  S[        U5      -
  -  SS[        U5      -
  -  -
  n[        U[        /5      nS[	        T5      -  [	        U5      -  U:X  d   eUR                  [        5      U-
  R                  5       S:X  d   eS[        T5      -   S-  S-
  n[        U[        /5      n[        T5      S-   [	        T5      -  nS[	        T5      -  [	        ST-  5      -   nUU-
  R                  [        5      R                  5       S:X  d   eUUU4;   d   eUR                  [        5      U-
  R                  5       S:X  d   e[        U5      n[        U[        /5      n[        U5      n[        U5      nUUU4;   d   eUR                  [        5      UR                  [        5      -
  R                  5       R                  (       d   eg )Nr6   r<   r   r8   r9   r:   Fopportunisticc                 D   > U R                  TS5      R                  5       $ )Nr8   )subsevalf)er6   s    rL   evtest_expm1_opt.<locals>.evo   s    vva|!!##rN   gV瞯<y   )r   r	   r   r    r   r>   r+   r
   	count_opsabsfactorr   is_zero)r@   rA   rB   rC   rD   rE   expm1_opt_non_opportunisticrF   rG   rH   rI   rJ   rK   rX   rZ   expr7opt7expr8opt8tgt8atgt8bexpr9opt9tgt9atgt9br6   s                            @rL   test_expm1_optrl   K   s   sAFQJEEI;'D8d?a<<%%%c!fHqLEEI;'DU1X:<<%%%c!fHqLEEI;'DU1X:>T!!!<<%%%"3Ce"THU$ABBBB8E#@AAAA8E#@AAAAc!fHs1v!EEI;'DU1X:A$&&&<<%%%c!A#hJNEEI;'DU1Q3Z<4<<%%%s1vX\CFQJ'!+EEI;'D>>u0000$r%y2d8#$u,,,sAs1vX\AAJ'!Qs1vX,6EEI;'DeAh;uQx4'''LL%--/1444s1vXMAEEI;'DVaZq!EeAhJqs#E
 EM""3'..0A555E5>!!!LL%--/1444JEEI;'DJEJEE5>!!!LLc 22::<DDDDrN   c                      [        [        SR                  5       5      u  p[        U 5      [        U5      -   S-
  n[	        U[
        /5      nU[        U 5      [        U5      -   :X  d   eg Nx yr:   )mapr   splitr	   r   r    r   r6   rZ   r@   rA   s       rL   test_expm1_two_exp_termsrs      U    vu{{}%DAFSVOaEEI;'D58eAh&&&&rN   c                     [        S5      n [        U 5      S-
  n[        U[        /5      n[	        U 5      U-
  S:X  d   eUR                  [        5      U:X  d   eS[        U 5      -  S-
  n[        U[        /5      nS[	        U 5      -  U:X  d   eUR                  [        5      U:X  d   eS[        U 5      -  S-
  n[        U[        /5      nS[	        U 5      -  S-
  U:X  d   eUR                  [        5      U:X  d   e[        [        [        SS9nU[        XW/5      :X  d   eU[        X/5      :X  d   eU[        X7/5      :X  d   eS[        U 5      -  [        U 5      -   S-
  n[        U[        /5      n	S[	        U 5      -  [        U 5      -   U	:X  d   eU	R                  [        5      U:X  d   eS[        SU -  5      -  S-
  n
[        U
[        /5      nS[	        SU -  5      -  U:X  d   eUR                  [        5      U
:X  d   eSS[        U 5      -  -
  n[        U[        /5      nS	[	        U 5      -  U:X  d   eUR                  [        5      U:X  d   eg )
Nr6   r<   r   r8   r9   r:   FrR   r[   )r   r   r   r   r   r>   r+   r
   )r6   r@   rA   rB   rC   rD   rE   cosm1_opt_non_opportunisticrF   rG   rH   rI   rJ   rK   s                 rL   test_cosm1_optrw      s?   sAFQJEEI;'D8d?a<<%%%c!fHqLEEI;'DU1X:<<%%%c!fHqLEEI;'DU1X:>T!!!<<%%%"3Ce"THU$ABBBB8E#@AAAA8E#@AAAAc!fHs1v!EEI;'DU1X:A$&&&<<%%%c!A#hJNEEI;'DU1Q3Z<4<<%%%#a&LEEI;'DeAh;$<<%%%rN   c                      [        [        SR                  5       5      u  p[        U 5      [        U5      -   S-
  n[	        U[
        /5      nU[        U 5      [        U5      -   :X  d   eg rn   )rp   r   rq   r   r   r   r   rr   s       rL   test_cosm1_two_cos_termsry      rt   rN   c                      [        S5      n [        U 5      [        U 5      -   S-
  n[        U[        [
        /5      nU[        U 5      [        U 5      -   :X  d   eg )Nr6   r:   )r   r	   r   r   r    r   r   r   )r6   r@   rA   s      rL   test_expm1_cosm1_mixedr{      sM    sAFSVOaEEIy12D58eAh&&&&rN   c                 ^   U R                  U5      R                  5       n[        R                  [        R                  5      R
                  n[        Xc-
  5      X7-  :  d   e[        [        UR                  5       5      U40 U=(       d    0 D6n[        [        [        UR                  5       5      5      n	[        U" U	6 U-
  5      n
U
[        Xg-  5      :  d   e[        [        UR                  5       5      U 40 U=(       d    0 D6n[        U" U	6 U-
  5      nU[        Xg-  U-  5      :  d   eg)zTpoorness=1e10 signifies that `expr` loses precision of at least ten decimal digits. N)rU   rV   r3   finfofloat64epsr^   r.   listkeystuplerp   floatvalues)exproptval_subs
approx_reflambdify_kwpoornessnum_refr   f1
args_floatnum_err1f2num_err2s                rL   _check_num_lambdifyr      s    ii!'')G
++emm
$
(
(Cw#$z~555	$x}}'	D1B	DBs5(//"345J2z?Z/0Hc'+&&&&	$x}}'	E+2C	EB2z?Z/0Hc'+h.////rN   c            	         [        S5      n S[        U 5      -  S-
  n[        U[        /5      nU[	        U 5      * [        U 5      -  :X  d   e[
        (       a  [        XU [        S5      S-  0SSS0S9  S	[        U 5      -  S	-
  n[        U[        5      nUS
[	        U 5      -  [        U 5      -  :X  d   e[
        (       a  [        X4U [        S5      S-  0SSS0S9  [        [        SU -  5      -  [        -
  n[        U[        /5      nU[        * [	        SU -  5      -  [        SU -  5      -  :X  d   e[
        (       a0  [        XVU [        S5      S-  S-  0[        S[        -  5      SS0S9  g g )Nr6   r<   
   ig&i3modulesr4   )r   r:   r[   g&y3r8   )r   r   r   r   r   r4   r   r   r)   r   r   )r6   r@   rA   rB   rC   rD   rE   s          rL   test_cosm1_apartr      sR   sAc!fHqLEEI;'DE!H9SV####uE!QrUCZ%iY`Mabc!fHqLEE<(D2eAh;s1v%%%%uE!QrUCZ%iY`Mabs1Q3xK"EEI;'DB3uQqSz>#ac(****uE!QrUCZ\):E%(OZcelYmn rN   c            	      <   [        [        S5      =n u  pX-  S-
  n[        U[        /5      nU[	        X5      :X  d   eU  H)  nUR                  U5      UR                  U5      :X  a  M)   e   [        (       a  [        [        [        [        R                  R                  R                  S5      S S 5      5      S:  a]  U[        SR                  5       6 U[        0nSn[        X4XgSS	0S
S9  U[        U[        SR                  5       6 0nSn	[        X4XSS	0SS9  g g g )Nxyr<   .r8   )r<   r   r   g    ?g<V=r   r4   l    h] )r   r   g|=ghRw=i ʚ;)rp   r   r   r"   r   diffr4   r   intversionrq   r   as_integer_ratior   r   )
argsr6   rZ   r@   rA   argsubs1_a
ref1_f64_asubs1_b
ref1_f64_bs
             rL   
test_powm1r      s   fd##D41D1HEEI;'D5;zz#$))C.000 us3 5 5 ; ;C @! DEF*Th < < >?BG*
E9V]J^iopb!X'?'?'ABC+
E9V]J^ino UurN   c                     [        S5      n [        U S-   5      n[        U[        /5      n[	        U 5      U-
  S:X  d   eUR                  [        5      U:X  d   e[        SU -  S-   5      n[        U[        /5      n[	        U 5      [        S5      -   U:X  d   eUR                  [        5      U-
  R                  5       S:X  d   e[        SU -  S-   5      n[        U[        /5      n[	        SU -  5      U-
  S:X  d   eUR                  [        5      U:X  d   e[        U S-   5      n[        U[        /5      n[        U5      S:X  d   eg )Nr6   r<   r   r8   r:   z
log(x + 3))r   r
   r   r!   r   r>   simplifyr?   )	r6   r@   rA   rB   rC   rD   rE   rF   rG   s	            rL   test_log1p_optr      s0   sAAJEEI;'D8d?a<<%%%!aLEEI;'D8c!f$$$LL%//1Q666!aLEEI;'D1:!!!<<%%%!HEEI;'Dt9$$$rN   c                  8   [        S5      n SU -  [        U 5      [        S5      -  -   [        U S-   5      -   [        U 5      -   S-
  n[        U[        5      R                  5       nU[        U 5      [        U 5      -   [        U 5      -   [        U 5      -   :X  d   eUR                  [        5      R                  [        5      R                  [        5      U:X  d   e[        U 5      [        S5      -  [        U S-   5      -   n[        U[        5      nU[        U 5      [        U 5      -   :X  d   eUR                  [        5      U:X  d   e[        U 5      [        S5      -  [        SU -  S-   5      -   n[        U[        5      nU[        U 5      [        S5      -   [        U 5      -   -
  nUS:X  d   eUR                  [        5      U-
  R                  5       S:X  d   eSU -  S[        SU -  S-   5      -  S	[        S5      -  -  -   S
[        U 5      -  -   S
-
  [        SU -  S-   5      -   n[        U[        5      R                  5       n	U	[        U 5      S[        SU -  S-   5      -  S	-  -   S
[        U 5      -  -   [        S5      -   [        U 5      -   -
  n
U
S:X  d   eU	R                  [        5      R                  [        5      R                  [        5      U-
  R                  5       S:X  d   eS[        SU -  5      -  S-
  n[        U[        5      nUS[        SU -  5      -  -
  nUS:X  d   eUR                  [        5      U:X  d   e[        SU -  5      S-
  n[        U[        5      nU[        SU -  5      S-
  U4;   d   e[        SU -  S-   5      n[        U[        5      nU[        S5      [        U 5      -   -
  nUS:X  d   eUR                  [        5      U-
  R                  5       S:X  d   e[        SU -  S-   5      n[        U[        5      nUU:X  d   eg )Nr6   r:   r<   r=   r   r8   r9   r7   r;      )r   r
   r	   r   r#   r   r   r   r   r   r>   r   )r6   r@   rA   rB   rC   rD   rE   delta3rF   rG   delta4rH   rI   delta5rJ   rK   rb   rc   delta7rd   re   s                        rL   test_optims_c99r     s   sAqD3q6#a&= 3q1u:-A6:EE:&//1D47T!W$uQx/%(::::<<$$S)11#6%???F3q6MCAJ&EE:&D47U1X%%%%<<%%%F3q6MC1r	N*EE:&DT!Ws2w&q12FQ;;LL%//1Q666qD1S1q\>2c!f9--3q6	9B>RTBYOEE:&//1DT!WqacAgr11BuQxK?#b'IERSHTUFQ;;LL%%c*2237%?IIKqPPPc!A#hJNEE:&DAeAaCjL FQ;;<<%%%!HqLEE:&DE!A#JNE****!aLEE:&DSVeAh&'FQ;;LL%//1Q666!aLEE:&D5==rN   c                  H   S n [        S5      nU " US-  5      S:X  d   eU " US-  US-  -   5      S:X  d   eU " US-  US-  -   5      S:X  d   eU " [        U5      S-  5      S	:X  d   eU " US
-  5      S:X  d   eU " US-  5      S:X  d   eU " US-  * 5      S:X  d   eU " US-  US-  -
  5      S:X  d   e[        SSS9nU " X-  US-  -
  5      S:X  d   e[        SSS9nU " [        [        US-  5      5      5      S:X  d   eS nU" US-  [        U5      S-  -   5      S:X  d   eg )Nc                 @    [        [        U [        S5      /5      5      $ )Nr\   r   r   r$   r6   s    rL   <lambda>5test_create_expand_pow_optimization.<locals>.<lambda>C  s    53A678:rN   r6   r\   zx*x*x*xr:   zx*x + x*x*x*xr9   zpow(x, 5) + x*x*x*xzpow(sin(x), 4)z1.0/(x*x*x*x)z
pow(x, -5)z
-(x*x*x*x)z-(x*x) + x*x*x*xiTintegerzpow(x, i) - (x*x)rZ   )realzexp(y*y*y*y)c           
      @    [        [        U [        SS S9/5      5      $ )Nr\   c                     U R                   $ N)is_Function)bs    rL   r   Gtest_create_expand_pow_optimization.<locals>.<lambda>.<locals>.<lambda>V  s    ammrN   )base_reqr   r   s    rL   r   r   U  s%    E(1'E	+(- '. / 0rN   r8   z pow(x, 3) + sin(x)*sin(x)*sin(x))r   r   r   r	   )ccr6   r   rZ   cc2s        rL   #test_create_expand_pow_optimizationr   B  sc   
:BsAad8y   adQTk?o---adQTk?3333c!fai=,,,,a"g;/)))a"g;,&&&q!te9$$$adQTk?0000sD!AadQTk?1111sAc#ad)n///0Cq!tc!fai $FFFFrN   c                  b   [        SSS9n [        SX 5      n[        SU S5      n[        [        R                  " U5      5         [        US-  U-  [        /5      [        X5      :X  d   e[        US-  U-  U-   [        /5      [        X5      U-   :X  d   e S S S 5        g ! , (       d  f       g = f)NnTr   Ar6   r<   )r   r   r   r   fullrankr   r%   r   )r   r   r6   s      rL   test_matsolver   Z  s    sD!AS!AS!QA	!**Q-	 B!j\2k!6GGGGB!a*6+a:Ka:OOOO 
!	 	 s   AB  
B.c                  ,   [        [        SR                  5       5      u  p[        [	        U 5      [	        U5      -   5      n[        U[        /5      n[        X5      U-
  S:X  d   e[        X5      U-
  S:X  d   eUR                  [        5      U:X  d   eg )Nro   r   )	rp   r   rq   r
   r	   r   r&   r   r>   rr   s       rL   test_logaddexp_optr   d  s    vu{{}%DAAQ EEM?+DQ?T!Q&&&Q?T!Q&&&<<%%%rN   c                  ,   [        [        SR                  5       5      u  p[        SU -  SU-  -   5      [        S5      -  n[	        U[
        /5      n[        X5      U-
  S:X  d   e[        X5      U-
  S:X  d   eUR                  [        5      U:X  d   eg )Nro   r:   r   )rp   r   rq   r
   r   r'   r   r>   rr   s       rL   test_logaddexp2_optr   m  s    vu{{}%DA1q!tSV#EEN+,Dad"a'''ad"a'''<<%%%rN   c                     S n [        S5      nU " [        U5      U-  [        U5      [        SU-  5      SU-  -  [        SU-  5      [        SU-  5      U-  S[        SU-  5      -  U[        U5      -  U[        U5      -  05        [        S5      nU " [        X-  5      X-  -  [        X-  5      U[        X-  5      -  U-  [        X-  5      [        [        U5      5      [        U5      -  [        [        U5      5      [        S[        U5      -  5      [        U5      -  S[        S[        U5      -  5      -  [        U5      U-  [        U5      U-  05        g )Nc                 b    U R                  5        H  u  p[        U[        5      U:X  a  M   e   g r   )itemsr   r*   dkvs      rL   checktest_sinc_opts.<locals>.checkw  s)    GGIDAAy)Q... rN   r6   r:   r8   rZ   )r   r   r   r   r6   rZ   s      rL   test_sinc_optsr   v  s%   / 	sA	AqaAaC!A#acAaC
4!9	#a&3q6	  	sA	AC!#tACy	#ac(
1tACyCFCFtCF|Ac!fHc!fqaAh/Aqs1vax rN   c            
      @   S n [        S5      nU " [        SU-  5      SU-  -  [        SU-  5      -   S-
  [        SU-  5      [	        SU-  5      -   [        US-   5      [        S5      -  [        US-  S-   5      -   [        US-  5      [        US-   5      -   05        g )Nc                 b    U R                  5        H  u  p[        U[        5      U:X  a  M   e   g r   r   r   r(   r   s      rL   r    test_optims_numpy.<locals>.check  )    GGIDAA|,111 rN   r6   r:   r<   r8   )r   r   r	   r   r   r
   r   r   )r   r6   s     rL   test_optims_numpyr     s    2 	sA	AaC!A#QqS!A%tAaCy51:'=AaCQ#adQh-'q!ttAaCy)@ rN   c                     S n [        [        SR                  5       5      u  pU " [        X-  5      [	        X-  5      -  [        X-  S-   5      -  [        S5      U-  U-  -  [        X-  5      [        X-  5      -  [        X-  5      -  [        U[	        U5      -  U-  5      S-
  [        U[        U5      -  5      05        g )Nc                 b    U R                  5        H  u  p[        U[        5      U:X  a  M   e   g r   r   r   s      rL   r   %test_optims_numpy_TODO.<locals>.check  r   rN   ro   r<   r:   )
rp   r   rq   r
   r   r   r   r   r	   r   r   s      rL   test_optims_numpy_TODOr     s    2 vu{{}%DA	ACQS#ac!e*$c!fQhqj149T!#Y3FuQSz3QAc!fHQJ!U1T!W9- rN   c                     [         (       d  [        S5        [        5       (       d  [        S5        [        S5      n SS[	        S5      -  -  SS[	        S5      -  -  -  S	S
[	        S5      -  -  -  SS[	        S5      -  -  -  [	        S5      -  [
        -  nS[        U 5      -  U-
  n[	        S5      S-  nUR                  X5      R                  S5      n[        S[        U 5      -  U-
  [        /5      nSnS[        UR                  U5      5      [        UR                  U5      5      S.-  nSn[        R                  " 5        n	[        SU4SU4/U	SS0S9u  p[        U
R!                  S5      U-
  5      n[        U
R#                  S5      U-
  5      nSUs=:  a  S:  d   e   eSUs=:  a  S:  d   e   e S S S 5        g ! , (       d  f       g = f) Nzcython not installed.zNo C compiler found.r6   r:   :   u   r8   a   r9   r\   '   r7   \      r   i      z
#include <math.h>

double func_unchanged(double x) {
    return %(unchanged)s;
}
double func_rewritten(double x) {
    return %(rewritten)s;
}
)	unchanged	rewrittenz
#cython: language_level=3
cdef extern double func_unchanged(double)
cdef extern double func_rewritten(double)
def py_unchanged(x):
    return func_unchanged(x)
def py_rewritten(x):
    return func_rewritten(x)
zfunc.cz	_func.pyxstdc99)	build_dircompile_kwargsgdy=g<6S:g}:gҶOɃ;gؗҜ<)r2   r-   r0   r   r   r   r	   rU   r   r   r    r   tempfileTemporaryDirectoryr/   r^   py_rewrittenpy_unchanged)r6   	about_twor   xvalrefr   NUMBER_OF_DIGITSfunc_cfunc_pyxfoldermodinfoerr_rewrittenerr_unchangeds                 rL   "test_compiled_ccode_with_rewritingr    s   6$%77#$sABqvIq2af9~-a!AbE'l:1r!C&y>I!B%OPRRI#a&9$IR5#:D
..
!
#
#B
'C3q6I-	{;I 	 )++&678ikk*:;<>
>FH 
	$	$	&&/+x!89eU^
	 C,,U3c9:C,,U3c9:},u,,,,,},u,,,,, 
'	&	&s   A4G
G)Ng    _B)[r   sympy.core.numbersr   r   sympy.core.powerr   sympy.core.singletonr   sympy.core.symbolr   $sympy.functions.elementary.complexesr   &sympy.functions.elementary.exponentialr	   r
   (sympy.functions.elementary.trigonometricr   r   r   "sympy.matrices.expressions.matexprr   sympy.assumptionsr   r   sympy.externalr   sympy.printing.codeprinterr   sympy.codegen.matrix_nodesr   sympy.codegen.cfunctionsr   r   r   r   sympy.codegen.numpy_nodesr   r   sympy.codegen.scipy_nodesr   r   sympy.codegen.rewritingr   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   sympy.testing.pytestr,   r-   sympy.utilitiesr.   sympy.utilities._compilationr/   r0   !sympy.utilities._compilation.utilr1   r2   r3   r4   rM   rP   rl   rs   rw   ry   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   rN   rL   <module>r     s    +   " $ 4 = E E ; ) ( , 2 = = ; 2    
 - $ K 7	x	 gg&@0?ED'#&L''0o,p$%,+\G0P&&.	 	 	 2- 2-rN   