
    g=                     F   d dl Z d dl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mZ d dlmZmZmZ d d	lmZ d d
lmZ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" d dl#m$Z$m%Z% d dl&m'Z'm(Z( d dl)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9 d dl:m;Z;m<Z< d dl=m>Z> d dl?m@Z@mAZA d dlBmCZC  ed          ZD ed          ZE ed          ZFd ZGd ZHd ZId ZJd ZKd ZLd ZMd.d!ZNd" ZOd# ZPd$ ZQd% ZRd& ZSd' ZTd( ZUd) ZVd* ZWd+ ZXe;d,             ZYeCd-             ZZdS )/    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                  h   t          d          } dt          d| z  dz             z  t          d          z  }t          |t          g          }|dt	          d| z  dz             z  k    sJ |                    t                    |k    sJ dt          d| z  dz             z  dt          d          z  z  }t          |t          g          }|dt	          d| z  dz             z  dz  k    sJ |                    t                    |k    sJ t          |           t          d          z  }t          |t          g          }|t	          |           k    sJ |                    t                    |k    sJ t          |           t          d          z  t          | dz             z   }t          |t          g          }|t	          |           t          d          t	          | dz             z  z   k    sJ |                    t                    |k    sJ t          d          }	t          |	t          g          }
|
|	k    sJ t          | dz             t          d          z  }t          |t          g          }t          |          d	k    sJ |                    t                    |k    sJ d S )
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                ^/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/codegen/tests/test_rewriting.pytest_log2_optrM       sc   sAc!A#'llNCFF#EEH:&&D1T!A#']]?""""<<%%%%c!A#'llNBs1vvI&EEH:&&D1T!A#']]?2%%%%%<<%%%%FF3q66MEEH:&&D477????<<%%%%FF3q66MC!HH$EEH:&&D477SVVD1II------<<%%%%GGEEH:&&D5====AJJs1vvEEH:&&Dt99%%%%<<%%%%%%    c                     t          d          } dd| z  z   }t          |t          g          }|dt          |           z   k    sJ |                    t
                    |k    sJ dd| z  z   }|t          |t          g          k    sJ d S )Nr6   r<   r:   r8   )r   r   r   r   r>   r   )r6   r@   rA   rB   s       rL   test_exp2_optrP   @   s    sA1HEEH:&&D1tAww;<<%%%%1HEHUXJ////////rN   c                  
   t          d          t                    dz
  } t          | t          g          }t	                    |z
  dk    sJ |                    t                    | k    sJ dt                    z  dz
  }t          |t          g          }dt	                    z  |k    sJ |                    t                    |k    sJ dt                    z  dz
  }t          |t          g          }dt	                    z  dz
  |k    sJ |                    t                    |k    sJ t          t          t          d          }|t          ||g          k    sJ |t          | |g          k    sJ |t          ||g          k    sJ dt                    z  t                    z   dz
  }t          |t          g          }dt	                    z  t                    z   |k    sJ |                    t                    |k    sJ dt          dz            z  dz
  }	t          |	t          g          }
dt	          dz            z  |
k    sJ |
                    t                    |	k    sJ dt                    z  dz   t                    dz   z  dz   }t          |t          g          }|                                |                                k    sJ fd	}t           ||           ||          z
            d
