U
    ZÊ¹jž  ã                   @   s\  d 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 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#m$Z$ ddl%m&Z&m'Z'm(Z(m)Z)m*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%„ Z5e$d&d'„ ƒZ6d(d)„ Z7d*d+„ Z8d,S )-zOTests for algorithms for partial fraction decomposition of rational
functions. é    )Úapart_undetermined_coeffsÚapartÚ
apart_listÚassemble_partfrac_list)ÚExpr)ÚLambda)ÚEÚIÚRationalÚpiÚ	all_close)ÚEq)ÚS)ÚDummyÚSymbol)Úsqrt)ÚMatrix)ÚPolyÚfactor)Útogether)ÚRootSum)ÚraisesÚXFAIL)ÚxÚyÚaÚbÚcc                  C   sº  t dƒdkst‚t dtƒdks"t‚td d td  dtd  t d  } }t | dd�|ks`t‚t | dd�|kstt‚dtd  td  ddt  ddt    } }t | dd�|ks¶t‚t | dd�|ksÊt‚dtd  td  ddt  d ddt  d   } }t | dd�|k�st‚t | dd�|k�s,t‚t tt d tt  td  tƒdt tt  tt  tt d td  tt   k�sˆt‚t ttd d td  tƒtƒttd dtd   tƒk�sÈt‚t td tƒtd k�sät‚tt dt t  td	dƒt dt t  tj	  } }t | tdd�|k�s2t‚t | tdd�|k�sJt‚tt dt t  d	t dt t  d  } }t | tdd�|k�s�t‚t | tdd�|k�s¨t‚t
td
d„ ƒ d S )Né   é   F©ÚfullTé   éÿÿÿÿé   é   c                   S   s   t dtd  td  ƒS )Nr   r   )r   r   r   © r&   r&   ú^/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/polys/tests/test_partfrac.pyÚ<lambda>=   ó    ztest_apart.<locals>.<lambda>)r   ÚAssertionErrorr   r   r   r   r   r
   r   ÚHalfr   ÚNotImplementedError©ÚfÚgr&   r&   r'   Ú
test_apart   s.    *.6 2ÿ
@6.r0   c                  C   sv   t dddd„ ƒ} t| ƒt dt dtd   td d gddt  tjtd   dtd  dtd   ggƒksrt‚d S )Nr   c                 S   s   dt |  d  t |  S )Nr   )r   ©ÚiÚjr&   r&   r'   r(   A   r)   z#test_apart_matrix.<locals>.<lambda>r   éþÿÿÿ)r   r   r   r   r+   r*   )ÚMr&   r&   r'   Útest_apart_matrix@   s
    0þr6   c                  C   sÜ  t td  dt dt  t  td   dt t t d  t td   td   dt  t dt td   t  td  } t d td  dt  t dt t d   td   dt  t t td  t d td   td   dt td  dt  t td   t  td td   }t| | tƒdt  dtt d   td t t t t d    k�s\t‚tdtt  tt  tt   tƒdt t tt  tt   dt t tt  tt    dt t t t  t t    k�sØt‚d S )Nr$   r   r%   r4   r   )r   r   r   r   r   r*   r-   r&   r&   r'   Útest_apart_symbolicI   s(    NÿÿHÿÿ&ÿÿH 6ÿÿr7   c                     sú   ddl m‰  ‡ fdd„} td d d td d td d  td  dt  d  td dt  d   }d| ttdƒ d ƒ d| ttdƒ d ƒ  d| td tdƒ ƒ  d| td tdƒ ƒ  d| td d ƒ  d| td d ƒ  }||fS )Nr   ©ÚMulc                    s   ˆ d| dd�S )Nr   F)Úevaluater&   )Úexprr8   r&   r'   Úmul2Y   s    z%_make_extension_example.<locals>.mul2r   r   r%   )Z
