
    MZdx(                        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      ZFeFr6eFj                  eFj                  g       j                        ZJeJj                  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 Zey2)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      }| 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)r2   >   nanlessselectN)r(   r	   r   doprintmodule_imports)printerps     A/usr/lib/python3/dist-packages/sympy/printing/tests/test_numpy.pytest_numpy_piecewise_regressionr=   #   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(   r8   r   )laelae2s     r<   test_numpy_logaddexprB   /   sQ    
Aq/C>!!#&*AAAAaD>!!$'+CCCCr>   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 installedr2   r   
   r4   rF   c              3   (   K   | ]	  }|z    y wN .0i_x_s     r<   	<genexpr>ztest_sum.<locals>.<genexpr>?   s     )Or"()O   c              3   (   K   | ]	  }|z    y wrI   rJ   rK   s     r<   rO   ztest_sum.<locals>.<genexpr>F   s     )Nb"r')NrP   )npr/   r   r   r   r   r   r   linspaceallclosesumrange)sfa_b_rN   s       @r<   test_sumr[   6   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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         j                  ddd      t         j                   |||      t        fdt        ||dz         D                    sJ y )	NrD   r2   rE   )      rG   r4   rF   c              3   V   K   | ]   }t        d z         D ]  }|z   |z    " yw)r4   N)rV   )rL   rM   j_c_d_rN   s      r<   rO   z%test_multiple_sums.<locals>.<genexpr>T   s5     bbPUVXZ\_`Z`Pab"BGr>b>bs   &))rR   r/   r   r   r   r   r   r   r   r   r   rS   rT   rU   rV   )rW   rX   rY   rZ   ra   rb   rN   s       @@@r<   test_multiple_sumsrc   I   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r>   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 )NrD   M   Nr2   r4         rG   )rR   r/   r   r.   r   arraymatmulall)re   rg   cgrX   mambs         r<   test_codegen_einsumrq   W   s    "#S!QAS!QA	 Q	'B!QW%A	Aq6Aq6"	#B	Ab6B7#	$Bb"I2r**//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         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 )NrD   re   rf   rg   PQr4   rh   ri   rj   rG   r      r2   )r4   rf   rh   r   r4   rf   )axis1axis2)rR   r/   r   rk   r$   r   einsumrm   r%   r&   T	transposer'   diagonal)
re   rg   rs   rt   ro   rp   mcmdrn   rX   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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^^```r>   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 )
NrD   r4   )r   r4   rf   )FTF)TFT)TFF)TTF)FFT)FTT)rR   r/   r   r   r   rk   array_equalr   )erX   rN   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5r>   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 )NrD   )r   r4   rf   rh   rf   )r   r4   r   r4   )rf   rf   rf   rf   )rf   rh   ri      )r   r   r   r   )rR   r/   r   r   r   r   rk   r   )r   rX   rY   rZ   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2r>   c                  t    t         st        d       t        ddd      } t        g | d      } |       dk(  sJ y )NrD   rf   rG   F)evaluater2   g      ?)rR   r/   r   r   )exprrX   s     r<   test_powr      s8    "#q"u%DT7#A3#::r>   c                      t         st        d       t        t        ft	        t              d      } t         | d      dz
  dz
        dt        z  k  sJ y )NrD   r2   g|=g#B;)rR   r/   r   r   r   absNUMPY_DEFAULT_EPSILONrX   s    r<   
test_expm1r      sI    "#!uQx)Aqx%%'(E4I,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 y )NrD   r2   g>N}a+)rR   r/   r   r   r   r   r   r   s    r<   
test_log1pr      sD    "#!uQx)Aqx% E,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 y )NrD   r2   rh   ri   r   )rR   r/   r   r   r   r   r   r   rJ   r>   r<   
test_hypotr      sD    "#5xAaW5a;a?@DYYYYr>   c            	          t         st        d       t         t        t        ft        t              d      d      dz
        t        k  sJ y )NrD   r2   d   rf   )rR   r/   r   r   r   r   r   rJ   r>   r<   
test_log10r      s>    "#0xeAh059:>SSSSr>   c            	          t         st        d       t         t        t        ft        t              d      d      dz
        t        k  sJ y )NrD   r2   r       )rR   r/   r   r   r   r    r   rJ   r>   r<   	test_exp2r      s>    "#/xd1gw/2R78<QQQQr>   c            	          t         st        d       t         t        t        ft        t              d      d      dz
        t        k  sJ y )NrD   r2         )rR   r/   r   r   r   r!   r   rJ   r>   r<   	test_log2r      s>    "#/xd1gw/4q89=RRRRr>   c            	          t         st        d       t         t        t        ft        t              d      d      dz
        t        k  sJ y NrD   r2   ri   rf   )rR   r/   r   r   r   r"   r   rJ   r>   r<   	test_Sqrtr      >    "#/xd1gw/2Q67;PPPPr>   c            	          t         st        d       t         t        t        ft        t              d      d      dz
        t        k  sJ y r   )rR   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         j                  g dg dg d	g      }t         j                  j                  |      dk(  sJ t         j                  g d
      }t         j                   |||       |||            sJ y )NrD   re   rh   r   r4   rG   )r4   rf   rh   )rh   rf   r   )r      ru   )rh   ri   r   )	rR   r/   r   r   r   rk   linalgmatrix_rankrT   )re   r   r   matsolve_exprrX   
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5r>   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 )
NrD   a_1rF   rh   a_2a_3a_4)   r   z%numpy.block([[a_1, a_2], [a_3, a_4]]))rR   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77gnG??1!HHHHr>   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 )NrD   re   rf   r4   rh   ri   r   r   )symbolsnT)integerc                  4    t          t              z         S rI   )r   r   )rg   r   s   r<   <lambda>z"test_issue_17006.<locals>.<lambda>;  s    AO(D r>   )rR   r/   r   r   r   rk   rm   sympy.core.symbolr   r0   NotImplementedError)re   rX   ro   mrr   rg   r   s        @@r<   test_issue_17006r   ,  s    "#S!QAAO$A	Aq6Aq6"	#B	Aq6Aq6"	#BbERK)T"AS!QA
 DEr>   c                      t               j                  t        d            dk(  sJ t               j                  t        d            dk(  sJ y )N)rv   )rh   r   znumpy.array([[1, 2], [3, 5]])rv   znumpy.array((1, 2)))r(   r8   r#   rJ   r>   r<   test_numpy_arrayr   =  sD    >!!%(8"9:>]]]]>!!%-04IIIIr>   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+   rJ   r>   r<   test_numpy_known_funcs_constsr   A  sO    !%(K777!,/3FFFF!&)^;;;!%(K777r>   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,   r-   rJ   r>   r<   test_scipy_known_funcs_constsr   H  sR    !-04RRRR!$'+????!%(,????!+.2KKKKr>   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   O  s)    NE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
      }| 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   r8   r
   r   r   )r   r   r   s      r<   test_scipy_print_methodsr   T  s    NE5-(((5,'''5,'''5,---5-...sDd3AsA==1a)-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   rR   finfork   dtypedeafult_float_infoepsr   r=   rB   r[   rc   rq   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      s,   )  8 $ 9 : = < > ; 7 - ) ) )  2 ; Q Q Q $ K K W - (7"((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"J8L(
>r>   