a
    ¬<bC!  ã                   @   sT  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
 d dlmZ d dlmZ d dl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  d dl!m"Z"m#Z# d dl$m%Z% d dl&m'Z' dd„ Z(dd„ Z)dd„ Z*dd„ Z+dd„ Z,dd„ Z-dd„ Z.dd„ Z/dd „ Z0d!d"„ Z1d#d$„ Z2d%d&„ Z3d'd(„ Z4d)d*„ Z5d+d,„ Z6d-S ).é    )ÚQ)Úrefine)ÚExpr)ÚIÚRationalÚnanÚpi)ÚS)ÚSymbol)ÚAbsÚargÚimÚreÚsign)Úexp)Úsqrt)ÚatanÚatan2)ÚwÚxÚyÚz)ÚEqÚNe)Ú	Piecewise)ÚMatrixSymbolc                   C   sÆ   t ttƒt t¡ƒtksJ ‚t dttƒ t t¡ƒdt ks@J ‚t ttƒt t¡ƒt ks^J ‚t dttƒ t t¡ƒdt ks‚J ‚t ttd ƒƒtd ksžJ ‚t ttd ƒt t¡ƒtd ksÂJ ‚d S ©Né   é   )r   r   r   r   ÚpositiveÚnegativeÚreal© r"   r"   ús/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/sympy/assumptions/tests/test_refine.pyÚtest_Abs   s    $$r$   c                   C   s  t dt t t¡ƒdksJ ‚t dt t t¡ƒdks8J ‚t dt t t¡ƒdt ksXJ ‚t ttd ƒƒttƒkstJ ‚t ttd ƒt t¡ƒttƒks˜J ‚t ttd ƒt t¡ƒttƒks¼J ‚t ttd ƒt 	t¡ƒtksÜJ ‚t td t
ddƒ ƒtksúJ ‚t td t
ddƒ t t¡ƒtks"J ‚t td t
ddƒ t 	t¡ƒtksJJ ‚t tdt ƒt t¡ƒdttƒ kstJ ‚t tdt ƒt 	t¡ƒdttƒ ksžJ ‚t dtt  t t¡ƒdt ksÄJ ‚t dtt t  t t¡t t¡@ ƒdt ksøJ ‚t dtt d  t t¡ƒdt ks"J ‚t dtt d  t t¡ƒdtd  ksPJ ‚t dtd  ƒdtd  ksrJ ‚t ddt d tj  t t¡ƒdt ks¢J ‚t ddt d tj  t t¡ƒdtd  ksÖJ ‚t ddt d dtj   t t¡ƒdtd  ksJ ‚d S )Néÿÿÿÿr   éþÿÿÿr   é   é   )r   r   r   ZevenZoddr   r   Úcomplexr!   r   r   r   r   r	   ÚHalfÚintegerr"   r"   r"   r#   Ú	test_pow1   s(     $$ ((**&4*."04r,   c                   C   sØ   t ddt d dtj   t t¡ƒdtd  ks6J ‚t ddt d dtj   t t¡ƒdt kshJ ‚t ttƒd t t¡ƒtd ksŒJ ‚t ttƒd t t¡ƒttƒd ks´J ‚t ttƒd ƒttƒd ksÔJ ‚d S )Nr%   r   é   r   é	   r'   )r   r   r	   r*   r   r+   r   r!   r"   r"   r"   r#   Ú	test_pow2:   s
    62$(r/   c                  C   s¬   t ddd} tttt d |  ƒƒdks,J ‚tttt d | tj  ƒƒdksRJ ‚tttt d | tddƒ  ƒƒtks|J ‚tttt d | tddƒ  ƒƒt ks¨J ‚d S )	Nr   T)r+   r   r   r%   é   r'   )r
   r   r   r   r   r	   r*   r   ©r   r"   r"   r#   Útest_expD   s
     &*r2   c                   C   sv  t tdtdk fdƒtdk ƒdks$J ‚t tdtdk fdƒtdk  ƒdksJJ ‚t tdtdk fdƒtdk ƒtdtdk fdƒks|J ‚t tdtdkfdƒtdkƒdks J ‚t tdtdkfdƒtdk ƒdksÆJ ‚t tdtdkfdƒtdkƒtdtdkfdƒksøJ ‚t tdtdkfdƒtdkƒdksJ ‚t tdtdkfdƒtdk ƒdksFJ ‚t tdtdkfdƒtdkƒtdtdkfdƒkszJ ‚t tdtdkfdƒtdkƒdks J ‚t tdtdkfdƒtdk ƒdksÈJ ‚t tdtdkfdƒtdkƒtdtdkfdƒksüJ ‚t tdttdƒfdƒttdƒƒdks&J ‚t tdttdƒfdƒtdtƒƒdksPJ ‚t tdttdƒfdƒttdƒ ƒdks|J ‚t tdttdƒfdƒtdtƒ ƒdks¨J ‚t tdttdƒfdƒttdƒƒtdttdƒfdƒksâJ ‚t tdttdƒfdƒttdƒƒdksJ ‚t tdttdƒfdƒttdƒ ƒdks8J ‚t tdttdƒfdƒttdƒƒtdttdƒfdƒksrJ ‚d S )Nr   r   )r'   Tr'   )r   r   r   r   r   r   r"   r"   r"   r#   Útest_PiecewiseL   sX    $&ÿ$&ÿ&(ÿ
