
    g#                     P   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 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  ed          \  ZZZ ed          \  ZZZ  ed          \  Z!Z"Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z, G d de          Z-d Z.dS )    )Sum)Expr)symbols)sqrt)	Piecewise)sin)MutableDenseMatrix)Interval)lambdify)raises)TensorflowPrinter)
lambdareprLambdaPrinterNumExprPrinterzx,y,zzi,a,bzj,c,dc                      t          t          t          z            dk    sJ t          t          t          z             dv sJ t          t          t          z            dk    sJ d S )Nzx*y)zy + xzx + yzx**y)r   xy     `/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/printing/tests/test_lambdarepr.py
test_basicr      s^    ac??e####a!e 22222adv%%%%%%r   c                      t           dz  } t          |           t          |           k    sJ t          t          | g                    dk    sJ d S )N   zImmutableDenseMatrix([[x % 2]]))r   r   strMatrix)es    r   test_matrixr      sR     	
AAa==CFF""""faSkk""&GGGGGGGr   c            
         d} t          t          t          dk     f          }t          |          }t          | |z              |dk    sJ t          dt          dk     fdt          dk     fd          }t          |          }t          | |z              |dk    sJ t          dt          dk     fdt          dk     f          }t          |          }t          | |z              |dk    sJ t          t          t          dk     ft          dz  t	          d	d
dd                              t                    fd          }t          |          }t          | |z              |dk    sJ t          t          dz  t          dk     ft          t          dk     fdt          z
  t          dk    fdd          }t          |          }t          | |z              |dk    sJ t          t          dz  t          dk     ft          t          dk     fdt          z
  t          dk    fd          }t          |          }t          | |z              |dk    sJ t          dt          dk    fdt          dk    fd	t          d	k    fd
t          d
k    fdt          dk    fd          }t          |          }t          | |z              |dk    sJ t          dt          dk    fdt          dk    fd	t          d	k    fd
t          d
k    fdt          dk    fd          }t          |          }t          | |z              |dk    sJ t          dt          dk    fdt          dk    fd	t          d	k    fd
t          d
k    fdt          dk    fd          }t          |          }t          | |z              |dk    sJ t          dt          dk     fdt          dk     fd	t          d	k     fd
t          d
k     fdt          dk     fd          }t          |          }t          | |z              |dk    sJ t          t          dt          dk    fd          t          dk    fd          }t          |          }t          | |z              |dk    sJ d S )Nz
lambda x: r   z((x) if (x < 0) else None)   r   )r   Tz-((1) if (x < 1) else (2) if (x < 2) else (0))z.((1) if (x < 1) else (2) if (x < 2) else None)      TFzC((x) if (x < 1) else (x**2) if (((x <= 4)) and ((x > 3))) else (0))evaluatezI((x**2) if (x < 0) else (x) if (x < 1) else (2 - x) if (x >= 1) else (0))zJ((x**2) if (x < 0) else (x) if (x < 1) else (2 - x) if (x >= 1) else None)   )   Tzn((1) if (x >= 1) else (2) if (x >= 2) else (3) if (x >= 3) else (4) if (x >= 4) else (5) if (x >= 5) else (6))zn((1) if (x <= 1) else (2) if (x <= 2) else (3) if (x <= 3) else (4) if (x <= 4) else (5) if (x <= 5) else (6))zi((1) if (x > 1) else (2) if (x > 2) else (3) if (x > 3) else (4) if (x > 4) else (5) if (x > 5) else (6))zi((1) if (x < 1) else (2) if (x < 2) else (3) if (x < 3) else (4) if (x < 4) else (5) if (x < 5) else (6)))r   T)r    Tz1((((1) if (x > 0) else (2))) if (y > 0) else (3)))r   r   r   evalr
   containsr   )hpls      r   test_piecewiser+   #   s    	A1a!e*A1AQKKK,,,,,	
AE
	
AE
	 	A
 	1AQKKK?????	
AE
	
AE
	 	A 	1AQKKK@@@@@	
AE
	
Ax1dE**33A667	 	A
 	1AQKKKUUUUU	
Aq1u	
AE
	
QQE		 	 	A 	1AQKKK F F F F F 		
Aq1u	
AE
	
QQ%	 	 	A
 	1AQKKK ; ; ; ; ; 		
AF	
AF	
AF	
AF	
AF	 	A 	1AQKKK O O O O O 		
AF	
AF	
AF	
AF	
AF	 	A 	1AQKKK S S S S S 		
AE
	
AE
	
AE
	
AE
	
AE
	 	A 	1AQKKK Q Q Q Q Q 		
AE
	
AE
	
AE
	
AE
	
AE
	 	A 	1AQKKK Q Q Q Q Q 		AJ

 

 q5	 		 	A 	1AQKKKCCCCCCCr   c                  Z   t          t          t          z  t          t          t          f          } t          |           }|dk    sJ t          t          t          f}t          ||           }d} || |                     t          ||                    	                                k    sJ d S )Nz+(builtins.sum(x**i for i in range(a, b+1)))r   r       )
r   r   iabr   r   subszipdoitsr*   argsfvs        r   test_sum__1r:      s     	AFQ1IA1A=====a7DqAA1a5AFF3tQ<<((--////////r   c                  Z   t          t          t          z  t          t          t          f          } t          |           }|dk    sJ t          t          t          f}t          ||           }d} || |                     t          ||                    	                                k    sJ d S )Nz*(builtins.sum(i*x for i in range(a, b+1)))r-   )
r   r/   r   r0   r1   r   r   r2   r3   r4   r5   s        r   test_sum__2r<      s    AEAq!9A1A<<<<<a7DqAA1a5AFF3tQ<<((--////////r   c                     t          t          t          z  t          z   t          t          t
          ft          t          t          f          } t          |           }|dk    sJ t          t          t
          t          t          f}t          ||           }d}| 
                    t          ||                                                    } || }||k    sJ d S )NzE(builtins.sum(i*x + j for i in range(a, b+1) for j in range(c, d+1))))r   r    r!   r$   r%   )r   r/   r   jr0   r1   cdr   r   r2   r3   r4   )r6   r*   r7   r8   valsf_reff_ress          r   test_multiple_sumsrD      s    AEAI1ay1a),,A1AWWWWWaAq=DqADFF3tT??##((**EAtHEE>>>>>>r   c                      t          ddi          } |                     t          t                    d          dk    sJ |                     t          t                    d          dk    sJ d S )Nstandardpython3F)rationalzsqrt(x)Tzx**(1/2))r   
_print_Powr   r   )prntrs    r   	test_sqrtrK      sn    :	233EDGGe44	AAAADGGd33zAAAAAAr   c                  2    t          t          d            d S )Nc                  H    t          t          t                    d          S )Ngarbage)method)r   r   r   r   r   r   <lambda>ztest_settings.<locals>.<lambda>   s    jQ	BBB r   )r   	TypeErrorr   r   r   test_settingsrR      s    
9BBCCCCCr   c            
         ddl m}   | t          dk    ddd          }t                                          |          dk    sJ ddlm}m}m}m	}  |d d |t                    g |t          t                     |t          d	z            g          }d
}t                                          |          |k    sJ d S )Nr   )ITETFr"   z=numexpr.evaluate('where((x > 0), True, False)', truediv=True))ReturnFunctionDefinitionVariable
Assignmentfoor   zidef foo(x):
    y = numexpr.evaluate('x', truediv=True)
    return numexpr.evaluate('y**2', truediv=True))sympy.logic.boolalgrT   r   r   doprintsympy.codegen.astrU   rV   rW   rX   r   )rT   exprrU   rV   rW   rX   func_defexpecteds           r   test_numexprr`      s    ''''''3q1udEE222D##D))JK K K K SRRRRRRRRRRR!!$}zz!APVPVWXZ[W[P\P\>]^^HCH ##H--999999r   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )CustomPrintedObjectc                     dS )Nlambdar   selfprinters     r   _lambdacodezCustomPrintedObject._lambdacode       xr   c                     dS )N
