
    g*                        d dl 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 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mZ d dlmZm Z m!Z!m"Z"m#Z#m$Z$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/m0Z0m1Z1m2Z2m3Z3m4Z4 d dl5m6Z6 d dl7m8Z8m9Z9m:Z:m;Z; d dl<m=Z=m>Z>m?Z?m@Z@mAZAmBZB d dlCmDZD d dlEmFZFmGZG d dlHmIZI  eId          ZJ eId          ZKeJr4eJL                    eJM                    g           jN                  ZOeOjP        ZQd ZRd ZSd ZTd ZUd ZVd  ZWd! ZXd" ZYd# ZZd$ Z[d% Z\d& Z]d' Z^d( Z_d) Z`d* Zad+ Zbd, Zcd- Zdd. Zed/ Zfd0 Zgd1 Zhd2 Zid3 Zjd4 Zkd5S )6    )Sum)Mod)Equality
Unequality)Symbol)sqrt)	Piecewise)	polygamma)SiCi)BlockMatrix)MatrixSymbol)Identity)lambdify)symbolsMinMax)xijabcd)Pow)MatrixSolve)	logaddexp
logaddexp2)log1pexpm1hypotlog10exp2log2Sqrt)Array)ArrayTensorProductArrayAddPermuteDimsArrayDiagonal)NumPyPrinterSciPyPrinter_numpy_known_constants_numpy_known_functions_scipy_known_constants_scipy_known_functions)convert_matrix_to_array)skipraises)import_modulenumpyjaxc                      t                      } t          dt          dk     fd          }|                     |          dk    sJ | j        dh dik    sJ dS )z
    NumPyPrinter needs to print Piecewise()'s choicelist as a list to avoid
    breaking compatibility with numpy 1.8. This is not necessary in numpy 1.9+.
    See gh-9747 and gh-9749 for details.
       r   )r   Tz?numpy.select([numpy.less(x, 0),True], [1,0], default=numpy.nan)r5   >   nanlessselectN)r+   r	   r   doprintmodule_imports)printerps     [/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/printing/tests/test_numpy.pytest_numpy_piecewise_regressionrA   %   st     nnG1a!e*i((A??1IJ J J J!g/H/H/H%IIIIIII    c                  
   t          t          t                    } t                                          |           dk    sJ t          t          t                    }t                                          |          dk    sJ d S )Nznumpy.logaddexp(a, b)znumpy.logaddexp2(a, b))r   r   r   r+   r<   r   )laelae2s     r@   test_numpy_logaddexprF   1   sl    
Aq//C>>!!#&&*AAAAAaD>>!!$''+CCCCCCCrB   c                  H   t           st          d           t          t          t          z  t          t
          t          f          } t          t
          t          t          f| d          }d\  }}t                               ddd          t           	                     |||          t          fdt          ||dz             D                                 sJ t          t          t          z  t          t
          t          f          } t          t
          t          t          f| d          }d\  }}t                               ddd          t           	                     |||          t          fdt          ||dz             D                                 sJ d S )	NNumPy not installedr5   r   
   r8   rJ   c              3   "   K   | ]	}|z  V  
