
    sg*                        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      ZKeJr6eJj                  eJj                  g       j                        ZOeOj                  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 Zky5)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      }| j                  |      dk(  sJ | j                  dh dik(  sJ y)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     R/var/www/html/venv/lib/python3.12/site-packages/sympy/printing/tests/test_numpy.pytest_numpy_piecewise_regressionrA   %   sZ     nG1a!e*i(A??1IJ J J!!g/H%IIII    c                      t        t        t              } t               j	                  |       dk(  sJ t        t        t              }t               j	                  |      dk(  sJ y )Nznumpy.logaddexp(a, b)znumpy.logaddexp2(a, b))r   r   r   r+   r<   r   )laelae2s     r@   test_numpy_logaddexprF   1   sQ    
Aq/C>!!#&*AAAAaD>!!$'+CCCCrB   c                     t         st        d       t        t        t        z  t        t
        t        f      } t        t
        t        t        f| d      }d\  }}t         j                  ddd      t         j                   |||      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         j                  ddd      t         j                   |||      t        fdt        ||dz         D                    sJ y )	NNumPy not installedr5   r   
   r8   rJ   c              3   (   K   | ]	  }|z    y wN .0i_x_s     r@   	<genexpr>ztest_sum.<locals>.<genexpr>A   s     )Or"()O   c              3   (   K   | ]	  }|z    y wrM   rN   rO   s     r@   rS   ztest_sum.<locals>.<genexpr>H   s     )Nb"r')NrT   )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;;qR}c)OU2rAv=N)O&OPPPAEAq!9A!QAw'AFB	RR	 B;;qR}c)NE"b1f<M)N&N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         j                  ddd      t         j                   |||      t        fdt        ||dz         D                    sJ y )	NrH   r5   rI   )      rK   r8   rJ   c              3   V   K   | ]   }t        d z         D ]  }|z   |z    " yw)r8   N)rZ   )rP   rQ   j_c_d_rR   s      r@   rS   z%test_multiple_sums.<locals>.<genexpr>V   s5     bbPUVXZ\_`Z`Pab"BGr>b>bs   &))rV   r2   r   r   r   r   r   r   r   r   r   rW   rX   rY   rZ   )r[   r\   r]   r^   re   rf   rR   s       @@@r@   test_multiple_sumsrg   K   s    "#QUaK!QQ1I.A!Q1a!W-AFBFB	RR	 B;;qRR,bE"b1f4Ebbd d drB   c                  `   t         st        d       t        ddd      } t        ddd      }t        | |z        }t	        | |f|d      }t         j                  ddgddgg      }t         j                  dd	gd
