
    g|                         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             ZvdCS )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                  ~    t          t                    5  t          d            d d d            d S # 1 swxY w Y   d S N)r*   
ValueErrorr$        \/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/solvers/ode/tests/test_ode.pytest_get_numbered_constantsr9   0   s    	
		 % %t$$$% % % % % % % % % % % % % % % % % %s   266c                  L	   t          t                                        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 d S )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   sI   	
11BBU###F &'D	q	!	BEFD
(-


"1
%C$b1rHQNN/B&C&C $b1rllR!b\\ 	AaDD" 	*2addB<<	
 	0AaDD" 	R!b\\ 	3BqttRLL 	!"QqTT2,, 	b1rll 	r!A$$Xa^^(;<< 	R!b\\ 	bhq!nnx2&FAaDD!Q!QSUVV 	R!b\\ 	3BqttRLL 	<RAXVXY\V\_bdefgdhdhijdj^kMlMlHl=m=m  	BqttRLL!" !!b!A$$Z!8!8"x1~~:MNN=?!b\\1Q44$"-  H. X"6"""b1rll222222r7   c            	      8   t          t                    5  t          t          t                                        t                    t          t          t                              z
  t          d          di           d d d            d S # 1 swxY w Y   d S )Nr?   ics)r*   NotImplementedErrorr   r0   rW   r   r   r6   r7   r8   test_dsolve_icsrg   [   s    	#	$	$ 8 8qttyy||d1Q44jj(qttAh77778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8s   A-BBBc                     t           t          t                                         t                     z  t          t                     z   t          d          } t          dd          }t          d          }g d}g d}t	          |                                           |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         	                    t                    rJ | d         	                    t                    rJ | d         	                    t                    rJ | d         	                    t                    rJ | d         	                    t                    rJ | d         	                    t                    rJ | d         	                    t                    sJ | d         	                    t                    sJ | d         	                    t                    sJ | d         	                    t                    sJ | d         	                    t                    sJ t	          |                                          |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         k    sJ | d         |d         k    sJ | d         |d         k    sJ |d         	                    t                    rJ |d         	                    t                    rJ |d         	                    t                    rJ |d         	                    t                    rJ |d         	                    t                    rJ |d         	                    t                    rJ |d         	                    t                    sJ |d         	                    t                    sJ |d         	                    t                    sJ |d         	                    t                    sJ |d         	                    t                    sJ t	          |                                          |k    sJ t          t          fd           t          t          fd           t          t          t                                         t                     dt          t                     dz  z  z
  d          d	         t          t          t                                         t                     dt          t                     dz  z  z
  d	          k    sJ t          t          t                     t          t                                         t                     z   t          t                                         t                     z   dz   t          t                     d          t          t          t                     t          t          t          t                                         t                      dz
  t          t          dt                               z  t                     z   t          t          dt                                z            k    sJ d S )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   s   	
1Q4499Q<<!A$$	BrAr...Ar'''A	+ 	+ 	+D' ' 'M !&&((t####W:2qtt,,,,,,V91Q44A&&&&"6"""b1r!tnn4444Y<<''''[>\))))~!!(+++++~!!(+++++-.228<<<<<;<@@JJJJJ;<@@JJJJJ""8,,,,,"#''11111!"&&x00000@AEEhOOOOO@AEEhOOOOO!"&&x00000!&&((t####W:2qtt,,,,,,V91Q44A&&&&"6E222b1r!tnnDDDDY<<''''[>\))))[>Q{^++++78	
456 6 6 678	
456 6 6 6~!!(+++++~!!(+++++-.228<<<<<;<@@JJJJJ;<@@JJJJJ""8,,,,,"#''11111!"&&x00000@AEEhOOOOO@AEEhOOOOO!"&&x00000!&&((},,,,
:>>>>???
:;;;;<<<!A$$))A,,1Q447*777?qttyy||a!ai'f5556 6 6 6!A$$11%AA6:AaDD,. . .
1Q44"x#a&&++a..1!4HQNN##!$%&( ( (),hq!nn_)=)=> 	? 	?? ? ? ? ? ?r7   c            	         t          t          t                                        t          d          t          t                              dk    sJ t          t          t                    t          t                              dk    sJ t          t	          t          t                                        t                    d          t          t                              dk    sJ t          t          t                                        t                    dz  t          t                              dk    sJ t          t	          t          t                                        t                    t          t                    z   t                    t          t                              } t          t          t                                        t                    t          t                    z  t          t                    t          t                    z  z   t          t          t                    z  z
  t          t                              }t          t          t                                        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                                        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                                        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                                        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                                        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                                        t                    z  d          t          t                              dk    sJ t          t	          dt          t                    dz  z  t          t                                        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                                        t                    d          t          t                    d                                                    g dk    sJ t          dt          z  t          t                    z  t          t                                        t                    z  d	t          z   t          t                    dz  z  z   t          t                    z
  t          t                    dd          } t          |                                           g dk    sJ t          t          t                                        t                    t          t          t                    t          z
            z
  t          t                              } | dk    sJ d S )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                                        t                                        t                    z   t          t          t                              S r4   )r   rW   r0   yr   r6   r7   r8   rr   z#test_classify_ode.<locals>.<lambda>  sI    |A!QQ0D0D	1 1 -aGG    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      sq   !		!Q1..	
	
 	
 	
 	
 !add##'RRRRR1Q4499Q<<++QqTT22 7= = = = =& !		!a1.. 3> > > > >( 	R!		!qtt+Q//166AQqTTYYq\\!A$$&1add2QqttV;QqTTBBAQqTTYYq\\!A$$&1add2QqttV;QqTTBBA F F F F F  	G 	G 	G 	G 	G  	G 	G 	G 	G 	G 	!AaDD11Q!a/#a&&8!A$$ 