k     sJ t          d          }dt                    z  dz
  dt          |          z
  z  ddt          |          z
  z  z
  }t          |t          g          }dt	                    z  t	          |          z  |k    sJ |                    t                    |z
  
                                dk    sJ dt                    z   dz  dz
  }t          |t          g          }t                    dz   t	                    z  }dt	                    z  t	          dz            z   }||z
                      t                    
                                dk    sJ |||fv sJ |                    t                    |z
  
                                dk    sJ t          |          }t          |t          g          }t          |          }t          |          }|||fv sJ |                    t                    |                    t                    z
  
                                j        sJ d S )Nr6   r<   r   r8   r9   r:   Fopportunisticc                 T    |                      d                                          S )Nr8   )subsevalf)er6   s    rL   evz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   rY   expr7opt7expr8opt8tgt8atgt8bexpr9opt9tgt9atgt9br6   s                            @rL   test_expm1_optrk   K   s   sAFFQJEEI;''D88d?a<<%%%%c!ffHqLEEI;''DU1XX:<<%%%%c!ffHqLEEI;''DU1XX:>T!!!!<<%%%%"3Ce"T"T"THU%@$ABBBBBB8E$?#@AAAAAA8E$?#@AAAAAAc!ffHs1vv!EEI;''DU1XX:A$&&&&<<%%%%c!A#hhJNEEI;''DU1Q3ZZ<4<<%%%%s1vvX\CFFQJ'!+EEI;''D>>u000000$ $ $ $ $rr%yy22d88#$$u,,,,sAs1vvX\AAJ'!Qs1vvX,6EEI;''DeAhh;uQxx4''''LL%--//14444s1vvXMAEEI;''DVVaZq!EeAhhJqs#E
 EM""3''..00A5555E5>!!!!LL%--//14444JJEEI;''DJJEJJEE5>!!!!LLc 2 22::<<DDDDDDrN   c                     t          t          d                                          \  } }t          |           t          |          z   dz
  }t	          |t
          g          }|t          |           t          |          z   k    sJ d S Nx yr:   )mapr   splitr	   r   r    r   r6   rY   r@   rA   s       rL   test_expm1_two_exp_termsrr      p    vu{{}}%%DAqFFSVVOaEEI;''D588eAhh&&&&&&&rN   c                     t          d          } t          |           dz
  }t          |t          g          }t	          |           |z
  dk    sJ |                    t                    |k    sJ dt          |           z  dz
  }t          |t          g          }dt	          |           z  |k    sJ |                    t                    |k    sJ dt          |           z  dz
  }t          |t          g          }dt	          |           z  dz
  |k    sJ |                    t                    |k    sJ t          t          t          d          }|t          ||g          k    sJ |t          ||g          k    sJ |t          ||g          k    sJ dt          |           z  t          |           z   dz
  }t          |t          g          }	dt	          |           z  t          |           z   |	k    sJ |	                    t                    |k    sJ dt          d| z            z  dz
  }
t          |
t          g          }dt	          d| z            z  |k    sJ |                    t                    |
k    sJ ddt          |           z  z
  }t          |t          g          }d	t	          |           z  |k    sJ |                    t                    |k    sJ d S )
Nr6   r<   r   r8   r9   r:   FrR   rZ   )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_optrv      s   sAFFQJEEI;''D88d?a<<%%%%c!ffHqLEEI;''DU1XX:<<%%%%c!ffHqLEEI;''DU1XX:>T!!!!<<%%%%"3Ce"T"T"THU%@$ABBBBBB8E$?#@AAAAAA8E$?#@AAAAAAc!ffHs1vv!EEI;''DU1XX:A$&&&&<<%%%%c!A#hhJNEEI;''DU1Q3ZZ<4<<%%%%#a&&LEEI;''DeAhh;$<<%%%%%%rN   c                     t          t          d                                          \  } }t          |           t          |          z   dz
  }t	          |t
          g          }|t          |           t          |          z   k    sJ d S rm   )ro   r   rp   r   r   r   r   rq   s       rL   test_cosm1_two_cos_termsrx      rs   rN   c                      t          d          } t          |           t          |           z   dz
  }t          |t          t
          g          }|t          |           t          |           z   k    sJ d S )Nr6   r:   )r   r	   r   r   r    r   r   r   )r6   r@   rA   s      rL   test_expm1_cosm1_mixedrz      sc    sAFFSVVOaEEIy122D588eAhh&&&&&&&rN       _Bc                    |                      |                                          }t                              t          j                  j        }t          ||z
            ||z  k     sJ t          t          |	                                          |fi |pi }t          t          t          |                                                    }	t           ||	 |z
            }
|
t          ||z            k     sJ t          t          |	                                          | fi |pi }t           ||	 |z
            }|t          ||z  |z            k    sJ dS )zU poorness=1e10 signifies that `expr` loses precision of at least ten decimal digits. N)rU   rV   r3   finfofloat64epsr]   r.   listkeystuplero   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      sE   ii!!''))G
++em
$
$
(Cw#$$z#~5555	$x}}''	D	D1B	D	DBs5(//"3"34455J22z?Z/00Hc'#+&&&&&&	$x}}''	E	E+2C	E	EB22z?Z/00Hc'#+h.////////rN   c            	         t          d          } dt          |           z  dz
  }t          |t          g          }|t	          |            t          |           z  k    sJ t
          r(t          ||| t          d          dz  idddi           d	t          |           z  d	z
  }t          |t                    }|d
