
    \h6+                        S SK Jr  S SKJr  S SKJrJr  S SKJr  S SK	J
r
  S SKJr  S SKJr  S SKJr  S S	KJr  S S
KJrJrJrJrJrJrJr  S SKJrJrJr  S SKJ r   S SK!J"r"J#r#  S SK$J%r%J&r&J'r'J(r(J)r)J*r*J+r+  S SK,J-r-  S SK.J/r/J0r0J1r1J2r2  S SK3J4r4J5r5J6r6  S SK7J8r8  S SK9J:r:J;r;  S SK<J=r=  \=" S5      r>\>(       aJ  \>R~                  R                  \>R~                  R                  / 5      R                  5      rC\CR                  rES rFS rGS rHS rIS rJS rKS rLS rMS rNS rOS  rPS! rQS" rRS# rSS$ rTS% rUS& rVS' rWS( rXS) rYS* rZS+ r[S, r\S- r]S. r^g/)0    )Sum)Mod)Equality
Unequality)sqrt)	Piecewise)BlockMatrix)MatrixSymbol)Identity)lambdify)xijabcd)FunctionPowSymbol)MatrixSolve)	logaddexp
logaddexp2)log1pexpm1hypotlog10exp2log2Sqrt)Array)ArrayTensorProductArrayAddPermuteDimsArrayDiagonal)
JaxPrinter_jax_known_constants_jax_known_functions)convert_matrix_to_array)skipraises)import_modulejaxc                      [        5       n [        S[        S:  4S5      nU R                  U5      S:X  d   eU R                  S1 Sk0:X  d   eg)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   TzKjax.numpy.select([jax.numpy.less(x, 0),True], [1,0], default=jax.numpy.nan)z	jax.numpy>   nanlessselectN)r&   r   r   doprintmodule_imports)printerps     U/var/www/auris/envauris/lib/python3.13/site-packages/sympy/printing/tests/test_jax.pytest_jax_piecewise_regressionr8   (   sZ     lG1a!e*i(A??1UV V V!!k3L%MMMM    c                      [        [        [        5      n [        5       R	                  U 5      S:X  d   e[        [        [        5      n[        5       R	                  U5      S:X  d   eg )Nzjax.numpy.logaddexp(a, b)zjax.numpy.logaddexp2(a, b))r   r   r   r&   r3   r   )laelae2s     r7   test_jax_logaddexpr=   5   sQ    
Aq/C<$(CCCCaD<%)EEEEr9   c                    ^ [         (       d  [        S5        [        [        [        -  [        [
        [        45      n [        [
        [        [        4U S5      nSu  p#[         R                  R                  SSS5      m[         R                  R                  U" X#T5      [        U4S j[        X#S-   5       5       5      5      (       d   e[        [        [        -  [        [
        [        45      n [        [
        [        [        4U S5      nSu  p#[         R                  R                  SSS5      m[         R                  R                  U" X#T5      [        U4S j[        X#S-   5       5       5      5      (       d   eg )	NJAX not installedr-   r   
   r/   rA   c              3   .   >#    U  H
  nTU-  v   M     g 7fN .0i_x_s     r7   	<genexpr>test_jax_sum.<locals>.<genexpr>E   s     0VDUbrDUs   c              3   ,   >#    U  H	  oT-  v   M     g 7frD   rE   rF   s     r7   rJ   rK   L   s     0UCTRbCTs   )r-   r*   r   r   r   r   r   r   numpylinspaceallclosesumrange)sfa_b_rI   s       @r7   test_jax_sumrV   <   s   3 !AFQ1IA!QAu%AFB			BB	'B99amS0VE"STfDU0V-VWWWWAEAq!9A!QAu%AFB			BB	'B99amS0U5RSVCT0U-UVVVVr9   c                    ^^^ [         (       d  [        S5        [        [        [        -   [
        -  [
        [        [        4[        [        [        45      n [        [        [        [        [        [        4U S5      nSu  p#Su  mm[         R                  R                  SSS5      m[         R                  R                  U" X#TTT5      [        UUU4S j[        X#S-   5       5       5      5      (       d   eg )	Nr?   r-   r@   )      rB   r/   rA   c              3   b   >#    U  H$  n[        TTS -   5        H  nTU-   U-  v   M     M&     g7f)r/   N)rQ   )rG   rH   j_c_d_rI   s      r7   rJ   )test_jax_multiple_sums.<locals>.<genexpr>Z   s4     b4EbPUVXZ\_`Z`Pa"BGr>Pa>4Es   ,/)r-   r*   r   r   r   r   r   r   r   r   r   rM   rN   rO   rP   rQ   )rR   rS   rT   rU   r\   r]   rI   s       @@@r7   test_jax_multiple_sumsr_   O   s    3 !QUaK!QQ1I.A!Q1a!U+AFBFB			BB	'B99aB3bE"1f4Ebbd d d dr9   c                     [         (       d  [        S5        [        SSS5      n [        SSS5      n[        X-  5      n[	        X4US5      n[         R
                  R                  SS/SS//5      n[         R
                  R                  SS	/S
S//5      nU" XE5      [         R
                  R                  XE5      :H  R                  5       (       d   eg )Nr?   M   Nr-   r/         rB   )	r-   r*   r
   r)   r   rM   arraymatmulall)ra   rc   cgrS   mambs         r7   test_jax_codegen_einsumrm   ]   s    3 !S!QAS!QA	 	'B!U#A	1a&1a&)	*B	1R&2q'*	+BbI))"11668888r9   c            
         [         (       d  [        S5        [        SSS5      n [        SSS5      n[        SSS5      n[        SSS5      n[         R                  R	                  SS/SS	//5      n[         R                  R	                  SS
/SS//5      n[         R                  R	                  SS/SS//5      n[         R                  R	                  SS/S	S//5      n[        X5      n[        X4US5      n	U	" XE5      [         R                  R                  USS/USS/5      :H  R                  5       (       d   e[        X5      n[        X4US5      n	U	" XE5      XE-   :H  R                  5       (       d   e[        XU5      n[        XU4US5      n	U	" XEU5      XE-   U-   :H  R                  5       (       d   e[        XX#5      n[        XX#4US5      n	U	" XEXg5      XE-   U-   U-   :H  R                  5       (       d   e[        U SS/5      n[        U 4US5      n	U	" U5      UR                  :H  R                  5       (       d   e[        [        X5      / SQ5      n[        X4US5      n	U	" XE5      [         R                  R                  [         R                  R                  USS/USS/5      S5      :H  R                  5       (       d   e[        [        X5      S5      n[        X4US5      n	U	" XE5      [         R                  R                  [         R                  R                  USS/USS/5      SSS9:H  R                  5       (       d   eg )Nr?   ra   rb   rc   PQr/   rd   re   rf   rB   r      r-   )r/   rb   rd   r   r/   rb   )axis1axis2)r-   r*   r
   rM   rg   r"   r   einsumri   r#   r$   T	transposer%   diagonal)
ra   rc   ro   rp   rk   rl   mcmdrj   rS   s
             r7   test_jax_codegen_extrar{   l   s   3 !S!QAS!QAS!QAS!QA	1a&1a&)	*B	1R&2q'*	+B	1a&1a&)	*B	1R&1a&)	*B	A	!B!U#AbI))"q!fb1a&AAFFHHHH	!B!U#AbI##%%%%	!	B!B&AbbMRU2X%**,,,,	!	B!r5)Abbr",113333	QA	B!r5!AbERTTM    	'-|	<B!U#AbI,,SYY-=-=b1a&"qRSf-UWcddiikkkk	)!/	8B!U#AbI++CII,<,<R!QaQRV,T\]ef+ggllnnnnr9   c                  $   [         (       d  [        S5        [        [        S5      n [	        [        4U S5      n[         R
                  R                  / SQ5      n[         R
                  R                  U" U5      / SQ5      (       d   e[        [        S5      n [	        [        4U S5      n[         R
                  R                  / SQ5      n[         R
                  R                  U" U5      / SQ5      (       d   e[        S:  n [	        [        4U S5      n[         R
                  R                  / SQ5      n[         R
                  R                  U" U5      / SQ5      (       d   e[        S:*  n [	        [        4U S5      n[         R
                  R                  / SQ5      n[         R
                  R                  U" U5      / SQ5      (       d   e[        S:  n [	        [        4U S5      n[         R
                  R                  / SQ5      n[         R
                  R                  U" U5      / S	Q5      (       d   e[        S:  n [	        [        4U S5      n[         R
                  R                  / SQ5      n[         R
                  R                  U" U5      / S
Q5      (       d   e[        S:  [        S:  -  n [	        [        4U S5      n[         R
                  R                  / SQ5      n[         R
                  R                  U" U5      / SQ5      (       d   e[        S:  [        S:  -  n [	        [        4U S5      n[         R
                  R                  / SQ5      n[         R
                  R                  U" U5      / SQ5      (       d   eg )Nr?   r/   r-   )r   r/   rb   )FTF)TFT)TFF)TTF)FFT)FTTrb   )TTT)	r-   r*   r   r   r   rM   rg   array_equalr   )erS   rI   s      r7   test_jax_relationalr      s   3 !AA!q% A		#B99  2(<====1aA!q% A		#B99  2(;<<<<	
QA!q% A		#B99  2(<====	
aA!q% A		#B99  2(;<<<<	
QA!q% A		#B99  2(<====	
aA!q% A		#B99  2(;<<<< 
aAEA!q% A		#B99  2(<====	
aAEA!q% A		#B99  2(:;;;;r9   c                     [         (       d  [        S5        [        [        [        5      n [        [        [        4U S5      n[         R                  R                  / SQ5      nSn[         R                  R                  U" X#5      / SQ5      (       d   e[         R                  R                  / SQ5      n[         R                  R                  / SQ5      n[         R                  R                  U" X#5      / SQ5      (       d   e[         R                  R                  / SQ5      n[         R                  R                  / SQ5      n[         R                  R                  U" X#5      / SQ5      (       d   eg )	Nr?   r-   )r   r/   rb   rd   rb   )r   r/   r   r/   )rb   rb   rb   rb   )rb   rd   re      )r   r   r   r   )	r-   r*   r   r   r   r   rM   rg   r}   )r~   rS   rT   rU   s       r7   test_jax_modr      s    3 !Aq	A!QE"A		&B	
B99  2L9999		&B		&B99  2L9999		&B		&B99  2L9999r9   c                  z    [         (       d  [        S5        [        SSSS9n [        / U S5      nU" 5       S:X  d   eg )Nr?   rb   rB   F)evaluater-   g      ?)r-   r*   r   r   )exprrS   s     r7   test_jax_powr      s:    3 !q"u%DT5!A3#::r9   c                      [         (       d  [        S5        [        [        4[	        [        5      S5      n [        U " S5      S-
  S-
  5      S[        -  ::  d   eg )Nr?   r-   g|=g#B;)r-   r*   r   r   r   absJAX_DEFAULT_EPSILONrS   s    r7   test_jax_expm1r      sK    3 !!uQx'Aqx%%'(E4G,GGGGr9   c                      [         (       d  [        S5        [        [        4[	        [        5      S5      n [        U " S5      S-
  5      S[        -  ::  d   eg )Nr?   r-   g>N}a+)r-   r*   r   r   r   r   r   r   s    r7   test_jax_log1pr      sF    3 !!uQx'Aqx% E,?$????r9   c            	          [         (       d  [        S5        [        [        [        [
        4[        [        [
        5      S5      " SS5      S-
  5      [        ::  d   eg )Nr?   r-   rd   re   r   )r-   r*   r   r   r   r   r   r   rE   r9   r7   test_jax_hypotr      sC    3 !xAaU3Aq9A=>BUUUUr9   c                      [         (       d  [        S5        [        [        [        4[        [        5      S5      " S5      S-
  5      [        ::  d   eg )Nr?   r-   d   rb   )r-   r*   r   r   r   r   r   rE   r9   r7   test_jax_log10r      s=    3 !xeAh.s3a78<OOOOr9   c                      [         (       d  [        S5        [        [        [        4[        [        5      S5      " S5      S-
  5      [        ::  d   eg )Nr?   r-   r       )r-   r*   r   r   r   r   r   rE   r9   r7   test_jax_exp2r     s=    3 !xd1gu-a0256:MMMMr9   c                      [         (       d  [        S5        [        [        [        4[        [        5      S5      " S5      S-
  5      [        ::  d   eg )Nr?   r-         )r-   r*   r   r   r   r   r   rE   r9   r7   test_jax_log2r     s=    3 !xd1gu-c2Q67;NNNNr9   c                      [         (       d  [        S5        [        [        [        4[        [        5      S5      " S5      S-
  5      [        ::  d   eg Nr?   r-   re   rb   )r-   r*   r   r   r   r    r   rE   r9   r7   test_jax_Sqrtr     =    3 !xd1gu-a01459LLLLr9   c                      [         (       d  [        S5        [        [        [        4[        [        5      S5      " S5      S-
  5      [        ::  d   eg r   )r-   r*   r   r   r   r   r   rE   r9   r7   test_jax_sqrtr     r   r9   c                  $   [         (       d  [        S5        [        SSS5      n [        SSS5      nU S-  U-  U-   n[        X5      U-   n[	        X4US5      n[	        X4US5      n[         R
                  R                  / SQ/ S	Q/ S
Q/5      n[         R
                  R                  R                  U5      S:X  d   e[         R
                  R                  / SQ5      n[         R
                  R                  U" Xg5      U" Xg5      5      (       d   eg )Nr?   ra   rd   r   r/   rB   r-   )r/   rb   rd   )rd   rb   r   )r      rq   )rd   re   r   )
r-   r*   r
   r   r   rM   rg   linalgmatrix_rankrO   )ra   r   r   matsolve_exprrS   
f_matsolvem0x0s           r7   test_jax_matsolver     s    3 !S!QAS!QAr7Q;?D%)M!u%A1&-7J	)Y	:	;B99''+q000		#B99j0!B)<<<<r9   c                     [         (       d  [        S5        [        SSS5      n [        SSS5      n[        SSS5      n[        SSS5      n[        X/X#//5      nUR                  S:X  d   e[        5       nUR                  U5      S	:X  d   eg )
Nr?   a_1rA   rd   a_2a_3a_4)   r   z)jax.numpy.block([[a_1, a_2], [a_3, a_4]]))r-   r*   r
   r	   shaper&   r3   )r   r   r   r   Ar5   s         r7   
test_16857r   .  s    3 !
ub!
$C
ub!
$C
ub!
$C
ub!
$CcZ#,-A77glG??1!LLLLr9   c                    ^^ [         (       d  [        S5        [        SSS5      n [        X [	        S5      -   S5      n[         R
                  R                  SS/SS//5      n[         R
                  R                  SS/SS//5      nU" U5      U:H  R                  5       (       d   eS	S
KJ	n  U" SSS9m[        STT5      m[        [        UU4S j5        g )Nr?   ra   rb   r-   r/   rd   re   r   r   )symbolsnT)integerc                  6   > [        T T [        T5      -   S5      $ )Nr-   )r   r   )rc   r   s   r7   <lambda>"test_issue_17006.<locals>.<lambda>L  s    AOU(Kr9   )r-   r*   r
   r   r   rM   rg   ri   sympy.core.symbolr   r+   NotImplementedError)ra   rS   rk   mrr   rc   r   s        @@r7   test_issue_17006r   =  s    3 !S!QAOU+A	1a&1a&)	*B	1a&1a&)	*BbERK)T"AS!QA
 KLr9   c                      [        5       R                  [        S5      5      S:X  d   e[        5       R                  [        S5      5      S:X  d   eg )N)rr   )rd   r   z!jax.numpy.array([[1, 2], [3, 5]])rr   zjax.numpy.array([1, 2]))r&   r3   r!   rE   r9   r7   test_jax_arrayr   O  sD    <&6 78<____<f.2KKKKr9   c                  |    [         S   S:X  d   e[         S   S:X  d   e[        S   S:X  d   e[        S   S:X  d   eg )	NNaNzjax.numpy.nan
EulerGammazjax.numpy.euler_gammaacoszjax.numpy.arccoslogzjax.numpy.log)r'   r(   rE   r9   r7   test_jax_known_funcs_constsr   T  sP    &/999-1HHHH'+====&/999r9   c                  d    [        5       n [        U S5      (       d   e[        U S5      (       d   eg )N_print_acos
_print_log)r&   hasattr)prntrs    r7   test_jax_print_methodsr   \  s/    LE5-((((5,''''r9   c                  b    [        5       n [        U S5      (       d   eU R                  S:X  d   eg )Nprintmethod_jaxcode)r&   r   r   )r5   s    r7   test_jax_printmethodr   b  s0    lG7M*****,,,r9   c                       " S S[         5      n [        5       nUR                  U " [        S5      5      5      S:X  d   eg )Nc                       \ rS rSrS rSrg)+test_jax_custom_print_method.<locals>.expm1ij  c                     U R                   u  nSUR                  U5       S3nUR                  UR                  S-   U-   5      $ )Nzexpm1().)args_print_module_format_module)selfr5   r   functions       r7   r   4test_jax_custom_print_method.<locals>.expm1._jaxcodel  sD    BAq 12!4H))'//C*?(*JKKr9   rE   N)__name__
__module____qualname____firstlineno__r   __static_attributes__rE   r9   r7   r   r   j  s    	Lr9   r   r   zjax.numpy.expm1(x))r   r&   r3   r   )r   r5   s     r7   test_jax_custom_print_methodr   h  s:    L L lG??5-.2FFFFr9   N)_sympy.concrete.summationsr   sympy.core.modr   sympy.core.relationalr   r   (sympy.functions.elementary.miscellaneousr   $sympy.functions.elementary.piecewiser   &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   r   r   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(   3sympy.tensor.array.expressions.from_matrix_to_arrayr)   sympy.testing.pytestr*   r+   sympy.externalr,   r-   rM   finforg   dtypedeafult_float_infoepsr   r8   r=   rV   r_   rm   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rE   r9   r7   <module>r      s+   )  8 9 : > ; 7 - ) ) ) , , 2 ; Q Q Q $  W W W - ( E)<)B)BC,00
NFW&d9'oT1<f:(H@V
PNOMM=*MM$L
:(-
Gr9   