
    wg|                        d dl mZmZmZ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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mZmZ d dl m!Z! d dl"m#Z# d dl$m%Z% d dl&m'Z' d dl(m)Z)m*Z*m+Z+ d dl,m-Z- d dl.m/Z/m0Z0m1Z1m2Z2m3Z3 d dl4m5Z5 d dl6m7Z7 d dl8m9Z9 d dl:m;Z;m<Z<m=Z=m>Z> d dl?m@Z@  ed      \  ZAZBZCZDZEZFZGZHZIZJZK edd      \  ZLZMZNZO ed      ZP ed      ZQ ed      ZRd ZSd ZTd  ZUe=d!        ZVd" ZWd# ZXd$ ZYd% ZZd& Z[d' Z\e;d(        Z]d) Z^d* Z_d+ Z`d, Zad- Zbd. Zcd/ Zdd0 Zed1 Zfd2 Zgd3 Zhd4 Zid5 Zje=d6        Zkd7 Zld8 Zmd9 Znd: Zod; Zpd< Zqd= Zrd> Zsd? Ztd@ Zu e>dA      dB        ZvyC)D    )
DerivativeFunctionSubsdiff)EIRationalpi)Eq)S)Symbolsymbols)imre)explog)acosh)sqrt)atan2cossintan)Integral)Poly)O)collect)classify_odehomogeneous_orderdsolve)checkodesol)classify_sysodeconstant_renumberconstantsimpget_numbered_constants	solve_ics) _undetermined_coefficients_match)LinearCoefficients)	ode_order)XFAILraisesslowSKIP)
filldedentzC0:11zu,x:zTrealfghc                  b    t        t              5  t        d        d d d        y # 1 sw Y   y xY wN)r*   
ValueErrorr$        e/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/sympy/solvers/ode/tests/test_ode.pytest_get_numbered_constantsr9   0   s'    	
	 %t$% % %s   %.c                  2   t        t              j                  t              } t        | d      }|d   }|j                  j
                  d   d   }|d   }|j                  j
                  d   j
                  d   d   }i dt        t        t              t        t        dt              z         dt        t        t              t              d	t        t        t              t              d