t	          |           z  t          |           z  k    sJ t
          r(t          ||| t          d          dz  idddi           t          t          d| z            z  t          z
  }t          |t          g          }|t           t	          d| z            z  t          d| z            z  k    sJ t
          rBt          ||| t          d          dz  dz  it          dt          z            ddi           d S d S )Nr6   r<   
   ig&i3modulesr4   )r   r:   rZ   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      s   sAc!ffHqLEEI;''DE!HH9SVV##### cE4!QrUUCZ%iY`Mabbbbc!ffHqLEE<((D2eAhh;s1vv%%%%% cE4!QrUUCZ%iY`Mabbbbs1Q3xxK"EEI;''DB3uQqSzz>#ac((***** oE4!QrUUCZ\):E%(OOZcelYmnnnnnno orN   c                     t          t          d          x} \  }}||z  dz
  }t          |t          g          }|t	          ||          k    sJ | D ]0}|                    |          |                    |          k    sJ 1t          rt          t          t          t          j	        j	        
                    d          d d                             dk    r~|t          d                                 |t          i}d}t          ||||dd	id
           |t          |t          d                                 i}d}	t          ||||	dd	id           d S d S d S )Nxyr<   .r8   )r<   r   r   g    ?g<V=r   r4   l    h] )r   r   g|=ghRw=i ʚ;)ro   r   r   r"   r   diffr4   r   intversionrp   r   as_integer_ratior   r   )
argsr6   rY   r@   rA   argsubs1_a
ref1_f64_asubs1_b
ref1_f64_bs
             rL   
test_powm1r      sm   fd###D41aqD1HEEI;''D5A;; 1 1zz#$))C..00000 ps3 5 ; ;C @ @! DEEFF*TTh < < > >?BG*
E4*9V]J^ioppppb!X'?'?'A'ABC+
E4*9V]J^inoooooop pTTrN   c                  4   t          d          } t          | dz             }t          |t          g          }t	          |           |z
  dk    sJ |                    t                    |k    sJ t          d| z  dz             }t          |t          g          }t	          |           t          d          z   |k    sJ |                    t                    |z
                                  dk    sJ t          d| z  dz             }t          |t          g          }t	          d| z            |z
  dk    sJ |                    t                    |k    sJ t          | dz             }t          |t          g          }t          |          dk    sJ d S )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      sw   sAAJJEEI;''D88d?a<<%%%%!aLLEEI;''D88c!ff$$$$LL%//11Q6666!aLLEEI;''D1::!!!!<<%%%%!HHEEI;''Dt99$$$$$$rN   c                  :
   t          d          } d| z  t          |           t          d          z  z   t          | dz             z   t          |           z   dz
  }t          |t                                                    }|t          |           t          |           z   t          |           z   t          |           z   k    sJ |
                    t                    
                    t                    
                    t                    |k    sJ t          |           t          d          z  t          | dz             z   }t          |t                    }|t          |           t          |           z   k    sJ |
                    t                    |k    sJ t          |           t          d          z  t          d| z  dz             z   }t          |t                    }|t          |           t          d          z   t          |           z   z
  }|dk    sJ |
                    t                    |z
                                  dk    sJ d| z  dt          d| z  dz             z  d	t          d          z  z  z   d
t          |           z  z   d
z
  t          d| z  dz             z   }t          |t                                                    }	|	t          |           dt          d| z  dz             z  d	z  z   d
t          |           z  z   t          d          z   t          |           z   z
  }
|
dk    sJ |	
                    t                    
                    t                    
                    t                    |z
                                  dk    sJ dt          d| z            z  dz
  }t          |t                    }|dt          d| z            z  z
  }|dk    sJ |
                    t                    |k    sJ t          d| z            dz
  }t          |t                    }|t          d| z            dz
  |fv sJ t          d| z  dz             }t          |t                    }|t          d          t          |           z   z
  }|dk    sJ |
                    t                    |z
                                  dk    sJ t          d| z  dz             }t          |t                    }||k    sJ d S )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   ra   rb   delta7rc   rd   s                        rL   test_optims_c99r     sS   sAqD3q66#a&&= 3q1u::-A6:EE:&&//11D477T!WW$uQxx/%((:::::<<$$S))11#66%????FF3q66MCAJJ&EE:&&D477U1XX%%%%%<<%%%%FF3q66MC1r	NN*EE:&&DT!WWs2ww&q12FQ;;;;LL%//11Q6666qD1S1q\\>2c!ff9--3q66	9B>RTBYOEE:&&//11DT!WWqacAgr11BuQxxK?#b''IERSHHTUFQ;;;;LL%%c**22377%?IIKKqPPPPc!A#hhJNEE:&&DAeAaCjjL FQ;;;;<<%%%%!HHqLEE:&&DE!A#JJNE*****!aLLEE:&&DSVVeAhh&'FQ;;;;LL%//11Q6666!aLLEE:&&D5======rN   c                     d } t          d          } | |dz            dk    sJ  | |dz  |dz  z             dk    sJ  | |dz  |dz  z             dk    sJ  | t          |          dz            d	k    sJ  | |d