d S N .0i_x_s     r@   	<genexpr>ztest_sum.<locals>.<genexpr>A   s'      )O)Or"()O)O)O)O)O)OrB   c              3   "   K   | ]	}|z  V  
d S rM   rN   rO   s     r@   rS   ztest_sum.<locals>.<genexpr>H   s'      )N)Nb"r')N)N)N)N)N)NrB   )npr2   r   r   r   r   r   r   linspaceallclosesumrange)sfa_b_rR   s       @r@   test_sumr^   8   s^    $"###AFQ1IA!QAw''AFB	RR	 	 B;;qqR}}c)O)O)O)OU2rAv=N=N)O)O)O&O&OPPPPPAEAq!9A!QAw''AFB	RR	 	 B;;qqR}}c)N)N)N)NE"b1f<M<M)N)N)N&N&NOOOOOOOrB   c                  "   t           st          d           t          t          t          z   t
          z  t
          t          t          ft          t          t          f          } t          t          t          t          t          t          f| d          }d\  }}d\  t                               ddd          t                                |||          t          fdt          ||dz             D                                 sJ d S )	NrH   r5   rI   )      rK   r8   rJ   c              3   T   K   | ]"}t          d z             D ]}|z   |z  V  #dS )r8   N)rY   )rP   rQ   j_c_d_rR   s      r@   rS   z%test_multiple_sums.<locals>.<genexpr>V   sK      bbbPUVXZ\_`Z`PaPabb"BGr>bbbbbbbrB   )rU   r2   r   r   r   r   r   r   r   r   r   rV   rW   rX   rY   )rZ   r[   r\   r]   rd   re   rR   s       @@@r@   test_multiple_sumsrf   K   s     $"###QUaK!QQ1I..A!Q1a!W--AFBFB	RR	 	 B;;qqRR,,bbbbbbE"b1f4E4Ebbbbbd d d d d d drB   c                     t           st          d           t          ddd          } t          ddd          }t          | |z            }t	          | |f|d          }t                               ddgddgg          }t                               dd	gd
dgg          } |||          t                               ||          k                                    sJ d S )NrH   M   Nr5   r8         rK   )rU   r2   r   r1   r   arraymatmulall)rh   rj   cgr[   mambs         r@   test_codegen_einsumrt   Y   s     $"###S!QAS!QA	 Q	'	'B!QW%%A	Aq6Aq6"	#	#B	Ab6B7#	$	$BAb"II2r***//1111111rB   c            
      :   t           st          d           t          ddd          } t          ddd          }t          ddd          }t          ddd          }t                               ddgdd	gg          }t                               dd
gddgg          }t                               ddgddgg          }t                               ddgd	dgg          }t	          | |          }t          | |f|d          }	 |	||          t                               |ddg|ddg          k                                    sJ t          | |          }t          | |f|d          }	 |	||          ||z   k                                    sJ t          | ||          }t          | ||f|d          }	 |	|||          ||z   |z   k                                    sJ t          | |||          }t          | |||f|d          }	 |	||||          ||z   |z   |z   k                                    sJ t          | ddg          }t          | f|d          }	 |	|          |j
        k                                    sJ t          t	          | |          g d          }t          | |f|d          }	 |	||          t                               t                               |ddg|ddg          d          k                                    sJ t          t	          | |          d          }t          | |f|d          }	 |	||          t                               t                               |ddg|ddg          dd          k                                    sJ d S )NrH   rh   ri   rj   PQr8   rk   rl   rm   rK   r      r5   )r8   ri   rk   r   r8   ri   )axis1axis2)rU   r2   r   rn   r'   r   einsumrp   r(   r)   T	transposer*   diagonal)
