
    MZd                     <   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 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 Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3e#d        Z4d Z5d Z6y)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)Eq)S)DummySymbol)sqrt)Matrix)Polyfactor)together)RootSum)raisesXFAIL)xyabcc                  B   t        d      dk(  sJ t        dt              dk(  sJ t        dz  dz   t        dz   z  dt        dz   z  t        z   dz
  }} t        | d      |k(  sJ t        | d      |k(  sJ dt        dz   z  t        dz   z  ddt        z   z  ddt        z   z  z
  }} t        | d      |k(  sJ t        | d      |k(  sJ dt        dz   z  t        dz   z  ddt        z   z  dz  ddt        z   z  dz  z   }} t        | d      |k(  sJ t        | d      |k(  sJ t        t        t        z  dz   t        t        z
  z  t        dz
  z  t              dt        z
  t        t        z  z   t        t        z  z   t        t        z  dz   t        dz
  z  t        t        z
  z  z   k(  sJ t        t	        t        dz  dz   t        dz   z  t              t              t	        t        dz
  dt        dz   z  z   t              k(  sJ t        t        dz  t
              t        dz  k(  sJ t        t
        z   dt        z  t
        z
  z  t        d	d      t
        z  dt        z  t
        z
  z  t        j                  z   }} t        | t        d      |k(  sJ t        | t        d      |k(  sJ t        t
        z   dt        z  t
        z
  z  d	t        z  dt        z  t
        z
  z  dz
  }} t        | t
        d      |k(  sJ t        | t
        d      |k(  sJ t        t        d
        y )N      FfullT         c                  @    t        dt        dz   z  t        dz   z        S )Nr   r    )r   r   r        A/usr/lib/python3/dist-packages/sympy/polys/tests/test_partfrac.py<lambda>ztest_apart.<locals>.<lambda>=   s    aQiQ.?(@ r)   )r   r   r	   r   r   r   r   r   Halfr   NotImplementedErrorfgs     r*   
test_apartr1      s   8q==A;!qD1Hq1uq!a%y1}q0qA1$$$!###a!e9a!eaQi!QU)3qA1$$$!###a!e9a!eb!a%jlQAYq[8qA1$$$!###!A#'AF#QU+Q/	A"qsadQha0!b&99: : : QTAXA&*A."QUQAY5F2JJJJ1a=AaCaC!A#'?HQN1,acAg6?qAAE"a'''AD!Q&&&aC!A#'?AaC1qMA-qAAE"a'''AD!Q&&&
 @Ar)   c            	         t        ddd       } t        |       t        dt        z  dt        dz   z  z
  t        dz   dz  gddt        z  z  t        j                  t        dz   z  z
  dt        dz   z  dt        dz   z  z
  gg      k(  sJ y )Nr    c                 4    dt         | z   dz   z  t         |z   z  S )Nr   )r   )ijs     r*   r+   z#test_apart_matrix.<locals>.<lambda>A   s    !QUQY-Q"7 r)   r   )r   r   r   r   r,   )Ms    r*   test_apart_matrixr8   @   s    q!78A8v	
1q!a%y1q5B-(	
AaCAFFQU#	#QAYAE%:;    r)   c                     t         t        dz  z  dt        z  dt         z  t        z  z   t        dz  z  z   dt        z  t        z  t         dz  z
  t         t        dz  z  z   t        dz  z  z   dt         z  t        z  dt        z  t        dz  z  z   t        z  z   t        dz  z
  } t         dz  t        dz  z  dt         z  t        z  dt        z  t         dz  z  z   t        dz  z  z   dt         z  t        z  t        z  t        dz  z   t         dz  t        dz  z  z   t        dz  z  z   dt        z  t        dz  z  dt         z  t        z  t        dz  z  z   t        z  z   t        dz  t        dz  z  z   }t	        | |z  t              dt         z  dt        t        z   dz  z  z
  t        dz  t         t         t        z  t        z   dz  z  z  z
  k(  sJ t	        dt        t         z   t        t        z   z  t        t        z   z  z  t              dt         t        z
  t        t        z
  z  t        t        z   z  z  dt         t        z
  t        t        z
  z  t        t        z   z  z  z
  dt         t        z
  t         t        z
  z  t         t        z   z  z  z   k(  sJ y )Nr%   r    r&   r6   r   )r   r   r   r   r   r.   s     r*   test_apart_symbolicr:   I   s   	!Q$!A#!A+q!t##qs1uq!t|a1f'<ad&BB	Aa!A#ad(	A	 !1	%A	1QT	QqSUQqSAX%q!t++qs1uQwA~	1QT	0a4/ 	Q3q!t8ac!eAqDj0!3	467d1a4i	@A 1a=AaC!QUQJ,.Aq!A#'A~1FFFFFQUQUOQU+,a0	AEAE?AE"#a!a%!a%!a%)@&AA	AEAE?AE"#	$$ $ $r)   c                      ddl m fd} t        dz  dz   dz  t        dz
  dz  t        dz   dz  z  t        dz   dt        z  z   dz   z  t        dz  dt        z  z   dz
  z  z  }d | t        t        d      z
  dz         z  d | t        t        d      z
  dz
        z  z
  d | t        dz   t        d      z         z  z   d | t        dz
  t        d      z         z  z
  d | t        dz   dz        z  z   d | t        dz
  dz        z  z   }||fS )Nr   )Mulc                      d| d      S )Nr    F)evaluater(   )exprr<   s    r*   mul2z%_make_extension_example.<locals>.mul2Y   s    1dU++r)   r    r   r&   )