NN N N N $Qqttyy||^addAg-!Q61r7BAaDDIIJ J J J
:      	sA!		!a!fqs1Q44x&781QqTT61QqTT6	!AaDDD < addiillNAaddFQqS1X$5679:;<=aDDB B	55 5 5 5OC$ QqTTAXq))D1qMM9::cAAAAQqTTAXq))D1qMM91Q44!# # #&)* * * * 1QT6!A$$))A,,.22AaDD99	66 6 6 6 1QqTT1W9QqTTYYq\\1155qtt<<	    4!a==1Q4472A66!==)* * * *l2addA;;!4@@@$GGGGG ,r!A$$))A,,22AaDDtDDDIIKKLLEEEF F F FQqS1Xaddiill*a!eQqTT1W_<s1vvEqttRV]hiiiA!&&((ggggggg 	QqTTYYq\\C!qMM11Q4488A       r7   c                  ,    t          t                                        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                                        t                                        t          d          dit          t           fd	           t          t                                        t                                        t          t                    dit          t           fd
           t          t                                        t                                        t          d          dit          t           fd           t          t          t                                        t                                        t          d          dit          t           fd           t          t          t                    t          t                                        t          d          dit          t           fd           t          t                                        t                                        t          d          t          t                    it          t           fd           t          t                                        t                                        t          d          t          t                                        t                                        t          d          it           t          t                               t          t                                        t                                        t          d          dit           t          t                               t          t                                        t                                        t          t                    dit          t           fd           t          t                                        t                                        t          t                    dit          t           fd           t          t          t                                        t                                        t          t                    dit          t           fd           t          t          t                    t          t                                        t          t                    dit          t           fd           t          t                                        t                                        t          t                    t          t                    it          t           fd           t          t                                        t                                        t          d          t          d          it           t          t                               t          t                                        t                                        t          t                    dit           t          t                               d S )Nr?   c                  L    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                  L    t           t          t                              S r   r   r   s   r8   rr   z'test_classify_ode_ics.<locals>.<lambda>X  r   r7   c                  L    t           t          t                              S r   r   r   s   r8   rr   z'test_classify_ode_ics.<locals>.<lambda>\  r   r7   c                  L    t           t          t                              S r   r   r   s   r8   rr   z'test_classify_ode_ics.<locals>.<lambda>`  r   r7   c                  L    t           t          t                              S r   r   r   s   r8   rr   z'test_classify_ode_ics.<locals>.<lambda>d  r   r7   rd   c                  L    t           t          t                              S r   r   r   s   r8   rr   z'test_classify_ode_ics.<locals>.<lambda>u  r   r7   c                  L    t           t          t                              S r   r   r   s   r8   rr   z'test_classify_ode_ics.<locals>.<lambda>y  r   r7   c                  L    t           t          t                              S r   r   r   s   r8   rr   z'test_classify_ode_ics.<locals>.<lambda>}  r   r7   c                  L    t           t          t                              S r   r   r   s   r8   rr   z'test_classify_ode_ics.<locals>.<lambda>  r   r7   c                  L    t           t          t                              S r   r   r   s   r8   rr   z'test_classify_ode_ics.<locals>.<lambda>  r   r7   c                  L    t           t          t                              S r   r   r   s   r8   rr   z'test_classify_ode_ics.<locals>.<lambda>  r   r7   c                  L    t           t          t                              S r   r   r   s   r8   rr   z'test_classify_ode_ics.<locals>.<lambda>  r   r7   c                  L    t           t          t                              S r   r   r   s   r8   rr   z'test_classify_ode_ics.<locals>.<lambda>  r   r7   c                  L    t           t          t                              S r   r   r   s   r8   rr   z'test_classify_ode_ics.<locals>.<lambda>  r   r7   c                  L    t           t          t                              S r   r   r   s   r8   rr   z'test_classify_ode_ics.<locals>.<lambda>  r   r7   c                  L    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1Q44	B a&C
