
    Xh-                        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 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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6 d dl7m8Z8 d dl9m:Z:m;Z;m<Z<m=Z= d dl>m?Z?m@Z@mAZAmBZBmCZCmDZD d dlEmFZF d dlGmHZHmIZI d dlJmKZK  eKd          ZL eKd          ZMeLr4eLN                    eLO                    g           jP                  ZQeQjR        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. Zfd/ Zgd0 Zhd1 Zid2 Zjd3 Zkd4 Zld5 Zmd6 Znd7S )8    )Sum)Mod)Equality
Unequality)Symbol)sqrt)	Piecewise)	polygamma)SiCi)Matrix)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)r6   >   nanlessselectN)r,   r	   r   doprintmodule_imports)printerps     q/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/sympy/printing/tests/test_numpy.pytest_numpy_piecewise_regressionrB   &   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     rA   test_numpy_logaddexprG   2   sl    
Aq//C>>!!#&&*AAAAAaD>>!!$''+CCCCCCCrC   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 installedr6   r   
   r9   rK   c              3   "   K   | ]	}|z  V  
d S N .0i_x_s     rA   	<genexpr>ztest_sum.<locals>.<genexpr>B   s'      )O)Or"()O)O)O)O)O)OrC   c              3   "   K   | ]	}|z  V  
d S rN   rO   rP   s     rA   rT   ztest_sum.<locals>.<genexpr>I   s'      )N)Nb"r')N)N)N)N)N)NrC   )npr3   r   r   r   r   r   r   linspaceallclosesumrange)sfa_b_rS   s       @rA   test_sumr_   9   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OrC   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 )	NrI   r6   rJ   )      rL   r9   rK   c              3   T   K   | ]"}t          d z             D ]}|z   |z  V  #dS )r9   N)rZ   )rQ   rR   j_c_d_rS   s      rA   rT   z%test_multiple_sums.<locals>.<genexpr>W   sK      bbbPUVXZ\_`Z`PaPabb"BGr>bbbbbbbrC   )rV   r3   r   r   r   r   r   r   r   r   r   rW   rX   rY   rZ   )r[   r\   r]   r^   re   rf   rS   s       @@@rA   test_multiple_sumsrg   L   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rC   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 )NrI   M   Nr6   r9         rL   )rV   r3   r   r2   r   arraymatmulall)ri   rk   cgr\   mambs         rA   test_codegen_einsumru   Z   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1rC   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 )NrI   ri   rj   rk   PQr9   rl   rm   rn   rL   r      r6   )r9   rj   rl   r   )r9   rj   )axis1axis2)rV   r3   r   ro   r(   r   einsumrq   r)   r*   T	transposer+   diagonal)
ri   rk   rw   rx   rs   rt   mcmdrr   r\   s
             rA   test_codegen_extrar   i   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^^```````rC   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 )
NrI   r9   )r   r9   rj   )FTF)TFT)TFF)TTF)FFT)FTT)rV   r3   r   r   r   ro   array_equalr   )er\   rS   s      rA   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5rC   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 )NrI   )r   r9   rj   rl   rj   )r   r9   r   r9   )rj   rj   rj   rj   )rj   rl   rm      )r   r   r   r   )rV   r3   r   r   r   r   ro   r   )r   r\   r]   r^   s       rA   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2rC   c                      t           st          d           t          ddd          } t          g | d          } |            dk    sJ d S )NrI   rj   rL   F)evaluater6   g      ?)rV   r3   r   r   )exprr\   s     rA   test_powr      sU     $"###q"u%%%DT7##A133#::::::rC   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 )NrI   r6   g|=g#B;)rV   r3   r   r   r!   absNUMPY_DEFAULT_EPSILONr\   s    rA   
test_expm1r      si     $"###!uQxx))Aqqxx%%'((E4I,IIIIIIIrC   c                      t           st          d           t          t          ft	          t                    d          } t           | d          dz
            dt          z  k    sJ d S )NrI   r6   g>N}a+)rV   r3   r   r   r    r   r   r   s    rA   
test_log1pr      sd     $"###!uQxx))Aqqxx%  E,A$AAAAAAArC   c            
          t           st          d           t           t          t          t
          ft          t          t
                    d          dd          dz
            t          k    sJ d S )NrI   r6   rl   rm   r   )rV   r3   r   r   r   r   r"   r   rO   rC   rA   
test_hypotr      sc     $"###5xAaW55a;;a?@@DYYYYYYYrC   c            	          t           st          d           t           t          t          ft          t                    d          d          dz
            t          k    sJ d S )NrI   r6   d   rj   )rV   r3   r   r   r   r#   r   rO   rC   rA   
test_log10r      s]     $"###0xeAhh00559::>SSSSSSSrC   c            	          t           st          d           t           t          t          ft          t                    d          d          dz
            t          k    sJ d S )NrI   r6   r       )rV   r3   r   r   r   r$   r   rO   rC   rA   	test_exp2r      s]     $"###/xd1ggw//22R788<QQQQQQQrC   c            	          t           st          d           t           t          t          ft          t                    d          d          dz
            t          k    sJ d S )NrI   r6         )rV   r3   r   r   r   r%   r   rO   rC   rA   	test_log2r      s]     $"###/xd1ggw//44q899=RRRRRRRrC   c            	          t           st          d           t           t          t          ft          t                    d          d          dz
            t          k    sJ d S NrI   r6   rm   rj   )rV   r3   r   r   r   r&   r   rO   rC   rA   	test_Sqrtr      ]     $"###/xd1ggw//22Q677;PPPPPPPrC   c            	          t           st          d           t           t          t          ft          t                    d          d          dz
            t          k    sJ d S r   )rV   r3   r   r   r   r   r   rO   rC   rA   	test_sqrtr     r   rC   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 )NrI   ri   rl   r   r9   rL   r9   rj   rl   )rl   rj   r   )r      ry   )rl   rm   r   )	rV   r3   r   r   r   ro   linalgmatrix_rankrX   )ri   r   r   matsolve_exprr\   
f_matsolvem0x0s           rA   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5rC   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 )
NrI   a_1rK   rl   a_2a_3a_4)   r   z%numpy.block([[a_1, a_2], [a_3, a_4]]))rV   r3   r   r   shaper,   r=   )r   r   r   r   Ar?   s         rA   
test_16857r      s     $"###
ub!
$
$C
ub!
$
$C
ub!
$
$C
ub!
$
$Cc3Z#s,--A7gnnG??1!HHHHHHHrC   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 )NrI   ri   rj   r9   rl   rm   r   r   )r   nT)integerc                  D    t            t                    z             S rN   )r   r   )rk   r   s   rA   <lambda>z"test_issue_17006.<locals>.<lambda>>  s    AO(D(D rC   )rV   r3   r   r   r   ro   rq   sympy.core.symbolr   r4   NotImplementedError)ri   r\   rs   mrr   rk   r   s        @@rA   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ErC   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 zr7   )r   )rm   r   r   )
r7   r3   r   r   r   r   r6   asarrayrV   rX   )	r   yzr   funcinput_tuple1input_tuple2input_array1input_array2s	            rA   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,,?@@@@@@@rC   c                     t                      } |                     t          ddgddgg                    dk    sJ |                     t          ddg                    dk    sJ |                     t          g dgg                    dk    sJ |                     t          g d	                    d
k    sJ |                     t          g d                    dk    sJ |                     t          g d                    dk    sJ |                     t          g d                    dk    sJ |                     t          dgd                    dk    sJ d S )Nr9   rj   rl   r   numpy.array([[1, 2], [3, 5]])znumpy.array([1, 2])r   znumpy.array([[[1, 2, 3]]]))r   znumpy.zeros((0,)))r   r   numpy.zeros((0, 0)))r   r9   numpy.zeros((0, 1)))r9   r   numpy.zeros((1, 0))rO   znumpy.array(1))r,   r=   r'   r@   s    rA   test_numpy_arrayr   L  s`   A99UQFQF+,,--1PPPPP99UAq6]]##'<<<<<99UYYYK=))**.JJJJJ99U2t__%%)<<<<<99U2v&&''+@@@@@99U2v&&''+@@@@@99U2v&&''+@@@@@99UA3^^$$(8888888rC   c                     t                      } |                     t          ddgddgg                    dk    sJ |                     t          ddg                    dk    sJ |                     t          ddg                     dk    sJ |                     t          ddg                     d	k    sJ |                     t          ddg                     d
k    sJ d S )Nr9   rj   rl   r   r   znumpy.array([[1], [2]])r   r   r   r   )r,   r=   r   r   s    rA   test_numpy_matrixr   W  s    A99VaVaV,--..2QQQQQ99VQF^^$$(AAAAA99VAq"%%&&*?????99VAq"%%&&*?????99VAq"%%&&*???????rC   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/   rO   rC   rA   test_numpy_known_funcs_constsr   _  sa    !%(K7777!,/3FFFFF!&)^;;;;!%(K777777rC   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)r0   r1   rO   rC   rA   test_scipy_known_funcs_constsr   f  sd    !-04RRRRR!$'+?????!%(,?????!+.2KKKKKKKrC   c                  j    t                      } t          | d          sJ t          | d          sJ d S )N_print_acos
_print_log)r,   hasattr)prntrs    rA   test_numpy_print_methodsr   m  s=    NNE5-(((((5,'''''''rC   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      rA   test_scipy_print_methodsr   r  s   NNE5-(((((5,'''''5,'''''5,-----5-.....sDd333AsA==1a))-LLLLL==A#=======A#=======rC   N)o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.matricesr   &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/   r0   r1   3sympy.tensor.array.expressions.from_matrix_to_arrayr2   sympy.testing.pytestr3   r4   sympy.externalr5   rV   r7   finforo   dtypedeafult_float_infoepsr   rB   rG   r_   rg   ru   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rO   rC   rA   <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	9 	9 	9@ @ @8 8 8L L L( ( (
> > > > >rC   