
    Riex(                        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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+m,Z,m-Z-m.Z.m/Z/m0Z0 d dl1m2Z2 d dl3m4Z4m5Z5m6Z6m7Z7 d dl8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z> d dl?m@Z@ d dlAmBZBmCZC d dlDmEZE  eEd          ZFeFr4eFG                    eFH                    g           jI                  ZJeJjK        ZLd ZMd ZNd ZOd ZPd ZQd ZRd ZSd  ZTd! ZUd" ZVd# ZWd$ ZXd% ZYd& ZZd' Z[d( Z\d) Z]d* Z^d+ Z_d, Z`d- Zad. Zbd/ Zcd0 Zdd1 Zed2S )3    )Sum)Mod)Equality
Unequality)Symbol)sqrt)	Piecewise)	polygamma)SiCi)BlockMatrix)MatrixSymbol)Identity)lambdify)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numpyc                      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)r2   >   nanlessselectN)r(   r	   r   doprintmodule_imports)printerps     ?lib/python3.11/site-packages/sympy/printing/tests/test_numpy.pytest_numpy_piecewise_regressionr=   #   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(   r8   r   )laelae2s     r<   test_numpy_logaddexprB   /   sl    
Aq//C>>!!#&&*AAAAAaD>>!!$''+CCCCCCCr>   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 installedr2   r   
   r4   rF   c              3   "   K   | ]	}|z  V  
d S N .0i_x_s     r<   	<genexpr>ztest_sum.<locals>.<genexpr>?   s'      )O)Or"()O)O)O)O)O)Or>   c              3   "   K   | ]	}|z  V  
d S rI   rJ   rK   s     r<   rO   ztest_sum.<locals>.<genexpr>F   s'      )N)Nb"r')N)N)N)N)N)Nr>   )npr/   r   r   r   r   r   r   linspaceallclosesumrange)sfa_b_rN   s       @r<   test_sumrZ   6   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Or>   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 )	NrD   r2   rE   )      rG   r4   rF   c              3   T   K   | ]"}t          d z             D ]}|z   |z  V  #dS )r4   N)rU   )rL   rM   j_c_d_rN   s      r<   rO   z%test_multiple_sums.<locals>.<genexpr>T   sK      bbbPUVXZ\_`Z`PaPabb"BGr>bbbbbbbr>   )rQ   r/   r   r   r   r   r   r   r   r   r   rR   rS   rT   rU   )rV   rW   rX   rY   r`   ra   rN   s       @@@r<   test_multiple_sumsrb   I   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r>   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 )NrD   M   Nr2   r4         rG   )rQ   r/   r   r.   r   arraymatmulall)rd   rf   cgrW   mambs         r<   test_codegen_einsumrp   W   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1r>   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 )NrD   rd   re   rf   PQr4   rg   rh   ri   rG   r      r2   )r4   re   rg   r   r4   re   )axis1axis2)rQ   r/   r   rj   r$   r   einsumrl   r%   r&   T	transposer'   diagonal)
rd   rf   rr   rs   rn   ro   mcmdrm   rW   s
             r<   test_codegen_extrar~   f   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^^```````r>   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 )
NrD   r4   )r   r4   re   )FTF)TFT)TFF)TTF)FFT)FTT)rQ   r/   r   r   r   rj   array_equalr   )erW   rN   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5r>   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 )NrD   )r   r4   re   rg   re   )r   r4   r   r4   )re   re   re   re   )re   rg   rh      )r   r   r   r   )rQ   r/   r   r   r   r   rj   r   )r   rW   rX   rY   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2r>   c                      t           st          d           t          ddd          } t          g | d          } |            dk    sJ d S )NrD   re   rG   F)evaluater2   g      ?)rQ   r/   r   r   )exprrW   s     r<   test_powr      sU     $"###q"u%%%DT7##A133#::::::r>   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 )NrD   r2   g|=g#B;)rQ   r/   r   r   r   absNUMPY_DEFAULT_EPSILONrW   s    r<   
test_expm1r      si     $"###!uQxx))Aqqxx%%'((E4I,IIIIIIIr>   c                      t           st          d           t          t          ft	          t                    d          } t           | d          dz
            dt          z  k    sJ d S )NrD   r2   g>N}a+)rQ   r/   r   r   r   r   r   r   s    r<   