:>>>>>??? Q44)C
:>>>>>??? Q44)C
:>>>>>??? Q77A,C
:>>>>>??? Q441,C
:>>>>>??? Q441,CQqTTs#### Q44)CQqTTs#### Q4499Q<<Q""A
&C
:>>>>>??? Q4499Q<<Q""A
&C
:>>>>>??? Q4499Q<<Q""A
&C
:>>>>>??? Q77<<??1%%q
)C
:>>>>>??? addAq!!&&q!,,a
0C
:>>>>>??? Q4499Q<<Q""AaDD
)C
:>>>>>??? Q4499Q<<Q""AaDDIIaLL$5$5a$;$;
<CQqTTs#### Q4499Q<<Q""A
&CQqTTs#### Q4499Q<<Q""A
&C
:>>>>>??? Q4499Q<<Q""A
&C
:>>>>>??? Q77<<??1%%q
)C
:>>>>>??? addAq!!&&q!,,a
0C
:>>>>>??? Q4499Q<<Q""AaDD
)C
:>>>>>??? Q4499Q<<Q""AaDD
)CQqTTs#### Q4499Q<<Q""A
&CQqTTs######r7   c                  h   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 d S )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444JAq!Q)01U_c)d)d)d&BBBBB1x@@@Aq!Q1!()E8!T!T!TBBBBiX...GAq!A	aadd1BT!!A$$q\\b#a!f++aa!QQqTTll*++R11QQqTT7711QQqTT!!A$$<<3G-H-H
ICAAaDD!a!QQqTT1qSTVWVWXYVZVZ\]R^`adeghghijgkgkmncoqr!aL!a1q\1q!!A$$lA11Q44|Q0H]dQqTT11Q44Luaa!aaddmm^C!!A$$KK-G*UVUVWXUYUY[\J]J]-]`a`abcbcdebfbfAaDDa
 a
 `