z            dk    sJ  | |dz            dk    sJ  | |dz             dk    sJ  | |dz  |dz  z
            dk    sJ t          dd          } | ||z  |dz  z
            dk    sJ t          dd          } | t          t          |dz                                dk    sJ d } ||dz  t          |          dz  z             dk    sJ d S )Nc                 X    t          t          | t          d          g                    S )Nr[   r   r   r$   r6   s    rL   <lambda>z5test_create_expand_pow_optimization.<locals>.<lambda>C  s)    53A6678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)rY   )realzexp(y*y*y*y)c           	      ^    t          t          | t          dd           g                    S )Nr[   c                     | j         S N)is_Function)bs    rL   r   zGtest_create_expand_pow_optimization.<locals>.<lambda>.<locals>.<lambda>V  s    am rN   )base_reqr   r   s    rL   r   z5test_create_expand_pow_optimization.<locals>.<lambda>U  s>    E(1'E	++(- (- (- '. / / 0 0 rN   r8   z pow(x, 3) + sin(x)*sin(x)*sin(x))r   r   r   r	   )ccr6   r   rY   cc2s        rL   #test_create_expand_pow_optimizationr   B  s   
: 
:BsA2ad88y    2adQTk??o----2adQTk??333332c!ffai==,,,,,2a"g;;/))))2a"g;;,&&&&2q!te99$$$$2adQTk??00000sD!!!A2adQTk??11111sA2c#ad))nn////0 0C3q!tc!ffai  $FFFFFFFrN   c                     t          dd          } t          d| |           }t          d| d          }t          t          j        |                    5  t          |dz  |z  t          g          t          ||          k    sJ t          |dz  |z  |z   t          g          t          ||          |z   k    sJ 	 d d d            d S # 1 swxY w Y   d S )NnTr   Ar6   r<   )r   r   r   r   fullrankr   r%   r   )r   r   r6   s      rL   test_matsolver   Z  s.   sD!!!AS!QAS!QA	!*Q--	 	  P PB!j\22k!Q6G6GGGGGB!a*66+a:K:Ka:OOOOOOP P P P P P P P P P P P P P P P P Ps   A'C

CCc                     t          t          d                                          \  } }t          t	          |           t	          |          z             }t          |t          g          }t          | |          |z
  dk    sJ t          ||           |z
  dk    sJ |                    t                    |k    sJ d S )Nrn   r   )	ro   r   rp   r
   r	   r   r&   r   r>   rq   s       rL   test_logaddexp_optr   d  s    vu{{}}%%DAqAQ  EEM?++DQ??T!Q&&&&Q??T!Q&&&&<<%%%%%%rN   c                  z   t          t          d                                          \  } }t          d| z  d|z  z             t          d          z  }t	          |t
          g          }t          | |          |z
  dk    sJ t          ||           |z
  dk    sJ |                    t                    |k    sJ d S )Nrn   r:   r   )ro   r   rp   r
   r   r'   r   r>   rq   s       rL   test_logaddexp2_optr   m  s    vu{{}}%%DAq1q!tSVV#EEN+,,Dad"a''''ad"a''''<<%%%%%%rN   c                     d } t          d          } | t          |          |z  t          |          t          d|z            d|z  z  t          d|z            t          d|z            |z  dt          d|z            z  |t          |          z  |t          |          z  i           t          d          } | t          ||z            ||z  z  t          ||z            |t          ||z            z  |z  t          ||z            t          t          |                    t          |          z  t          t          |                    t          dt          |          z            t          |          z  dt          dt          |          z            z  t          |          |z  t          |          |z  i           d S )Nc                 p    |                                  D ] \  }}t          |t                    |k    sJ !d S r   )itemsr   r*   dkvs      rL   checkztest_sinc_opts.<locals>.checkw  sE    GGII 	/ 	/DAqAy))Q.....	/ 	/rN   r6   r:   r8   rY   )r   r   r   r   r6   rY   s      rL   test_sinc_optsr   v  s   / / / 	sA	EAqaAaC!A#acAaC
