U
    9%ex(                     @   sf  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ZFeFreFGeFHg jIZJeJjKZLdd ZMdd ZNdd ZOdd  ZPd!d" ZQd#d$ ZRd%d& ZSd'd( ZTd)d* ZUd+d, ZVd-d. ZWd/d0 ZXd1d2 ZYd3d4 ZZd5d6 Z[d7d8 Z\d9d: Z]d;d< Z^d=d> Z_d?d@ Z`dAdB ZadCdD ZbdEdF ZcdGdH ZddIdJ ZedKS )L    )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                  C   sF   t  } tdtdk fd}| |dks*t| jddddhiksBt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)r1   selectlessnanN)r'   r   r   doprintAssertionErrorZmodule_imports)printerp r:   ^/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sympy/printing/tests/test_numpy.pytest_numpy_piecewise_regression#   s    r<   c                  C   s@   t tt} t | dkstttt}t |dks<td S )Nznumpy.logaddexp(a, b)znumpy.logaddexp2(a, b))r   r   r   r'   r6   r7   r   )ZlaeZlae2r:   r:   r;   test_numpy_logaddexp/   s    

r=   c               	      s   t std ttt tttf} ttttf| d}d\}}t ddd t 	||| t
 fddt||d D s|tttt tttf} ttttf| d}d\}}t ddd t 	||| t
 fd	dt||d D std S )
NNumPy not installedr1   r   
   r2   r@   c                 3   s   | ]} | V  qd S Nr:   .0i_x_r:   r;   	<genexpr>?   s     ztest_sum.<locals>.<genexpr>c                 3   s   | ]}|  V  qd S rB   r:   rC   rF   r:   r;   rH   F   s     )npr.   r   r   r   r   r   r   linspaceallclosesumranger7   sfa_b_r:   rF   r;   test_sum6   s    4rS   c               	      s   t std ttt t 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d	t||d D std S )
Nr>   r1   r?   )      rA   r2   r@   c                 3   s.   | ]&}t  d  D ]}| | V  qqdS )r2   N)rM   )rD   rE   Zj_Zc_Zd_rG   r:   r;   rH   T   s       z%test_multiple_sums.<locals>.<genexpr>)rI   r.   r   r   r   r   r   r   r   r   r   rJ   rK   rL   rM   r7   rN   r:   rV   r;   test_multiple_sumsI   s     "rW   c                  C   s   t std tddd} tddd}t| | }t| |f|d}t ddgddgg}t dd	gd
dgg}|||t ||k std S )Nr>   M   Nr1   r2         rA   )	rI   r.   r   r-   r   arraymatmulallr7   )rX   rZ   cgrP   mambr:   r:   r;   test_codegen_einsumW   s    rd   c            
   
   C   s  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 stt	| |}t| |f|d}	|	|||| k stt	| ||}t| ||f|d}	|	||||| | k sNtt	| |||}t| |||f|d}	|	|||||| | | k stt
| ddg}t| f|d}	|	||jk stt
t| |ddddg}t| |f|d}	|	||t t |ddg|ddgdk s(ttt| |d}t| |f|d}	|	||t jt |ddg|ddgdddk std S )Nr>   rX   rY   rZ   PQr2   r[   r\   r]   rA   r      r1   )r2   rY   r[   r   r2   rY   )Zaxis1Zaxis2)rI   r.   r   r^   r#   r   Zeinsumr`   r7   r$   r%   TZ	transposer&   Zdiagonal)
rX   rZ   re   rf   rb   rc   Zmcmdra   rP   r:   r:   r;   test_codegen_extraf   s>    
*
"(4rk   c                  C   s  t std ttd} ttf| }t dddg}t ||dddgsLtttd} ttf| }t dddg}t ||dddgsttdk } ttf| }t dddg}t ||dddgsttdk} ttf| }t dddg}t ||dddgs
ttdk} ttf| }t dddg}t ||dddgsJttdk} ttf| }t dddg}t ||dddgstd S )Nr>   r2   r   rY   FT)	rI   r.   r   r   r   r^   array_equalr7   r   )erP   rG   r:   r:   r;   test_relational   s4    

rn   c                  C   s   t std ttt} tttf| }t ddddg}d}t |||ddddgsXtt ddddg}t ddddg}t |||ddddgstt ddddg}t ddddg}t |||ddddgstd S )Nr>   r   r2   rY   r[   r\      )	rI   r.   r   r   r   r   r^   rl   r7   )rm   rP   rQ   rR   r:   r:   r;   test_mod   s    
rp   c                  C   s8   t std tdddd} tg | d}| dks4td S )Nr>   rY   rA   F)evaluater1   g      ?)rI   r.   r   r   r7   )exprrP   r:   r:   r;   test_pow   s
    rs   c                  C   sB   t std ttfttd} t| dd d dt ks>td S )Nr>   r1   g|=g#B;)rI   r.   r   r   r   absNUMPY_DEFAULT_EPSILONr7   rP   r:   r:   r;   