sympy.corer<   r   r   )r@   r/   r0   r<   s      @r*   _make_extension_examplerB   V   s   , Q$(QQ
AEA:-1uqs{Q?A!aP	QA	
4DGa 	 	
4DGa 	 
!	
4AQ 	 
! 
4AQ 	 
! 
4Q
		

 
4Q
	
A a4Kr)   c                     dt         dz  dz   z  } t        t         t        z   z  t        t         t        z
  z  z
  }t        | t              |k(  sJ t        | d      |k(  sJ t         t         dz
  t         t        z   z  z  } t        t	        t        |             j                               | k(  sJ t               \  } }ddlm}  |d      5  t        | t         t        d      h      |k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr    r   	extensionT)gaussianr   )dotprodsimp)
r   r
   r   r   r   expandrB   sympy.matricesrG   r   )r/   r0   rG   s      r*   test_apart_extensionrJ   g   s    	1a4!8A	1q5	Aq1uIAa A%%%T"a'''	AEAE?A(58$++-.!333"$DAq +	T	 5Qd1gY/14445 5 5s   
"C66C?c                  `    t               \  } }t        | t        t        d      h      |k(  sJ y )Nr    rD   )rB   r   r   r   r.   s     r*   test_apart_extension_xfailrL   z   s+    "$DAqA$q'+q000r)   c                     dt         dz  dz   z  } t        | d      | k(  sJ t        | d      j                  t        t         dz  dz   t	        t
        t
        t         t
        z
  z        d       dz        sJ dt         dz  t         z   dz   z  } t        | d      | k(  sJ t        | d      j                  t        t         dz  t         z   dz   t	        t
        t
        dz  t        dd	      z  t
        t        d
d	      z  z
  t        dd	      z   t         t
        z
  z        d            sJ dt         dz  dz   z  } t        | d      t        dd      t         dz  dt         dz  z  z
  dt         z  z   dz
  t         dz  t         dz  z
  t         dz  z   t         z
  dz   z  z  t        dd      t         dz   z  z   k(  sJ t        | d      j                  t        t         dz  t         dz  z
  t         dz  z   t         z
  dz   t	        t
        t
        t         t
        z
  z        d       dz  t        dd      t         dz   z  z         sJ y )Nr   r    Fr!   T)autor&         	   r%   r#   r$   )r   r   dummy_eqr   r   r   r   )r/   s    r*   test_apart_fullrS      sA   	1a4!8A1$$$''	A6!QAY/e	<<Q>@ @ @ 	
1a4!8a<A1$$$''1q1q1a4B'!HQO*;;hq"oMPQTUPUVW^c	ef f f 	
1a4!8A	"aAqD1QT6MAaC/!3adQTkAqD6H	
77  	QNQU+	,, , , ''	A1q!t#a'!+q!QU)5
* 	**+	,/71~A.F	GH H Hr)   c                     t        dt        z  dz
        } t        t        dz  t        dz  z
  t        dz  z
  t        dz  z   dt        dz  z  z
  dt        z  z   dz
        }t        dz   t        dz  z
  t        dz  z
  d	z   t        dz  t        dz  z
  dt        z  z
  dz   z  dt        dz
  z  z   }t        | |      |k(  sJ t        dt        d
      } t        t        t        z   t        t        z   z  t        d
      }dt        t        z
  t        t        z   z  z  dt        t        z
  t        t        z   z  z  z
  }t        | |      |k(  sJ y )Nr    r&   rQ      rO   r#   r      r%   zZZ[a,b]domain)r   r   r   r   r   )pqrs      r*   test_apart_undetermined_coeffsr\      s!   QqS1WAQTAqD[1a4!Q$&1a4/!A#59:A
Q$A1	q	 1a4!Q$;1#4q#89Aq1uIEA$Q*a///Q)$Aa!ea!e_a	2A	AEAE?a!a%!a%11A$Q*a///r)   c                     ddl m}  fdt        d      t        d      t        d      }}}t        d      }dt        z  d	t        d	z  z  z
  d
t        d	z  z  dt        z  z
  z  }t        |t         | d            }dt        t        d	d
      t        d      t        |d	z
  |d      t        |d	      t        || t        z         dfgf} ||      sJ t        d	t        d	z  d	z
  z  t         | d            }dt        dt        d      t        |d	z  d	z
  |d      t        ||d	z        t        || t        z         dfgf} ||      sJ dt        dz  d	t        dz  z  z
  d	t        d