t        t        t              t              dt        t        t              t              dt        t        t              t              dt        t        t              t              dt        t        t              t              dt        t        t              t              dt        t        t              t              dt        t        t              t        t        dt              z         dt        t        t              t              dt        t        t        dt              t        d|      z   |t        t                    t              dt        t        t              t              dt        t        t              t              dt        t        t              t        t        d|z  |t        t              t        z  f      z         dt        t        t              t              t        t        d|t        t              f      t        t        dt              z         t        t        t              t              t        t        t              t              d
d
dd}||k(  sJ t        | d      t        t        t              t              k(  sJ y )Nallhintseparable_Integral   r   11st_homogeneous_coeff_subs_dep_div_indep_IntegralBernoulli_Integral1st_homogeneous_coeff_best	Bernoullinth_algebraicnth_linear_euler_eq_homogeneous%nth_linear_constant_coeff_homogeneous	separable(1st_homogeneous_coeff_subs_indep_div_depnth_algebraic_Integral
1st_linear1st_linear_Integral	1st_exact1st_exact_Integral	lie_group(1st_homogeneous_coeff_subs_dep_div_indep1st_power_series)r>   11st_homogeneous_coeff_subs_indep_div_dep_Integralbest	best_hintdefaultorderrS   )r0   xr   r   lhsargsrhsr   C1r   r   r   )eqoutputsol1_y_u1expecteds         r8   test_dsolve_all_hintrb   5   s   	
11BBU#F &'D	q	!	BEFD
((--



"1
%C$b1rHQN/B&C $b1rlR!b\ 	AaD" 	*2adB<	
 	0AaD" 	R!b\ 	3BqtRL 	!"QqT2, 	b1rl 	r!A$Xa^(;< 	R!b\ 	bhq!nx2&FAaD!QSUV 	R!b\ 	3BqtRL 	<RAXVXY\V\_bdefgdhijdj^kMlHl=m  	BqtRL!" !!b!A$Z!8"x1~:MN=?!b\1Q4$"-H. X"6"b1rl222r7   c            	          t        t              5  t        t        t              j                  t              t        t        t                    z
  t        d      di       d d d        y # 1 sw Y   y xY w)Nr?   ics)r*   NotImplementedErrorr   r0   rW   r   r   r6   r7   r8   test_dsolve_icsrg   [   sK    	#	$ 8qtyy|d1Q4j(qtAh78 8 8s   AA++A4c                     t         t        t               j                  t               z  t        t               z   t        d      } t        dd      }t        d      }g d}g d}t	        | j                               |k(  sJ | d   t        t        t                     k(  sJ | d	   t        t        t               t        t         z        k(  sJ t        d	      t        t        t               t        t         z        k(  sJ | d
   dk(  sJ | d   dk(  sJ | d   j                  t              rJ | d   j                  t              rJ | d   j                  t              rJ | d   j                  t              rJ | d   j                  t              rJ | d   j                  t              rJ | d   j                  t              sJ | d   j                  t              sJ | d   j                  t              sJ | d   j                  t              sJ | d   j                  t              sJ t	        |j                               |k(  sJ |d   t        t        t                     k(  sJ |d	   t        t        t               t        t         z        k(  sJ t        d	d      t        t        t               t        t         z        k(  sJ |d
   dk(  sJ |d   dk(  sJ | d   |d   k7  sJ | d   |d   k7  sJ | d   |d   k7  sJ |d   j                  t              rJ |d   j                  t              rJ |d   j                  t              rJ |d   j                  t              rJ |d   j                  t              rJ |d   j                  t              rJ |d   j                  t              sJ |d   j                  t              sJ |d   j                  t              sJ |d   j                  t              sJ |d   j                  t              sJ t	        |j                               |k(  sJ t        t        fd       t        t        fd       t        t        t               j                  t               dt        t               dz  z  z
  d      d	   t        t        t               j                  t               dt        t               dz  z  z
  d	      k(  sJ t        t        t               t        t               j                  t               z   t        t               j                  t               z   dz   t        t               d      t        t        t               t        t        t        t               j                  t                dz
  t        t        dt                     z  t               z   t        t        dt                      z        k(  sJ y )Nr;   r<   F)r=   simplifyall_Integral)rL   rM   rB   rO   r@   rH   rR   rJ   rK   rC   rA   almost_linearalmost_linear_IntegralrS   rT   rU   
factorablerN   rE   rV   rG   r>   )rM   r@   rR   rK   rA   rl   rS   rT   rU   rm   rE   rV   r>   rV   rS   rU   rm   rT   rL   rG   rB   rO   rH   rJ   rK   rM   r@   rR   r>   c                      t         d      S )Nnotarealhintr<   r   r\   s   r8   <lambda>z%test_dsolve_options.<locals>.<lambda>   s    vb~> r7   c                      t         d      S )N	Liouviller<   rp   rq   s   r8   rr   z%test_dsolve_options.<locals>.<lambda>   s    vb{; r7   r?      )rW   r0   r   r   sortedkeysr(   r   r[   hasr   r*   r5   r   r   )abcrw   Integral_keysr\   s        @r8   test_dsolve_optionsr}   a   sU   	
1Q499Q<!A$	BrAr.Ar'A	+D'M !&&(t###W:2qt,,,,V91Q4A&&&"6"b1r!tn444Y<<'''[>\)))~!!(+++~!!(+++-.228<<<;<@@JJJ;<@@JJJ""8,,,"#''111!"&&x000@AEEhOOO@AEEhOOO!"&&x000!&&(t###W:2qt,,,,V91Q4A&&&"6E2b1r!tnDDDY<<'''[>\)))[>Q{^+++78	
456 6 678	
456 6 6~!!(+++~!!(+++-.228<<<;<@@JJJ;<@@JJJ""8,,,"#''111!"&&x000@AEEhOOO@AEEhOOO!"&&x000!&&(},,,
:>?
:;<!A$))A,1Q47*7?qtyy|a!ai'f56 6 6!A$11%AA6:AaD,.
1Q4"x#a&++a.1!4HQN#!$%&( (),hq!n_)=> 	?? ? ?r7   c            	         t        t        t              j                  t        d      t        t                    dk(  sJ t        t        t              t        t                    dk(  sJ t        t	        t        t              j                  t              d      t        t                    dk(  sJ t        t        t              j                  t              dz  t        t                    dk(  sJ t        t	        t        t              j                  t              t        t              z   t              t        t                    } t        t        t              j                  t              t        t              z  t        t              t        t              z  z   t        t        t              z  z
  t        t                    }t        t        t              j                  t              t        t              z  t        t              t        t              z  z   t        t        t              z  z
  t        t                    }| dk(  sJ |dk(  sJ |dk(  sJ t        dt        z  t        t              z  t        t              j                  t              z  d	t        z   t        t              dz  z  z   t        t              z
  t        t                    d
k(  sJ dt        dt        t              j                  t              z  t        t              dz  z   t        t              t        z  z
  dt        dz  z  z   t        t                    v sJ t        t        d        t        d      }t        t        t              j                  t              |t        t              z  |t        z  t        t              z  z   z  dt        t              z  |t        t              z  |t        z  t        t              z  z   z  z   t        t        t              j                  t              z  |t        t              z  |t        z  t        t              z  z   z  z   t        z   t        t                    dk(  sJ d}t        t        t        t              t        z   t              t        t        t              t              z         |k(  sJ t        t        t        t              t        z   t              t        t        t              t              z   t        t              d      |k(  sJ t        t	        dt        dz  z  t        t              j                  t              z  d      t        t                    dk(  sJ t        t	        dt        t              dz  z  t        t              j                  t              z  d      t        t                    dk(  sJ t        t	        t        t        t              t              t        t              t        z  z
  d      t        t                    dk(  sJ t        t        t	        t        t              d      t        t              d      t              sJ t        t        t	        t        t              j                  t              d      t        t              d      j                               g dk(  sJ t        dt        z  t        t              z  t        t              j                  t              z  d	t        z   t        t              dz  z  z   t        t              z
  t        t              dd      } t        | j                               g dk(  sJ t        t        t              j                  t              t        t        t              t        z
        z
  t        t                    } | dk(  sJ y )Nru   )rD   rF   rE   rt   2nd_power_series_ordinaryrI   Liouville_Integral)rD   rI   r   )rD   rG   rL   rJ   rC   rB   rH   rO   rQ   rN   rF   rE   rI   r>   rM   rK   rA   rR   r@   )rm   rD   rG   rL   rJ   rC   rB   rH   rO   rQ   rN   rE   rI   r>   rM   rK   rA   rR   r@   )rL   rJ   rC   rk   rQ   rN   3nth_linear_constant_coeff_undetermined_coefficients1nth_linear_constant_coeff_variation_of_parametersrM   rK   rA   rl   :nth_linear_constant_coeff_variation_of_parameters_Integral)
rm   rJ   rC   rQ   rN   r   r   rK   rA   r   r?   )rm   rL   rC   rk   rN   rM   rA   rl   Riccati_special_minus2   c                      t        t        t        t        t              j	                  t              j	                  t              z   t        t        t                    S r4   )r   rW   r0   yr   r6   r7   r8   rr   z#test_classify_ode.<locals>.<lambda>  s9    |A!QQ0D0D	1 -aG  r7   k)rm   rG   rL   rJ   rC   rQ   rN   r>   rM   rK   rA   )rm   rD   rG   rL   rJ   rC   rB   rH   rO   rQ   rN   r   <nth_linear_euler_eq_nonhomogeneous_undetermined_coefficientsr   :nth_linear_euler_eq_nonhomogeneous_variation_of_parametersrI   r>   rM   rK   rA   rR   r@   r   Cnth_linear_euler_eq_nonhomogeneous_variation_of_parameters_IntegralT)prep)rm   rD   rG   rL   rJ   rC   rQ   rN   rE   rI   r>   rM   rK   rA   )rm   rD   rG   rL   rJ   rC   rQ   rN   rI   r>   rM   rK   rA   )rQ   rN      dict)rU   rF   rV   rC   r   r=   )rC   rA   rU   rV   ordered_hints)rG   rL   rQ   rN   r>   rM   )r   r0   rW   r   r   r   r*   r5   r   z
isinstancer   rv   rw   )ry   rz   r{   r   anss        r8   test_classify_oder      s   !		!Q1.	
	
 	
 	
 !ad#'RRRR1Q499Q<+QqT2 7= = = =& !		!a1. 3> > > >( 	R!		!qt+Q/16AQqTYYq\!A$&1ad2QqtV;QqTBAQqTYYq\!A$&1ad2QqtV;QqTBA F F F F  	G 	G 	G 	G  	G 	G 	G 	G 	!AaD11Q!a/#a&8!A$
NN N N $Qqtyy|^adAg-!Q61r7BAaDIJ J J
:   	sA!		!a!fqs1Q4x&781QqT61QqT6	!AaDD < adiilNAadFQqS1X$5679:;<=aDB	55 5 5OC$ QqTAXq)D1qM9:cAAAQqTAXq)D1qM91Q4!#&)* * * 1QT6!A$))A,.2AaD9	66 6 6 1QqT1W9QqTYYq\115qt<	   4!a=1Q472A6!=)* * *l2adA;!4@$GGG ,r!A$))A,2AaDtDIIKLEF F FQqS1Xadiil*a!eQqT1W_<s1vEqtRV]hiA!&&(gggg 	QqTYYq\C!qM11Q48A    r7   c                      t        t              j                  t        t              t        t              z
   t        dit        t         fd       t        d      dit        t         fd       t        t              dit        t         fd       t        dd      dit        t         fd       t        d      t        t              it        t         fd       t        d      t        d      it         t        t                     t        d      dit         t        t                     t        t              j                  t              j                  t        d      dit        t         fd	       t        t              j                  t              j                  t        t              dit        t         fd
       t        t              j                  t              j                  t        d      dit        t         fd       t        t        t              j                  t              j                  t        d      dit        t         fd       t        t        t              t        t              j                  t        d      dit        t         fd       t        t              j                  t              j                  t        d      t        t              it        t         fd       t        t              j                  t              j                  t        d      t        t              j                  t              j                  t        d      it         t        t                     t        t              j                  t              j                  t        d      dit         t        t                     t        t              j                  t              j                  t        t              dit        t         fd       t        t              j                  t              j                  t        t              dit        t         fd       t        t        t              j                  t              j                  t        t              dit        t         fd       t        t        t              t        t              j                  t        t              dit        t         fd       t        t              j                  t              j                  t        t              t        t              it        t         fd       t        t              j                  t              j                  t        d      t        d      it         t        t                     t        t              j                  t              j                  t        t              dit         t        t                     y )Nr?   c                  :    t         t        t                    S Nrd   r   r0   rW   r\   re   s   r8   rr   z'test_classify_ode_ics.<locals>.<lambda>N      |B!#> r7   r   c                  :    t         t        t                    S r   r   r   s   r8   rr   z'test_classify_ode_ics.<locals>.<lambda>X  r   r7   c                  :    t         t        t                    S r   r   r   s   r8   rr   z'test_classify_ode_ics.<locals>.<lambda>\  r   r7   c                  :    t         t        t                    S r   r   r   s   r8   rr   z'test_classify_ode_ics.<locals>.<lambda>`  r   r7   c                  :    t         t        t                    S r   r   r   s   r8   rr   z'test_classify_ode_ics.<locals>.<lambda>d  r   r7   rd   c                  :    t         t        t                    S r   r   r   s   r8   rr   z'test_classify_ode_ics.<locals>.<lambda>u  r   r7   c                  :    t         t        t                    S r   r   r   s   r8   rr   z'test_classify_ode_ics.<locals>.<lambda>y  r   r7   c                  :    t         t        t                    S r   r   r   s   r8   rr   z'test_classify_ode_ics.<locals>.<lambda>}  r   r7   c                  :    t         t        t                    S r   r   r   s   r8   rr   z'test_classify_ode_ics.<locals>.<lambda>  r   r7   c                  :    t         t        t                    S r   r   r   s   r8   rr   z'test_classify_ode_ics.<locals>.<lambda>  r   r7   c                  :    t         t        t                    S r   r   r   s   r8   rr   z'test_classify_ode_ics.<locals>.<lambda>  r   r7   c                  :    t         t        t                    S r   r   r   s   r8   rr   z'test_classify_ode_ics.<locals>.<lambda>  r   r7   c                  :    t         t        t                    S r   r   r   s   r8   rr   z'test_classify_ode_ics.<locals>.<lambda>  r   r7   c                  :    t         t        t                    S r   r   r   s   r8   rr   z'test_classify_ode_ics.<locals>.<lambda>  r   r7   c                  :    t         t        t                    S r   r   r   s   r8   rr   z'test_classify_ode_ics.<locals>.<lambda>  r   r7   c                  :    t         t        t                    S r   r   r   s   r8   rr   z'test_classify_ode_ics.<locals>.<lambda>  r   r7   )r0   rW   r   r*   r5   r1   r   subsr   r   r   r   s   @@r8   test_classify_ode_icsr   H  s   	
11a1Q4	B a&C
:>? Q4)C
:>? Q4)C
:>? Q7A,C
:>? Q41,C
:>? Q41,CQqTs# Q4)CQqTs# Q499Q<Q"A
&C
:>? Q499Q<Q"A
&C
:>? Q499Q<Q"A
&C
:>? Q7<<?1%q
)C
:>? adAq!&&q!,a
0C
:>? Q499Q<Q"AaD
)C
:>? Q499Q<Q"AaDIIaL$5$5a$;
<CQqTs# Q499Q<Q"A
&CQqTs# Q499Q<Q"A
&C
:>? Q499Q<Q"A
&C
:>? Q7<<?1%q
)C
:>? adAq!&&q!,a
0C
:>? Q499Q<Q"AaD
)C
:>? Q499Q<Q"AaD
)CQqTs# Q499Q<Q"A
&CQqTs#r7   c                     t        dd      \  } }}}t        dd      \	  }}}}}}	}
}}t        dt              \  }}}}}}t        dt              \  }}}}}}}t        dt              \  }}}t        d	      }t         ||      |      }t         ||      |      }t        |t	        |  ||      z         | ||       ||            z        t        | | ||             | ||       ||            z        f} d
d ||      dfdd ||      dfdd ||      dfdd ||      dfdd ||      dfdd ||      dfdd ||      dfdd ||      dfdid ||       ||      gd | ||       ||             t	        |  ||      z        z  t         ||      |      z    | ||       ||              | ||            z  t         ||      |      z   g ||      d ||      did}!t        |       |!k(  sJ t        | ||      d
z   ||       ||      z  z         t        | ||       ||      z        f}"d
d ||      dfdd ||      dfdd ||      dfdd ||      dfdd ||      dfd ||      z  d ||      dfdd ||      dfd ||      z  d ||      dfdid ||       ||      gd ||      d
z   t         ||      |      z    ||       ||      z  z
   ||        ||      z  t         ||      |      z   g ||      d ||      did}#t        |"      |#k(  sJ t        | | ||             | ||            z   | ||       ||      |      z        t        | | ||             | ||            z   | ||       ||      |      z        f}$ ||       ||      gdd | ||              | ||            z   | ||       ||      |      z  t         ||      |      z    | ||              | ||            z   | ||       ||      |      z  t         ||      |      z   gd ||      dfdd ||      dfdd ||      dfdd ||      dfdd ||      dfdd ||      dfdd ||      dfdd ||      dfdi ||      d ||      did
d}%t        |$      |%k(  sJ t        | ||       ||      dz  z        t        | ||      dz        f}&d
d ||      df ||      dz   d ||      dfdd ||      dfdd ||      dfdd ||      dfdd ||      dfdd ||      dfdd ||      dfdid ||       ||      gd ||        ||      dz  z  t         ||      |      z    ||      dz   t         ||      |      z   g ||      d ||      did}'t        |&      |'k(  sJ t        | ||       ||      z  t        |      d
z  z        t        | ||      d
z  t        |      d
z  z        f}(d
d ||      df ||       t        |      d
z  z  d ||      dfdd ||      dfdd ||      dfdd ||      dfdd ||      dfdd ||      df ||       t        |      d
z  z  d ||      dfdid ||       ||      gd ||        ||      z  t        |      d
z  z  t         ||      |      z    ||      d
z   t        |      d
z  z  t         ||      |      z   g ||      d ||      did})t        |(      |)k(  sJ y )Nz
k, l, m, nT)Integerz"k1, k2, k3, l1, l2, l3, m1, m2, m3zP, Q, R, p, q, rclszP1, P2, P3, Q1, Q2, R1, R2zx, y, ztru   r   r?   type2F)no_of_equation
func_coefftype_of_equationfunc	is_linearr\   rV   rP   type3type4)r   r   r   r\   r   rV   r   r   r   type1)r   r   r   r   r   r   r!   r   )*r   lmnk1k2k3l1l2l3m1m2m3PQRpqrP1P2P3Q1Q2R1R2rW   r   r   r   x1y1eq6sol6eq7sol7eq8sol8eq11sol11eq13sol13s*                                             r8   test_classify_sysoder     s    t4JAq!Q)01U_c)d&BBBBB1x@Aq!Q1!()E8!TBBBBiX.GAq!A	ad1BT!A$q\b#a!f+a!QqTl*+R1QqT71QqT!A$<3G-H
ICAaD!a!QqT1qSTVWXYVZ\]R^`adeghijgkmncoqr!aL!a1q\1q!A$lA1Q4|Q0H]dqT1Q4Lua!adm^C!A$K-G*UVWXUY[\J]-]`abcdebfaDa
 `

AaD'`qtQ'`( -)45aD!QqT13EGD 34'''b!A$'!A$qt)#$bQqT!A$Y&7
8CAaD!a!QqT1qSTVWXYVZ\]R^`adeghijgkmncoqr!aL"QqT'AqtQ<Q!aL"QqT'AqtQ<QR0TipqT1Q4LuadAgX
1Q4QR@S5SVWXYVZ[\]^[_V_5_bcdebfafghijgkakqtQb 5$%aD!QqT1#57D 34'''b"QqT(2ad8#Aad1Q4N23RBqtHR!X<MaPQRSPTUVWXUYZ[n<\5]
^CqT1Q4Lu'1hYr!A$x!A$!a((:adA+>>AaD	"QqT(@RSTUVWXUY[\]^[_abSc@cqtQA *+QqT1q1adA,AqQRtUV<YZ]^`abc`dfg\hjk!aL!a1q\1q!A$lA1Q4|Q)HSTUVSWYZ\]^_\`bcRdxy{D 34'''r!A$qtQw,BqtQw0D !QqT1!ax!QqTSTWX[\^_`a^bdeZfhi!aL!a1q\1q!A$lA1Q4|QAaDRSVW1YadAaD\qteAaD!GmjYZ[\Y]_`Na>aqT1WHz!A$"">$/0tQ!a.@BE 4 E)))r!A$qt)CFAI%&2adAgc!fai.?(@AD !QqT1!uSVQYQRTUVWTXZ[P\^_bcefgheiklamop!aL!a1q\1q!A$lA1Q4|adU3q6ST9_WXZ[\]Z^`aVbde1g!A$!ESTUVSWRWXYZ[X\R\]`ab]cef]fRfqtQSA$'#a&!)+j1q.AARCNOPQdTUWXYZW[]^M_aE 4 E)))r7   c                  F"   t        t        t              j                  t              dt        t              z  z
  t        t              t        d      di      t	        t        t              t        dt        z  dz               k(  sJ t        t        t              j                  t              t        t              z
  t        t              t        d      di      t	        t        t              t        t                    k(  sJ t        t        t              j                  t              t        t              z
  t        t              t        t              j                  t              j                  t        d      di      t	        t        t              t        t                    k(  sJ t        t        t              j                  t        t              t        t              z   t        t              t        d      dt        t              j                  t              j                  t        d      di      t	        t        t              t        t              t        t              z         k(  sJ t        t        t              j                  t              t        t              z
  t        t              z   t        t              j                  t              t        t              z
  t        t              z
  gt        t              t        t              gt        d      dt        d      di      t	        t        t              t        t              t        t              z        t	        t        t              t        t              t        t              z        gk(  sJ t        dz  t        t              dz  z  t        z
  j                  t              } t        | t        t              t        d      di      t	        t        t              t        t        dz
         t        z        t	        t        t              t        t        dz
        t        z        gk(  sJ t        | t        t              t        t              j                  t              j                  t        d      di      t	        t        t              t        t        t        j                  z
         t        z        t	        t        t              t        t        t        j                  z
        t        z        gk(  sJ t        t        t                    t        t        t        t                    z  t        t              dz  z
  t        t              j                  t              z  z
  } t        | t        t              t        d      didd      t	        t        t        t        t                    z  t        t              dz  dz  z   t        dd            k(  sJ t        | t        t              t        d      didd	      t	        t        t        t        t                    z  t        t              dz  dz  z   t        dd            k(  sJ t        t	        t        t              t        t        t              z        gt        t              gt        gt        d      di      t        dik(  sJ t        t	        t        t              t        t        t              z  t         t        t              z  z         gt        t              gt        t         gt        d      dt        t"        dz        di      t        dt         dik(  sJ t        t	        t        t              t        t        t              z  t         t        t              z  z         gt        t              gt        t         gt        d      dt        t              j                  t              j                  t        d      di      t        dt         dik(  sJ t        t	        t        t              t        t        t              z  t         t        t              z  z         gt        t              gt        t         gt        d      di      t         dik(  sJ t%        t        t        t              j                  t              t        t              j                  t        d      t        z
  z  t        d      dt        t              j                  t              j                  t        d      di            t	        t        t              d      t	        t        t              t        dz  d
z  t        dz  z
        hk(  sJ t%        t        t        t              j                  t              t        t              j                  t        d      t        z
  z  t        d      di            t	        t        t              d      t	        t        t              t         t        z  t        dz  d
z  z         hk(  sJ t'        d      \  }}}t	        t        t              ||z  t        |t        z        z  | |z   |t        |t        z        z  | |z   z  dz
  z  z        }t        t	        t        t              j                  t              |t        t              z  dt        t              |z  z
  z        t        t              t        d      |i      |k(  sJ t%        t        t        t              j                  t              t        t              j                  t        d      t        z
  z  t        t              j                  t              j                  t        d      dt        d      di            t	        t        t              d      t	        t        t              t        dz  d
z        hk(  sJ t%        t        t        t              j                  t              t        t              j                  t        d      t        z
  z  t        d      dt        t              j                  t              j                  t        d      di            t	        t        t              d      t	        t        t              t        dz  d
z        hk(  sJ t)        t*        d        t)        t*        d        t'        d      \  }}}t	        t        t              t        t         t        z  z   t,        t        dz  z  z   t.        t        dz  z  z   |t        dz  z  d|z  z  z         g}t        t              g}	t        t         t,        t.        g}
t        d      dt        t              j                  t              j                  t        d      dt        |      j                  |d      dt        |      j                  |d      di}t        d      dt        t              j                  t              j                  t        d      dt1        t        t              j                  t        d      t        |      dt1        t        t              j                  t        d      t        |      di}t        ||	|
|      }t        ||	|
|      }||cxk(  r4t        dt         dt,        |dz  |z  d|z  z  t.        | |z  d
|z  z  ik(  sJ  J t        d      t        d      i}t        t        t              j                  t              t        t              z
  t        t              |      t	        t        t              t        d      t        t              z        k(  sJ t        t              j                  t              j                  t        d      t        t              j                  t              j                  t        d      t        d      t        d      i}t        t        t              j                  t        t              t        t              z   t        t              |      t	        t        t              t        d      t        t              z  t        t              j                  t              j                  t        d      t        t              z  z         k(  sJ y )Nr?   ru   rd   r   rL   F)re   r=   ri   r   T   zK r f0c            
         t        t        t        t              t        t        t              z  t        t        t              z  z         gt        t              gt        t        gt        d      dt        t              di      S )Nr   r?   )	r%   r   r0   rW   r[   r   C2r   r
   r6   r7   r8   rr   z test_solve_ics.<locals>.<lambda>  sZ    y"QqT2c!f9r#a&y3H*I)JQqTFUWY[T\_`ab_cefhijlhmop^qr r7   c            
         t        t        t        t              t	        t
        t        dz  z
              gt        t              gt
        gt        t              j                  t              j                  t        d      di      S )Nru   r   )r%   r   r0   rW   r   r[   r   r   r6   r7   r8   rr   z test_solve_ics.<locals>.<lambda>  s[    y"QqT4QT	?*C)DqtfrdUVWXUYU^U^_`UaUfUfghjkUlnoTpq r7   zEI q L      )r   r0   rW   r   r   r   r   r   r   r   r1   r   Halfr	   r%   r[   r   r
   setr   r*   r5   C3C4r   )r\   Kr   f0solEIr   Lsolsfuncs	constantsics1ics2solved_constants1solved_constants2re   s                   r8   test_solve_icsr     s   !A$))A,1Q4'1AaD!9=
1Q4a!eai!" " "!A$))A,1%qt!A$;r!A$A?OOOO!A$))A,1%qt!A$))A,2C2CAq2I11MNRTUVWXUY[^_`[aRbbbb!A$))Aq/AaD(!A$QqT1	!		!!Q5$ %(*1Q4Q#a&(AB B B1Q499Q<!A$&1-qtyy|ad/BQqT/IJ	
1qt1Q4AaD!,.24QqT3q6#a&=2I2aPQdTWXYTZ[^_`[aTaKb1cd d d Q$qtQw,
	 	 	#B"ad1q	*r!A$	a!eQ0AaD$q1u+a-0/2 2 2 2"ad11!2!21a!8! <="QqT	a!&&j	!C 1tAJ'7'9:B< < < < 
QqTaAaD	kAaD!G+QqTYYq\9	9B"adqT!H;8;=aAaD	kAaDRSGTUI>UW_`acdWe;fg g g"adqT!H;7:<Qs1Q4y[1Q4QR7ST9=TV^_`bcVd:ef f f b1r#a&y)*QqTFRD1Q4)DQOOOb1r#a&y2c!f94561R	
1q!BqD'1#%q"a.1 1 1 b1r#a&y2c!f94561R	
1q!A$))A,##Aq)1-/35q"a.A A A b1r#a&y2c!f94561R1Q4QR)T	Q  
 vadiilAaDIIaOA$56QqT!QqTYYq\EVEVWXZ[E\]^<_`a	AaD!b1qAvzAE1234 4 4vadiilAaDIIaOA$56QqT!HEF	AaD!b1r!tad1f}-./ / / x HAq"
QqT1R4AaC=A27RAaC[1"r'-BQ-F"GH
IC2adiilA!HAaD1H$=>!1Q4QS*UZ]]]] vadiilAaDIIaOA$56QqTYYq\=N=NqQR=STUWXYZW[\]<^_`	AaD!b1qAvz*+, , ,vadiilAaDIIaOA$56QqT!QqTYYq\EVEVWXYZE[\]<^_`	AaD!b1qAvz*+, , , :rs :qrx HB1 qtR"Q$YAqD(2ad72Qq!tVRU^CDEDqTFERR I aD!	!		!!Q	!		!Q	!		!QD aD!	!		!!QQqTYYq!_a#QQqTYYq!_a#Q(D
 "$y$?!$y$? 1 