4!99	#a&&3q66	    	sA	EAaC!A#tAaCyy	#ac((
1tAaCyyCFFCFFtCFF||Ac!ffHc!ffqaAh/Aqs1vvax     rN   c            
         d } t          d          } | t          d|z            d|z  z  t          d|z            z   dz
  t          d|z            t	          d|z            z   t          |dz             t          d          z  t          |dz  dz             z   t          |dz            t          |dz             z   i           d S )Nc                 p    |                                  D ] \  }}t          |t                    |k    sJ !d S r   r   r   r(   r   s      rL   r   z test_optims_numpy.<locals>.check  E    GGII 	2 	2DAqA|,,11111	2 	2rN   r6   r:   r<   r8   )r   r   r	   r   r   r
   r   r   )r   r6   s     rL   test_optims_numpyr     s    2 2 2 	sA	EAaC!A#QqS!A%tAaCyy51::'=AaCQ#adQh--'q!ttAaCyy)@     rN   c                     d } t          t          d                                          \  }} | t          ||z            t	          ||z            z  t          ||z  dz             z  t          d          |z  |z  z  t          ||z            t          ||z            z  t          ||z            z  t          |t	          |          z  |z            dz
  t          |t          |          z            i           d S )Nc                 p    |                                  D ] \  }}t          |t                    |k    sJ !d S r   r   r   s      rL   r   z%test_optims_numpy_TODO.<locals>.check  r   rN   rn   r<   r:   )
ro   r   rp   r
   r   r   r   r   r	   r   r   s      rL   test_optims_numpy_TODOr     s    2 2 2 vu{{}}%%DAq	EAaCQqS#ac!e**$c!ffQhqj14!99T!A#YY3FuQqSzz3QAc!ffHQJ!U1T!WW9--     rN   c                  ^   t           st          d           t                      st          d           t          d          } ddt	          d          z  z  ddt	          d          z  z  z  d	d
t	          d          z  z  z  ddt	          d          z  z  z  t	          d          z  t
          z  }dt          |           z  |z
  }t	          d          dz  }|                    | |                              d          }t          dt          |           z  |z
  t          g          }d}dt          |                    |                    t          |                    |                    dz  }d}t          j                    5 }	t          d|fd|fg|	ddi          \  }
}t          |
                    d          |z
            }t          |
                    d          |z
            }d|cxk     rdk     sn J d|cxk     rdk     sn J 	 d d d            d S # 1 swxY w Y   d S ) 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    &$%%%77 %#$$$sABqvvIq2aff9~-a!AbEE'l:1r!C&&y>I!B%%OPRRI#a&&9$IR55#:D
..D
!
!
#
#B
'
'C3q66I-	{;;I 	 )++&67788ikk*:;;<<> >
>FH 
	$	&	& -&/+x!89eU^
 
 
	T C,,U33c9::C,,U33c9::},,,,u,,,,,,},,,,u,,,,,,,- - - - - - - - - - - - - - - - - -s   
B
H""H&)H&)Nr{   )[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   rk   rr   rv   rx   rz   r   r   r   r   r   r   r   r   r   r   r   r   r    rN   rL   <module>r     s    + + + + + + + +             " " " " " " $ $ $ $ $ $ 4 4 4 4 4 4 = = = = = = = = E E E E E E E E E E ; ; ; ; ; ; ) ) ) ) ) ) ) ) ( ( ( ( ( ( , , , , , , 2 2 2 2 2 2 = = = = = = = = = = = = ; ; ; ; ; ; ; ; 2 2 2 2 2 2 2 2                                   
 - , , , , , , , $ $ $ $ $ $ K K K K K K K K 7 7 7 7 7 7	x	 	 gg& & &@0 0 0?E ?E ?ED' ' '#& #& #&L' ' '' ' '0 0 0 0o o o,p p p$% % %,+ + +\G G G0P P P& & && & &  .	 	 	 	 	 	 2- 2- 2- 2- 2-rN   