test_log1pr      sd     $"###!uQxx))Aqqxx%  E,A$AAAAAAAr>   c            
          t           st          d           t           t          t          t
          ft          t          t
                    d          dd          dz
            t          k    sJ d S )NrD   r2   rg   rh   r   )rQ   r/   r   r   r   r   r   r   rJ   r>   r<   
test_hypotr      sc     $"###5xAaW55a;;a?@@DYYYYYYYr>   c            	          t           st          d           t           t          t          ft          t                    d          d          dz
            t          k    sJ d S )NrD   r2   d   re   )rQ   r/   r   r   r   r   r   rJ   r>   r<   
test_log10r      s]     $"###0xeAhh00559::>SSSSSSSr>   c            	          t           st          d           t           t          t          ft          t                    d          d          dz
            t          k    sJ d S )NrD   r2   r       )rQ   r/   r   r   r   r    r   rJ   r>   r<   	test_exp2r      s]     $"###/xd1ggw//22R788<QQQQQQQr>   c            	          t           st          d           t           t          t          ft          t                    d          d          dz
            t          k    sJ d S )NrD   r2         )rQ   r/   r   r   r   r!   r   rJ   r>   r<   	test_log2r      s]     $"###/xd1ggw//44q899=RRRRRRRr>   c            	          t           st          d           t           t          t          ft          t                    d          d          dz
            t          k    sJ d S NrD   r2   rh   re   )rQ   r/   r   r   r   r"   r   rJ   r>   r<   	test_Sqrtr      ]     $"###/xd1ggw//22Q677;PPPPPPPr>   c            	          t           st          d           t           t          t          ft          t                    d          d          dz
            t          k    sJ d S r   )rQ   r/   r   r   r   r   r   rJ   r>   r<   	test_sqrtr     r   r>   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 )NrD   rd   rg   r   r4   rG   )r4   re   rg   )rg   re   r   )r      rt   )rg   rh   r   )	rQ   r/   r   r   r   rj   linalgmatrix_rankrS   )rd   r   r   matsolve_exprrW   
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5r>   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 )
NrD   a_1rF   rg   a_2a_3a_4)   r   z%numpy.block([[a_1, a_2], [a_3, a_4]]))rQ   r/   r   r   shaper(   r8   )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Hr>   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 )NrD   rd   re   r4   rg   rh   r   r   )symbolsnT)integerc                  D    t            t                    z             S rI   )r   r   )rf   r   s   r<   <lambda>z"test_issue_17006.<locals>.<lambda>;  s    AO(D(D r>   )rQ   r/   r   r   r   rj   rl   sympy.core.symbolr   r0   NotImplementedError)rd   rW   rn   mrr   rf   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Er>   c                      t                                          t          d                    dk    sJ t                                          t          d                    dk    sJ d S )N)ru   )rg   r   znumpy.array([[1, 2], [3, 5]])ru   znumpy.array((1, 2)))r(   r8   r#   rJ   r>   r<   test_numpy_arrayr   =  s_    >>!!%(8"9"9::>]]]]]>>!!%--004IIIIIIIr>   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+   rJ   r>   r<   test_numpy_known_funcs_constsr   A  sa    !%(K7777!,/3FFFFF!&)^;;;;!%(K777777r>   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,   r-   rJ   r>   r<   test_scipy_known_funcs_constsr   H  sd    !-04RRRRR!$'+?????!%(,?????!+.2KKKKKKKr>   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   O  s=    NNE5-(((((5,'''''''r>   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   r8   r
   r   r   )r   r   r   s      r<   test_scipy_print_methodsr   T  s   NNE5-(((((5,'''''5,'''''5,-----5-.....sDd333AsA==1a))-LLLLL==A#=======A#=======r>   N)f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   	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,   r-   3sympy.tensor.array.expressions.from_matrix_to_arrayr.   sympy.testing.pytestr/   r0   sympy.externalr1   rQ   finforj   dtypedeafult_float_infoepsr   r=   rB   rZ   rb   rp   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rJ   r>   r<   <module>r      sp   ) ) ) ) ) )       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 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"J J J8 8 8L L L( ( (
> > > > >r>   