A
A
AqDFAbDM
QBqD!B$K	6      Q41,C!A$))A,1%qt5AaD!A$s1v+9NNNNQ499Q<Q"AaDIIaL$5$5a$;QqT1Q4
HC!A$))Aq/AaD(!A$C8
1Q41c!fqtyy|00A6s1v==>? ? ?r7   c                     t        d      } t        d      }t        d      }t        d|z  t         | |            z   | |            dk(  sJ t        |t	         | |      |      z  d|z   | |      z  z   t        |      |z  z
   | |            dk(  sJ t        |dz   | |      j	                  ||      z  |t	         | |      |      z  z    | |      z
   | |            dk(  sJ t        t	        |t         | |            z  ||       | |            dk(  sJ t        t	        |t	        |t         | |            z  ||      z  |       | |            dk(  sJ t        t	         | |      ||       ||            dk(  sJ t        t	         | |      ||      t	         ||      |      z   | |            dk(  sJ t        t	         | |      ||      t	         ||      |      z   ||            dk(  sJ t        t	        |t	        |t         | |            z  ||      z  |       ||            dk(  sJ t        t        | | |      z  |       | |            dk(  sJ t        |t        t        | | |      dz  z  ||            z   | |            dk(  sJ t        t        |t        |t         | |            z  ||      z  |       ||            dk(  sJ t        t         | |      ||       ||            dk(  sJ t        t        |t         | |            z  ||       | |            dk(  sJ t        t         | |      ||      t         ||      |      z   ||            dk(  sJ t        t        |t         | |      ||      z  |       | |            dk(  sJ t        |t        t        |t         | |      |      dz  z  ||            z   | |            dk(  sJ y )Nr0   r1   rW   r   r   r?   ru   )r   r   r(   r   r   r   r   )r0   r1   rW   s      r8   test_ode_orderr   =  s   AAsAQqSQqT]AaD)Q...QtAaD!}_qs1Q4x/#a&(:AaDAQFFFQT!A$))Aq/)Ad1Q4mO;adBAaDIQNNNT!C!I+q!,ad3q888T!D3qt9a33Q71>!CCCT!A$1%qt,111T!A$1%d1Q4m3QqT:a???T!A$1%d1Q4m3QqT:a???T!D3qt9a33Q71>!CCC Z!A$*AaD1Q666Qs:a!aiA6771>!CCCZ*Qs1Q4y[!Q"? ?CQqTJaOOOZ!a+QqT2a777Z#ad)Q2AaD9Q>>>Z!a+JqtQ,??1F!KKKZ*QqT1a"8 8!<adCqHHH	#j:adA.111a8
991Q4ADEF F Fr7   c            	         t        t        t        t        z        t	        t        t        z        z   t        t              dk(  sJ t        t        dz  t        t              t        t              z  z   t        t              J t        t        t        z
  t        t        t        t        z        z  z
  t        t              dk(  sJ t        t        t        z  t        t        dz  t        dz  z         z   t        dz  t        t              t        t              z
  z  z   t        t        t        dd      z  z  t        t              dz  z  z  t        t              t        dd      k(  sJ t        t        t        z  t        t        t        z        z  t        t        z  t        t        t        z        z  z
  t        t        t        z        z   t        t              dk(  sJ t        t        t              t        t        t                    dk(  sJ t        t        t              dz  t        t        t                    dk(  sJ t        t        t        z  t        z  t        t              dk(  sJ t        t        t        z  t        z  t        t        t              dk(  sJ t        t        dz  t        t              z  t        t        dz  t        t              dz  z         z  t        t                    J t        t        t        t              dz  t        t        t        t              t              dk(  sJ t        t        t        t              dz  t        t        t              t              J t        t        t        t              dz  t        t        t        t                    J t        t        t        t              dz  t        t        t        t        t                    J t        t        t              t        t              t              J t        t        t               t        z  dt        t        t              t        z        z  z   t        t              t              dk(  sJ t        t        dt        z        t        t        dz        z   t        t              J t        t        dt        z        t        t              z   t        t              dk(  sJ t        t        t        t        z        t        t              dk(  sJ t        dt        dt        z        z  dt        t              z  z   t        t              dk(  sJ t        d      } t        | t        dt        z        z  | t        t              z  z   t        t              dk(  sJ t        t        t              j                  t              t        t              J t        t        t              j                  t               t        z   t        t              J t        t        t              t        t              J t        t        t        t        dz        z   t        t              J t        t        t        z  t              t        k(  sJ t        t        t        z  t              J t!        t"        d	        y )
Nr   ru   r?   r   r   rP   r   ry   c                  .    t        t        t        z        S r4   )r   rW   r   r6   r7   r8   rr   z(test_homogeneous_order.<locals>.<lambda>u  s    015 r7   )r   r   r   rW   r   r   r   r   r   r
   r	   r0   r   r   r   r   r*   r5   )ry   s    r8   test_homogeneous_orderr   W  s   S1XAaC0!Q71<<<QTCF3q6M11a8@@@QUQs1Q3xZ/A6!;;;acDA1$551c!fs1vo8NN	Ax1~	d1gqj	(*+,a14<ROD D DQqSQqS\AaCAaCL83qs8CQJaOOOQqT1ad+q000QqT1Wa1.!333QqSUAq)Q...QqSUAq!,111QT!A$YtAqD1Q47N';;QqTBJJJQq!WaZAaGQ71<<<Qq!WaZAaD!4<<<Qq!WaZAaG4<<<Qq!WaZAqAw7???QqT1Q4+333adU1WqQqT1W~5qtQ?1DDDS1XAqD	11a8@@@S1XA.15:::S1Xq!,111Qs1Q3xZ!CF(2Aq9Q>>>sAQs1Q3xZ!CF(2Aq9Q>>>QqTYYq\1a0888adiil]Q.15===QqT1a(000Q1a4[!Q/777QUA&",,,QT1%---
:56r7   c                      t        dt        z         } t        |       t        |       }}|j	                  t
              r|j	                  t
              rJ y y )Nr?   )r   rW   r   r   rx   r   )r   ir   s      r8   )test_noncircularized_real_imaginary_partsr  x  sA    
 	QqS	Aa5"Q%qAeu..r7   c                  p    dt        t        dz        z   } | t        | t        t        dz              k(  sJ y )Nr?   ru   r   )r   rW   r   )r   s    r8   $test_collect_respecting_exponentialsr    s2     c!A#h,C'3AaC))))r7   c                  "   t        t        t              t              ddik(  sJ t        t        dt        z  t	        d      z         t              dt        dt        z  t	        d      z         t        dt        z  t	        d      z         hdk(  sJ t        t        t              t        t              z  t              ddik(  sJ t        t              t        t        t              z  t        dz  t        t              z  t        dz  t        t              z  t        t        t              z  t        t              h} t        t        t              t        dz  t        z   dz   z  t              d| dk(  sJ t        t        t              t        dz  z  t        t              t        z  z   t        t              z   t              d| dk(  sJ t        t        dt        z        t        t              z  t        dz  t        z   dz   z  t              dt        dt        z        t        t              z  t        dz  t        dt        z        z  t        t              z  t        t              t        dt        z        z  t        dz  t        t              z  t        dt        z        z  t        t        t              z  t        dt        z        z  t        t        dt        z        z  t        t              z  hdk(  sJ t        dt        t              z  t              ddik(  sJ t        t        t              t              ddik(  sJ t        dt        z  t        dz  t        z   dz   z  t              ddt        z  t        dt        z  z  t        dz  dt        z  z  hdk(  sJ t        t        t        z  t              ddik(  sJ t        t        t              t        dt        z  dz         z  t              dt        ddt        z  z         hdk(  sJ t        t        t              t        dz  t        z   dz   z  t              dt        t        t              z  t        t        t              z  t        dz  t        t              z  t        dz  t        t              z  t        t              t        t              hdk(  sJ t        t        t              t        t        t              z   z  t              ddik(  sJ t        t        t              t        t        dt        z        z   z  t              ddik(  sJ t        t        t              t        t              z  t              ddik(  sJ t        t        dz  t        t              z  t        t              z  t        t        t              z  z   t        z   t              dt        dz  t        t              z  t        t              z  t        t        t              t        j                  t        t              t        t              z  t        t              t        t        t              z  t        t              z  t        t        t              z  t        t        t              z  t        t              z  t        t        t              z  t        t              t        t              z  t        dz  t        t              z  t        t              z  hdk(  sJ t        d	t        z  t        t        dz
        z  t              t        t        t        dz
        z  t        t        t        dz
        z  t        t        dz
        t        t        dz
        hdd
k(  sJ t        dt        z  t        z  t              ddt        z  t        dt        z  z  hdk(  sJ t        dt        z  t        dt        z        z  t              ddt        z  t        dt        z        z  hdk(  sJ t        t        t               t        z  t              ddik(  sJ t        t        d	      t              dt        j                  hdk(  sJ t        dt        t              z  t              dt        t              hdk(  sJ t        t        t        t        z        t              dt        t        t        z        hdk(  sJ t        t        t              t              dt        t              t        t              hdk(  sJ t        t        t              t              dt        t              t        t              hdk(  sJ t        ddt        t              z  z   dt        t              z  z   t              dt        j                  t        t              t        t              t        t              hdk(  sJ t        t        dz  t              dt        j                  t        t        dz  hdk(  sJ t        dt        z  t        t              z  t        t               z   t              dt        t        t              z  t        t              t        t               hdk(  sJ t        dt        dt        z        z  t        t              z  t              dt        dt        z        t        t              z  t        t              t        dt        z        z  hdk(  sJ t        t        t        t              z
  t              dt        j                  t        t        t              t        t              hdk(  sJ t        t        dz  dt        z  z   t              dt        j                  t        t        dz  hdk(  sJ t        d	t        z  t        t              z  t              dt        t        t              z  t        t        t              z  t        t              t        t              hdk(  sJ t        t        t        dt        z        z  t              dt        t        dt        z        z  t        t        dt        z        z  t        dt        z        t        dt        z        hdk(  sJ t        t        dz  t        t               z  t              dt        t        t               z  t        dz  t        t               z  t        t               hdk(  sJ t        dt        t               z  t        dz  t        t               z  z
  t              dt        t        t               z  t        dz  t        t               z  t        t               hdk(  sJ t        t        dt        z        t        dz  z   t              dt        j                  t        t        dz  t        dt        z        hdk(  sJ t        t        t        t               z  t              dt        t        t               z  t        t               hdk(  sJ t        t        t        dt        z        z   t              dt        j                  t        t        dt        z        hdk(  sJ t        t        t              t        t               z   t              dt        t              t        t              t        t               hdk(  sJ t        t        t              t              dt        t              hdk(  sJ t        t        j                  t        dt        z        dz  z
  t              dt        j                  t        dt        z        t        dt        z        hdk(  sJ t        t        dt        z        t        j                  t        dt        z        dz  z   z  t              dt        dt        z        t        dt        z        z  t        dt        z        t        dt        z        z  t        dt        z        hdk(  sJ t        dt        z  t        t              z   t        t              z   t              dt        j                  t        t        t              t        t              hdk(  sJ t        t        t              dz  t        dt        z        dz  z
  t              dt        t              t        dt        z        t        t              t        dt        z        hdk(  sJ t        t        t        dz        t              ddik(  sJ t        dt        dz  z  t              ddik(  sJ y )NtestFru   r   T)r  trialsetr?   r   r   )r  r        r   	   r   )r&   r1   rW   r   r   r   r   r   r   r   r   Oner   r   )ss    r8   $test_undetermined_coefficients_matchr    sa   +AaD!4GGG+C!d1g,>B1tAwQqS47]!34	66 6 6 ,CF3q6M1=	  	Q3q61a4A;1SVQs1vXs1vFA+CFAqD1HqL,A1E1%& & &+Aq!tc!fQhQ',8<!/LM M M+AaCQAA& 3qs8CF?AqDQqSM#a&4HAs1Q3xAc!fS1X-qQxAaC/@	#ac(
3q6#
   ,Ac!fHa8VUOKKK+CFA665/III+AFAqD1HqL,A1EAqD!AqD&!Q$q!t)#<=> > >+AqD!4GGG+CF3qsQw<,?CCAaCL>23 3 3+CFAqD1HqL,A1EAc!fHaAh1SV	1SVSVSV$% 	&& & & ,CFAAJ,?C	  +CFAAaCL,A1E	  +CF3q6M1=	  +	1SVCFQs1vX%)1 1a4A;s1v#5q#a&!%%As1vs1vqQxA#a&!CF(3q6/	#a&#a&Q-Ac!fSV!3#5
66 6 6 ,AaCAE
NA>s1q5z\1SQZ<QUSQZHC    ,AqDFA6AqD!AqD&>23 3 3+AqDQqSM1=AqDQqSM?34 4 4+CGAIq9	   ,AaD!4AEE7+, , ,+Bs1vIq9CF8,- - -+C!Ha8C!H:./ / /+CFA6CFCF#345 5 5+CFA6CFCF#345 5 5+A#a&L1SV8,CQGAEE3q63q63q6#BCD D D+AqD!4AEE1ad#345 5 5+AaCAJaR,@!DAc!fHc!fc1"g#>?@ @ @+Ac!A#hJs1v,=qAC!HSVOSVC!H_#EFG G G+AAJ:AEE1c!fc!f#=>? ? ?+AqD1Q3J:AEE1ad#345 5 5+AaCAJ:Ac!fHaAhAA#GHI I I+Ac!A#hJ:s1Q3xZ3qs8S1Xs1Q3x8	:: : : ,AqDaRL!<Ac1"gIq!tCG|S!W#EFG G G+Ac1"gI1S!W,DaHAc1"gIq!tCG|S!W#EFG G G+C1I1,<a@AEE1adC1I#>?@ @ @+Ac1"gIq9Ac1"gIsA2w#789 9 9+AAaCL!<AEE1c!A#h#789 9 9+CFS!W,<a@CFCFCG#<=> > >+CFA6CF8,- - - ,AFFS1XaZ,?CAEE3qs8S1X#>?@ @ @ ,AaC!&&3qs8A:%& 3qs8C!H#4c!A#hs1Q3x6GAaC#
  
 ,AaC#a&L3q6,A1EAEE1c!fc!f#=>? ? ? ,CF1Hs1Q3xz,A1ECFC!Hc!fc!A#h#GHI I I+C1Iq9fe_LLL+A1Iq9fe_LLLr7   c                     ddl m}  t        | t        t        t	        t              t              z   t	        t              z   z  z   t        t	        t              t              z   t	        t              z   dz   }t        |t	        t                    dk(  sJ t        dz  t	        t              dz  z   t	        t              j                  t              z  dt        z  t	        t              z  z
  }t        |t	        t                    dk(  sJ y )Nr   )Aru   )rm   rL   rJ   rC   rk   rQ   rN   r   r   rM   rK   rA   rl   r   )
rm   rL   rB   rH   rO   rQ   rN   rM   rR   r@   )	sympy.abcr  rW   r   r0   r   )r  r\   s     r8   test_issue_4785_22462r    s    	
QD1qM!AaD()	)D1qM	9AaD	@1	DBAaD! &F F F F Q$1q.!A$))A,	&1QqT	1BAaD! &= = = =r7   c                     t        t        d        t        t        t        t
              j                  t              t
        t        t        t
              z  z
  t        t              d      dd ddk(  sJ t        t        d        t        t        t              j                  t              t        t
              d      dd ddk(  sJ y )Nc                      t        t        t        t              j	                  t              t        t        t        t              z  z
  t        t                    S r4   )r   r0   rW   r   r   r6   r7   r8   rr   z!test_issue_4825.<locals>.<lambda>  s.    va1gll1o!Aq'	&A1Q4H r7   Tr   r   r6   )rV   rU   r   c                  t    t        t        t              j                  t              t        t                    S r4   )r   r0   rW   r   r   r6   r7   r8   rr   z!test_issue_4825.<locals>.<lambda>  s    vadiilAaD9 r7   )r*   r5   r   r0   rW   r   r   r6   r7   r8   test_issue_4825r    s    
:HI!QQ!AaG)3QqTEr:; ; ; :9:!		!ad6r:; ; ;r7   c                     ddl m}  t        t        t        z  t
        t        z  z         t        t        t        z  t
        t        z  z         cxk(  rt        t        z  t
        t        z  z   k(  sJ  J t        t
        t        z   z  t        t        z   z  } | t        t
        t        gd      D ]*  \  }}}t        ||t        z   z  |t        z   z        |k(  r*J  y )Nr   )
variationsr   )sympy.utilities.iterablesr  r"   r[   rW   r   r   r   )r  ery   rz   r{   s        r8   'test_constant_renumber_order_issue_5308r    s    4RTBqD[)"Q$A+&
1r!t     	BFR!VAr2rlA. 91a AEAE!23q8889r7   c                     t        d      \  } }}}||z  | |z  ||z  z   g}t        |d         ||z  k(  sJ t        |d   |g      t        |z  k(  sJ t        |d   |gt        g      t        |z  k(  sJ t        |||g      t        |z  t        |z  t        |z  z   gk(  sJ t        |||gt        d            t        |z  t        |z  t
        |z  z   gk(  sJ y )Nze1:3 x yr   )	variables)r  newconstantszC3:5)r   r"   r[   r   r   r   )e1e2rW   r   exprss        r8   test_constant_renumberr   #  s    :&LBAqT2a4"Q$;EU1X&"Q$...U1X!5A===U1X!B4HBqDPPPUq!f5"Q$1r!t9LLLLUq!f76?SXZ[\X\^`ab^beghiei^iWjjjjr7   c            	         t        dd      } t        d      }t        d      }t         ||      j                  |d      | dz   ||      z  z
   ||            }t	        |j
                  D cg c]   }|j                  j                  d      s|" c}      dk(  sJ t        t        t        t              z  t        t        t              z  z   t        t              z  t        t        h      t        t        t              z  t        t              z  k(  sJ t        t        t        t              z  t        t        t              z  z   t        t        t              z  z   t        t        t        h      t        t        t              z  t        t        t              z  z   k(  sJ t        t        t        t        z         t        h      t        t        t              z  k(  sJ t        t        t        z   t         z   t        t         h      t        t        z   k(  sJ t        t        t        z   t#        t        t        dd	f      z   t        h      t        t        z   k(  sJ y c c}w )
Nr   Tr.   r   wr   Cr?   ru   )r   r   r   r   lenfree_symbolsname
startswithr#   r[   r   rW   r   r   r   r   r   r   )r   r   r"  r   r  s        r8   test_issue_5770r(  .  s   sAsAA
11a1a4!9,ad
3C3++Faqvv/@/@/EFG1LLLCFRAY.A6RA
3q6	#a&  3q6	Bs1vI-3q6	9BB<H
3q6	Bs1vI  BFbT*bQi777B
RG,Q666B!aAY!77">"q&HHH Gs   . I!I!c                      t        t        t               t        t              z   t              J t        t        t        t              z
  t        t              J y r4   )r   r   rW   r   r   r6   r7   r8   test_issue_5112_5430r*  =  sA    c!fWuQx/3;;;QQZA.666r7   c                  B     t        d       t        t         fd       y )Nr0   c                  r    t          t              j                  t              dz    t              d      S )Nru   fdsjf)r   rW   r   r0   s   r8   rr   z!test_issue_5095.<locals>.<lambda>D  s$    vadiilAoqtWE r7   )r   r*   r5   r.  s   @r8   test_issue_5095r/  B  s    A
:EFr7   c            
         t        d      } t        t         | t              z         }t        dt        z  d | t              z  z        }t	        t         | t              z  t        dd      z        }t        dt        z  d | t              z  z   d | t              z  dt        z  z   z        }t        dt        dz  z  d | t              dz  z  z        }t        dt        z  d | t              z  z   d | t              z  dt        z  z   z  t        dt        dz  z  d | t              dz  z  z        z         }t        dt        z  d | t              z  t        dz  z   z        }t        |t         | t                    d k(  sJ t        |t         | t                    dk(  sJ t        |t         | t                    d k(  sJ t        |t         | t                    dk(  sJ t        |t         | t                    dk(  sJ t        |t         | t                    dk(  sJ t        |t         | t                    d k(  sJ y )Nr0   r   r   r      ru   r   )	r   r   rW   r   r   r	   r   r   r   )r0   eq1eq2eq3eq4eq5r   r   s           r8   test_homogeneous_functionr7  G  s   A
a!A$h-C
qsQqtVn
C
a!fXa^#
$C
qsQqtV|a!fqsl+
,C
qAv!A$'	"
#C
qsQqtV|a!fqsl+c1QT6AadAgI2F.GG
HC
qsQqtVad]#
$CS!QqT*d222S!QqT*a///S!QqT*d222S!QqT*a///S!QqT*a///S!QqT*a///S!QqT*d222r7   c                     t         dt        z  dt        t              z  z   dz   z  t         dt        z  dt        t              z  z   dz   z  }} | |z  }t        |      t	        |j                               z   }t        |      }|}t        |      }t        t        |            }t        |      }dt        dd      f}	|j                  |t        t                    |	k(  sJ |j                  |t        t                    |	k(  sJ |j                  |t        t                    |	k(  sJ dt        z  t        t              z  }
t        |
      }dt        z  dz   t        z  }t        |      }dt        z  dt        t              z  z   d	z   dt        z  dt        t              z  z   dz   z  }t        |      }dt        z  dt        t              z  z   t        d      z   dt        z  dt        t              z  z   dz   z  }t        |      }|j                  |
t        t                    J |j                  |t        t                    J |j                  |t        t                    J |j                  |t        t                    J y )
Nru   r   r   r1  r	     r   ir?   )r   rW   r0   r   r   expandr'   r   r	   _linear_coeff_matchr   )r   dratr2  obj1r3  obj2r4  obj3r   r5  obj4r6  obj5r   obj6r   obj7s                     r8   test_linear_coeff_matchrE  Y  s+   acAadFlQAaC!AaD&L2$5!6qA
A#C
c(S&
&Cc"D
Cc"D
c#h-Cc"DhsA
C##C1.#555##C1.#555##C1.#555 Q3!*Cc"DQ37A+Cc"DQ31Q4<!acAadFlQ.
/Cc"DQ31Q4<$q'!AaC!AaD&L1$4
5Cc"D##C1.666##C1.666##C1.666##C1.666r7   c            	          t        t              dz   } t        t        t	        t        t              | z   | t
        z  z   t        g            j                        dk(  sJ y )Nru   )r   r[   r$  r   r#   rW   gens)r{   s    r8   test_constantsimp_take_problemrH  y  sG    B!AtLR1qs!2RD9:??@AEEEr7   c                     t        d      } t        t              j                  t              t        t              z
  }t	        t        t              | | t        z  z   | t        dz  z  dz  z   | t        dz  z  dz  z   | t        dz  z  dz  z   | t        dz  z  dz  z   t        t        dz        z         }t        |d	
      |k(  sJ t        ||d      d   sJ t        t              j                  t              t        t        t              z  z
  }t	        t        t              | t        dz  z  dz  | t        dz  z  dz  z   | z   t        t        dz        z         }t        |d	
      |k(  sJ t        ||d      d   sJ t        t              j                  t              t        t        t        t              z        z
  }t	        t        t              t        dz
  dz  dt        d      z   z  t        d      z  t        dz
  t        d      z  z   dz   t        t        dz        z         }t        |d	t        d      did      |k(  sJ y )Nr[   ru   r   r   r   r   r   x   rQ   r<   r?   )rV   r   r  )r=   re   r   )
r   r0   rW   r   r   r   r   r    r   r   )r[   r\   r   s      r8   test_seriesrK  ~  s   	B	
11!	B
QqT219r!Q$wqy(2ad7194r!Q$wrzAq!tGCKAqD'" #C"-.#555r3a(+++	
11!A$	B
QqT2ad719r!Q$wqy(2-!Q$7
8C"-.#555r3a(+++	
11AadF	#B
QqTAEA:q#a&y)#a&0AE3q6>AAE!Q$O
PC"-AaD!9BcIIIr7   c            	      
   t        d      \  } }t        t              j                  t        d      t        t        t              z  z
  }t	        |      dk(  sJ t        t        t              |t        dz  dz  dz   z  | t        z  t        dz  dz  dz   z  z   t        t        dz        z         }t        |d	      |k(  sJ t        ||      d
k(  sJ t        t        t              |t        dz   dz  dz  t        dz   dz  dz  z   t        dz   dz  z
  dz   z  | t        t        dz   dz  dz  z   t        dz   dz  dz  z
  t        d      z   z  z   t        t        dz        z         }t        |dd      |k(  sJ t        t        t              |t        z  | z   t        t        dz        z         }t        |dd      |k(  sJ t        ||      d
k(  sJ dt        dz  z   t        t              j                  t        d      z  dt        z  t        t              j                  t              z  z   dt        t              z  z
  }t	        |      dk(  sJ t        t        t              |t        dz   dz  t        dz  z   dz   z  | t        z  z   t        t        dz        z         }t        |d	      |k(  sJ t        ||      d
k(  sJ t        t              j                  t        d      t        t        t              j                  t              z  z   t        t              z   }t	        |      dk(  sJ t        t        t              |t        dz  dz  t        dz  dz  z
  dz   z  | t        z  t        dz   dz  dz   z  z   t        t        dz        z         }t        |      |k(  sJ t        t              j                  t        d      t        t              j                  t              z   t        t        t              z  z
  }t	        |      dk(  sJ t        t        t              |t        dz   dz  t        dz  dz  z   dz   z  | t        z  t        dz  dz  t        dz  dz  z   t        dz  z
  dz   z  z   t        t        dz        z         }t        |      |k(  sJ t        t              j                  t        d      t        t        t              z  z   }t	        |      dk(  sJ t        t        t              |t        dz  dz  t        dz  dz  z
  dz   z  | t        z  t        dz   dz  dz   z  z   t        t        dz        z         }t        |dd      |k(  sJ t        ||      d
k(  sJ y )NzC1 C2ru   )2nd_linear_airyr   r   r   r?   r  r   r<   Tr   r   r   )r=   x0)r=   r   )rm   2nd_hypergeometric2nd_hypergeometric_Integralr   )rm   r   r  )r   r      r1  )
r   r0   rW   r   r   r   r   r   r    r   )r[   r   r\   r   s       r8   test_2nd_power_series_ordinaryrS    s   WFB	
11a1QqT6	!BOOOO
QqT2q!tAvz?RT1a47Q;%77!AqD'A
BC"673>>>r39,,,
QqT2Az!|q1uqjl2a!eaZ?!CD
a1q51*R-1q51*Q,.15
67
AqD' C "62>#EEE QqT2a4"9qAw&
'C"6!<CCCr39,,,
ad(QqTYYq!_	%!QqTYYq\(:	:AadF	BB  ! ! ! ! QqT21uQwA~)*RT1AadG;
<C"673>>>r39,,,	
11a1adiil+	+ad	2BKKKK
QqT2q!tAv1Q*+bdQTE!GaK.@@1QT7J
KC": 
11a1Q499Q<	'!AaD&	0B====
QqT21uRx!Q$q&(1,-dAqDGad1f$qs*Q./023AqD': ;C": 
11a1QqT6	!BOOOO
QqT2q!tCx!Q$q&(1,-1q!teBhl0CCa1gM
NC"6!<CCCr39,,,r7   c                     t        d      \  } }}t        dz  t        t              j                  t        d      z  dt        z  t        t              j                  t              z  z
  dt        z  dz   t        t              z  z   }t	        t        t              | t        dz  z  dt        dz  z  dz  dt        dz  z  z   dt        z  z
  dz   z  t        t        dz        z         }t        |d	
      |k(  sJ t        ||      dk(  sJ dt        dz  z  t        t              j                  t        d      z  dt        dz  z  t        t              j                  t              z  z
  dt        dz  z  dz   t        t              z  z   }t	        t        t              | t        t              z  t        dz  dz  t        dz  dz  z   t        dz  dz  z   t        z   dz   z  t        t        dz        z         }t        |d	
      |k(  sJ t        ||      dk(  sJ t        dz  t        t              j                  t        d      z  t        dz  t        t              j                  t              z  z
  t        dz  dz
  t        t              z  z   }t	        t        t              | t        dz   dz  dt        dz  z  dz  z
  t        dz  dz  z
  t        dz  dz  z   t        dz  z   dz   z  t        z  |t        dz  z  t        dz   dz  t        dz  dz  z   t        dz  z   dz   z  z   t        t        dz        z         }t        |      |k(  sJ t        ||      dk(  sJ t        dz  t        t              j                  t        d      z  t        t        t              j                  t              z  z   t        dz  t        dd      z
  t        t              z  z   }t	        t        t              | t        dz  dz  t        dz  dz  z
  dz   z  t        t              z  |t        t              z  t        dz  dz  t        dz  dz  z
  dz   z  z   t        t        dz        z         }t        |d	
      |k(  sJ t        ||      dk(  sJ t        t        t              j                  t        d      z  t        t              j                  t              z   |t        z  t        t              z  z
  }t	        t        t              | |dz  t        dz  z  dz  |t        dz  z  dz  z   dz   z  t        t        dz        z         }t        |t        t              d	
      |k(  sJ t        ||      dk(  sJ t        t              j                  t        d      dt        z
  t        z  t        t              j                  t              z  z   |t        z  t        t              z  z   }t	        t        t              | | t        dz  z  |dz
  z  |dz
  z  |dz
  z  |dz
  z  dz  |t        dz  z  |dz
  z  |dz
  z  |dz
  z  dz  z   |t        dz  z  |dz
  z  |dz
  z  dz  z
  |t        dz  z  |dz
  z  dz  z   |t        z  z
  dz   z  t        t        dz        z         }t        |t        t              d	
      |k(  sJ t        ||      dk(  sJ y )NzC1 C2 aru   r   r   ir	  r?   r   2nd_power_series_regularr<   rN  r  r   i  r   P   <      rJ  @   i@8  i@  $   )
r   rW   r0   r   r   r   r   r    r   r	   )r[   r   ry   r\   r   s        r8   test_2nd_power_series_regularr[    s   	"IBA	
AqtyyA	!A#qtyy|"4	4!a1~	EB
QqT2ad7C1HQJ1a4/!A#59:Qq!tWD
EC"56#===r39,,,	
1a411a	!1QT61Q499Q<#8	8AadF	=
Q4< 
B
QqT2d1g:q!tBwAa/!Q$q&81<q@AAadGK
LC"56#===r39,,,	
AqtyyA	!Q$!		!"5	5	1q!A$9 
B
QqT21uSy1QT6"9,q!tAv51Q>1DqHI!Kq!tGadU2X1R'!A#-12356q!tW= >C":r39,,,	
AqtyyA	!QqTYYq\"2	2adXa^6KQqT5Q	QB
QqT2q!tBwAa'!+,T!W4
47
AqDHq!tAv%)*+-.q!tW5 6C"56#===r39,,,	
1Q499Q?	QqTYYq\	)AaC!H	4B
QqT2q!tAqDy|a1fQh.23a1g=
>C"ad!;<CCCr39,,,	
11aQUAIqtyy|3	3qsAaDj	@B
QqT2r!Q$wAA.A6A>uD	!Q$AAA&s*+-.q!tVQU^QU-CB-FG	!Q$AqQ3!"# $&'1g. /C "ad!;<CCCr39,,,r7   c                      t        d      } t        d      }t        t        d       t        d      |       z        |k(  sJ y )Nr   r   r[   r   )r   r$   r   )r   r   s     r8   test_issue_15056r]    s;    sA	B!&,$1B"BCrIIIr7   c            	         t          t        z  dt        z  t        t              z  z
  t        t              z
  t        t        t              t              z   } t        t        t        dz  t        z         z  t        t        dz  t        z         t        t         t        t        dz   t        z
        z  t        z  t              z  z   }t        | |      dk(  sJ t         t        t        t         t        z        z  z   }t        t        t        t              z  t              t        t              j                  t        d      z   } t        | |t        t                    dk(  sJ y )Nru   rN  )
r[   rW   r0   r   r   r   r   r    r   r   r\   r   s     r8   test_issue_15913r`    s    
Q1QqT	AaD	 :adA#6	6B
SA]
SA]8BsAqD519~4Ea4G+KK
KCr39,,,
r#qbd)|
C	AadFA	11a	0Br3!%222r7   c                  H    t        t        d        t        t        d        y )Nc                      t        t        t              j                  t              t	        t              j                  t              gt        t              t	        t              t        t              g      S r4   )r   r0   rW   r   r1   r2   r6   r7   r8   rr   z"test_issue_16146.<locals>.<lambda>  s@    vqtyy|QqTYYq\&BQqT1Q4QRSTQUDVW r7   c                      t        t        t              j                  t              t	        t              j                  t              gt        t              g      S r4   )r   r0   rW   r   r1   r6   r7   r8   rr   z"test_issue_16146.<locals>.<lambda>  s0    vqtyy|QqTYYq\&BQqTFK r7   )r*   r5   r6   r7   r8   test_issue_16146rd    s    
:WX
:KLr7   c                  R   t        t              dz
  t        t              j                  t              z  } t        t        t              t              }t        |       |k(  sJ t        t              t        t              z
  t        t              j                  t        d      z  } t        t        t              t        t        t        z  z         t        t        t              t        t                    h}t        t        |             |k(  sJ t        t              dz  dt        t              z  z
  dz   t        t              j                  t        d      z  } t        t        t              t        t        t        z  z   t        t        dz  z  z         }t        |       |k(  sJ y )Nru   r?   r   )
r0   rW   r   r   r[   r   r   r   r   r   r_  s     r8   &test_dsolve_remove_redundant_solutionsrf     s   
A$q&!A$))A,	B
QqT2,C":
A$s1v+!		!Q	(BadBAI1Q4Q 0
1Cvbz?c!!!
A$'!AaD&.
AaDIIaO	+B
QqT219r!Q$w&
'C":r7   c                  .   t        dt              \  } }t        d      }t        t	         | |      |       | |       ||      z        t        t	         ||      |       | |       ||      z        g}t        |      }t        ||      dddgfk(  sJ y )NzA Br   r   Tr   )r   r   r   r   r   r   r    )r  Br   r\   r   s        r8   test_issue_13060ri    s    5h'DAqsA
Z!a !A$qt)
,bAaD!1Dad1Q4i.P	QB
*Cr3D1a&>111r7   c                     t        d      \  } }t        d      }d| z  t        | dz
        z   ||      z  d|dz  z  | dz
  z  | d|z  | dz
  z  z
  dz  z   t         ||      |df      z  z   }t	        |dd	      }|d
   d   dk(  sJ t        d      \  }}t        |d
      }t        |      t        t        d            k(  sJ y )NzN srhog      @r?   r   ru   Tr;   r   r   termsr   zC1,C2r<   a  
        Eq(rho(s), C2*(1 - 4.0*s**4*sqrt(N - 1.0)/N + 0.666666666666667*s**4/N
        - 2.66666666666667*s**3*sqrt(N - 1.0)/N - 2.0*s**2*sqrt(N - 1.0)/N +
        9.33333333333333*s**4*sqrt(N - 1.0)/N**2 - 0.666666666666667*s**4/N**2
        + 2.66666666666667*s**3*sqrt(N - 1.0)/N**2 -
        5.33333333333333*s**4*sqrt(N - 1.0)/N**3) + C1*s*(1.0 -
        1.33333333333333*s**3*sqrt(N - 1.0)/N - 0.666666666666667*s**2*sqrt(N
        - 1.0)/N + 1.33333333333333*s**3*sqrt(N - 1.0)/N**2) + O(s**6)))r   r   r   r   r   r   r-   str)Nr  rk  eqnmatchr[   r   r   s           r8   test_issue_22523rq    s    5>DAq
5/C a%QU
CF
"a1fa!enAaCQK!7K&K
SVaV
$&% %C4e4E,-g6!;;;WFB
6
7Cc?j .K *L M M M Mr7   c                  R   t        dt              \  } }t        dd      \  }}}}}d\  }}}}t        |t         | |      |d      z  | | |      z  z   | ||       | |      z
  z  z
  d      }t        |t         ||      |d      z  | ||       | |      z
  z  z   d      }||g}	t	        |	 | |       ||      g | d      d | |      j                         j                  |d      d |d      d	 ||      j                         j                  |d      di
      \  }
}|
t         | |      t        dt        d      z
        t        d      dt        d      z  z   z  t        t        d      |z  t        dt        d      z
        z  dz        z  dz  dt        d      z  t        d      z   t        t        d      dz         z  t        t        d      |z  t        t        d      dz         z  dz        z  dz  z         k(  sJ |t         ||      t        d      dz   t        t        d      |z  t        dt        d      z
        z  dz        z  dz  dt        d      z
  t        t        d      |z  t        t        d      dz         z  dz        z  dz  z         k(  sJ y )Nzx1, x2r   zt k1 k2 m1 m2Tr.   )r?   r?   r?   r?   ru   r   r?   rd   r   r   
   rX  )r   r   r   r   r   r   r   r   )r   x2r   r   r   r   r   r2  r3  eqsx1solx2sols               r8   test_issue_22604ry  -  s   XX.FB=Ar2r2NBB