dgg      } |||      t         j                  ||      k(  j                         sJ y )NrH   M   Nr5   r8         rK   )rV   r2   r   r1   r   arraymatmulall)ri   rk   cgr\   mambs         r@   test_codegen_einsumru   Y   s    "#S!QAS!QA	 Q	'B!QW%A	Aq6Aq6"	#B	Ab6B7#	$Bb"I2r**//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         j                  ddgdd	gg      }t         j                  dd
gddgg      }t         j                  ddgddgg      }t         j                  ddgd	dgg      }t	        | |      }t        | |f|d      }	 |	||      t         j                  |ddg|ddg      k(  j                         sJ t        | |      }t        | |f|d      }	 |	||      ||z   k(  j                         sJ t        | ||      }t        | ||f|d      }	 |	|||      ||z   |z   k(  j                         sJ t        | |||      }t        | |||f|d      }	 |	||||      ||z   |z   |z   k(  j                         sJ t        | ddg      }t        | f|d      }	 |	|      |j                  k(  j                         sJ t        t	        | |      g d      }t        | |f|d      }	 |	||      t         j                  t         j                  |ddg|ddg      d      k(  j                         sJ t        t	        | |      d      }t        | |f|d      }	 |	||      t         j                  t         j                  |ddg|ddg      dd      k(  j                         sJ y )NrH   ri   rj   rk   PQr8   rl   rm   rn   rK   r      r5   )r8   rj   rl   r   r8   rj   )axis1axis2)rV   r2   r   ro   r'   r   einsumrq   r(   r)   T	transposer*   diagonal)
ri   rk   rw   rx   rs   rt   mcmdrr   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b"I21vrAq6::??AAA	!QB!QW%Ab"IB##%%%	!Q	B!QB(Ab"bMRU2X%**,,,	!Q1	B!Q1r7+Ab"b"Br",11333	QA	B!r7#AbERTTM   	'1-|	<B!QW%Ab"IbiiQFBA&GVV[[]]]	)!Q/	8B!QW%Ab"IRYYrAq621v%FaWXYY^^```rB   c                     t         st        d       t        t        d      } t	        t        f|       }t         j                  g d      }t         j                   ||      g d      sJ t        t        d      } t	        t        f|       }t         j                  g d      }t         j                   ||      g d      sJ t        dk  } t	        t        f|       }t         j                  g d      }t         j                   ||      g d      sJ t        dk  } t	        t        f|       }t         j                  g d      }t         j                   ||      g d      sJ t        dkD  } t	        t        f|       }t         j                  g d      }t         j                   ||      g d      sJ t        dk\  } t	        t        f|       }t         j                  g d      }t         j                   ||      g d	      sJ y )
NrH   r8   )r   r8   rj   )FTF)TFT)TFF)TTF)FFT)FTT)rV   r2   r   r   r   ro   array_equalr   )er\   rR   s      r@   test_relationalr      s   "#AA!qA	)	B>>!B%!56661aA!qA	)	B>>!B%!4555	
QA!qA	)	B>>!B%!5666	
aA!qA	)	B>>!B%!4555	
QA!qA	)	B>>!B%!5666	
aA!qA	)	B>>!B%!4555rB   c                  *   t         st        d       t        t        t              } t        t        t        f|       }t         j                  g d      }d}t         j                   |||      g d      sJ t         j                  g d      }t         j                  g d      }t         j                   |||      g d      sJ t         j                  g d      }t         j                  g d      }t         j                   |||      g d      sJ y )NrH   )r   r8   rj   rl   rj   )r   r8   r   r8   )rj   rj   rj   rj   )rj   rl   rm      )r   r   r   r   )rV   r2   r   r   r   r   ro   r   )r   r\   r]   r^   s       r@   test_modr      s    "#Aq	A!QA	,	B	
B>>!B)\222	,	B	,	B>>!B)\222	,	B	,	B>>!B)\222rB   c                  t    t         st        d       t        ddd      } t        g | d      } |       dk(  sJ y )NrH   rj   rK   F)evaluater5   g      ?)rV   r2   r   r   )exprr\   s     r@   test_powr      s8    "#q"u%DT7#A3#::rB   c                      t         st        d       t        t        ft	        t              d      } t         | d      dz
  dz
        dt        z  k  sJ y )NrH   r5   g|=g#B;)rV   r2   r   r   r    absNUMPY_DEFAULT_EPSILONr\   s    r@   
test_expm1r      sI    "#!uQx)Aqx%%'(E4I,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 y )NrH   r5   g>N}a+)rV   r2   r   r   r   r   r   r   s    r@   
test_log1pr      sD    "#!uQx)Aqx% E,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 y )NrH   r5   rl   rm   r   )rV   r2   r   r   r   r   r!   r   rN   rB   r@   
test_hypotr      sD    "#5xAaW5a;a?@DYYYYrB   c            	          t         st        d       t         t        t        ft        t              d      d      dz
        t        k  sJ y )NrH   r5   d   rj   )rV   r2   r   r   r   r"   r   rN   rB   r@   