test_expm1   s    rw   c                  C   s>   t std ttfttd} t| dd dt ks:td S )Nr>   r1   g>N}a+)rI   r.   r   r   r   rt   ru   r7   rv   r:   r:   r;   
test_log1p   s    rx   c                   C   s<   t std ttttftttdddd tks8td S )Nr>   r1   r[   r\   ro   )	rI   r.   rt   r   r   r   r   ru   r7   r:   r:   r:   r;   
test_hypot   s    ry   c                   C   s6   t std tttfttddd tks2td S )Nr>   r1   d   rY   )rI   r.   rt   r   r   r   ru   r7   r:   r:   r:   r;   
test_log10   s    r{   c                   C   s6   t std tttfttddd tks2td S )Nr>   r1   ro       )rI   r.   rt   r   r   r   ru   r7   r:   r:   r:   r;   	test_exp2   s    r}   c                   C   s6   t std tttfttddd tks2td S )Nr>   r1         )rI   r.   rt   r   r   r    ru   r7   r:   r:   r:   r;   	test_log2   s    r   c                   C   s6   t std tttfttddd tks2td S Nr>   r1   r\   rY   )rI   r.   rt   r   r   r!   ru   r7   r:   r:   r:   r;   	test_Sqrt   s    r   c                   C   s6   t std tttfttddd tks2td S r   )rI   r.   rt   r   r   r   ru   r7   r:   r:   r:   r;   	test_sqrt  s    r   c                  C   s   t std tddd} tddd}| d | | }t| || }t| |f|}t| |f|}t dddgdddgdd	d
gg}t j|dkstt dddg}t 	||||||std S )Nr>   rX   r[   r   r2   rA   rY   ro      rg   r\   )
rI   r.   r   r   r   r^   ZlinalgZmatrix_rankr7   rK   )rX   r   rr   Zmatsolve_exprrP   Z
f_matsolveZm0Zx0r:   r:   r;   test_matsolve  s    "r   c                  C   sz   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^tt }||d	ksvtd S )
Nr>   a_1r@   r[   a_2a_3a_4)   r   z%numpy.block([[a_1, a_2], [a_3, a_4]]))rI   r.   r   r   shaper7   r'   r6   )r   r   r   r   Ar8   r:   r:   r;   
test_16857  s    r   c                     s   t std tddd} t| | td }t ddgddgg}t ddgddgg}|||k sjtdd	lm	} |d
ddtd t
t fdd d S )Nr>   rX   rY   r2   r[   r\   ro   r   )symbolsnT)integerc                      s   t   t S rB   )r   r   r:   rZ   r   r:   r;   <lambda>;      z"test_issue_17006.<locals>.<lambda>)rI   r.   r   r   r   r^   r`   r7   sympy.core.symbolr   r/   NotImplementedError)rX   rP   rb   mrr   r:   r   r;   test_issue_17006,  s    r   c                   C   s4   t  tddkstt  tddks0td S )N)rh   )r[   ro   znumpy.array([[1, 2], [3, 5]])rh   znumpy.array((1, 2)))r'   r6   r"   r7   r:   r:   r:   r;   test_numpy_array=  s    r   c                   C   sD   t d dkstt d dks ttd dks0ttd dks@td S )	NNaNz	numpy.nanZ
EulerGammaznumpy.euler_gammaacosznumpy.arccoslogz	numpy.log)r)   r7   r*   r:   r:   r:   r;   test_numpy_known_funcs_constsA  s    r   c                   C   sD   t d dkstt d dks ttd dks0ttd dks@td S )	NZGoldenRatiozscipy.constants.golden_ratioPizscipy.constants.pierfzscipy.special.erf	factorialzscipy.special.factorial)r+   r7   r,   r:   r:   r:   r;   test_scipy_known_funcs_constsH  s    r   c                  C   s&   t  } t| dstt| ds"td S )N_print_acos
_print_log)r'   hasattrr7   )prntrr:   r:   r;   test_numpy_print_methodsO  s    r   c                  C   s   t  } t| dstt| ds"tt| ds0tt| ds>tt| dsLttdddd}td	dd
}| t||dks~t| t|dkst| t|dkstd S )Nr   r   Z
_print_erfZ_print_factorialZ_print_chebyshevtkT)r   Znonnegativer   )realzscipy.special.polygamma(k, x)zscipy.special.sici(x)[0]zscipy.special.sici(x)[1])r(   r   r7   r   r6   r	   r
   r   )r   r   r   r:   r:   r;   test_scipy_print_methodsT  s    r   N)fZsympy.concrete.summationsr   Zsympy.core.modr   Zsympy.core.relationalr   r   r   r   Z(sympy.functions.elementary.miscellaneousr   Z$sympy.functions.elementary.piecewiser   Z'sympy.functions.special.gamma_functionsr	   Z'sympy.functions.special.error_functionsr
   r   Z&sympy.matrices.expressions.blockmatrixr   Z"sympy.matrices.expressions.matexprr   Z"sympy.matrices.expressions.specialr   Zsympy.utilities.lambdifyr   Z	sympy.abcr   r   r   r   r   r   r   Z
sympy.corer   Zsympy.codegen.matrix_nodesr   Zsympy.codegen.numpy_nodesr   r   Zsympy.codegen.cfunctionsr   r   r   r   r   r    r!   Zsympy.tensor.arrayr"   Z0sympy.tensor.array.expressions.array_expressionsr#   r$   r%   r&   Zsympy.printing.numpyr'   r(   r)   r*   r+   r,   Z3sympy.tensor.array.expressions.from_matrix_to_arrayr-   Zsympy.testing.pytestr.   r/   Zsympy.externalr0   rI   Zfinfor^   ZdtypeZdeafult_float_infoZepsru   r<   r=   rS   rW   rd   rk   rn   rp   rs   rw   rx   ry   r{   r}   r   r   r   r   r   r   r   r   r   r   r   r:   r:   r:   r;   <module>   sf   $$ *)	