!AAaDD''`qqttQ''`( -)45AaDD!QQqTT13EG GD 34''''b!!A$$'!!A$$qqtt)#$$bQQqTT!!A$$Y&7&7
8CAAaDD!a!QQqTT1qSTVWVWXYVZVZ\]R^`adeghghijgkgkmncoqr!aL"QQqTT'AqqttQ<Q!aL"QQqTT'AqqttQ<QR0TipQqTT11Q44LuaaddAgX
11Q44QR@S@S5SVWVWXYVZVZ[\[\]^[_[_V_5_bcbcdebfbfafghghijgkgkakqqttQb 5$%AaDD!QQqTT1#57 7D 34''''b""QQqTT((22aadd88#AAaadd11Q44NN233RBBqqttHHRR!XX<MaaPQPQRSPTPTUVUVWXUYUYZ[nn<\5]5]
^CQqTT11Q44Lu'b1hhYrr!!A$$xx!!A$$!a(((:aaddA+>+>>AAaDD	""QQqTT((@RSTSTUVUVWXUYUY[\[\]^[_[_abScSc@cqqttQA *+QQqTT1q1aaddA,AqqQRttUV<YZ]^`a`abc`d`dfg\hjk!aL!a1q\1q!!A$$lA11Q44|Q)HSTSTUVSWSWYZ\]\]^_\`\`bcRdxy{ {D 34''''r!!A$$qqttQw,BqqttQw0D !QQqTT1!ax!QQqTTSTWX[\^_^_`a^b^bdeZfhi!aL!a1q\1q!!A$$lA11Q44|QAAaDDRSVW1YaaddAAaDD\qqtteAAaDD!GmjYZYZ[\Y]Y]_`NaNa>aQqTT1WHz!!A$$""">$/0qttQ!a.@B BE 4  E))))r!!A$$qqtt)CFFAI%&&2aaddAgc!ffai.?(@(@AD !QQqTT1!uSVVQYQRTUTUVWTXTXZ[P\^_bcefefgheieiklamop!aL!a1q\1q!!A$$lA11Q44|aaddU3q66ST9_WXZ[Z[\]Z^Z^`aVbde1g!!A$$!ESTSTUVSWSWRWXYXYZ[X\X\R\]`ab]c]cef]fRfqqttQS!A$$'#a&&!)+j1q.A.AARCNOaPQddTUWXWXYZW[W[]^M_a aE 4  E))))))r7   c                  d,   t          t          t                                        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                                        t                    t          t                    z
  t          t                    t          d          di          t	          t          t                    t          t                              k    sJ t          t          t                                        t                    t          t                    z
  t          t                    t          t                                        t                                        t          d          di          t	          t          t                    t          t                              k    sJ t          t          t                                        t          t                    t          t                    z   t          t                    t          d          dt          t                                        t                                        t          d          di          t	          t          t                    t          t                    t          t                    z             k    sJ t          t          t                                        t                    t          t                    z
  t          t                    z   t          t                                        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
                      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                                        t                                        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                                        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                                        t                                        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                                        t                    t          t                                        t          d          t          z
  z  t          d          dt          t                                        t                                        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                                        t                    t          t                                        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                                        t                    |t          t                    z  dt          t                    |z  z
  z            t          t                    t          d          |i          |k    sJ t%          t          t          t                                        t                    t          t                                        t          d          t          z
  z  t          t                                        t                                        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                                        t                    t          t                                        t          d          t          z
  z  t          d          dt          t                                        t                                        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                                        t                                        t          d          dt          |                              |d          dt          |                              |d          di}t          d          dt          t                                        t                                        t          d          dt1          t          t                                        t          d          t          |          dt1          t          t                                        t          d          t          |          di}t          ||	|
|          }t          ||	|
|          }||cxk    r8t          dt           dt,          |dz  |z  d|z  z  t.          | |z  d
|z  z  ik    sn J t          d          t          d          i}t          t          t                                        t                    t          t                    z
  t          t                    |          t	          t          t                    t          d          t          t                    z            k    sJ t          t                                        t                                        t          d          t          t                                        t                                        t          d          t          d          t          d          i}t          t          t                                        t          t                    t          t                    z   t          t                    |          t	          t          t                    t          d          t          t                    z  t          t                                        t                                        t          d          t          t                    z  z             k    sJ d S )Nr?   ru   rd   r   rL   F)re   r=   ri   r   T   zK r f0c            
      Z   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>  sn    y"QqTT2c!ff9r#a&&y3H*I*I)JQqTTFUWY[T\_`ab_c_cefhijlhmhmop^qrr r7   c            
      ^   t          t          t          t                    t	          t
          t          dz  z
                      gt          t                    gt
          gt          t                                        t                                        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>  sp    y"QqTT4QT	??*C*C)DqttfrdUVWXUYUYU^U^_`UaUaUfUfghjkUlUlnoTpq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,,1Q44'1AaDD!9===
1Q44a!eai!!" " " "!A$$))A,,1%qtt!A$$;;;r!A$$A?O?OOOOO!A$$))A,,1%qtt!A$$))A,,2C2CAq2I2I11MNNNRTUVWXUYUY[^_`[a[aRbRbbbbb!A$$))Aq//AaDD(!A$$QqTT1	!		!!Q5$ % % %(*1Q44Q#a&&(A(AB B B B1Q4499Q<<!A$$&1-qttyy||add/BQqTT/IJ	
1qtt1Q44AaDD!,. . .24QqTT3q66#a&&=2I2I2aPQddTWXYTZTZ[^_`[a[aTaKbKb1cd d d d Q$qttQw,
	 	 	#	#B"add1q	***r!A$$	a!eQ0 0AaDD$q1u++a-00/2 2 2 2 2"add11!2!21a!8!8! <==="QqTT	a!&j		!C C 1tAJ'7'7'9::B< < < < < 
QqTTaAaDD		kAaDD!G+QqTTYYq\\9	9B"addqTT!H;8 8 8;=aAaDD		kAaDDRSGTUI>UW_`acdWeWe;f;fg g g g"addqTT!H;7 7 7:<Qs1Q44yy[1Q44QR7ST9=TV^_`bcVdVd:e:ef f f f b1r#a&&y))*QqTTFRD1Q44)DDQOOOOb1r#a&&y2c!ff945561R	
1q!BqD''1 #%q"a.1 1 1 1 b1r#a&&y2c!ff945561R	
1q!A$$))A,,##Aq))1-/ /35q"a.A A A A b1r#a&&y2c!ff945561R1Q44QR)TT	Q   
 vaddiillAaDDIIaOOA$56QqTT!QqTTYYq\\EVEVWXZ[E\E\]^<_```aa	AaDD!b1qAvzAE12234 4 4 4vaddiillAaDDIIaOOA$56QqTT!HEEEFF	AaDD!b1r!tad1f}--./ / / / x  HAq"
QqTT1R4AaC=A27RAaC[1"r'-BQ-F"GH
I
IC2addiillA!HAaDD1H$=>>!1Q44QS*UUUZ]]]]] vaddiillAaDDIIaOOA$56QqTTYYq\\=N=NqQR=S=STUWXYZW[W[\]<^___``	AaDD!b1qAvz**+, , , ,vaddiillAaDDIIaOOA$56QqTT!QqTTYYq\\EVEVWXYZE[E[\]<^___``	AaDD!b1qAvz**+, , , , :rrsss :qqrrrx  HB1 qttR"Q$YAqD(2ad72Qq!tVRU^CDDEDqTTFERR I aDD!	!		!!Q	!		!Q	!		!QD aDD!	!		!!QQqTTYYq!__a##QQqTTYYq!__a##Q(D
 "$y$??!$y$?? 1    
A
A
AqDFAbDM
QBqD!B$K	6       Q441,C!A$$))A,,1%qtt555AaDD!A$$s1vv+9N9NNNNNQ4499Q<<Q""AaDDIIaLL$5$5a$;$;QqTT1Q44
HC!A$$))Aq//AaDD(!A$$C888
1Q441c!ffqttyy||00A66s1vv==>>? ? ? ? ? ?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   | |                              ||          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 d S )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QQqTT]AAaDD))Q....QtAAaDD!}}_qs11Q44x/#a&&(:AAaDDAAQFFFFQT!!A$$))Aq//)Ad11Q44mmO;aaddBAAaDDIIQNNNNT!C!II+q!,,aadd33q8888T!D3qqtt99a333Q771>>!CCCCT!!A$$1%%qqtt,,1111T!!A$$1%%d11Q44mm3QQqTT::a????T!!A$$1%%d11Q44mm3QQqTT::a????T!D3qqtt99a333Q771>>!CCCC Z!!A$$**AAaDD11Q6666Qs:a!aiA667771>>!CCCCZ*Qs11Q44yy[!Q"?"? ?CCQQqTTJJaOOOOZ!a++QQqTT22a7777Z#aadd))Q22AAaDD99Q>>>>Z!a++JqqttQ,?,??1FF!KKKKZ*QQqTT1a"8"8 8!<<aaddCCqHHHH	#j:aaddA..111a88
9
9911Q44A ADEF F F F F Fr7   c            	      6   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                                        t                    t          t                    J t          t          t                                        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	            d S )
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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XXAaC0!Q771<<<<QTCFF3q66M11a88@@@QUQs1Q3xxZ/A66!;;;;acDA1$5$551c!ffs1vvo8NN	Ax1~~	d1ggqj	(*+,a1 14<ROOD D D DQqSQqS\AaCAaCL83qs88CQJJaOOOOQqTT1add++q0000QqTT1Wa1..!3333QqSUAq))Q....QqSUAq!,,1111QT!A$$YtAqD1Q447N';';;QqTTBBJJJQq!WWaZAaGGQ771<<<<Qq!WWaZAaDD!44<<<Qq!WWaZAaGG44<<<Qq!WWaZAqAww77???QqTT1Q44++333addU1WqQqTT1W~5qttQ??1DDDDS1XXAqD		11a88@@@S1XXA.155::::S1XXq!,,1111Qs1Q3xxZ!CFF(2Aq99Q>>>>sAQs1Q3xxZ!CFF(2Aq99Q>>>>QqTTYYq\\1a00888addiill]Q.155===QqTT1a((000Q1a4[!Q//777QUA&&",,,,QT1%%---
:5566666r7   c                      t          dt          z             } t          |           t          |           }}|                    t
                    r|                    t
                    rJ d S d S )Nr?   )r   rW   r   r   rx   r   )r   ir   s      r8   )test_noncircularized_real_imaginary_partsr  x  sY    
 	QqS		Aa55"Q%%qAe.u.......r7   c                      dt          t          dz            z   } | t          | t          t          dz                      k    sJ d S )Nr?   ru   r   )r   rW   r   )r   s    r8   $test_collect_respecting_exponentialsr    sB     c!A#hh,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 d S )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    s   +AaDD!44GGGG+C!d1gg,>,>BB1tAwwQqS477]!3!34	6 	66 6 6 6 ,CFF3q66M1==	   	Q3q661a4A;1SVVQs1vvXs1vvFA+CFFAqD1HqL,A1EE1%%& & & &+Aq!tc!ffQhQ', ,8<!/L/LM M M M+AaCQAA&  3qs88CFF?AqDQqSM#a&&4HAs1Q3xxAc!ffS1XX-qQxAaC/@	#ac((
3q66#
 
    ,Ac!ffHa88VUOKKKK+CFFA6665/IIII+AFAqD1HqL,A1EEAqD!AqD&!Q$q!t)#<==> > > >+AqD!44GGGG+CFF3qsQw<<,?CCCAaCLL>223 3 3 3+CFFAqD1HqL,A1EEAc!ffHaAh1SVV	1SVVSVVSVV$% 	& 	&& & & & ,CFFAAJ,?CC	   +CFFAAaCL,A1EE	   +CFF3q66M1==	   +	1SVVCFFQs1vvX%)1  1a4A;s1vv#5q#a&&!%As1vvs1vvqQxA#a&&!CFF(3q66/	#a&&#a&&Q-Ac!ffSVV!3#5
6 
66 6 6 6 ,AaCAE

NA>>s1q5zz\1SQZZ<QUSQZZHC C     ,AqDFA66AqD!AqD&>223 3 3 3+AqDQqSM1==AqDQqSM?334 4 4 4+CGGAIq99	    ,AaDD!44AE7++, , , ,+Bs1vvIq99CFF8,,- - - -+C!HHa88C!HH:../ / / /+CFFA66CFFCFF#3445 5 5 5+CFFA66CFFCFF#3445 5 5 5+A#a&&L1SVV8,CQGGAE3q663q663q66#BCCD D D D+AqD!44AE1ad#3445 5 5 5+AaCAJaR,@!DDAc!ffHc!ffc1"gg#>??@ @ @ @+Ac!A#hhJs1vv,=qAAC!HHSVVOSVVC!HH_#EFFG G G G+AAJ::AE1c!ffc!ff#=>>? ? ? ?+AqD1Q3J::AE1ad#3445 5 5 5+AaCAJ::Ac!ffHaAhAA#GHHI I I I+Ac!A#hhJ::s1Q3xxZ3qs88S1XXs1Q3xx8	: 	:: : : : ,AqDaRL!<<Ac1"ggIq!tCGG|S!WW#EFFG G G G+Ac1"ggI1S!WW,DaHHAc1"ggIq!tCGG|S!WW#EFFG G G G+C1II1,<a@@AE1adC1II#>??@ @ @ @+Ac1"ggIq99Ac1"ggIsA2ww#7889 9 9 9+AAaCL!<<AE1c!A#hh#7889 9 9 9+CFFS!WW,<a@@CFFCFFCGG#<==> > > >+CFFA66CFF8,,- - - - ,AFS1XXaZ,?CCAE3qs88S1XX#>??@ @ @ @ ,AaC!&3qs88A:%&  3qs88C!HH#4c!A#hhs1Q3xx6GAaC#
 
   
 ,AaC#a&&L3q66,A1EEAE1c!ffc!ff#=>>? ? ? ? ,CFF1Hs1Q3xxz,A1EECFFC!HHc!ffc!A#hh#GHHI I I I+C1IIq99fe_LLLL+A1Iq99fe_LLL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                                        t                    z  dt          z  t	          t                    z  z
  }t          |t	          t                              dk    sJ d S )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qMM!AaDD()	)D1qMM	9AaDD	@1	DBAaDD!! &F F F F F Q$1q.!A$$))A,,	&1QqTT	1BAaDD!! &= = = = = = =r7   c                     t          t          d            t          t          t          t
                                        t                    t
          t          t          t
                    z  z
  t          t                    d          dd ddk    sJ t          t          d            t          t          t                                        t                    t          t
                    d          dd ddk    sJ d S )Nc                      t          t          t          t                                        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>  s9    va1ggll1oo!Aq''	&A1Q44HH r7   Tr   r   r6   )rV   rU   r   c                      t          t          t                                        t                    t          t                              S r4   )r   r0   rW   r   r   r6   r7   r8   rr   z!test_issue_4825.<locals>.<lambda>  s&    vaddiillAaDD99 r7   )r*   r5   r   r0   rW   r   r   r6   r7   r8   test_issue_4825r    s    
:HHIII!QQ!AaGG)3QqTTEEEr::; ; ; ; :99:::!		!add66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n J t          t
          t          z   z  t          t          z   z  } | t          t
          t          gd          D ]1\  }}}t          ||t          z   z  |t          z   z            |k    sJ 2d S )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44444RTBqD[))"Q$A+&&   
1r!t      	BFR!VA:r2rlA.. 9 91a AEAE!233q888889 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 d S )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55A====U1X!B4HHHBqDPPPPUq!f555"Q$1r!t9LLLLLUq!f76??SSSXZ[\X\^`ab^beghiei^iWjjjjjjjr7   c            	         t          dd          } t          d          }t          d          }t           ||                              |d          | dz   ||          z  z
   ||                    }t	          d |j        D                       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 d S )
Nr   Tr.   r   wr   c                 F    g | ]}|j                             d           |S )C)name
startswith).0r  s     r8   
<listcomp>z#test_issue_5770.<locals>.<listcomp>3  s-    FFFaqv/@/@/E/EFFFFr7   r?   ru   )r   r   r   r   lenfree_symbolsr#   r[   r   rW   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,aadd
3
3CFF3+FFFGG1LLLLCFFRAY.A6RAA
3q66	#a&&   3q66	Bs1vvI-3q66	9BB<HH
3q66	Bs1vvI   BFbT**bQi7777B
RG,,Q6666B!aAY!7!77">>"q&HHHHHHr7   c                      t          t          t                     t          t                    z   t                    J t          t          t          t                    z
  t          t                    J d S r4   )r   r   rW   r   r   r6   r7   r8   test_issue_5112_5430r-  =  sS    c!ffWuQxx/33;;;QQZA..66666r7   c                  V     t          d           t          t           fd           d S )Nr0   c                      t            t                                        t                    dz    t                    d          S )Nru   fdsjf)r   rW   r   r0   s   r8   rr   z!test_issue_5095.<locals>.<lambda>D  s1    vaaddiillAoqqttWEE r7   )r   r*   r5   r1  s   @r8   test_issue_5095r2  B  s.    A
:EEEEFFFF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 d S )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_functionr:  G  sf   A
a!!A$$h--C
qsQqqttVn

C
a!fXa^^#
$
$C
qsQqqttV|a!fqsl+
,
,C
qAv!!A$$'	"
#
#C
qsQqqttV|a!fqsl+c1QT6AaaddAgI2F.G.GG
H
HC
qsQqqttVad]#
$
$CS!QQqTT**d2222S!QQqTT**a////S!QQqTT**d2222S!QQqTT**a////S!QQqTT**a////S!QQqTT**a////S!QQqTT**d222222r7   c                  j   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	          |                                          z   }t          |          }|}t          |          }t          t          |                    }t          |          }dt          dd          f}	|	                    |t          t                              |	k    sJ |	                    |t          t                              |	k    s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          |          }|	                    |
t          t                              J |	                    |t          t                              J |	                    |t          t                              J |	                    |t          t                              J d S )
Nru   r   r   r4  r	     r   ir?   )r   rW   r0   r   r   expandr'   r   r	   _linear_coeff_matchr   )r   dratr5  obj1r6  obj2r7  obj3r   r8  obj4r9  obj5r   obj6r   obj7s                     r8   test_linear_coeff_matchrH  Y  s   acAaddFlQAaC!AaDD&L2$5!6qA
A#C
c((S&&
&Cc""D
Cc""D
c#hh--Cc""DhsA
C##C1..#5555##C1..#5555##C1..#5555 Q3!*Cc""DQ37A+Cc""DQ31Q44<!acAaddFlQ.
/Cc""DQ31Q44<$q''!AaC!AaDD&L1$4
5Cc""D##C1..666##C1..666##C1..666##C1..66666r7   c            	          t          t                    dz   } t          t          t	          t          t                    | z   | t
          z  z   t          g                    j                  dk    sJ d S )Nru   )r   r[   r)  r   r#   rW   gens)r{   s    r8   test_constantsimp_take_problemrK  y  sZ    B!AtLR1qs!2RD99::?@@AEEEEEEr7   c                     t          d          } t          t                                        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                                        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                                        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 d S )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_seriesrN  ~  sJ   	B	
11!	B
QqTT219r!Q$wqy(2ad7194r!Q$wrzAq!tGCKAqD''" # #C"-...#5555r3a(((++++	
11!A$$	B
QqTT2ad719r!Q$wqy(2-!Q$7
8
8C"-...#5555r3a(((++++	
11AaddF	#B
QqTTAEA:q#a&&y)#a&&0AE3q66>AAE!Q$O
P
PC"-AaDD!9BBBcIIIIIIr7   c            	      l   t          d          \  } }t          t                                        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                                        t          d          z  dt          z  t          t                                        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                                        t          d          t          t          t                                        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                                        t          d          t          t                                        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                                        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 d S )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      r4  )
r   r0   rW   r   r   r   r   r   r    r   )r[   r   r\   r   s       r8   test_2nd_power_series_ordinaryrV    s   WFB	
11a1QqTT6	!BOOOOO
QqTT2q!tAvz?RT1a47Q;%77!AqD''A
B
BC"67773>>>>r39,,,,
QqTT2Az!|q1uqjl2a!eaZ?!CD
a1q51*R-1q51*Q,.15
67
AqD''  C "62>>>#EEEE QqTT2a4"9qAww&
'
'C"6!<<<CCCCr39,,,,
ad(QqTTYYq!__	%!QqTTYYq\\(:	:AaddF	BB  ! ! ! ! ! QqTT21uQwA~)*RT1AadGG;
<
<C"67773>>>>r39,,,,	
11a1addiill+	+add	2BKKKKK
QqTT2q!tAv1Q*+bdQTE!GaK.@@1QT77J
K
KC":: 
11a1Q4499Q<<	'!AaDD&	0B=====
QqTT21uRx!Q$q&(1,-dAqDGad1f$qs*Q./023AqD'': ; ;C":: 
11a1QqTT6	!BOOOOO
QqTT2q!tCx!Q$q&(1,-1q!teBhl0CCa1ggM
N
NC"6!<<<CCCCr39,,,,,,r7   c                     t          d          \  } }}t          dz  t          t                                        t          d          z  dt          z  t          t                                        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                                        t          d          z  dt          dz  z  t          t                                        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                                        t          d          z  t          dz  t          t                                        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                                        t          d          z  t          t          t                                        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                                        t          d          z  t          t                                        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                                        t          d          dt          z
  t          z  t          t                                        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 d S )NzC1 C2 aru   r   r   ir	  r?   r   2nd_power_series_regularr<   rQ  r  r   i  r   P   <      rM  @   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ttyyA	!A#qttyy||"4	4!a1~	EB
QqTT2ad7C1HQJ1a4/!A#59:Qq!tWWD
E
EC"5666#====r39,,,,	
1a411a	!1QT61Q4499Q<<#8	8AadF	=
Q44< 
B
QqTT2d1gg:q!tBwAa/!Q$q&81<q@AAadGGK
L
LC"5666#====r39,,,,	
AqttyyA	!Q$!		!"5	5	1q!A$$9 
B
QqTT21uSy1QT6"9,q!tAv51Q>1DqHI!Kq!tGadU2X1R'!A#-12356q!tWW= > >C"::r39,,,,	
AqttyyA	!QqTTYYq\\"2	2adXa^^6KQqTT5Q	QB
QqTT2q!tBwAa'!+,T!WW4
477
AqDHq!tAv%)*+-.q!tWW5 6 6C"5666#====r39,,,,	
1Q4499Q??	QqTTYYq\\	)AaC!H	4B
QqTT2q!tAqDy|a1fQh.23a1gg=
>
>C"add!;<<<CCCCr39,,,,	
11aQUAIqttyy||3	3qsAaDDj	@B
QqTT2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gg. / /C "add!;<<<CCCCr39,,,,,,r7   c                      t          d          } t          d          }t          t          d           t          d          |           z            |k    sJ d S )Nr   r   r[   r   )r   r$   r   )r   r   s     r8   test_issue_15056r`    sR    sA	B!&,,$1B1B"BCCrIII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                    	                    t          d          z   } t          | |t          t                              dk    sJ d S )Nru   rQ  )
r[   rW   r0   r   r   r   r   r    r   r   r\   r   s     r8   test_issue_15913rc    s"   
Q1QqTT	AaDD	 :addA#6#6	6B
SA]]
SA]]8BsAqD519~~4Ea4G+K+KK
KCr39,,,,
r#qbd))|
C	AaddFA		11a	0Br3!%%222222r7   c                  ^    t          t          d            t          t          d            d S )Nc                  @   t          t          t                                        t                    t	          t                                        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>  sR    vqttyy||QqTTYYq\\&BQqTT1Q44QRSTQUQUDVWW r7   c                      t          t          t                                        t                    t	          t                                        t                    gt          t                    g          S r4   )r   r0   rW   r   r1   r6   r7   r8   rr   z"test_issue_16146.<locals>.<lambda>  s=    vqttyy||QqTTYYq\\&BQqTTFKK r7   )r*   r5   r6   r7   r8   test_issue_16146rg    s0    
:WWXXX
:KKLLLLLr7   c                  L   t          t                    dz
  t          t                                        t                    z  } t          t          t                    t                    }t          |           |k    sJ t          t                    t          t                    z
  t          t                                        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                                        t          d          z  } t          t          t                    t          t          t          z  z   t          t          dz  z  z             }t          |           |k    sJ d S )Nru   r?   r   )
r0   rW   r   r   r[   r   r   r   r   r   rb  s     r8   &test_dsolve_remove_redundant_solutionsri     sQ   
A$$q&!A$$))A,,	B
QqTT2,,C"::
A$$s1vv+!		!Q	(BaddBAI1Q44Q 0 0
1Cvbzz??c!!!!
A$$'!AaDD&.
AaDDIIaOO	+B
QqTT2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 d S )NzA Br   r   Tr   )r   r   r   r   r   r   r    )r  Br   r\   r   s        r8   test_issue_13060rl    s    5h'''DAqsA
Z!a  !!A$$qqtt)
,
,bAAaDD!1D1Daadd11Q44i.P.P	QB
**Cr3D1a&>111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 d S )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  rn  eqnmatchr[   r   r   s           r8   test_issue_22523rt    s5   5>>DAq
5//C a%QU
CCFF
"a1fa!enAaCQK!7K&K
SSVVaV
$
$&% %C4e444E,-g6!;;;;WFB
6
7
7
7Cc??j .K *L *L M M M M M M M Mr7   c                     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 | |                                                              |d          d |d          d	 ||                                                              |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 d S )Nzx1, x2r   zt k1 k2 m1 m2Tr.   )r?   r?   r?   r?   ru   r   r?   rd   r   r   
   r[  )r   r   r   r   r   r   r   r   )r   x2r   r   r   r   r   r5  r6  eqsx1solx2sols               r8   test_issue_22604r|  -  s   XX...FB===Ar2r2NBB