test_log10r      s>    "#0xeAh059:>SSSSrB   c            	          t         st        d       t         t        t        ft        t              d      d      dz
        t        k  sJ y )NrH   r5   r       )rV   r2   r   r   r   r#   r   rN   rB   r@   	test_exp2r      s>    "#/xd1gw/2R78<QQQQrB   c            	          t         st        d       t         t        t        ft        t              d      d      dz
        t        k  sJ y )NrH   r5         )rV   r2   r   r   r   r$   r   rN   rB   r@   	test_log2r      s>    "#/xd1gw/4q89=RRRRrB   c            	          t         st        d       t         t        t        ft        t              d      d      dz
        t        k  sJ y NrH   r5   rm   rj   )rV   r2   r   r   r   r%   r   rN   rB   r@   	test_Sqrtr      >    "#/xd1gw/2Q67;PPPPrB   c            	          t         st        d       t         t        t        ft        t              d      d      dz
        t        k  sJ y r   )rV   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         j                  g dg dg d	g      }t         j                  j                  |      dk(  sJ t         j                  g d
      }t         j                   |||       |||            sJ y )NrH   ri   rl   r   r8   rK   r8   rj   rl   )rl   rj   r   )r      ry   )rl   rm   r   )	rV   r2   r   r   r   ro   linalgmatrix_rankrX   )ri   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&-0J	9i3	4B99  $)))	)	B;;z"b)1R9555rB   c                     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               }|j                  |      d	k(  sJ y )
NrH   a_1rJ   rl   a_2a_3a_4)   r   z%numpy.block([[a_1, a_2], [a_3, a_4]]))rV   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77gnG??1!HHHHrB   c                  x   t         st        d       t        ddd      } t        | | t	        d      z         }t         j                  ddgddgg      }t         j                  ddgddgg      } ||      |k(  j                         sJ dd	lm}  |d
d      t        d      t        t        fd       y )NrH   ri   rj   r8   rl   rm   r   r   )r   nT)integerc                  4    t          t              z         S rM   )r   r   )rk   r   s   r@   <lambda>z"test_issue_17006.<locals>.<lambda>=  s    AO(D rB   )rV   r2   r   r   r   ro   rq   sympy.core.symbolr   r3   NotImplementedError)ri   r\   rs   mrr   rk   r   s        @@r@   test_issue_17006r   .  s    "#S!QAAO$A	Aq6Aq6"	#B	Aq6Aq6"	#BbERK)T"AS!QA
 DErB   c                     t         st        d       t        d      \  } }}t        | ||      t	        | ||      z   }t        | ||f|d      }d\  }}t         j                  j                  |      t         j                  j                  |      }}t        j                   ||  ||       sJ t        j                   ||  ||       sJ y )NzJax not installedzx y zr6   )r   )rm   r   r   )
r6   r2   r   r   r   r   r5   asarrayrV   rX   )	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`Ba,L;;t\*D,,?@@@;;t\*D,,?@@@rB   c                      t               j                  t        d            dk(  sJ t               j                  t        d            dk(  sJ y )N)rz   )rl   r   znumpy.array([[1, 2], [3, 5]])rz   znumpy.array((1, 2)))r+   r<   r&   rN   rB   r@   test_numpy_arrayr   K  sD    >!!%(8"9:>]]]]>!!%-04IIIIrB   c                  t    t         d   dk(  sJ t         d   dk(  sJ t        d   dk(  sJ t        d   dk(  sJ y )	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  sO    !%(K777!,/3FFFF!&)^;;;!%(K777rB   c                  t    t         d   dk(  sJ t         d   dk(  sJ t        d   dk(  sJ t        d   dk(  sJ y )	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  sR    !-04RRRR!$'+????!%(,????!+.2KKKKrB   c                  P    t               } t        | d      sJ t        | d      sJ y )N_print_acos
_print_log)r+   hasattr)prntrs    r@   test_numpy_print_methodsr   ]  s)    NE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
      }| j                  t	        ||            dk(  sJ | j                  t        |            dk(  sJ | j                  t        |            dk(  sJ y )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    NE5-(((5,'''5,'''5,---5-...sDd3AsA==1a)-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   rV   r6   finforo   dtypedeafult_float_infoepsr   rA   rF   r_   rg   ru   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     sB   )  8 $ 9 : = < > ; 7 - # # ) ) )  2 ; Q Q Q $ K K W - (7E"((2,"4"45.22
JDP&d2'aT&6R3(JBZ
TRSQQ6*IF"
AJ8L(
>rB   