
    g                     N   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 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                  f   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
            d S )N      FfullT         c                  L    t          dt          dz   z  t          dz   z            S )Nr    r!   )r   r   r        [/var/www/html/ai-engine/env/lib/python3.11/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\   88q====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2J2JJJJJ1a==AaCaC!A#'?HQNN1,acAg6?qAAE"""a''''AD!!!Q&&&&aC!A#'?AaC1qMA-qAAE"""a''''AD!!!Q&&&&
 @ @AAAAAr*   c            	      4   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 d S )Nr!   c                 8    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788A88v	
1q!a%y1q5B-(	
AaCAFQ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 d S )Nr&   r!   r'   r7   r    )r   r   r   r   r   r/   s     r+   test_apart_symbolicr;   I   s5   	!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FQUQUOQU+,a0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    s1dU++++r*   r!   r    r'   )
sympy.corer=   r   r   )rA   r0   r1   r=   s      @r+   _make_extension_examplerC   V   sg   , , , , , Q$(QQ
AEA:-1uqs{Q?A!aP	QA	
44DGGa  	 	
44DGGa  	 
!	
44AQ  	 
! 
44AQ  	 
! 
44Q
		

 
44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          |                                                               | k    sJ t                      \  } }ddlm}  |d          5  t          | t           t          d          h          |k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr!   r    	extensionT)gaussianr   )dotprodsimp)
r   r
   r   r   r   expandrC   sympy.matricesrH   r   )r0   r1   rH   s      r+   test_apart_extensionrK   g   st   	1a4!8A	1q5	Aq1uIAa   A%%%%T"""a''''	AEAE?A(588$$++--..!3333"$$DAq +*****	T		 5 5Qd1ggY///1444445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s   8,D22D69D6c                  ~    t                      \  } }t          | t          t          d          h          |k    sJ d S )Nr!   rE   )rC   r   r   r   r/   s     r+   test_apart_extension_xfailrM   z   s?    "$$DAqA$q''+++q000000r*   c                     dt           dz  dz   z  } t          | d          | k    sJ t          | d                              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                              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                              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 d S )Nr    r!   Fr"   T)autor'         	   r&   r$   r%   )r   r   dummy_eqr   r   r   r   )r0   s    r+   test_apart_fullrT      s   	1a4!8A1$$$$''	A6!QAY//e	<	<	<<Q>@ @ @ @ @ 	
1a4!8a<A1$$$$''1q1q1a4B'!HQOO*;;hq"ooMPQTUPUVWW^c	e 	e 	ef f f f f 	
1a4!8A	"aAqD1QT6MAaC/!3adQTkAqD6H	
77  	QNNQU+	,, , , , ''	A1q!t#a'!+q!QU)5
* 
* 
* 	**+	,/71~~A.F	GH H H H H H Hr*   c                     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                                          }t          ||dd          sJ 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㈵>)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 d S )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      sD   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	22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 d S )Nr   )numbered_symbolsc                     t          |           t          t          fv r)t          fdt	          | |          D                       S | |k    p|                     |          S )Nc              3   6   K   | ]\  }} ||          V  d S )Nr)   ).0r5   r6   rS   s      r+   	<genexpr>z4test_apart_list.<locals>.dummy_eq.<locals>.<genexpr>   s1      <<$!Qxx1~~<<<<<<r*   )typelisttupleallziprS   )r5   r6   rS   s     r+   rS   z!test_apart_list.<locals>.dummy_eq   s\    77tUm##<<<<#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#3#3C#8#8
9
9
9CtHQNNAd333
rAvr$
'
'
'ArB378K8KQ	OPRC8C
Q1QZ,<,<S,A,A
B
B
BCd1a%%%b!eaiD)I)I)Ir2a4rB37Q)  (! "C 8C
adQq!tVma1f$qAv-1A56A
Q#3#3C#8#8
9
9
9Cd1a%%%
rAvr$
'
'
'ArB378K8KQ	O	b!eaiD	)	)	)6"beai+@+@&bSSTWBUBUWXY	b1fb	&	&	&r2rB378K8KQO	QRC 8Cr*   c            	         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 d S )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      sf   
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77();VAqs^^VTUXYWY\]W]M^M^`a(b'c
dC!#&&"d1ggq477{.C*Dq$q''STW[\]W^W^S^J_G`*```````r*   c                  8    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 d S )Nc                       e Zd ZdZdS )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      s        d   	1qs7A	1q5	ASSVVCCFF
****33q66??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 d S )Nc                       e Zd ZdZdS ) test_noncommutative.<locals>.fooFNr   r)   r*   r+   r   r      r   r*   r   r    r   r   s      r+   test_noncommutativer      s}        d   	1qs7A	1q5	ASSUUq3355y((((((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 d S )Nr!   r    r'   )r   r   r)   r*   r+   test_issue_5798r      s    	!QTAX!a%!QTAX,//!QAY-?!A#EG G	
1q1a4!8QAE1,qs23 3 3 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      sk               !           & & & & & & > > > > > > > > > > > > > > $ $ $ $ $ $ " " " " " " - - - - - - - - 9 9 9 9 9 9 ' ' ' ' ' ' 0 0 0 0 0 0 0 0 . . . . . . + + + + + + . . . . . . . . # # # # # # # # # # # # # #$B $B $BN  
$ 
$ 
$  "5 5 5&1 1 1
H H H0> > >.0 0 0  >a a a ' ' ') ) )3 3 3 3 3r*   