tensorflowr   re   s     r   _tensorflowcodez#CustomPrintedObject._tensorflowcode   s    |r   c                     dS )Nnumpyr   re   s     r   
_numpycodezCustomPrintedObject._numpycode   s    wr   c                     dS )Nnumexprr   re   s     r   _numexprcodez CustomPrintedObject._numexprcode   s    yr   c                     dS )Nmpmathr   re   s     r   _mpmathcodezCustomPrintedObject._mpmathcode   ri   r   N)__name__
__module____qualname__rh   rl   ro   rr   ru   r   r   r   rb   rb      s_                    r   rb   c                     t                      } t                                          |           dk    sJ t                                          |           dk    sJ t	                                          |           dk    sJ t	                                          t          t          t          dk    ft          t          dk     f                    dk    sJ d S )Nrd   rk   z)numexpr.evaluate('numexpr', truediv=True)r   z7numexpr.evaluate('where((x >= 0), y, z)', truediv=True))	rb   r   r[   r   r   r   r   r   z)objs    r   test_printmethodr|      s     

C??""3''83333&&s++|;;;;##C((,WWWWW##Iq!q&kAq1u:$F$FGGEF F F F F Fr   N)/sympy.concrete.summationsr   sympy.core.exprr   sympy.core.symbolr   (sympy.functions.elementary.miscellaneousr   $sympy.functions.elementary.piecewiser   (sympy.functions.elementary.trigonometricr   sympy.matrices.denser	   r   sympy.sets.setsr
   sympy.utilities.lambdifyr   sympy.testing.pytestr   sympy.printing.tensorflowr   sympy.printing.lambdareprr   r   r   r   r   rz   r/   r0   r1   r>   r?   r@   r   r   r+   r:   r<   rD   rK   rR   r`   rb   r|   r   r   r   <module>r      s	   ) ) ) ) ) )             % % % % % % 9 9 9 9 9 9 : : : : : : 8 8 8 8 8 8 = = = = = = $ $ $ $ $ $ - - - - - - ' ' ' ' ' ' 7 7 7 7 7 7 O O O O O O O O O O ''

1a
''

1a
''

1a& & &H H HwD wD wDt
0 
0 
00 0 0  B B BD D D: : :    $   "
F 
F 
F 
F 
Fr   