&(ÿ
ÿ
ÿ
 ÿ
 ÿ
ÿ
ÿ
 ÿ
ÿr3   c                   C   s|  t tttƒt t¡t t¡@ ƒttt ƒks0J ‚t tttƒt t¡t t¡@ ƒttt ƒks`J ‚t tttƒt t¡t t¡@ ƒttt ƒt	 ks”J ‚t tttƒt t¡t t¡@ ƒttt ƒt	 ksÈJ ‚t tttƒt 
t¡t t¡@ ƒt	ksðJ ‚t tttƒt t¡t 
t¡@ ƒt	d ksJ ‚t tttƒt t¡t 
t¡@ ƒt	 d ksNJ ‚t tttƒt 
t¡t 
t¡@ ƒtu sxJ ‚d S )Nr   )r   r   r   r   r   r!   r   r   r    r   Úzeror   r"   r"   r"   r#   Ú
test_atan2o   s    0044(.0r5   c                   C   s0  t ttƒt t¡ƒtksJ ‚t ttƒt t¡ƒtju s:J ‚t ttt ƒt t¡t t¡@ ƒtt kshJ ‚t ttt ƒt t¡t t¡@ ƒtks’J ‚t ttt ƒt t¡t t¡@ ƒtt ksÀJ ‚t ttt ƒt t¡t t¡@ ƒdksêJ ‚t ttt t	 ƒt t¡t t¡@ t t	¡@ ƒtt t	 ks,J ‚d S )Nr   )
r   r   r   r   r!   Ú	imaginaryr	   ÚZeror   r   r"   r"   r"   r#   Útest_rez   s    .*.*r8   c                   C   s|  t ttƒt t¡ƒt t ks"J ‚t ttƒt t¡ƒtju s@J ‚t ttt	 ƒt t¡t t	¡@ ƒt t tt	  ksxJ ‚t ttt	 ƒt t¡t t	¡@ ƒt t	 ks¨J ‚t ttt	 ƒt t¡t t	¡@ ƒt t t	 ksÜJ ‚t ttt	 ƒt t¡t t	¡@ ƒdksJ ‚t tdt ƒt t¡ƒt t ks0J ‚t ttt	 t
 ƒt t¡t t	¡@ t t
¡@ ƒt t t	 t
 ksxJ ‚d S )Nr   r   )r   r   r   r   r6   r   r!   r	   r7   r   r   r"   r"   r"   r#   Útest_im„   s    "804,("ÿÿr9   c                   C   s@  t tdttt   ƒt t¡t t¡@ ƒttd td   ksBJ ‚t tdttt   ƒt t¡t t¡@ ƒt td td   ks†J ‚t tttt  ttt	   ƒt t¡t t¡@ t t¡@ t t	¡@ ƒtt tt	  ksàJ ‚t tttt  ttt	   ƒt t¡t t¡@ t t¡@ t t	¡@ ƒtt	 tt  ks<J ‚d S r   )
r   r   r   r   r   r   r!   r   r   r   r"   r"   r"   r#   Útest_complex   s     (ÿ(ÿ8ÿÿ8ÿÿr:   c                  C   s6  t ddd} tt| ƒt | ¡ƒdks(J ‚tt| ƒt | ¡ƒdksDJ ‚tt| ƒt | ¡ƒdks`J ‚tt| ƒdƒt| ƒkszJ ‚ttt| ƒƒt | ¡ƒdksšJ ‚t ddd} tt| ƒt t	| ƒ¡ƒt
jksÈJ ‚tt| ƒt t	| ƒ¡ƒt
j ksìJ ‚tt| ƒdƒt| ƒksJ ‚t ddd} tt| ƒt | ¡ƒdks2J ‚d S )	Nr   T©r!   r   r%   r   )r6   ©r)   )r
   r   r   r   r   r    r4   r   Znonzeror   r	   ZImaginaryUnitr1   r"   r"   r#   Ú	test_sign›   s     "$r=   c                  C   sH   t ddd} tt| ƒt | ¡ƒdks(J ‚tt| ƒt | ¡ƒtksDJ ‚d S )Nr   Tr<   r   )r
   r   r   r   r   r    r   r1   r"   r"   r#   Útest_arg«   s    r>   c                     s8   G ‡ fdd„dt ƒ‰ ˆ ƒ } d| _| jt| ƒjks4J ‚d S )Nc                       s$   e Zd Zdd„ Ze‡ fdd„ƒZdS )ztest_func_args.<locals>.MyClassc                 W   s
   d| _ d S )NÚ ©Ú	my_member)ÚselfÚargsr"   r"   r#   Ú__init__´   s    z(test_func_args.<locals>.MyClass.__init__c                    s   ‡‡ fdd„}|S )Nc                     s   ˆ | Ž }ˆj |_ |S )Nr@   )rC   Úobj)ÚMyClassrB   r"   r#   Úmy_func¹   s    z5test_func_args.<locals>.MyClass.func.<locals>.my_funcr"   )rB   rG   ©rF   )rB   r#   Úfunc·   s    z$test_func_args.<locals>.MyClass.funcN)Ú__name__Ú