sympy.corer9   r   r   )r<   r.   r/   r&   r8   r'   Ú_make_extension_exampleV   s    Rÿþýüûr=   c               	   C   sÊ   dt d d  } tt t  tt t   }t| td�|ks<t‚t| dd�|ksPt‚t t d t t   } ttt| ƒƒ ¡ ƒ| ks€t‚tƒ \} }ddlm	} |dƒ�" t| t t
dƒhd�|ks¼t‚W 5 Q R X d S )Nr   r   ©Ú	extensionT)Zgaussianr   )Údotprodsimp)r   r	   r   r*   r   r   Úexpandr=   Zsympy.matricesr@   r   )r.   r/   r@   r&   r&   r'   Útest_apart_extensiong   s    

rB   c                  C   s*   t ƒ \} }t| ttdƒhd�|ks&t‚d S )Nr   r>   )r=   r   r   r   r*   r-   r&   r&   r'   Útest_apart_extension_xfailz   s    
rC   c                  C   sÎ  dt d d  } t| dd�| ks$t‚t| dd� tt d d tttt t  ƒdd� d ¡s`t‚dt d t  d  } t| dd�| ksˆt‚t| dd� tt d t  d tttd tdd	ƒ ttd
d	ƒ  tdd	ƒ t t  ƒdd�¡sèt‚dt d d  } t| dd�tddƒt d dt d   dt   d t d t d  t d  t  d   tddƒt d   k�sft‚t| dd� tt d t d  t d  t  d tttt t  ƒdd� d tddƒt d   ¡�sÊt‚d S )Nr   r   Fr    T)Úautor%   é   é   é	   r$   r"   r#   )r   r   r*   Údummy_eqr   r   r   r
   )r.   r&   r&   r'   Útest_apart_full   sB    (ÿ6 ÿÿ
<ÿÿÿÿ
  ÿÿÿÿrI   c                  C   s¬   dt d  dt d   dt   d dt d  d	t d   d
t d   dt   d  } dt d  dt d   dt d   dt d   }t| dd� ¡ }t||ddd�s¨t‚d S )NgÚàV/ë¡;>r%   gOæ6r­Zì>r   g†ÿž¢Jm?gÃõ(\�Âµ?gýí «Ê=r$   g†6ª°Ê-Ñ>g¾ÑÒ�ak?gîäŸv>¸Ã?g      ð?gýµ	«,³`@g�{@áô@g°î�ÆÃ=ñ?gX®ä7ˆ@g``é@ËGÙ?gp’"fD@g¸ªÙ*uâ?gV	„óš0@Tr    gü©ñÒMbP?gñhãˆµøä>)ZrtolZatol)r   r   Zevalfr   r*   )r.   ÚexpectedZf_apartr&   r&   r'   Útest_apart_full_floats—   s.    ÿÿ
ÿÿÿü	

ÿ
þ
ýÿrK   c                  C   s  t dt d ƒ} t td td  td  td  dtd   dt  d ƒ}td  td  td  d	 td td  dt  d  dtd   }t| |ƒ|ks¤t‚t dtd
d�} t tt tt  td
d�}dtt tt   dtt tt    }t| |ƒ|k�st‚d S )Nr   r%   rG   é   rE   r"   r   é   r$   zZZ[a,b]©Údomain)r   r   r   r*   r   r   )ÚpÚqÚrr&   r&   r'   Útest_apart_undetermined_coeffs®   s    <F(rS   c               
      s8  ddl m}  ‡ fdd„‰ tdƒtdƒtdƒ  }}}tdƒ}d	t d
td
   dtd
  dt   }t|t| dƒd�}dttd
dƒtdd�t|d
 |dd�t|d
ƒt|| t ƒdfgf}ˆ ||ƒsÈt	‚td
td
 d
  t| dƒd�}dtdtdd�t|d
 d
 |dd�t||d
 ƒt|| t ƒdfgf}ˆ ||ƒ�s<t	‚dtd d
td   d
td   dtd
   t d
  }t|t| dƒd�}dtdtdd�t|d
 |dd�t|dƒt|| t ƒdft|d
 d |dd�t|d| d ƒt|| t ƒd