RRRUUAq!!!Brr!uuH,r22a5522a55=/AA1
E
EC
RRRUUAq!!!B11$66
:
:C*CC""Q%%A1aAARARSTUVAWAWXY8:1aAARARSTUVAWAWXY8[ \ \ \NUEBrr!uud1tAww;//bAd1ggI1EFs4PQ77ST9UYZ[^bcd^e^eZeUfUfKfghKhGiGiijll477
T"XX-tDGGaK/@/@@T!WWQYtTXYZT[T[^_T_O`O`E`abEbAcAccdffg h h h h h hBrr!uutAww{CQ	$q477{:K:K0KA0M,N,NNrQUVY]^_Y`Y`U`befjklfmfmnofoptuyz{u|u|  @A  vA  qB  qB  gB  CD  gD  cE  cE  UE  FH  UH  H  I  I  I  I  I  I  I  Ir7   c            	         t          t          t                                        t                    dt          t                    dz  z  dt          t                    z  dz  z
            t          t          t                                        t                    dt          t                    dz  z  dt          t                    z  dz  z
            fD ](} dt	          | t          t                              v sJ )d S )	Niru   i  i   r   r   r4  rC   )r   r0   rW   r   r   )des    r8   test_issue_22462r  ;  s    qttyy||S1q[3qtt8D=899qttyy||R!aZ!AaDD&(2335 5 5 l2qtt44444445 5r7   c                  :   t          d          } t          d          }t          t          | z    ||                                                                           z   ||                                           z   d          }t          |          dk    sJ d S )NrW   r   r   )rt   nth_order_reducibler   r   )r   r   r   r   r   r   rW   r   r\   s      r8   test_issue_23425r  B  s    AA	QTE!!A$$))++""$$$qqttyy{{2A	6	6B	;; ; ; ; ; ;r7   ztoo slow for @slowc                      t          d          } t          d          } ||           dz   ||                               | d          z  dz   }t          | ||                     J d S )NrW   r   r   ru   1   )r   r   r   r   r  s      r8   test_issue_25820r  K  sk    sAA	