__module__Ú__qualname__rD   ÚpropertyrI   r"   rH   r"   r#   rF   ±   s   rF   zA very important value)r   rA   r   r1   r"   rH   r#   Útest_func_args°   s    rN   c                  C   s&   G dd„ dt ƒ} | ƒ }t|ƒs"J ‚d S )Nc                   @   s   e Zd Zdd„ ZdS )z"test_eval_refine.<locals>.MockExprc                 S   s   dS )NTr"   )rB   Zassumptionsr"   r"   r#   Ú_eval_refineÆ   s    z/test_eval_refine.<locals>.MockExpr._eval_refineN)rJ   rK   rL   rO   r"   r"   r"   r#   ÚMockExprÅ   s   rP   )r   r   )rP   Zmock_objr"   r"   r#   Útest_eval_refineÄ   s    rQ   c                  C   s¬   t ttt ƒt t¡ƒ} t ttt t ƒt t¡ƒ}| tttƒ ksHJ ‚|tttt ƒ ks`J ‚tddd}t tt|d  t ƒt t¡ƒ}|t|d  ttƒ ks¨J ‚d S )NÚy1Tr;   r   )r   r   r   r   r   r   r   r
   )Úexpr1Zexpr2rR   Zexpr3r"   r"   r#   Útest_refine_issue_12724Ì   s     rT   c                  C   s¸   t dddƒ} tddd}tddd}t| d t | ¡ƒ| d ksDJ ‚t| d t | ¡ƒ| d ksdJ ‚t| ||f t | ¡ƒ| ||f ksŒJ ‚t| ||f t | ¡ƒ| ||f ks´J ‚d S )	Nr   r'   ÚiT)r   Új)r   r   )r   r   )r   r
   r   r   Z	symmetric)r   rU   rV   r"   r"   r#   Útest_matrixelementÖ   s      (rW   N)7Zsympy.assumptions.askr   Zsympy.assumptions.refiner   Zsympy.core.exprr   Zsympy.core.numbersr   r   r   r   Zsympy.core.singletonr	   Zsympy.core.symbolr
   Z$sympy.functions.elementary.complexesr   r   r   r   r   Z&sympy.functions.elementary.exponentialr   Z(sympy.functions.elementary.miscellaneousr   Z(sympy.functions.elementary.trigonometricr   r   Z	sympy.abcr   r   r   r   Zsympy.core.relationalr   r   Z$sympy.functions.elementary.piecewiser   Z"sympy.matrices.expressions.matexprr   r$   r,   r/   r2   r3   r5   r8   r9   r:   r=   r>   rN   rQ   rT   rW   r"   r"   r"   r#   Ú<module>   s8   

#