rh   rj   rv   rw   rr   rs   mcmdrq   r[   s
             r@   test_codegen_extrar   h   s    $"###S!QAS!QAS!QAS!QA	Aq6Aq6"	#	#B	Ab6B7#	$	$B	Aq6Aq6"	#	#B	Ab6Aq6"	#	#B	Aq	!	!B!QW%%AAb"II21vrAq6:::??AAAAA	!QB!QW%%AAb"IIB##%%%%%	!Q		B!QB((AAb"bMMRU2X%**,,,,,	!Q1		B!Q1r7++AAb"b"Br",1133333	QA		B!r7##AAbEERTM     	'1--|||	<	<B!QW%%AAb"IIbiiQFBA&G&GVVV[[]]]]]	)!Q//	8	8B!QW%%AAb"IIRYYrAq621v%F%FaWXYYY^^```````rB   c                     t           st          d           t          t          d          } t	          t          f|           }t                               g d          }t                                ||          g d          sJ t          t          d          } t	          t          f|           }t                               g d          }t                                ||          g d          sJ t          dk     } t	          t          f|           }t                               g d          }t                                ||          g d          sJ t          dk    } t	          t          f|           }t                               g d          }t                                ||          g d          sJ t          dk    } t	          t          f|           }t                               g d          }t                                ||          g d          sJ t          dk    } t	          t          f|           }t                               g d          }t                                ||          g d	          sJ d S )
NrH   r8   )r   r8   ri   )FTF)TFT)TFF)TTF)FFT)FTT)rU   r2   r   r   r   rn   array_equalr   )er[   rR   s      r@   test_relationalr      s9    $"###AA!qA	)))		B>>!!B%%!5!5!5666661aA!qA	)))		B>>!!B%%!4!4!455555	
QA!qA	)))		B>>!!B%%!5!5!566666	
aA!qA	)))		B>>!!B%%!4!4!455555	
QA!qA	)))		B>>!!B%%!5!5!566666	
aA!qA	)))		B>>!!B%%!4!4!45555555rB   c                     t           st          d           t          t          t                    } t          t          t          f|           }t                               g d          }d}t                                |||          g d          sJ t                               g d          }t                               g d          }t                                |||          g d          sJ t                               g d          }t                               g d          }t                                |||          g d          sJ d S )NrH   )r   r8   ri   rk   ri   )r   r8   r   r8   )ri   ri   ri   ri   )ri   rk   rl      )r   r   r   r   )rU   r2   r   r   r   r   rn   r   )r   r[   r\   r]   s       r@   test_modr      s%    $"###Aq		A!QA	,,,		B	
B>>!!B))\\\22222	,,,		B	,,,		B>>!!B))\\\22222	,,,		B	,,,		B>>!!B))\\\2222222rB   c                      t           st          d           t          ddd          } t          g | d          } |            dk    sJ d S )NrH   ri   rK   F)evaluater5   g      ?)rU   r2   r   r   )exprr[   s     r@   test_powr      sU     $"###q"u%%%DT7##A133#::::::rB   c                      t           st          d           t          t          ft	          t                    d          } t           | d          dz
  dz
            dt          z  k    sJ d S )NrH   r5   g|=g#B;)rU   r2   r   r   r    absNUMPY_DEFAULT_EPSILONr[   s    r@   
test_expm1r      si     $"###!uQxx))Aqqxx%%'((E4I,IIIIIIIrB   c                      t           st          d           t          t          ft	          t                    d          } t           | d          dz
            dt          z  k    sJ d S )NrH   r5   g>N}a+)rU   r2   r   r   r   r   r   r   s    r@   
test_log1pr      sd     $"###!uQxx))Aqqxx%  E,A$AAAAAAArB   c            
          t           st          d           t           t          t          t
          ft          t          t
                    d          dd          dz
            t          k    sJ d S )NrH   r5   rk   rl   r   )rU   r2   r   r   r   r   r!   r   rN   rB   r@   
test_hypotr      sc     $"###5xAaW55a;;a?@@DYYYYYYYrB   c            	          t           st          d           t           t          t          ft          t                    d          d          dz
            t          k    sJ d S )NrH   r5   d   ri   )rU   r2   r   r   r   r"   r   rN   rB   r@   