RRUAq!!Br!uH,r2a52a5=/AA1
EC
RRUAq!!B11$66
:C*CC"Q%A1aAARARSTUVAWXY8:1aAARARSTUVAWXY8[ \NUEBr!ud1tAw;/bAd1gI1EFs4PQ7ST9UYZ[^bcd^eZeUfKfghKhGiijll47
T"X-tDGaK/@@T!WQYtTXYZT[^_T_O`E`abEbAccdffg h h h hBr!utAw{CQ	$q47{:K0KA0M,NNrQUVY]^_Y`U`befjklfmnofoptuyz{u|  @A  vA  qB  gB  CD  gD  cE  UE  FH  UH  H  I  I  I  Ir7   c            	         t        t        t              j                  t              dt        t              dz  z  dt        t              z  dz  z
        t        t        t              j                  t              dt        t              dz  z  dt        t              z  dz  z
        fD ]  } dt	        | t        t                    v rJ  y )	Niru   i  i   r   r   r1  rC   )r   r0   rW   r   r   )des    r8   test_issue_22462r|  ;  s    qtyy|S1q[3qt8D=89qtyy|R!aZ!AaD&(235 5 l2qt44445r7   c                      t        d      } t        d      }t        t        | z    ||       j	                         j	                         z   ||       j	                         z   d      }t        |      dk(  sJ y )NrW   r   r   )rt   nth_order_reducibler   r   )r   r   r   r   r   r   rW   r   r\   s      r8   test_issue_23425r  B  si    AA	QTE!A$))+""$$qtyy{2A	6B	;; ; ;r7   ztoo slow for @slowc                      t        d      } t        d      } ||       dz   ||       j                  | d      z  dz   }t        | ||             J y )NrW   r   r   ru   1   )r   r   r   r   r  s      r8   test_issue_25820r  K  sP    sAA	
