
    sg                     F   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 Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4d Z5e$d        Z6d Z7d Z8y)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                  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        R/var/www/html/venv/lib/python3.12/site-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_apartr2      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_matrixr9   @   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'   r7   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   )rA   r0   r1   r=   s      @r+   _make_extension_examplerC   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   expandrC   sympy.matricesrH   r   )r0   r1   rH   s      r+   test_apart_extensionrK   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!   rE   )rC   r   r   r   r/   s     r+   test_apart_extension_xfailrM   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   )r0   s    r+   test_apart_fullrT      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                  v   dt         dz  z  dt         dz  z  z   dt         z  z   dz   dt         dz  z  d	t         dz  z  z   d
t         dz  z  z   dt         z  z   dz   z  } dt         dz   z  dt         dz   z  z   dt         dz   z  z   dt         dz   z  z   }t        | d      j                         }t        ||dd      sJ y )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㈵>)rtolatol)r   r   evalfr   )r0   expectedf_aparts      r+   test_apart_full_floatsr[      s     	AqD #6q!t#;;
a
	 "'	( 	QT!$71$<<
ad
"	#%5a%7	8:=	>		A 	!../
A/
0	1
Q!11
2	3 Q!11
2	3  AD!'')G WhT===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'   rR      rP   r$   r       r&   zZZ[a,b]domain)r   r   r   r   r   )pqrs      r+   test_apart_undetermined_coeffsrd      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)   ).0r5   r6   rS   s      r+   	<genexpr>z4test_apart_list.<locals>.dummy_eq.<locals>.<genexpr>   s     <$!Qx1~<s   )typelisttupleallziprS   )r5   r6   rS   s     r+   rS   z!test_apart_list.<locals>.dummy_eq   sA    7tUm#<#a)<<<Av&A&r*   w0w1w2r   r7   r!   r'   rP   w)dummiesr%   QQr_   ZZr    $   r$   r&   )	sympy.utilities.iterablesrf   r   r   r   r   r   r   r   )	rf   rp   rq   rr   _ar0   gotansrS   s	           @r+   test_apart_listr~      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 )Nrw   r$   r!   r&   r'   ry   r    rR   r   r   rv   r_   r%   )r   r   r   r   r   r   r   )r0   pfdr   s      r+   test_assemble_partfrac_listr      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)9__doc__sympy.polys.partfracr   r   r   r   sympy.core.exprr   sympy.core.functionr   sympy.core.numbersr	   r
   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   r2   r9   r;   rC   rK   rM   rT   r[   rd   r~   r   r   r   r   r)   r*   r+   <module>r      s     ! & > > $ " - 9 ' 0 . + . # #$BN
$"5&1
H0>.0>a ' ')3r*   