z  z  z
  dt        d	z  z  z   t        z   d	z
  z  }t        |t         | d            }dt        dt        d      t        |d	z
  |d      t        |d      t        || t        z         dft        |d	z  dz
  |d      t        |d|z  dz
        t        || t        z         d	ft        |dz   |d      t        |d      t        || t        z         dfgf} ||      sJ y )Nr   )numbered_symbolsc                     t        |       t        t        fv rt        fdt	        | |      D              S | |k(  xs | j                  |      S )Nc              3   6   K   | ]  \  }} ||        y w)Nr(   ).0r4   r5   rR   s      r*   	<genexpr>z4test_apart_list.<locals>.dummy_eq.<locals>.<genexpr>   s     <$!Qx1~<s   )typelisttupleallziprR   )r4   r5   rR   s     r*   rR   z!test_apart_list.<locals>.dummy_eq   sA    7tUm#<#a)<<<Av&A&r)   w0w1w2r   r6   r    r&   rO   w)dummiesr$   QQrW   ZZr   $   r#   r%   )	sympy.utilities.iterablesr^   r   r   r   r   r   r   r   )	r^   rh   ri   rj   _ar/   gotansrR   s	           @r*   test_apart_listrv      s_   :'
 vd|VD\BB	sB	A!Q$1QT6AaC<(A
Q#3C#8
9CtHQNAd3
rAvr$
'ArB378KQ	OPRCC
Q1QZ,<S,A
BCd1a%b!eaiD)Ir2a4rB37Q)  (! "C C
adQq!tVma1f$qAv-1A56A
Q#3C#8
9Cd1a%
rAvr$
'ArB378KQ	O	b!eaiD	)6"beai+@&bSSTWBUWXY	b1fb	&r2rB378KQO	QRC Cr)   c            	      v   dt         dz  dt         dz  z  z
  dt         dz  z  z
  dt         dz  z  z   t         z   dz
  z  } t        |       }t        |      dt         dz   z  dt         dz   dz  z  z
  dt         dz
  dz  z  z
  dt         dz
  z  z   k(  sJ t        d	      }dt	        d
t         d      t        d      t        d       gt        ||dz        t        || t         z         dfgf}t        |      dt        d      t         t        d      z   z  z  dt        d      t         t        d      z
  z  z  z   k(  sJ y )Nro   r#   r    r%   r&   rq   r   rQ   r   r   rn   rW   r$   )r   r   r   r   r   r   r   )r/   pfdr   s      r*   test_assemble_partfrac_listry      s8   
adQq!tVma1f$qAv-1A56A
Q-C!#&"a!e*q!a%!|*CaQQR
l*RUVXY\]X]U^*^^^^c
Ad1a%$q'47();VAqs^VTUXYWY\]W]M^`a(b'c
dC!#&"d1gq47{.C*Dq$q'STW[\]W^S^J_G`*````r)   c                       G d dt               } t        t        t        t        z  z   z  }ddt        z   z  }t        | | |      z         | | |      z   k(  sJ t        | | |      z        | | |      z  k(  sJ y )Nc                       e Zd ZdZy)3test_noncommutative_pseudomultivariate.<locals>.fooFN__name__
__module____qualname__is_commutativer(   r)   r*   foor|          r)   r   r   r   r   r   r   r   er   s      r*   &test_noncommutative_pseudomultivariater      sq    d 	1qs7A	1q5	ASVCF
***3q6?aAh&&&r)   c                       G d dt               } t        t        t        t        z  z   z  }ddt        z   z  }t        | |        z         | |        z   k(  sJ y )Nc                       e Zd ZdZy) test_noncommutative.<locals>.fooFNr}   r(   r)   r*   r   r      r   r)   r   r   r   r   s      r*   test_noncommutativer      sK    d 	1qs7A	1q5	ASUq35y(((r)   c                     t        dt        z  t        dz  dz   z  t        dz
  dt        dz  dz   z  z  z
  ddt        dz   z  z  z   dt        z  z
        dt        z  dz   t        dz  dz   z  dz  dt        dz   z  dz  z   dt        z  z
  k(  sJ y )Nr    r   r&   )r   r   r(   r)   r*   test_issue_5798r      s    	!QTAX!a%!QTAX,//!QAY-?!A#EG	
1q1a4!8QAE1,qs23 3 3r)   N)7__doc__sympy.polys.partfracr   r   r   r   sympy.core.exprr   sympy.core.functionr   sympy.core.numbersr	   r
   r   r   sympy.core.relationalr   sympy.core.singletonr   sympy.core.symbolr   r   (sympy.functions.elementary.miscellaneousr   sympy.matrices.denser   sympy.polys.polytoolsr   r   sympy.polys.rationaltoolsr   sympy.polys.rootoftoolsr   sympy.testing.pytestr   r   	sympy.abcr   r   r   r   r   r1   r8   r:   rB   rJ   rL   rS   r\   rv   ry   r   r   r   r(   r)   r*   <module>r      s     ! & 3 3 $ " - 9 ' 0 . + . # #$BN
$"5&1
H00>a ' ')3r)   