1q11a	 2	%B"aadd'''''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-  r2  r:  rH  rK  rN  rV  r^  r`  rc  rg  ri  rl  rt  r|  r  r  r  r6   r7   r8   <module>r     sZ   B B B B B B B B B B B B 3 3 3 3 3 3 3 3 3 3 3 3 $ $ $ $ $ $ " " " " " " / / / / / / / / 9 9 9 9 9 9 9 9 = = = = = = = = 7 7 7 7 7 7 9 9 9 9 9 9 K K K K K K K K K K K K . . . . . . & & & & & &             * * * * * *          4 3 3 3 3 3H H H H H H H H H H H H H H N M M M M M 7 7 7 7 7 7 + + + + + + : : : : : : : : : : : : + + + + + + /6gg.>.> +BBBBBWW4(((
1aHSMMHSMMHSMM% % %
#3 #3 #3L8 8 8 D? D? D?N\ \ \~i$ i$ i$V,* ,* ,*^Y? Y? Y?vF F F47 7 7B / / /* * *lM lM lM^= = =,; ; ;9 9 9k k kI I I7 7 7
G G G
3 3 3$7 7 7@F F F
J J J( /- /- /-d$- $- $-NJ J J3 3 3M M M
  2 2 2M M M,I I I5 5 5; ; ; ( ( ( ( (r7   