o
    8Va                     @   s  d Z ddlmZmZmZmZ ddlmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZ ddlmZmZ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&edd Z'dd Z(dd Z)dd Z*dd Z+edd Z,dd Z-dd Z.d S )!zOTests for algorithms for partial fraction decomposition of rational
functions.     )apart_undetermined_coeffsapart
apart_listassemble_partfrac_list)SPolyEpiIMatrixEqRootSumLambdaSymbolDummyfactortogethersqrtExprRational)raises	ON_TRAVISskipXFAIL)xyabcc                  C   s  t ddksJ t dtdksJ td d td  dtd  t d } }t | dd|ks0J t | dd|ks:J dtd  td  ddt  ddt   } }t | dd|ks[J t | dd|kseJ dtd  td  ddt  d ddt  d  } }t | dd|ksJ t | dd|ksJ t tt d tt  td  tdt tt  tt  tt d td  tt   ksJ t ttd d td  ttttd dtd   tksJ t td ttd ksJ tt dt t  td	dt dt t  tj } }t | tdd|ksJ t | tdd|ks J tt dt t  d	t dt t  d } }t | tdd|ksCJ t | tdd|ksOJ t	t
d
d  d S )N      FZfullT         c                   S   s   t dtd  td  S )Nr   r    )r   r   r    r&   r&   A/usr/lib/python3/dist-packages/sympy/polys/tests/test_partfrac.py<lambda>4       ztest_apart.<locals>.<lambda>)r   r   r   r	   r   r   r   r   Halfr   NotImplementedErrorfgr&   r&   r'   
test_apart   s.   *.6 2>6.r/   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s9J d S )Nr    c                 S   s   dt |  d  t |  S )Nr   )r   ijr&   r&   r'   r(   8   r)   z#test_apart_matrix.<locals>.<lambda>r   )r   r   r   r   r*   )Mr&   r&   r'   test_apart_matrix7   s
   0r5   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sJ 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sJ d S )Nr$   r    r%   r3   r   )r   r   r   r   r   r,   r&   r&   r'   test_apart_symbolic@   s(   NH&F 6r6   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)Zevaluater&   )exprr7   r&   r'   mul2P   s   z%_make_extension_example.<locals>.mul2r    r   r%   )Z
sympy.corer8   r   r   )r:   r-   r.   r&   r7   r'   _make_extension_exampleM   s   Rr;   c                  C   s   dt d d  } tt t  tt t   }t| td|ksJ t| dd|ks(J t t d t t   } ttt|  | ks@J t \} }ddlm} |d t| t t	dhd|ks^J W d    d S 1 siw   Y  d S )Nr    r   	extensionT)Zgaussianr   )dotprodsimp)
r   r
   r   r   r   expandr;   Zsympy.matricesr>   r   )r-   r.   r>   r&   r&   r'   test_apart_extension^   s   

"r@   c                  C   s6   t rtd t \} }t| ttdhd|ksJ d S )NzToo slow for Travisr    r<   )r   r   r;   r   r   r   r,   r&   r&   r'   test_apart_extension_xfailr   s   
 rA   c                  C   s  dt d d  } t| dd| ksJ t| ddtt d d tttt t  dd d s0J dt d t  d  } t| dd| ksDJ 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stJ 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sJ 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   sJ d S )Nr   r    Fr!   T)autor%         	   r$   r"   r#   )r   r   dummy_eqr   r   r   r   )r-   r&   r&   r'   test_apart_fullz   s>   (8
< rG   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sRJ 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sJ d S )Nr    r%   rE      rC   r"   r      r$   zZZ[a,b]domain)r   r   r   r   r   )pqrr&   r&   r'   test_apart_undetermined_coeffs   s   <F(rO   c               
      s6  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} ||sdJ 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} ||sJ 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} ||sJ d S )Nr   )numbered_symbolsc                    s>   t | ttfv rt fddt| |D S | |kp| |S )Nc                 3   s    | ]
\}} ||V  qd S )Nr&   ).0r1   r2   rF   r&   r'   	<genexpr>   s    z4test_apart_list.<locals>.dummy_eq.<locals>.<genexpr>)typelisttupleallziprF   r0   rR   r&   r'   rF      s   z!test_apart_list.<locals>.dummy_eqw0w1w2r   r3   r    r%   rC   w)Zdummiesr#   ZQQrJ   ZZr   $   r"   r$   )	Zsympy.utilities.iterablesrP   r   r   r   r   r   r   r   )rP   rY   rZ   r[   Z_ar-   ZgotZansr&   rR   r'   test_apart_list   s2   (,"8*6*ra   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sBJ 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sJ d S )Nr^   r"   r    r$   r%   r`   r   rE   r   r   r]   rJ   r#   )r   r   r   r   r   r   r   )r-   Zpfdr   r&   r&   r'   test_assemble_partfrac_list   s   8DB@rb   c                  C   sp   G dd dt } tttt   }ddt  }t|| | || | ks&J t|| | || | ks6J d S )Nc                   @      e Zd ZdZdS )z3test_noncommutative_pseudomultivariate.<locals>.fooFN__name__
__module____qualname__Zis_commutativer&   r&   r&   r'   foo       rh   r   r   r   r   r   rh   er   r&   r&   r'   &test_noncommutative_pseudomultivariate   s
    $rm   c                  C   sL   G dd dt } tttt   }ddt  }t||   ||   ks$J d S )Nc                   @   rc   )z test_noncommutative.<locals>.fooFNrd   r&   r&   r&   r'   rh      ri   rh   r   rj   rk   r&   r&   r'   test_noncommutative   s    rn   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@J d S )Nr    r   r%   )r   r   r&   r&   r&   r'   test_issue_5798   s
   B2ro   N)/__doc__Zsympy.polys.partfracr   r   r   r   Zsympyr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   Zsympy.testing.pytestr   r   r   r   Z	sympy.abcr   r   r   r   r   r/   r5   r6   r;   r@   rA   rG   rO   ra   rb   rm   rn   ro   r&   r&   r&   r'   <module>   s(    H'	


	