ft|d |dd�t|dƒt|| t ƒdfgf}ˆ ||ƒ�s4t	‚d S )Nr   )Únumbered_symbolsc                    s>   t | ƒttfkr,t‡ fdd„t| |ƒD ƒƒS | |kp<|  |¡S )Nc                 3   s   | ]\}}ˆ ||ƒV  qd S )Nr&   )Ú.0r2   r3   ©rH   r&   r'   Ú	<genexpr>À   s     z4test_apart_list.<locals>.dummy_eq.<locals>.<genexpr>)ÚtypeÚlistÚtupleÚallÚziprH   r1   rV   r&   r'   rH   ¾   s    z!test_apart_list.<locals>.dummy_eqÚw0Úw1Úw2r   r4   r   r%   rE   Úw)Zdummiesr#   ZQQrN   ÚZZr   é$   r"   r$   éýÿÿÿéüÿÿÿ)
Zsympy.utilities.iterablesrT   r   r   r   r   r   r
   r   r*   )rT   r]   r^   r_   Z_ar.   ÚgotZansr&   rV   r'   Útest_apart_list¼   s4    (,ÿ" þ8*6*þÿrf   c                  C   s  dt d dt d   dt d   dt d   t  d  } t| ƒ}t|ƒdt d  dt d d   dt d d   dt d   ks„t‚td	ƒ}dtd
t dd�tdƒtdƒ gt||d ƒt|| t  ƒdfgf}t|ƒdtdƒt tdƒ   dtdƒt tdƒ    k�st‚d S )Nrb   r"   r   r$   r%   rd   r   rG   r   r   ra   rN   r#   )r   r   r   r*   r   r   r   r   )r.   Zpfdr   r&   r&   r'   Útest_assemble_partfrac_listÛ   s    8DBrg   c                  C   sp   G dd„ dt ƒ} tttt   }ddt  }t|| |ƒ ƒ|| |ƒ ksLt‚t|| |ƒ ƒ|| |ƒ kslt‚d S )Nc                   @   s   e Zd ZdZdS )z3test_noncommutative_pseudomultivariate.<locals>.fooFN©Ú__name__Ú
__module__Ú__qualname__Zis_commutativer&   r&   r&   r'   Úfooè   s   rl   r   ©r   r   r   r   r*   ©rl   Úer   r&   r&   r'   Ú&test_noncommutative_pseudomultivariateå   s
     rp   c                  C   sL   G dd„ dt ƒ} tttt   }ddt  }t|| ƒ  ƒ|| ƒ  ksHt‚d S )Nc                   @   s   e Zd ZdZdS )z test_noncommutative.<locals>.fooFNrh   r&   r&   r&   r'   rl   ð   s   rl   r   rm   rn   r&   r&   r'   Útest_noncommutativeï   s    rq   c                   C   s„   t dt td d  td dtd d    ddtd    dt  ƒdt d td d  d dtd  d  dt  ks€t‚d S )Nr   r   r%   )r   r   r*   r&   r&   r&   r'   Útest_issue_5798ö   s
    Bÿ2þrr   N)9Ú__doc__Zsympy.polys.partfracr   r   r   r   Zsympy.core.exprr   Zsympy.core.functionr   Zsympy.core.numbersr   r	   r
   r   r   Zsympy.core.relationalr   Zsympy.core.singletonr   Zsympy.core.symbolr   r   Z(sympy.functions.elementary.miscellaneousr   Zsympy.matrices.denser   Zsympy.polys.polytoolsr   r   Zsympy.polys.rationaltoolsr   Zsympy.polys.rootoftoolsr   Zsympy.testing.pytestr   r   Z	sympy.abcr   r   r   r   r   r0   r6   r7   r=   rB   rC   rI   rK   rS   rf   rg   rp   rq   rr   r&   r&   r&   r'   Ú<module>   s:   '	

	