test_log10r      s]     $"###0xeAhh00559::>SSSSSSSrB   c            	          t           st          d           t           t          t          ft          t                    d          d          dz
            t          k    sJ d S )NrH   r5   r       )rU   r2   r   r   r   r#   r   rN   rB   r@   	test_exp2r      s]     $"###/xd1ggw//22R788<QQQQQQQrB   c            	          t           st          d           t           t          t          ft          t                    d          d          dz
            t          k    sJ d S )NrH   r5         )rU   r2   r   r   r   r$   r   rN   rB   r@   	test_log2r      s]     $"###/xd1ggw//44q899=RRRRRRRrB   c            	          t           st          d           t           t          t          ft          t                    d          d          dz
            t          k    sJ d S NrH   r5   rl   ri   )rU   r2   r   r   r   r%   r   rN   rB   r@   	test_Sqrtr      ]     $"###/xd1ggw//22Q677;PPPPPPPrB   c            	          t           st          d           t           t          t          ft          t                    d          d          dz
            t          k    sJ d S r   )rU   r2   r   r   r   r   r   rN   rB   r@   	test_sqrtr     r   rB   c                  $   t           st          d           t          ddd          } t          ddd          }| dz  |z  |z   }t          | |          |z   }t	          | |f|          }t	          | |f|          }t                               g dg dg d	g          }t           j                            |          dk    sJ t                               g d
          }t                                |||           |||                    sJ d S )NrH   rh   rk   r   r8   rK   r8   ri   rk   )rk   ri   r   )r      rx   )rk   rl   r   )	rU   r2   r   r   r   rn   linalgmatrix_rankrW   )rh   r   r   matsolve_exprr[   
f_matsolvem0x0s           r@   test_matsolver   
  s    $"###S!QAS!QAr7Q;?D1%%)M!QA1a&-00J	999iii3	4	4B9  $$))))	)))		B;;zz"b))11R995555555rB   c                  P   t           st          d           t          ddd          } t          ddd          }t          ddd          }t          ddd          }t          | |g||gg          }|j        dk    sJ t                      }|                    |          d	k    sJ d S )
NrH   a_1rJ   rk   a_2a_3a_4)   r   z%numpy.block([[a_1, a_2], [a_3, a_4]]))rU   r2   r   r   shaper+   r<   )r   r   r   r   Ar>   s         r@   
test_16857r     s     $"###
ub!
$
$C
ub!
$
$C
ub!
$
$C
ub!
$
$Cc3Z#s,--A7gnnG??1!HHHHHHHrB   c                     t           st          d           t          ddd          } t          | | t	          d          z             }t                               ddgddgg          }t                               ddgddgg          } ||          |k                                    sJ dd	lm}  |d
d          t          d          t          t          fd           d S )NrH   rh   ri   r8   rk   rl   r   r   )r   nT)integerc                  D    t            t                    z             S rM   )r   r   )rj   r   s   r@   <lambda>z"test_issue_17006.<locals>.<lambda>=  s    AO(D(D rB   )rU   r2   r   r   r   rn   rp   sympy.core.symbolr   r3   NotImplementedError)rh   r[   rr   mrr   rj   r   s        @@r@   test_issue_17006r   .  s     $"###S!QAAO$$A	Aq6Aq6"	#	#B	Aq6Aq6"	#	#BAbEERK))))))T"""AS!QA
 D D D D DEEEEErB   c                     t           st          d           t          d          \  } }}t          | ||          t	          | ||          z   }t          | ||f|d          }d\  }}t           j                            |          t           j                            |          }}t          	                     ||  ||           sJ t          	                     ||  ||           sJ d S )NzJax not installedzx y zr6   )r   )rl   r   r   )