1q11a	 2	%B"ad'''r7   N)wsympy.core.functionr   r   r   r   sympy.core.numbersr   r   r	   r
   sympy.core.relationalr   sympy.core.singletonr   sympy.core.symbolr   r   $sympy.functions.elementary.complexesr   r   &sympy.functions.elementary.exponentialr   r   %sympy.functions.elementary.hyperbolicr   (sympy.functions.elementary.miscellaneousr   (sympy.functions.elementary.trigonometricr   r   r   r   sympy.integrals.integralsr   sympy.polys.polytoolsr   sympy.series.orderr   sympy.simplify.radsimpr   sympy.solvers.oder   r   r   sympy.solvers.ode.subscheckr    sympy.solvers.ode.oder!   r"   r#   r$   r%    sympy.solvers.ode.nonhomogeneousr&   sympy.solvers.ode.singler'   sympy.solvers.deutilsr(   sympy.testing.pytestr)   r*   r+   r,   sympy.utilities.miscr-   C0r[   r   r   r   C5C6C7C8C9C10urW   r   r   r0   r1   r2   r9   rb   rg   r}   r   r   r   r   r   r   r  r  r  r  r  r  r   r(  r*  r/  r7  rE  rH  rK  rS  r[  r]  r`  rd  rf  ri  rq  ry  r|  r  r  r6   r7   r8   <module>r     s   B B 3 3 $ " / 9 = 7 9 K K . &   *  4H H N 7 + : : + /6g.> +BBBBBW4(
1aSMSMSM%
#3L8 D? D?N\~i$V,*^Y?vF47B / /*lM^=,;9kI7
G
3$7@F
J( /- /-d$-NJ3M
2M,I5; ( (r7   