U
    L?h                     @   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stt | dd|kst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stt ttd d td  ttttd dtd   tkstt td ttd kst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stt | tdd|kst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&   Q/var/www/html/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
    0r6   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st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stt \} }ddlm	} |d" t| t t
dhd|kst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st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st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   st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std S )NgV/;>r%   gO6rZ>r   gJm?g(\µ?g=r$   g6->gak?gv>?g      ?g	,`@g{@@g=?gX7@g``@G?gp"fD@g*u?gV	0@Tr    gMbP?gh㈵>)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st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} ||st	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_   _ar.   gotZansr&   rV   r'   test_apart_list   s4    (," 8*6*rg   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st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rh   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   rm   r   r   r   r   r   r*   rm   er   r&   r&   r'   &test_noncommutative_pseudomultivariate   s
     rq   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>.fooFNri   r&   r&   r&   r'   rm      s   rm   r   rn   ro   r&   r&   r'   test_noncommutative   s    rr   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std S )Nr   r   r%   )r   r   r*   r&   r&   r&   r'   test_issue_5798   s
    B2rs   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   rg   rh   rq   rr   rs   r&   r&   r&   r'   <module>   s:   '	

	