r6   r2   r   r   r   r   r5   asarrayrU   rW   )	r   yzr   funcinput_tuple1input_tuple2input_array1input_array2s	            r@   test_jax_tuple_compatibilityr   ?  s     " !!!gGAq!q!Q<<#aA,,&DQ1ItU++D!5L,!$!2!2<!@!@#)BSBST`BaBa,L;;tt\*DD,,?@@@@@;;tt\*DD,,?@@@@@@@rB   c                      t                                          t          d                    dk    sJ t                                          t          d                    dk    sJ d S )N)ry   )rk   r   znumpy.array([[1, 2], [3, 5]])ry   znumpy.array((1, 2)))r+   r<   r&   rN   rB   r@   test_numpy_arrayr   K  s_    >>!!%(8"9"9::>]]]]]>>!!%--004IIIIIIIrB   c                      t           d         dk    sJ t           d         dk    sJ t          d         dk    sJ t          d         dk    sJ d S )	NNaNz	numpy.nan
EulerGammaznumpy.euler_gammaacosznumpy.arccoslogz	numpy.log)r-   r.   rN   rB   r@   test_numpy_known_funcs_constsr   O  sa    !%(K7777!,/3FFFFF!&)^;;;;!%(K777777rB   c                      t           d         dk    sJ t           d         dk    sJ t          d         dk    sJ t          d         dk    sJ d S )	NGoldenRatiozscipy.constants.golden_ratioPizscipy.constants.pierfzscipy.special.erf	factorialzscipy.special.factorial)r/   r0   rN   rB   r@   test_scipy_known_funcs_constsr   V  sd    !-04RRRRR!$'+?????!%(,?????!+.2KKKKKKKrB   c                  j    t                      } t          | d          sJ t          | d          sJ d S )N_print_acos
_print_log)r+   hasattr)prntrs    r@   test_numpy_print_methodsr   ]  s=    NNE5-(((((5,'''''''rB   c                     t                      } t          | d          sJ t          | d          sJ t          | d          sJ t          | d          sJ t          | d          sJ t          ddd          }t          d	d
          }|                     t	          ||                    dk    sJ |                     t          |                    dk    sJ |                     t          |                    dk    sJ d S )Nr   r   
_print_erf_print_factorial_print_chebyshevtkT)r   nonnegativer   )realzscipy.special.polygamma(k, x)zscipy.special.sici(x)[0]zscipy.special.sici(x)[1])r,   r   r   r<   r
   r   r   )r   r   r   s      r@   test_scipy_print_methodsr   b  s   NNE5-(((((5,'''''5,'''''5,-----5-.....sDd333AsA==1a))-LLLLL==A#=======A#=======rB   N)lsympy.concrete.summationsr   sympy.core.modr   sympy.core.relationalr   r   r   r   (sympy.functions.elementary.miscellaneousr   $sympy.functions.elementary.piecewiser	   'sympy.functions.special.gamma_functionsr
   'sympy.functions.special.error_functionsr   r   &sympy.matrices.expressions.blockmatrixr   "sympy.matrices.expressions.matexprr   "sympy.matrices.expressions.specialr   sympy.utilities.lambdifyr   sympyr   r   r   	sympy.abcr   r   r   r   r   r   r   
sympy.corer   sympy.codegen.matrix_nodesr   sympy.codegen.numpy_nodesr   r   sympy.codegen.cfunctionsr   r    r!   r"   r#   r$   r%   sympy.tensor.arrayr&   0sympy.tensor.array.expressions.array_expressionsr'   r(   r)   r*   sympy.printing.numpyr+   r,   r-   r.   r/   r0   3sympy.tensor.array.expressions.from_matrix_to_arrayr1   sympy.testing.pytestr2   r3   sympy.externalr4   rU   r6   finforn   dtypedeafult_float_infoepsr   rA   rF   r^   rf   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rN   rB   r@   <module>r     s   ) ) ) ) ) )       8 8 8 8 8 8 8 8 $ $ $ $ $ $ 9 9 9 9 9 9 : : : : : : = = = = = = < < < < < < < < > > > > > > ; ; ; ; ; ; 7 7 7 7 7 7 - - - - - - # # # # # # # # # # ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )       2 2 2 2 2 2 ; ; ; ; ; ; ; ; Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q $ $ $ $ $ $           K K K K K K K K K K K K K K K K W W W W W W - - - - - - - - ( ( ( ( ( (]7mE 3"((2,,"455.2
J 
J 
JD D DP P P&d d d2 2 2'a 'a 'aT&6 &6 &6R3 3 3(  J J JB B BZ Z Z
T T TR R RS S SQ Q QQ Q Q6 6 6*I I IF F F"
A 
A 
AJ J J8 8 8L L L( ( (
> > > > >rB   