§
    PŠtj¤r  ã                   óÌ  — 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 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 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%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2  ed¦  «        Z3 ed¦  «        Z4d„ Z5d„ Z6d„ Z7d„ Z8d„ Z9d„ Z:d„ Z;d„ Z<d„ Z=d„ Z>d„ Z?d„ Z@d„ ZAd „ ZBd!„ ZCd"„ ZDd#„ ZEd$„ ZFd%„ ZGd&„ ZHe!d'„ ¦   «         ZId(S ))é    )Úrandint)ÚFunction)ÚMul)ÚIÚRationalÚoo)ÚEq)ÚS)ÚDummyÚsymbols)ÚexpÚlog)Útanh)Úsqrt)Úsin)ÚPoly)Úratsimp)Úcheckodesol)Úslow)Úriccati_normalÚriccati_inverse_normalÚriccati_reducedÚmatch_riccatiÚinverse_transform_polyÚlimit_at_infÚcheck_necessary_condsÚ
val_at_infÚconstruct_c_case_1Úconstruct_c_case_2Úconstruct_c_case_3Úconstruct_d_case_4Úconstruct_d_case_5Úconstruct_d_case_6Úrational_laurent_seriesÚsolve_riccatiÚfÚxc                 ó\   — t          t          |  | ¦  «        t          d| ¦  «        ¦  «        S )Né   )r   r   )Úmaxints    úb/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/solvers/ode/tests/test_riccati.pyÚrand_rationalr,      s(   € Ý•G˜V˜G VÑ,Ô,­g°a¸Ñ.@Ô.@ÑAÔAÐAó    c                 ó\   ‡— t          ˆfd„t          |dz   ¦  «        D ¦   «         | ¦  «        S )Nc                 ó.   •— g | ]}t          ‰¦  «        ‘ŒS © )r,   )Ú.0Ú_r*   s     €r+   ú
<listcomp>zrand_poly.<locals>.<listcomp>"   s!   ø€ Ð@Ð@Ð@¨1•˜vÑ&Ô&Ð@Ð@Ð@r-   r)   )r   Úrange)r'   Údegreer*   s     `r+   Ú	rand_polyr6   !   s2   ø€ ÝÐ@Ð@Ð@Ð@µ°f¸Q±h±´Ð@Ñ@Ô@À!ÑDÔDÐDr-   c                 ó  — t          d|¦  «        }t          d|¦  «        }t          | ||¦  «        }t          | ||¦  «        }|t          d| ¦  «        k    r%t          | ||¦  «        }|t          d| ¦  «        k    °%||z  S )Nr)   r   )r   r6   r   )r'   r5   r*   ÚdegnumÚdegdenÚnumÚdens          r+   Úrand_rational_functionr<   %   s…   € Ý�Q˜ÑÔ€FÝ�Q˜ÑÔ€FÝ
�A�v˜vÑ
&Ô
&€CÝ
�A�v˜vÑ
&Ô
&€CØ
•�a˜‘”Ò
Ð
Ý˜˜6 6Ñ*Ô*ˆð •�a˜‘”Ò
Ð
à�‰9Ðr-   c                 ó¤  — | }|                      |¦  «        }t          |dd¦  «        }t          |dd¦  «        }|dk    rt          |dd¦  «        }|dk    °t          |||z  z
  ||dz  z  z
  ¦  «        }t          |                      ¦   «         |||z  z   ||dz  z  z   ¦  «        }t          ||¦  «        }	t	          ||	¦  «        dk    sJ ‚||||fS )Nr)   é   r   é   )Tr   )Údiffr<   r   r	   r   )
Úratfuncr'   ÚyfÚyÚypÚq1Úq2Úq0ÚeqÚsols
             r+   Úfind_riccati_oderJ   /   sá   € Ø€AØ	
�Š�‰Œ€BÝ	  1 aÑ	(Ô	(€BÝ	  1 aÑ	(Ô	(€BØ
�Š'ˆ'Ý# A q¨!Ñ,Ô,ˆð �Š'ˆ'å	��b˜‘d‘˜R  1¡™WÑ$Ñ	%Ô	%€BÝ	ˆB�GŠG‰IŒI�r˜B˜r™E‘z B r¨1¡u¡HÑ,Ñ	-Ô	-€BÝ
ˆR�‰)Œ)€CÝ�r˜3ÑÔ 9Ò,Ð,Ð,Ð,Øˆr�2�rˆ>Ðr-   c                  óÔ
  — t           t           dz
  z  t           dz  dz   dz  t           z  t           t           dz   t           dz
  z  t           t           dz  dz  t          d¦  «        dz  z   z  dz  z
  ddt           z  z  z
  fdt           z  dz   dt           z  dz   z  ddt           z  z
  t           dz   z  dt           z  dt           z  dt           z  dz   z  dt           z  dz   z  ddt           z  z
  t          dt           dz   d¬¦  «        z  z
  ddt           z  z  z
  fd	dt           dz  z  dz
  z  d
dt           z
  dt           z  dz
  z  dt           z
  dt           z  dz
  dt           dz  z  dz
  z  z  dt           z  dz
  t          ddt           z
  d¬¦  «        dt           z  dz
  dz  z  ddt           z  dz
  z  z
  z  t          ddt           z
  d¬¦  «        z  z
  ft           dt           z  dz
  dt           z  dz   z  t           dz  dt           z  dz
  z  t           dz   dt           z  dz
  z  dt           z  dz
  t          ddt           z  dz   d¬¦  «        z  z
  dt           z  dz
  dt           dz  z  dt           z  dz
  dz  z  dt           dz  z  dt           z  dz
  z  z   z  dt           dz  z  z  z
  fg} | D ]S\  }}}}|t          |t           ||¦  «        k    sJ ‚|t	          |t           ||¦  «                             ¦   «         k    sJ ‚ŒTdt           z  dz
  dt           dz  z  dt           z  z   dz
  z  dt           z  t            dz
  dt           z  z  dt           dz  z  ddt           z  z  t            dz
  dt           dz  z  z  z   z  t            dz
  dz  z  dt            dz
  z  z   dt           z  d	dt           z  z  t            dz
  dt           dz  z  z  z
  z  t            dz
  z  dt           z  dz
  t            dz
  z  dt           z  dt           dz  z  dt           z  z   dz
  z  z  z
  dt           z  z   fddt           dz  z  z  dt           z  t            dz
  dt           z  z  dt           dz  z  ddt           z  z  t            dz
  dt           dz  z  z  z   z  t            dz
  dz  z  dt            dz
  z  z   dt           z  d	dt           z  z  t            dz
  dt           dz  z  z  z
  z  t            dz
  z  dt           z  z   t          dt            dz
  d¬¦  «        dt           dz  z  z  z
  fg} | D ]U\  }}}}}|t          |t           ||¦  «        k    sJ ‚|t	          |t           |||¦  «                             ¦   «         k    sJ ‚ŒVdS )ar  
    This function tests the transformation of the
    solution of a Riccati ODE to the solution of
    its corresponding normal Riccati ODE.

    Each test case 4 values -

    1. w - The solution to be transformed
    2. b1 - The coefficient of f(x) in the ODE.
    3. b2 - The coefficient of f(x)**2 in the ODE.
    4. y - The solution to the normal Riccati ODE.
    r)   r?   é   r>   é   éûÿÿÿF©Úevaluateéÿÿÿÿr   é   éüÿÿÿé   é   é	   é   éúÿÿÿéþÿÿÿN)r'   r
   r   r   r   Úcancel)ÚtestsÚwÚb1Úb2rC   Úbps         r+   Útest_riccati_transformationr`   ?   s°  € õ 	
�1ˆq‰5‰	Ý	
ˆA‰�‰�1‰•Q‰Ý	Ý	
ˆA‰ˆ�q�1‰u‰��1˜a™4 ™6¥A a¡D¤D¨¡F™?Ñ+¨AÑ-Ñ-°°1µQ±3±Ñ7ð	ð 
�1‰ˆq‰�1•Q‘3˜‘7ÑØ	
ˆQ�q‰S‰•1�q‘5ÑØ	�!‰Ø
�1‰ˆa•‰c�A‰g‰˜�!™˜a™Ñ  A¨­!©¡G­c°!µQ¸±UÀUÐ.KÑ.KÔ.KÑ#LÑLÈqÐRSÕTUÑRUÉwÑVð	ð 	ˆA�a�‰d‰F�Q‰J‰Ø	Ø	
�Q‰�•1‘�q‘ÑØ	
�Q‰�!•A‘#˜‘'˜A�a ™d™F Q™JÑ'Ñ(¨A­a©C°!©Gµc¸"¸aÅ!¹eÈeÐ6TÑ6TÔ6TÐVWÕXYÑVYØ	ñW
ØñVñ 7Ø�1•Q‘3˜‘7‘ñ7ñ ,Ý! ! Q­¡U°UÐ;Ñ;Ô;ñ,=ñ 	=ð	õ 	
Ø	
�1‰ˆr‰�B•q‘D˜1‘HÑÝ	ˆ1‰ˆa•‰c�A‰g‰Ý	
ˆA‰ˆˆq•‰s�Q‰w‰˜1�Q™3 ™8¥c¨!¨Rµ©T°A©XÀÐ&FÑ&FÔ&FÑGÑGÈ1ÍQÉ3ÐQRÉ7ÐUWÕXYÐ[\ÑX\ÑU\Ð^_Õ`aÑ^aØ
ñ_Øñ^ñ VØ•A�q‘D‘&˜!�A™# ™'Ñ"ñV#ñ K$Ø%&¥q¨!¡t¡VñK-ñ 	-ð	ð)€Eð6 ð Bð B‰ˆˆ2ˆr�1Ø•N 1¥a¨¨RÑ0Ô0Ò0Ð0Ð0Ð0ØÕ*¨1­a°°RÑ8Ô8×?Ò?ÑAÔAÒAÐAÐAÐAÐAð
 
�A‰�‰�A•a˜‘d‘F˜Q�q™S‘L 1Ñ$Ñ%Ø
�1‰Ý
ˆˆa‰�!•A‘#‰Ø	�!ˆQ‰$‰��1•Q‘3‘�A˜2 ™6 A¥a¨¡d¡FÑ+Ñ+Ñ,­q¨b°1©f°q©[Ñ8¸1½q¸bÀ1¹f¹:ÑEØ
�1‰ˆb�!•A‘#‰h�1˜"˜q™& 1¥Q¨¡T¡6Ñ*Ñ*Ñ+­a¨R°!©VÑ4¸½1¹¸q¹ÅAÀ2ÈÁ6Ñ7JÈAÍaÉCÐQRÕSTÐVWÑSWÑQWÐZ[Õ\]ÑZ]ÑQ]Ø
ñRñ Mñ 8ñ 	Ø•!‘ñ	ðð 	
ˆ1�Q�‰T‰6‰
Ø
�1‰Ý
ˆˆa‰�!•A‘#‰Ø	�!ˆQ‰$‰��1•Q‘3‘�A˜2 ™6 A¥a¨¡d¡FÑ+Ñ+Ñ,­q¨b°1©f°q©[Ñ8¸1½q¸bÀ1¹f¹:ÑEØ
�1‰ˆb�!•A‘#‰h�1˜"˜q™& 1¥Q¨¡T¡6Ñ*Ñ*Ñ+­a¨R°!©VÑ4°q½±sÑ:½SÀÅQÀBÈÁFÐUZÐ=[Ñ=[Ô=[Ð]^Õ_`ÐbcÑ_cÑ]cÑ=dÑdðð€Eð  "ð Fð FÑˆˆ2ˆr�2�qØ•N 1¥a¨¨RÑ0Ô0Ò0Ð0Ð0Ð0ØÕ*¨1­a°°R¸Ñ<Ô<×CÒCÑEÔEÒEÐEÐEÐEÐEðFð Fr-   c                  óž  — t          t          ¦  «                             t          ¦  «        t          dz  z
  t          t          t          ¦  «        z  z
  t          t          t          ¦  «        dz  z  z
  t          t          ¦  «                             t          ¦  «        t          t          ¦  «        dz  z   t          dz  z   t          dz  dz  z
  ddt          dz  z  z  z
  fdt          z  dt          z  dz   z  t          t          ¦  «                             t          ¦  «        z   t          dz   t          t          ¦  «        dz  z  t          z  z
  dt          dz  z  dt          z  t           dz
  t          dz  z  z   dz  z  dt           dz
  dz  z  z  t          dt           dz
  d¬	¦  «        dt          z  dz   z  z   t          t          ¦  «        dz  z   t          t          ¦  «                             t          ¦  «        z   d
t          dz   t          z  z   t          t           dz
  z  z  z
  ft          t          ¦  «        dz  t          t          ¦  «                             t          ¦  «        z   t          dz
  t          t          ¦  «        z  t           t	          d¦  «        dz  z
  z  z
  dt          z  dz
  dz   ddt          z  dz   dz  z  z  dt          z  dz
  dt          z  dz   dz  z  z   t          t          ¦  «        dz  z   t          t          ¦  «                             t          ¦  «        z   ddt          z  dz   z  z
  ft          t          ¦  «                             t          ¦  «        t          t          ¦  «        dz  t          z  z
  t          t          ¦  «        dz  t          t          ¦  «                             t          ¦  «        z   ddt          dz  z  z  z   fdt          dz   t          z
  dz   z  t          dz  dt          z  z   dz   z  t          t          ¦  «                             t          ¦  «        z   t          t          ¦  «        dz  t          z  z   t          t          ¦  «        dz  t          t          ¦  «                             t          ¦  «        z   dt          dz  z  t          dz  dt          z  z   dz   z  dt          z  t          dz  dt          z  z   dz   z  z   dt          dz  dt          z  z   dz   z  z
  t          z  z   ddt          dz  z  z  z   fdt          z  dt          z  dz   z  t          t          ¦  «                             t          ¦  «        z   t          dz   t          t          ¦  «        z  t          z  z
  dft          t          ¦  «        t          t          ¦  «                             t          ¦  «        z  dt          z  z
  t          t          ¦  «        dz  z   t          t          ¦  «        dz  t          dz  dz
  z  z   dfg} | D ]&\  }}|t          |t           t          ¦  «        k    sJ ‚Œ'dS )zÌ
    This function tests the transformation of a
    Riccati ODE to its normal Riccati ODE.

    Each test case 2 values -

    1. eq - A Riccati ODE.
    2. normal_eq - The normal Riccati ODE of eq.
    r?   r>   rR   rW   rV   r)   éýÿÿÿFrO   rQ   N)r&   r'   r@   r   r
   r   )r[   rH   Ú	normal_eqs      r+   Útest_riccati_reducedrd   �   sÀ  € õ 	
�!‰Œ�	Š	•!‰Œ•q˜!‘tÑ�a¥¥!¡¤™fÑ$¥q­­1©¬¨q©¡yÑ0å	�!‰Œ�	Š	•!‰Œ•q�‘t”t˜Q‘wÑ¥ A¡Ñ%­¨1©¨Q©Ñ.°°Aµa¸±d±F±Ñ;ðð 	
�!‰ˆQ�q‰S�1‰W‰��!™œŸ	š	¥!™œÑ$­¨A©­qµ©t¬t°Q©w¡µqÑ'8Ñ8à
�1ˆa‰4‰�•1‘�˜˜Q™¥ 1¡‘}Ñ$ qÑ(Ñ(¨!­a¨R°!©V°a©K©-Ñ8½3¸qÝ	
ˆˆQ‰˜ð< ñ < ô < Ø!"¥1¡ q¡ñ<*ñ 	*Ý,-­a©D¬D°!©Gñ	4Ý67½±d´d·i²iÅ±l´lñ	Cà•�Q‘�‘	‰>�A¥˜r A™v™JÑ
'ñ	(ðõ 	
�!‰Œˆa‰•!•A‘$”$—)’)�A‘,”,Ñ¥! a¡%­­1©¬¡µ¨rµA°a±D´D¸±F©{Ñ!;Ñ;à
�A‰#�‰'�A‰ˆ�q˜!�A™# ™' A™‘~Ñ&¨!­A©#°©'°Aµa±C¸!±G¸a±<Ñ)?Ñ?Ý	�!‰Œˆa‰ñ	Ý•A‘$”$—)’)�A‘,”,ñ	Ø!" A¥a¡C¨!¡G¡ñ	-ðõ 	
�!‰Œ�	Š	•!‰Œ•q�‘t”t˜Q‘w�q‘yÑ å	�!‰Œˆa‰•!•A‘$”$—)’)�A‘,”,Ñ  A¥a¨¡d¡F¡Ñ+ðð 	�Q�‰TˆE•A‰I˜‰MÑ�A˜q™D 1¥Q¡3™J¨™NÑ+­aµ©d¬d¯iªi½©l¬lÑ:½Q½q¹T¼TÀ1¹WÅQ¹YÑFå	�!‰Œˆa‰•!•A‘$”$—)’)�A‘,”,Ñ !¥A q¡D¡&­!¨Q©$°µ1±©*°q©.Ñ"9¸A½a¹CÅÀAÁØ
�A‰#ñBØñBñ =ñ #Ø�˜1™˜q¥™s™
 Q™Ñ'ñ#(Ý)*ñ"+ñ 	+Ø-.°µ!°Q±$±©Zñ	8ðð 	
�!‰ˆQ�q‰S�1‰W‰��!™œŸ	š	¥!™œÑ$­¨A©­qµ©t¬t¡|µA¡~Ñ5àðõ 	
�!‰Œ�Q�q‰TŒT�YŠY•q‰\Œ\Ñ˜A�a™CÑ¥!¥A¡$¤$ q¡&Ñ(­1­Q©4¬4°©7µA°q±D¸1±HÑ+=Ñ=àððG'€EðP ð 6ð 6‰ˆˆIØ�O¨Bµµ1Ñ5Ô5Ò5Ð5Ð5Ð5Ð5ð6ð 6r-   c                  ó¸  — t          t          ¦  «                             t          ¦  «        dt          dz  z  dt          dz  z  z
  dt          z  z
  dz   dt          dz  z  d	t          dz  z  z
  d
t          dz  z  z   dt          z  z   dz
  z  z
  dz
  t          t          ¦  «        dz  dt          z  dz   z  z
  t          d¦  «        dz  t          z
  t          t          ¦  «        z  t          d¦  «        dz  dt          z  dz  z
  z  z
  ddt          dz  z  dt          dz  z  dt          dz  z  z
  dt          dz  z  z   dt          z  z   dz
  z  dt          dz  z  dt          dz  z  dt          dz  z  z
  dt          dz  z  z   dt          z  z   dz
  z  z
  dt          z  dt          dz  z  dt          dz  z  z
  dt          dz  z  z   dt          z  z   dz
  z  z
  dz   ddt          dz  z  d	t          dz  z  z
  d
t          dz  z  z   dt          z  z   dz
  z  z   t	          dddt          z  z
  d¬¦  «        d t          z  dz
  z  ddt          z  dz   z  ft          t          ¦  «                             t          ¦  «        dt          z  dz  z   t          dz  dz
  t          t          ¦  «        dz  z  z
  dt          z  dz  dz   t          t          ¦  «        z  dt          z  dz   z  z
  t          d!¦  «        dz  z
  d"t          dz  z  d#t          z  z   d$z   d%t          dz  z  d&t          dz  z  z   z  z
  dd't          z  dz  t          d!¦  «        dz  z   ddt          dz  z  dt          dz  z  z   z  z   d(d)t          dz  z  dt          z  z   z  z   d"d%t          z  d&z   z  z   t	          dd*t          z  dz
  d¬¦  «        d t          z  dz   z  t          dz  dz
  ft          t          ¦  «                             t          ¦  «        d+t          d,z  z  d-t          dz  z  z
  d.t          dz  z  z   d/t          dz  z  z
  d0t          z  z   d1z
  d)t          dz  z  d&t          d,z  z  z
  d2t          dz  z  z   d3t          dz  z  z
  d4t          dz  z  z   d1t          z  z
  z  z
  t          d5¦  «        d z  z
  t          t          d¦  «        dz  z
  t          t          ¦  «        z  t          dz  t          d¦  «        dz  z
  z  z
  t          dz  dz
  t          t          ¦  «        dz  z  dt          z  z  z
  dd+t          dz  z  d)t          d,z  z  d&t          dz  z  z
  d2t          dz  z  z   d3t          dz  z  z
  d4t          z  z   d1z
  z  d-t          dz  z  d)t          d,z  z  d&t          dz  z  z
  d2t          dz  z  z   d3t          dz  z  z
  d4t          z  z   d1z
  z  z
  d.t          dz  z  d)t          d,z  z  d&t          dz  z  z
  d2t          dz  z  z   d3t          dz  z  z
  d4t          z  z   d1z
  z  z   d6t          z  d7t          d,z  z  dt          dz  z  z
  d8t          dz  z  z   d9t          dz  z  z
  d:t          z  z   d)z
  z  z
  t          d5¦  «        d z  z   d7dt          dz  z  dt          d,z  z  z
  d;t          dz  z  z   d<t          dz  z  z
  d=t          dz  z  z   d7t          z  z
  z  z
  d>dt          d,z  z  dt          dz  z  z
  d;t          dz  z  z   d<t          dz  z  z
  d=t          z  z   d7z
  z  z   t	          dddt          z  z
  d¬¦  «        t          dz
  z  t	          dd t          z
  d¬¦  «        d t          z  z  ft          t          ¦  «                             t          ¦  «        t          t          d¦  «        dz  z  t          t          d¦  «        dz  z  dz
  z  z
  t          dz  t          t          ¦  «        z  z   t          t          t          ¦  «        dz  z  t          t          d¦  «        dz  z  z  z   dd?d?d?ft          t          ¦  «                             t          ¦  «        t          t          dz  ¦  «        z
  t          t          ¦  «        t          t          ¦  «        z  z   t          t          ¦  «        t          t          ¦  «        dz  z  z   dd?d?d?ft          t          ¦  «                             t          ¦  «        t          t          t          t          ¦  «        z   ¦  «        z
  t          t          ¦  «        z   t          dz  t          t          ¦  «        dz  z  z   dd?d?d?fdt          dz  z
  t          t          ¦  «                             t          d¦  «        z  dt          z  t          t          ¦  «                             t          ¦  «        z  z
  dt          t          ¦  «        z  z   dd?d?d?ft          t          ¦  «                             t          ¦  «        t          dz  z
  t          dz  t          t          ¦  «        z  z   t          dz  t          dz   z  t          t          ¦  «        dz  z  z   dd?d?d?ft          t          ¦  «                             t          ¦  «        t          t          ¦  «        dz  z  t          dz  dz
  t          dz  dz   z  t          t          ¦  «        z  z   ddt          z  dz   z  z   t          t          ¦  «        dz  z   dd?d?d?fg	} | D ];\  }}}}}t          |t           t          ¦  «        \  }}||k    sJ ‚|r|||g|k    sJ ‚Œ<d@S )Aa  
    This function tests if an ODE is Riccati or not.

    Each test case has 5 values -

    1. eq - The Riccati ODE.
    2. match - Boolean indicating if eq is a Riccati ODE.
    3. b0 -
    4. b1 - Coefficient of f(x) in eq.
    5. b2 - Coefficient of f(x)**2 in eq.
    i•  r>   ir  r?   éN   é\   éó   rR   i±  iN  é´   éH   r)   Té-   é   éi   é^   é   rT   éb   é   éQ   é;  i  é<   é   rQ   rW   FrO   rV   é
   i	  i§  é¢   iD  éØ   rS   é/   é$   rY   i0  rM   ié  iw  il  éÆ   él   iÝ  i7  ih  é   i$  rU   éŸ   é½   éx   é5   é?   é(   é   r   N)r&   r'   r@   r
   r   r   r   r   r   r   r   )r[   rH   ÚresÚb0r]   r^   ÚmatchÚfuncss           r+   Útest_match_riccatir‰   ·   sh
  € õ 	
�!‰Œ�	Š	•!‰Œ˜�A˜q™D™ 3¥q¨!¡t¡8Ñ+¨bµ©dÑ2°RÑ7¸#½aÀ¹d¹(Ø
�a�‰d‰(ñ;Ø�˜A™‘Xñ;Ø #¥A¡ñ;&Ø(*ñ;+ñ ,ñ 	,Ø./ñ	0Ý23µA±$´$¸±'¸1½Q¹3À¹7Ñ2Cñ	DåˆQ‰4Œ4�‰6•A‰:•q�‘t”tÑ
�Q˜q™TœT !™V a­¡c¨!¡e™^Ñ
,ñ	-ð 	à
�1ˆa‰4‰�•A�q‘D‘˜3�q !™t™8Ñ# b­¨A©¡gÑ-°µ1±Ñ4°qÑ8Ñ9¸B½qÀ!¹t¹GØ	�Aˆq‰D‰�3•q˜!‘t‘8Ñ	˜b¥ A¡™gÑ	%¨­1©Ñ	,¨qÑ	0ñ=2ñ 	2Ø46µq±D¸"½QÀ¹T¹'Ø�Aˆq‰D‰ñ;Ø•q˜!‘t‘8ñ;Ø ¥™dñ;#Ø%'ñ;(ñ 5)ñ	)à+,ñ	-à/1°3µq¸!±t±8¸cÅ!ÀQÁ$¹hÑ3FØ
�a�‰d‰(ñ4Ø�‘Uñ4Øñ4 ñ 0!ñ	!õ
 	ˆB��A•a‘C‘ %Ð(Ñ(Ô(¨!­A©#°©'Ñ2à	ˆ1�Q‰3�‰7‰ðõ" 	
�!‰Œ�	Š	•!‰Œ�q�‘s˜2‘vÑ¥ 1¡ q¡­!­A©$¬$°©'Ñ 1Ñ1°Qµq±S¸±UØ	ñ6
Ý�Q‰4Œ4ñ5Ø•1‘�q‘ñ5ñ 	Ý˜b™EœE "™Hñ	%Ø(+­A¨q©D©°3µq±5Ñ(8¸3Ñ(>Ø
�a�‰d‰(�S�˜A™‘XÑ
ñ(ñ	ð 	à
�1‰ˆR‰•!�B‘%”%˜‘(Ñ˜Q ¥! Q¡$¡¨­1¨a©4©¡Ñ0Ñ0°2°r½!¸Q¹$±wØ
�Q‰$ñ8ñ 4ñ 	Ø�s�1‘u˜s‘{Ñ#ñ	$õ 	ˆB�•1‘�q‘ 5Ð)Ñ)Ô)¨1­Q©3°©7Ñ3å	ˆ!‰ˆa‰ðõ 	
�!‰Œ�	Š	•!‰Œ˜�A˜q™D™ 3¥q¨!¡t¡8Ñ+¨cµ!°Q±$©hÑ6¸½QÀ¹T¹ÑAØ
�a‰%ñØñØ�1˜a™4™ #¥a¨¡d¡(Ñ*¨Sµ°A±©XÑ5¸½A¸q¹D¹Ñ@Ø�Aˆq‰D‰ñØ•q‘5ñññ 	å˜b™EœE !™Gñ	$å'(­1¨Q©4¬4°©6¡zµ1µQ±4´4Ñ&7½¸1¹Ý	ˆ!‰ŒˆQ‰ñ:ñ 'ñ	õ �Q‘3˜‘7�A�a™DœD !™GÑ# Q¥q¡SÑ)ñ	*ð
 	à�Aˆq‰D‰�"•Q˜‘T‘'˜C¥ 1¡™HÑ$ s­1¨a©4¡xÑ/°#µa¸±d±(Ñ:¸SÅ¹UÑBØññ 	Ø•1�a‘4‰x˜�A˜q™D™ 3¥q¨!¡t¡8Ñ+¨cµ!°Q±$©hÑ6¸½QÀ¹T¹ÑAØ�A‰ñØññ ñ	à�1˜a™4‘x ¥A q¡D¡¨3­q°!©t©8Ñ!3°c½!¸Q¹$±hÑ!>ÀÝ	ˆ1‰ñBñ "Ø•1‰uñ"Øñ"ñ ñ	ð "¥!™e R­¨1©¡W¨rµ!°Q±$©wÑ%6¸½QÀ¹T¹Ñ%AØ�Aˆq‰D‰ñ&Ø•q‘5ñ&Øñ&ñ ñ	õ "# 2¡¤ q¡ñ		)ð ,.¨qµ°A±©v¸½1¸a¹4¹Ñ/?Ø
�1ˆa‰4‰ñ0Ø•Q˜‘T‘'ñ0Ø�q !™t™Gñ0$Ø&(­¡dñ0+ñ ,,ñ		,ð
 /1°!µA°q±D±&¸2½aÀ¹d¹7Ñ2BØ
�Q�‰T‰'ñ3Ø•q˜!‘t‘Gñ3Ø ¥™dñ3#Ø%'ñ3(ñ /)ñ	)õ 	ˆB��A•a‘C‘ %Ð(Ñ(Ô(­!¨a©%Ñ0åˆB�•A‘ Ð&Ñ&Ô&¨­!©Ñ,ð%õ, 	
�!‰Œ�	Š	•!‰Œ•q�1˜Q™4œ4 ™6‘{¥A­¨!©¬¨Q©¡K°!¡OÑ4Ñ4µq¸!±t½A½a¹D¼D±yÑ@Ý	�!�A‰$Œ$�‰'‰	•1•q˜‘t”t˜A‘v‘;Ññ	 àˆq�!�Qðõ 	
�!‰Œ�	Š	•!‰Œ•s�1˜a™4‘y”yÑ ¥3¥q¡6¤6­!­A©$¬$¡;Ñ.µµQ±´½½!¹¼¸a¹±Ñ?Øˆq�!�Qðõ
 	
�!‰Œ�	Š	•!‰Œ•t�A¥¥Q¡¤™KÑ(Ô(Ñ(­1­Q©4¬4Ñ/µ!°Q±$µq½±t´t¸Q±w±,Ñ>Øˆq�!�Qðð 
�Q�‰T‰•1•Q‘4”4—9’9�Q ‘?”?Ñ" Q¥q¡S­­1©¬¯ªµ1©¬Ñ%5Ñ5¸½1½Q¹4¼4¹Ñ?Øˆq�!�Qðõ
 	
�!‰Œ�	Š	•!‰Œ•q˜!‘tÑ�a ™d¥1¥Q¡4¤4™iÑ'­1¨a©4µ°Q±©<½½1¹¼¸q¹Ñ*@Ñ@Øˆq�!�Qðõ
 	
�!‰Œ�	Š	•!‰Œ•Q•q‘T”T˜1‘WÑ¥ 1¡ q¡­1¨a©4°!©8Ñ4µQµq±T´TÑ9Ñ9¸A¸qÅ¹sØ
ñ@ñ =ñ 	Ý•‰tŒt�Q‰wñ	àˆq�!�QððWO€Eð`  %ð )ð )ÑˆˆC��R˜Ý$ R­­AÑ.Ô.‰ˆˆuØ˜Š|ˆ|ˆ|ˆ|Øð 	)Ø˜˜B�< 5Ò(Ð(Ð(Ð(øð	)ð )r-   c                  óL  — t          dt          dz  z  dt          dz  z  z   dt          z  z
  dz   t          ¦  «        t          dt          dz  z  t          dz  z
  d	t          dz  z  z   d
t          d
z  z  z   dt          dz  z  z   dt          d	z  z  z   d
t          dz  z  z
  dt          dz  z  z   dt          dz  z  z
  d	t          z  z   dz   t          ¦  «        d
ft          dt          ¦  «        t          dt          dz  z  dt          dz  z  z   dt          dz  z  z   dt          z  z
  dz
  t          ¦  «        dft          dt          dz  z  dt          dz  z  z
  dt          z  z   dz
  t          ¦  «        t          dt          dz  z  dt          dz  z  z   dt          z  z
  dz
  t          ¦  «        dft          dt          dz  z  dt          d
z  z  z
  dt          dz  z  z
  dt          d	z  z  z   dt          dz  z  z   t          dz  z
  t          dz  z   dt          z  z
  t          ¦  «        t          dt          dz  z  t          z   t          ¦  «        dft          d	t          dz  z  dt          d	z  z  z   dt          dz  z  z
  dt          dz  z  z
  t          dz  z   dt          z  z
  dz   t          ¦  «        t          dt          dz  z  dt          dz  z  z   dt          dz  z  z
  dt          z  z   dz   t          ¦  «        dfg} | D ]"\  }}}t          ||t          ¦  «        |k    sJ ‚Œ#dS )a  
    This function tests the valuation of rational
    function at oo.

    Each test case has 3 values -

    1. num - Numerator of rational function.
    2. den - Denominator of rational function.
    3. val_inf - Valuation of rational function at oo
    rv   r>   rT   r?   é   rW   ióÿÿÿrV   rM   rL   rR   é   r)   é÷ÿÿÿé   é   rX   rN   rU   r   iòÿÿÿrY   N)r   r'   r   )r[   r:   r;   Úvals       r+   Útest_val_at_infr‘     sõ  € õ 	ˆR•�1‘‰W�q�˜A™‘vÑ ¥1¡Ñ$ qÑ(­!Ñ,Ô,ÝˆS•�B‘‰Y�˜A™Ñ ¥! Q¡$¡Ñ&¨­1¨a©4©Ñ/°"µQ¸±T±'Ñ9¸A½aÀ¹d¹FÑBÀQÅqÈ!ÁtÁVÑKÈbÕQRÐTUÑQUÉgÑUÐXYÕZ[Ð]^ÑZ^ÑX^Ñ^ÐabÕcdÑadÑdÐgiÑiÕklÑmÔmØ	
ðõ 	ˆQ•‰
Œ
ÝˆR•�1‘‰W�q�˜A™‘vÑ ¥1 a¡4¡Ñ'¨!­A©#Ñ-°Ñ2µAÑ6Ô6Ø	
ðõ 	ˆR•�1‘‰W�q�˜A™‘vÑ ¥!¡Ñ# aÑ'­Ñ+Ô+ÝˆR•�1‘‰W�r�!˜Q™$‘wÑ ¥1¡Ñ$ qÑ(­!Ñ,Ô,Ø	
ðõ 	ˆR•�1‘‰W�r�!˜Q™$‘wÑ ¥A q¡D¡Ñ(¨1­Q°©T©6Ñ1°Aµa¸±d±FÑ:½QÀ¹TÑAÅAÀqÁDÑHÈ2ÍaÉ4ÑOÕQRÑSÔSÝˆS•�A‘‰X�‰\�1ÑÔØ	ðõ 	ˆQ�q�!‰t‰V�a�˜1™‘f‰_˜r¥! Q¡$™wÑ&¨­1¨a©4©Ñ/µ!°Q±$Ñ6¸½1¹Ñ<¸qÑ@Å!ÑDÔDÝˆR•�1‘‰W�q�˜A™‘vÑ ¥! Q¡$¡Ñ&¨­A©Ñ-°Ñ2µAÑ6Ô6Ø	ðð1€Eð: ð .ð .‰ˆˆS�#Ý˜#˜s¥AÑ&Ô&¨#Ò-Ð-Ð-Ð-Ð-ð.ð .r-   c                  óÆ   — t          dg d¢¦  «        dk    sJ ‚t          dg d¢¦  «        dk    sJ ‚t          dg d¢¦  «        dk    sJ ‚t          dg d¢¦  «        d	k    sJ ‚d
S )zt
    This function tests the necessary conditions for
    a Riccati ODE to have a rational particular solution.
    rb   )r)   r?   rR   Fr)   r?   )r>   r)   rW   éöÿÿÿ)r)   r?   rT   rU   TN)r   r0   r-   r+   Útest_necessary_condsr”   F  s†   € õ !  Y Y YÑ/Ô/°5Ò8Ð8Ð8Ð8å   I I IÑ.Ô.°%Ò7Ð7Ð7Ð7å   I I IÑ.Ô.°%Ò7Ð7Ð7Ð7å   m m mÑ4Ô4¸Ò<Ð<Ð<Ð<Ð<Ð<r-   c            	      ól  — dt           dz  z  dt           dz  z  z
  dt           z  z
  dz
  dt           z  dz   z  dt           dz  z  d	t           d
z  z  z   dt           dz  z  z   dt           dz  z  z   dt           z  z
  dz
  dt           dz  z  dt           dz  z  z
  dt           z  z   dz   z  dt           dz  z  dt           d
z  z  z
  dt           dz  z  z   dt           dz  z  z
  dt           z  z
  dz
  dt           d
z  z  dt           dz  z  z   dt           dz  z  z   dt           z  z   dz
  z  dt           dz  z  dt           dz  z  z   dt           dz  z  z
  dt           d
z  z  z
  dt           dz  z  z   dt           z  z   dz
  dt           dz  z  dt           z  z
  dz
  z  dt           dz  z  dt           dz  z  z
  dt           d
z  z  z   dt           dz  z  z
  dt           z  z   dz   dt           dz  z  dt           dz  z  z
  dt           dz  z  z   dt           d
z  z  z   dt           dz  z  z
  dt           dz  z  z   dt           z  z   dz
  z  g} | D ]z}d„ |                     ¦   «         D ¦   «         \  }}t          ||t           ¦  «        \  }}|                     t           dt           z  ¦  «                             ¦   «         ||z  k    sJ ‚Œ{dS )zi
    This function tests the substitution x -> 1/x
    in rational functions represented using Poly.
    rŽ   r>   rT   r?   rW   é   ri   rM   rƒ   rR   éP   é   rt   é–   éK   rU   iñÿÿÿrz   rL   ru   ro   éd   éð   rv   rk   rV   c                 ó8   — g | ]}t          |t          ¦  «        ‘ŒS r0   )r   r'   )r1   Úes     r+   r3   z/test_inverse_transform_poly.<locals>.<listcomp>g  s    € Ð;Ð;Ð; 1•D˜�A‘J”JÐ;Ð;Ð;r-   r)   N)r'   Úas_numer_denomr   ÚsubsrZ   )Úfnsr&   r:   r;   s       r+   Útest_inverse_transform_polyr¢   U  sÊ  € ð �ˆ1‰�Wˆq•�A‘‰vÑ˜�!™Ñ˜aÑ "¥Q¡$¨¡(Ñ+à�ˆA‰�X�•1�a‘4‘Ñ˜"�Q ™T™'Ñ! B¥q¨!¡t¡GÑ+¨bµ©dÑ2°RÑ7¸#½aÀ¹d¹(ÀSÍÈAÉÁXÑ:MÐPRÕSTÑPTÑ:TÐWYÑ:YÑZà�ˆA‰�X�•1�a‘4‘Ñ˜"�Q ™T™'Ñ! B¥q¨!¡t¡GÑ+¨bµ©dÑ2°RÑ7¸"½QÀ¹T¹'ÀBÅqÈ!ÁtÁGÑ:KÈbÕQRÐTUÑQUÉgÑ:UÐXZÕ[\ÑX\Ñ:\Ð_aÑ:aÑbà�ˆ1‰�Wˆr•!�Q‘$‰wÑ˜�A˜q™D™Ñ  2¥a¨¡d¡7Ñ*¨Rµ°1±©WÑ4°s½1±uÑ<¸rÑAÀCÍÈ1ÉÁHÈrÕRSÉtÁOÐVXÑDXÑYà�ˆ1‰�Wˆr•!�Q‘$‰wÑ˜�A˜q™D™Ñ  2¥a¨¡d¡7Ñ*¨Rµ©TÑ1°BÑ6¸½1¸b¹5¹À2ÅaÈÁdÁ7Ñ9JÈRÕPQÐSTÑPTÉWÑ9TÐWYÕZ[Ð]^ÑZ^ÑW^Ñ9^ÐabÕcdÐfgÑcgÑagÑ9gØ�ˆA‰�gñ:Ø•1‘ñ:Øñ:ñ ð€Cð ð 2ð 2ˆØ;Ð;¨×(8Ò(8Ñ(:Ô(:Ð;Ñ;Ô;‰ˆˆSÝ)¨#¨sµAÑ6Ô6‰ˆˆSØ�vŠv•a˜�1™‰~Œ~×$Ò$Ñ&Ô&¨#¨c©'Ò1Ð1Ð1Ð1Ð1ð2ð 2r-   c                  ón  — t          dt          dz  z  dt          z  z   dz   t          ¦  «        t          dt          dz  z  dt          dz  z  z   dt          z  z   dz
  t          ¦  «        dft          dt          d	z  z  dt          dz  z  z
  d
t          dz  z  z
  dt          z  z
  dz   t          ¦  «        t          dt          dz  z  dt          dz  z  z
  dt          z  z   dz
  t          ¦  «        t          ft          dt          dz  z  dt          dz  z  z
  dt          dz  z  z   dt          dz  z  z
  dt          d	z  z  z
  dt          dz  z  z   dt          dz  z  z
  dt          z  z   dz   t          ¦  «        t          dt          dz  z  dt          dz  z  z
  dt          dz  z  z
  dt          d	z  z  z   dt          dz  z  z
  d t          dz  z  z   d!t          z  z   d"z   t          ¦  «        t           ft          d!t          dz  z  d#t          dz  z  z
  d$t          dz  z  z   d$t          d	z  z  z   d%t          dz  z  z
  d&t          dz  z  z   d't          z  z   d(z   t          ¦  «        t          d)t          dz  z  dt          dz  z  z   d*t          dz  z  z   d*t          d	z  z  z   d+t          dz  z  z
  d,t          dz  z  z
  d-t          z  z   d.z   t          ¦  «        t          d/¦  «        dz  ft          d0t          d	z  z  d1t          dz  z  z
  d.t          dz  z  z   d2t          z  z
  d3z
  t          ¦  «        t          d4t          d	z  z  dt          dz  z  z   d5t          dz  z  z
  dt          z  z   dz   t          ¦  «        t          d0¦  «        d4z  fg} | D ]"\  }}}t	          ||t          ¦  «        |k    sJ ‚Œ#d6S )7a   
    This function tests the limit at oo of a
    rational function.

    Each test case has 3 values -

    1. num - Numerator of rational function.
    2. den - Denominator of rational function.
    3. limit_at_inf - Limit of rational function at oo
    éôÿÿÿr?   ro   é    r>   rj   r   éì  rR   i¼  ix  iœ  i'  éô  i  i!ýÿÿrT   rL   i�  rW   rs   rM   iX  éH  i  iv  iÄ  ið  é|  éT   é¤  iè  rm   é¨   iÀ  rt   r—   rk   r€   rŽ   iß  iÐ  iÐ   iØ	  ið
  i  r)   é   iÂ  i„  éZ   i_  i  N)r   r'   r   r
   r   )r[   r:   r;   Úlims       r+   Útest_limit_at_infr°   l  s„  € õ 	ˆS•�A‘‰X˜�1™‰_˜rÑ!¥1Ñ%Ô%ÝˆR•�1‘‰W�r�!˜Q™$‘wÑ ¥1¡Ñ$ rÑ)­1Ñ-Ô-Ø	ðõ 	ˆT•!�Q‘$‰Y˜�a ™d™Ñ" S­¨A©¡XÑ-°µQ±Ñ6¸Ñ=½qÑAÔAÝˆT•!�Q‘$‰Y˜�a ™d™Ñ" S­¡UÑ*¨SÑ0µ!Ñ4Ô4Ý
ðõ 	ˆT•!�Q‘$‰Y˜�a ™d™Ñ" T­!¨Q©$¡YÑ.°µQ¸±T±Ñ9¸CÅÀ1Á¹HÑDÀsÍ1ÈaÉ4ÁxÑOÐRUÕVWÐYZÑVZÑRZÑZØ
�a‰%ñØñÝñ	ô 	åˆT•!�Q‘$‰Y˜�a ™d™Ñ" R­¨1©¡WÑ,¨tµA°q±D©yÑ8¸3½qÀ!¹t¹8ÑCÀdÍ1ÈaÉ4ÁiÑOÐRUÕVWÑRWÑWÐZ]Ñ]Õ_`ÑaÔaÝ	ˆð	õ 	ˆS•�A‘‰X˜�A˜q™D™Ñ  2¥a¨¡d¡7Ñ*¨Rµ°1±©WÑ4°r½!¸Q¹$±wÑ>ÀÅAÀqÁDÁÑHÈ3ÍqÉ5ÑPÐSUÑUÕWXÑYÔYÝˆS•�A‘‰X˜�A˜q™D™Ñ  3¥q¨!¡t¡8Ñ+¨cµ!°Q±$©hÑ6¸½aÀ¹d¹ÑBÀTÍ!ÈQÉ$ÁYÑNÐQUÕVWÑQWÑWÐZ]Ñ]Õ_`ÑaÔaÝ	ˆ!‰ŒˆQ‰ðõ 	ˆS•�A‘‰X˜�A˜q™D™Ñ  3¥q¨!¡t¡8Ñ+¨cµ!©eÑ3°bÑ8½!Ñ<Ô<ÝˆS•�A‘‰X˜�A˜q™D™Ñ  4­¨1©¡9Ñ,¨sµ1©uÑ4°sÑ:½AÑ>Ô>Ý	ˆ#‰Œˆs‰
ðð5€Eð> ð 0ð 0‰ˆˆS�#Ý˜C ¥aÑ(Ô(¨CÒ/Ð/Ð/Ð/Ð/ð0ð 0r-   c                  ó”  — t          dt          dz  z  dt          dz  z  z   dt          z  z   dz
  t          d¬¦  «        t          dt          dz  z  d	t          d
z  z  z   dt          dz  z  z   dt          dz  z  z   dt          dz  z  z   dt          dz  z  z   t          d¬¦  «        t          d¦  «        t          d¦  «        dz  t          d¦  «        t          z  dz  z   gt          d¦  «        dz  t          d¦  «        t          z  dz  z
  ggft          dt          dz  z  dt          dz  z  z   dt          z  z   dz   t          d¬¦  «        t          dt          dz  z  dt          dz  z  z
  dt          dz  z  z   dt          dz  z  z
  dt          z  z   dz   t          d¬¦  «        t          d
¦  «        dz  t          d¦  «        dz  t          d¦  «        dz  z   gt          d¦  «        dz  t          d¦  «        dz  z
  ggft          dt          z  dz   t          d¬¦  «        t          dt          dz  z  ddt          d¦  «        z  z
  t          dz  z  z   ddt          d¦  «        z  z
  t          dz  z  z   ddt          d¦  «        z  z
  t          z  z   dt          d¦  «        z  z   d	z   t          d¬ ¦  «        t          d¦  «        t          d¦  «        z   dz  t          d¦  «        dz  t          t          ddt          d¦  «        z  dz   d!¬"¦  «        d#t          d¦  «        z  d$z   z  dz   ¦  «        dz  z   gt          d¦  «        dz  t          t          ddt          d¦  «        z  dz   d!¬"¦  «        d#t          d¦  «        z  d$z   z  dz   ¦  «        dz  z
  ggfg} | D ]$\  }}}}t          ||t          |¦  «        |k    sJ ‚Œ%d%S )&ab  
    This function tests the Case 1 in the step
    to calculate coefficients of c-vectors.

    Each test case has 4 values -

    1. num - Numerator of the rational function a(x).
    2. den - Denominator of the rational function a(x).
    3. pole - Pole of a(x) for which c-vector is being
       calculated.
    4. c - The c-vector for the pole.
    rb   r>   r?   rR   rM   T©Ú	extensionrT   é   rL   rV   rU   rW   r   r)   i°  i   i0  i0  é€   i�  ið  ie  i�  é1   ijÁù iz  r–   r�   rŒ   zQQ<sqrt(3)>©ÚdomainFrO   é   é,   N)r   r'   r
   r   r   r   r   )r[   r:   r;   ÚpoleÚcs        r+   Útest_construct_c_case_1r½   š  s‘  € õ 	ˆR•�1‘‰W�q�˜A™‘vÑ ¥!¡Ñ# aÑ'­°dÐ;Ñ;Ô;ÝˆQ�q�!‰t‰V�b�˜A™‘gÑ ¥! Q¡$¡Ñ&¨­A¨q©D©Ñ0°1µQ¸±T±6Ñ9¸B½qÀ!¹t¹GÑCÅQÐRVÐWÑWÔWÝ	ˆ!‰ŒÝ
ˆA‰$Œ$ˆq‰&•4˜‘7”7�1‘9˜Q‘;Ñ
Ð	¥! A¡$¤$ q¡&­4°©7¬7µ1©9°Q©;Ñ"6Ð!7Ð8ð	õ 	ˆT•!�Q‘$‰Y˜�a ™d™Ñ" S­¡UÑ*¨SÑ0µ!¸tÐDÑDÔDÝˆS•�A‘‰X˜�A˜q™D™Ñ  4­¨1©¡9Ñ,¨tµA°q±D©yÑ8¸3½q¹5Ñ@À2ÑEÅqÐTXÐYÑYÔYÝ	ˆ!‰ŒˆQ‰Ý
ˆA‰$Œ$ˆq‰&•4˜‘>”> #Ñ%Ñ
%Ð	&­¨1©¬¨a©µ$°x±.´.ÀÑ2DÑ)DÐ(EÐFð	õ 	ˆQ�q‰S�1‰W•a 4Ð(Ñ(Ô(ÝˆR•�1‘‰W˜˜B�t A™wœw™J™­¨1©Ñ,Ñ,°°R½¸Q¹¼±Z±ÅÀAÁÑ/EÑEÈÈQÍtÐTUÉwÌwÉYÉÕXYÑHYÑYØ•�Q‘”‰iñØñÝ¨ð	7ñ 	7ô 	7å	
ˆ1‰Œ•�Q‘”‰˜ÑÝ
ˆA‰$Œ$ˆq‰&•4�˜A˜q¥ a¡¤™y¨1™}°uÐ=Ñ=Ô=¸rÅ$ÀqÁ'Ä'¹zÈB¹ÑOÐRSÑSÑTÔTÐUVÑVÑ
VÐ	WÝˆq‰TŒT�!‰V•d�3˜q !¥D¨¡G¤G¡)¨a¡-¸%Ð@Ñ@Ô@À"ÅTÈ!ÁWÄWÁ*ÈrÁ/ÑRÐUVÑVÑWÔWÐXYÑYÑYÐZð	\ðð€Eð* #ð :ð :ÑˆˆS�$˜Ý! # s­A¨tÑ4Ô4¸Ò9Ð9Ð9Ð9Ð9ð:ð :r-   c                  ó:  — t          dt          d¬¦  «        t          t          dz
  dz  t          dz
  z  t          d¬¦  «        ddt           dt          z
  z  dz  gt          dt          z   z  dz  ggft          dt          dz  z  dt          d	z  z  z
  d
t          dz  z  z
  dz   t          d¬¦  «        t          dt          z  dz
  dz  t          dz   dz  z  t          d¬¦  «        t          d¦  «        dz  dt          d¦  «         dz  gt          d¦  «         dz  ggft          t          dz  t          dz  z
  d	t          z  z   t          d¬¦  «        t          t          dz
  d	z  t          dz   dz  z  t          d¬¦  «        dd	d
t	          d¦  «        z  t          d¦  «        dz  d	t	          d¦  «        z  d
z  z
  z  dz  dt	          d¦  «        z  d
z  gdt	          d¦  «        z  t          d¦  «        dz  d	t	          d¦  «        z  d
z  z   z  dz  dt	          d¦  «        z  d
z  ggft          dt          dz  z  t          d	z  z   dz   t          d¬¦  «        t          d	t          z  dz   d	z  t          dz   z  t          d¬¦  «        t          d¦  «         d	z  d	dt	          d¦  «        z  t	          d¦  «         dz  t          d¦  «        dz  z
  z  dz  t	          d¦  «        dz  gdt	          d¦  «        z  t	          d¦  «        dz  t          d¦  «        dz  z
  z  dz  t	          d¦  «         dz  ggft          t          dz  dz   t          d¬¦  «        t          dt          z  dz
  dz  t          dz  dz   z  t          d¬¦  «        t          d¦  «        dz  ddt	          d¦  «        z  t	          d¦  «         dz  t          d¦  «        dz  z
  z  dz  dt	          d¦  «        z  dz  t	          d¦  «        d z  gd!t	          d¦  «        z  t	          d¦  «        dz  t          d¦  «        dz  z
  z  dz  dt	          d¦  «        z  dz  t	          d¦  «         d z  ggft          t          dz  dz   t          d¬¦  «        t          t          t	          d¦  «        z
  dz  t          d¬¦  «        t	          d¦  «        dt	          d"¦  «        t          d¦  «        d
z  dt	          d"¦  «        z  z
  z  d#z  t	          d
¦  «        d
z  t	          d"¦  «        gt	          d"¦  «         t          d¦  «        d
z  dt	          d"¦  «        z  z   z  d#z  t	          d
¦  «         d
z  t	          d"¦  «         ggfg} | D ]&\  }}}}}t          ||t          ||¦  «        |k    sJ ‚Œ'd$S )%a�  
    This function tests the Case 2 in the step
    to calculate coefficients of c-vectors.

    Each test case has 5 values -

    1. num - Numerator of the rational function a(x).
    2. den - Denominator of the rational function a(x).
    3. pole - Pole of a(x) for which c-vector is being
       calculated.
    4. mul - The multiplicity of the pole.
    5. c - The c-vector for the pole.
    r)   Tr²   r?   rQ   r>   rM   rU   rR   rL   éY   rp   rV   rt   iW  éùÿÿÿrY   rµ   i·  é7   i 8  é   i€ÿÿÿrW   rl   éB   é6   éƒ   i$ r„   iÍ  rw   iåÿÿÿr�   é   N)r   r'   r   r
   r   r   )r[   r:   r;   r»   Úmulr¼   s         r+   Útest_construct_c_case_2rÈ   À  s  € õ" 	ˆQ•˜TÐ"Ñ"Ô"Ý�a�!‰e�a‰Z�˜Q™Ñ¥¨dÐ3Ñ3Ô3Ø	ˆ1Ýˆ"ˆb•1‰f‰+�a‰-ˆ�1˜b¥1™f™: a™<˜.Ð)ð	õ 	ˆQ�q�!‰t‰V�b�˜A™‘gÑ ¥! Q¡$¡Ñ&¨Ñ*­A¸Ð>Ñ>Ô>Ýˆa•‰c�A‰g˜‰\�1˜q™5 1™*Ñ$¥a°4Ð8Ñ8Ô8Ý	ˆ!‰ŒˆQ‰�ÝˆR‰5Œ5ˆ&�‰)ˆ�˜!™œ�u˜R‘x�jÐ!ð	õ 	�Q�‰T•A�q‘D‰[˜1�Q™3Ñ¥¨TÐ2Ñ2Ô2Ý�a�!‰e�a‰Z�˜Q™ ™
Ñ"¥A°Ð6Ñ6Ô6Ø	ˆ1Ø
�D�‰GŒG‰)•Q�r‘U”U˜3‘Y ¥4¨¡7¤7¡¨1¡Ñ,Ñ
-¨bÑ
0°!µD¸±G´G±)¸A±+Ð	>Ø	�D�‰GŒG‰•Q�r‘U”U˜3‘Y ¥4¨¡7¤7¡¨1¡Ñ,Ñ	-¨bÑ	0°"µT¸!±W´W±*¸Q±,Ð?ð	Að	õ 	ˆQ�q�!‰t‰V•a˜‘d‰]˜QÑ¥¨TÐ2Ñ2Ô2Ýˆa•‰c�A‰g˜‰\�1˜q™5Ñ!¥1°Ð5Ñ5Ô5Ý	
ˆ1‰Œˆˆa‰�Ø
�d�3‰iŒi‰-�$˜s™)œ)˜ C™­!¨B©%¬%°©+Ñ5Ñ
6°sÑ
:½DÀ¹I¼IÀc¹MÐ	JØ	�d�3‰iŒi‰�˜c™œ 3™­¨2©¬¨u©Ñ4Ñ	5°cÑ	9½DÀ¹I¼I¸:Àc¹>ÐJð	Lð	õ 	�Q�‰T�A‰X•q DÐ)Ñ)Ô)Ýˆa•‰c�A‰g˜‰\�1˜a™4 !™8Ñ$¥a°4Ð8Ñ8Ô8Ý	ˆ!‰ŒˆQ‰�Ø
�T�"‰XŒX‰+�˜R™œ�y ‘|¥a¨¡f¤f¨V¡mÑ3Ñ
4°RÑ
7¸½DÀ¹H¼H¹ÀTÑ9IÍ4ÐPRÉ8Ì8ÐTWÉ<Ð	XØ	�T�"‰XŒX‰•t˜B‘x”x ‘{¥Q s¡V¤V¨F¡]Ñ2Ñ	3°BÑ	6¸½$¸r¹(¼(¹
À4¹Í$ÈrÉ(Ì(ÈÐSVÉÐWð	Yð	õ 	�Q�‰T�B‰Y� TÐ*Ñ*Ô*Ý�a•$�q‘'”'‰k˜AÑ�q¨DÐ1Ñ1Ô1ÝˆQ‰Œ�Ý
ˆr‰(Œ(•A�a‘D”D˜‘F˜Q�t B™xœx™ZÑ'Ñ
(¨Ñ
+­T°!©W¬W°Q©Y½¸R¹¼Ð	AÝ
ˆr‰(Œ(ˆ•A�a‘D”D˜‘F˜Q�t B™xœx™ZÑ'Ñ	(¨Ñ	+­d°1©g¬g¨X°a©Z½$¸r¹(¼(¸ÐCð	Eð	ðK+€EðX #(ð ?ð ?ÑˆˆS�$˜˜QÝ! # s­A¨t°SÑ9Ô9¸QÒ>Ð>Ð>Ð>Ð>ð?ð ?r-   c                  ó2   — t          ¦   «         dggk    sJ ‚dS )z`
    This function tests the Case 3 in the step
    to calculate coefficients of c-vectors.
    r)   N)r    r0   r-   r+   Útest_construct_c_case_3rÊ   þ  s%   € õ
 ÑÔ Q C 5Ò(Ð(Ð(Ð(Ð(Ð(r-   c                  óÊ  — t          t          dz   dt          dz  z  z
  dt          dz  z  z   dt          z  z   dz   t          d¬¦  «        t          dt          dz  z  dt          dz  z  z
  dt          z  z   dz
  t          d¬¦  «        ddt          z  d	z  t          dz  d
t          z  t          d¦  «        dz  t          dz  z
  z  dz  gdt          z  d	z  t           dz  dt          z  t          d¦  «        dz  t          dz  z   z  dz  ggft          t          dz   dt          dz  z  z   dt          dz  z  z   dt          dz  z  z   dt          dz  z  z   dt          z  z   dz   t          d¬¦  «        t          t          dz  dt          dz  z  z   dt          dz  z  z   t          z
  dz   t          d¬¦  «        ddt          z  t          t           dt          z
  z  dz  gdt          z  t           t          dt          z   z  dz  ggft          dt          dz  z  t          dz  z
  t          dz  z
  dt          dz  z  z
  t          dz  z
  dt          z  z
  dz
  t          d¬¦  «        t          dt          dz  z  dt          z  z   dz   t          d¬¦  «        ddt	          d¦  «        z  t          z  dz  dt	          d¦  «        z  t          z  dz  t	          d¦  «        t          z  dz  t	          d¦  «         t          z  t          d¦  «        dz  dt	          d¦  «        z  t          z  dz  z
  z  dz  gdt	          d¦  «        z  t          z  dz  dt	          d¦  «        z  t          z  dz  t	          d¦  «         t          z  dz  t	          d¦  «        t          z  t          d¦  «        dz  dt	          d¦  «        z  t          z  dz  z   z  dz  ggft          d
t          dz  z  dt          dz  z  z
  dt          dz  z  z
  t          dz  z
  dz
  t          d¬¦  «        t          dt          z  dz
  t          d¬¦  «        ddt          z  dz  dt          z  dz  t          dz  t           t          d¦  «         d z  t          z
  z  gd!t          z  dz  d"t          z  dz  t           dz  t          t          d¦  «         d z  t          z   z  ggft          t          dz   t          dz  z
  t          dz  z
  t          dz  z
  t          z
  t          d¬¦  «        t          t          dz   t          d¬¦  «        dd#t          z  dz  dt          z  t           t          t           d$dt          z  z
  z  dz  gdt          z  dz  dt          z  t          t           t          d$dt          z  z   z  dz  ggft          t          dz   t          dz  z
  dt          dz  z  z
  dt          dz  z  z
  t          dz  z
  t          dz  z
  dt          z  z   dz
  t          d¬¦  «        t          dt          z  dz
  t          d¬¦  «        ddt	          d¦  «        z  t          z  dz  dt	          d¦  «        z  t          z  dz  t	          d¦  «        t          z  dz  t	          d¦  «        t          z  dz  t	          d¦  «         t          z  t          d¦  «         d%z  dt	          d¦  «        z  t          z  dz  z
  z  dz  gd
t	          d¦  «        z  t          z  dz  d
t	          d¦  «        z  t          z  dz  t	          d¦  «         t          z  dz  t	          d¦  «         t          z  dz  t	          d¦  «        t          z  t          d¦  «         d%z  dt	          d¦  «        z  t          z  dz  z   z  dz  ggfg} | D ]>\  }}}}t          ||t          t          |d¦  «        }t          ||dz  ¦  «        |k    sJ ‚Œ?d&S )'a9  
    This function tests the Case 4 in the step
    to calculate coefficients of the d-vector.

    Each test case has 4 values -

    1. num - Numerator of the rational function a(x).
    2. den - Denominator of the rational function a(x).
    3. mul - Multiplicity of oo as a pole.
    4. d - The d-vector.
    rM   r?   rR   r>   Tr²   rV   rv   rl   rb   éž   rh   r“   rW   rL   rU   rX   r}   rY   i  r­   iïÿÿÿrz   iIB  i 
  ióþÿÿr)   é)   éÀ   ru   é;   i   i×ÿÿÿrÀ   rN   r�   rT   N)r   r'   r   r
   r   r$   r   r!   )r[   r:   r;   rÇ   ÚdÚsers         r+   Útest_construct_d_case_4rÒ     sç  € õ 	�a�‰dˆU�Q•q˜!‘t‘V‰^˜a¥ 1¡™fÑ$ q­¡sÑ*¨QÑ.µ¸TÐBÑBÔBÝˆQ�q�!‰t‰V�a�˜1™‘f‰_˜r¥!™tÑ# aÑ'­°dÐ;Ñ;Ô;Ø	Ø
�Q‰$ˆr‰'•1�Q‘3˜�1™�a ™fœf S™j­1¨Q©3Ñ.Ñ/°Ñ1Ð	2Ø	�Q‰ˆr‰•A�2�a‘4˜�1™�a ™fœf S™j­1¨Q©3Ñ.Ñ/°Ñ1Ð2ð	4ð	õ 	�a�‰dˆU�Q•q˜!‘t‘V‰^˜a¥ 1¡™fÑ$ q­¨A©¡vÑ-°µ!°Q±$±Ñ6¸½1¹Ñ<¸qÑ@Å!ÈtÐTÑTÔTÝ�Q�‰T�A•a˜‘d‘F‰]˜R¥ 1¡™WÑ$¥qÑ(¨1Ñ,­a¸4Ð@Ñ@Ô@Ø	Ø
�Q‰$••A�2�r�A‘v‘;˜q‘=Ð	! A¥a¡C­!¨­Q°µQ±©Z¸©\Ð#:Ð;ð	õ 	ˆR•�1‘‰W•q˜!‘t‰^�a ™dÑ" Q¥q¨!¡t¡VÑ+­a°©dÑ2°Qµq±SÑ8¸1Ñ<½aÈ4ÐPÑPÔPÝˆQ�q�!‰t‰V�b�‘d‰]˜QÑ¥¨TÐ2Ñ2Ô2Ø	Ø
�d�1‰gŒg‰+•a‰-˜Ñ
˜S¥ a¡¤™[­™]¨2Ñ-­t°A©w¬wµq©y¸©{½TÀ!¹W¼W¸HÅQ¹JÍÈ%ÉÌÐQUÉØ
�D�‰GŒG‰)•A‰+�a‰-ñIñ =Øñ=ð 
Ø"¥4¨¡7¤7™l­1™n¨SÑ0°"µT¸!±W´W±*½Q±,¸r±/ÅDÈÁGÄGÀ8ÍAÁ:ÈaÁ<ÝˆQ‰Œ•‰	•1�U‘8”8˜D‘= 1¥T¨!¡W¤W¡9­Q¡;¨q¡=Ñ0Ñ1°!Ñ3ð5ð	6ð	õ 	ˆR•�1‘‰W�q�˜A™‘vÑ ¥! Q¡$¡Ñ&­¨A©Ñ-°Ñ1µ1ÀÐEÑEÔEÝˆR•‰T�A‰X•q DÐ)Ñ)Ô)Ø	Ø
�Q‰$ˆs‰(�A•a‘C˜‘F�A˜a™C¥! ¥a¨¡e¤e V¨D¡[µ1¡_Ñ!5Ð	6Ø	�Q‰ˆs‰�B•q‘D˜‘G�a˜R ™T¥1¥q¨¡u¤u f¨T¡kµA¡oÑ#6Ð7ð	9ð	õ 	�a�‰dˆU•Q˜‘T‰\�A˜q™DÑ ¥1 a¡4Ñ'­!Ñ+­Q¸$Ð?Ñ?Ô?Ý�Q�‰U•A Ð&Ñ&Ô&Ø	Ø
�Q‰$ˆq‰&�!•A‘#��r�1�q˜b " q­¡s¡(™m¨A™oÐ	.°µ1±°Q±¸½1¹½aÅ!ÀÅQÈÈQÍqÉSÉÁ\ÐRSÁ^Ð0TÐUð	õ 	�a�‰dˆU•Q˜‘T‰\˜A�a ™d™FÑ" Q¥q¨!¡t¡VÑ+­a°©dÑ2µQ¸±TÑ9¸A½a¹CÑ?À!ÑCÅQÐRVÐWÑWÔWÝˆQ�q‰S�1‰W•a 4Ð(Ñ(Ô(Ø	Ø
�D�‰GŒG‰)•A‰+�a‰-˜�4 ™7œ7™¥1™ Q™­¨Q©¬µ©	°!©µT¸!±W´W½Q±Y¸q±[Å4ÈÁ7Ä7À(Í1Á*ÍqÐQRÉtÌtÈeÐTUÉgØ	�$ˆq‰'Œ'‰	•!‰�A‰ñOñ CØñCð 
Ø�t A™wœw™J¥q™L¨™N¨B­t°A©w¬w©Jµq©L¸©N½TÀ!¹W¼W¸HÅQ¹JÀq¹LÍ4ÐPQÉ7Ì7È(ÕSTÉ*ÐUVÉ,ÝˆQ‰Œ•‰	•A�a‘D”D�5˜‘7˜Q�t A™wœw™Y¥q™[¨™]Ñ*Ñ+¨AÑ-ð/ð	0ð	ðM-€Eð\ "ð 4ð 4ÑˆˆS�#�qÝ% c¨3µµ2°s¸AÑ>Ô>ˆÝ! # s¨A¡vÑ.Ô.°!Ò3Ð3Ð3Ð3Ð3ð4ð 4r-   c            
      ó<  — t          dt          dz  z  t          dz  z   t          z   dz
  t          d¬¦  «        t          dt          dz  z  dt          dz  z  z   dt          z  z   dz
  t          d¬¦  «        t          d¦  «        dz  t          d¦  «         dz  gt          d¦  «         dz  t          d¦  «        dz  ggft          dt          dz  z  t          d	z  z   t          dz  z
  t          dz  z   dt          z  z
  dz
  t          d
¬¦  «        t          dt          dz  z  dt          d	z  z  z   dt          dz  z  z   dt          dz  z  z   dt          z  z   dz   t          d
¬¦  «        t          d¦  «        dz  dt          d¦  «        z  dz  gt          d¦  «         dz  dt          d¦  «        z  dz  ggft          t          dz  t          z
  dz   t          d
¬¦  «        t          dt          dz  z  dt          z  z   dz   t          d
¬¦  «        t          d¦  «        dz  dt          d¦  «        z  dz  gt          d¦  «         dz  dt          d¦  «        z  dz  ggfg} | D ]9\  }}}t          ||t          t          dd¦  «        }t          |¦  «        |k    sJ ‚Œ:dS )a  
    This function tests the Case 5 in the step
    to calculate coefficients of the d-vector.

    Each test case has 3 values -

    1. num - Numerator of the rational function a(x).
    2. den - Denominator of the rational function a(x).
    3. d - The d-vector.
    r?   r>   Tr²   rV   rM   r)   r|   rR   ÚZZr·   rL   rY   rl   rN   r   N)r   r'   r   r$   r   r"   )r[   r:   r;   rÐ   rÑ   s        r+   Útest_construct_d_case_5rÕ   E  sm  € õ 	ˆQ�q�!‰t‰V•a˜‘d‰]�QÑ Ñ"¥A°Ð6Ñ6Ô6ÝˆQ�q�!‰t‰V�a�˜1™‘f‰_˜q¥™sÑ" QÑ&­°TÐ:Ñ:Ô:Ý
ˆq‰'Œ'�!‰)•d˜1‘g”g�X˜c‘\Ð	"¥d¨1¡g¤g X¨a¡Zµ°a±´¸±Ð$=Ð>ðõ 	ˆQ�q�!‰t‰V•a˜‘d‰]�Q ™TÑ!¥A q¡DÑ(¨1­Q©3Ñ.°Ñ2µA¸dÐCÑCÔCÝˆQ�q�!‰t‰V�a�˜1™‘f‰_˜q¥ A¡™vÑ%¨­!¨Q©$©Ñ.°µ1±Ñ4°qÑ8½!ÀDÐIÑIÔIÝ
ˆq‰'Œ'�!‰)�R�˜Q™œ‘Z ‘]Ð	#¥t¨A¡w¤w h¨q¡j°!µD¸±G´G±)¸B±,Ð%?Ð@ðõ 	�Q�‰T•A‰X˜‰\�1 TÐ*Ñ*Ô*ÝˆQ�q�!‰t‰V�a�‘c‰\˜AÑ�q¨Ð.Ñ.Ô.Ý
ˆq‰'Œ'�!‰)�R�˜Q™œ‘Z ‘\Ð	"¥d¨1¡g¤g X¨a¡Z°µ4¸±7´7±¸1±Ð$=Ð>ðð€Eð  ð ,ð ,‰ˆˆS�!å% c¨3µµ2°q¸!Ñ<Ô<ˆÝ! #Ñ&Ô&¨!Ò+Ð+Ð+Ð+Ð+ð,ð ,r-   c            	      ó\  — t          dt          dz  z  dz
  t          d¬¦  «        t          dt          dz  z  dt          dz  z  z   dt          z  z   dz   t          d¬¦  «        t          d¦  «        dz  t          dz  z   gt          d¦  «        dz  t          dz  z
  ggft          dt          d	z  z  dt          dz  z  z
  dt          z  z
  dz
  t          d¬¦  «        t          t          d
z  t          dz  z
  dt          dz  z  z   dt          d	z  z  z
  dt          dz  z  z
  dt          z  z
  dz   t          d¬¦  «        dgdggft          dt          d	z  z  t          dz  z   dt          z  z   dz   t          d¬¦  «        t          d
t          dz  z  dt          dz  z  z
  dt          d
z  z  z
  dt          dz  z  z
  dt          dz  z  z
  dt          d	z  z  z
  dt          dz  z  z
  dt          z  z
  dz
  t          d¬¦  «        dgdggfg} | D ]"\  }}}t	          ||t          ¦  «        |k    sJ ‚Œ#dS )a  
    This function tests the Case 6 in the step
    to calculate coefficients of the d-vector.

    Each test case has 3 values -

    1. num - Numerator of the rational function a(x).
    2. den - Denominator of the rational function a(x).
    3. d - The d-vector.
    rY   r?   rM   rÔ   r·   rR   rv   r)   r>   rW   rV   r   rN   rŒ   rU   rT   rq   rL   rl   rº   é.   é"   é*   N)r   r'   r
   r   r#   )r[   r:   r;   rÐ   s       r+   Útest_construct_d_case_6rÚ   f  s2  € õ 	ˆR•�1‘‰W�q‰[�! DÐ)Ñ)Ô)ÝˆQ�q�!‰t‰V�a�˜1™‘f‰_˜r¥!™tÑ# aÑ'­°4Ð8Ñ8Ô8Ý
ˆA‰$Œ$ˆq‰&•1�Q‘3‰,ˆ�!˜A™$œ$˜q™&¥1 Q¡3™,˜Ð(ðõ 	ˆR•�1‘‰W�q�˜A™‘vÑ ¥!¡Ñ# aÑ'­°4Ð8Ñ8Ô8Ý�Q�‰T•A�q‘D‰[˜1�Q ™T™6Ñ! A¥a¨¡d¡FÑ*¨Q­q°!©t©VÑ3°a½±cÑ9¸AÑ=½qÈÐNÑNÔNØ
ˆˆqˆcˆ
ðõ 	ˆR•�1‘‰W•q˜!‘t‰^˜b¥™dÑ" RÑ'­°4Ð8Ñ8Ô8ÝˆQ�q�!‰t‰V�b�˜A™‘gÑ ¥1 a¡4¡Ñ'¨"­Q°©T©'Ñ1°Bµq¸!±t±GÑ;¸bÅÀAÁ¹gÑEÈÍ1ÈaÉ4ÉÑOØ
�Q‰$ñØñÝ˜tð	%ñ 	%ô 	%à
ˆˆqˆcˆ
ð	ð€Eð" ð 4ð 4‰ˆˆS�!Ý! # s­AÑ.Ô.°!Ò3Ð3Ð3Ð3Ð3ð4ð 4r-   c                  ó�
  — t          t          dz  dt          z  z
  dz   t          d¬¦  «        t          t          dz  t          z
  t          d¬¦  «        t          d¦  «        dddd	dd
dd
dœft          dt          dz  z  dt          z  z
  dz   t          d¬¦  «        t          dt          dz  z  dt          dz  z  z
  dt          dz  z  z
  dt          z  z   dz
  t          d¬¦  «        t          d¦  «        dz  ddt          d¦  «        dz  t          d¦  «        dz  t          d¦  «        dz  t          d¦  «        dz  dœft          dt          d¬¦  «        t          t          dz  dt          d¦  «        z  dz
  t          dz  z  z   dt          d¦  «        z  d z   t          dz  z  z   d!dt          d¦  «        z  z
  t          dz  z  z   ddt          d¦  «        z  z   t          z  z   dz
  t          d¬¦  «        t          d¦  «        dddt          d¦  «        z   d"dt          d¦  «        z  z
  t	          d#d"dt          d¦  «        z  z
  d$¬%¦  «        d#t          d¦  «        z   z  d"dt          d¦  «        z  z
  d#t          d¦  «        z   dz  z  t	          d#d"dt          d¦  «        z  z
  d$¬%¦  «        d#t          d¦  «        z   dz  z  d"dt          d¦  «        z  z
  d#t          d¦  «        z   dz  z  d&œft          t          dz  dt          dz  z  z
  dt          dz  z  z   d't          z  z   d(z
  t          d¬¦  «        t          t          dz  dz
  t          d¬¦  «        t
          dddd)ddd*d+d,œft          dt          dz  z  dt          dz  z  z   dt          z  z
  dz   t          d¬¦  «        t          dt          dz  z  t          dz  z
  dt          dz  z  z
  dt          z  z   dz   t          d¬¦  «        t          d¦  «        dz  d)dt          d-¦  «        d.z  t          d/¦  «        d0z  t          d1¦  «        d2z  t          d3¦  «        d4z  t          d5¦  «        d6z  d7œft          d8t          dz  z  dt          z  z   dz
  t          d¬¦  «        t          dt          dz  z  dt          dz  z  z   dt          dz  z  z   dt          dz  z  z   dt          z  z   dz   t          d¬¦  «        t
          d)dd)d)t          d9¦  «         d:z  d)d#t          d;¦  «        dz  d<œfg} | D ](\  }}}}}}|t          ||t          |||¦  «        k    sJ ‚Œ)d=S )>aè  
    This function tests the computation of coefficients
    of Laurent series of a rational function.

    Each test case has 5 values -

    1. num - Numerator of the rational function.
    2. den - Denominator of the rational function.
    3. x0 - Point about which Laurent series is to
       be calculated.
    4. mul - Multiplicity of x0 if x0 is a pole of
       the rational function (0 otherwise).
    5. n - Number of terms upto which the series
       is to be calculated.
    r?   r>   rV   Tr²   r)   rW   rL   iøÿÿÿr�   )r)   r   rQ   rY   rb   rS   é@   iÀ  iÀ  rR   r—   i?  i  iÌ  rT   i üêiKÝÅiû  iØ  l    `B l   -­R iý0 i}' )r   r?   rQ   r)   rM   rS   rU   r¤   rb   rQ   FrO   )rR   r>   r?   r)   r   rQ   rv   r‹   r   rŽ   r}   )r>   r?   r)   r   rQ   rY   i  iè  iÝ i�¤) l   ?PT l   @qs lýÿÿÿF41l   @4ôÆlüÿÿÿ…J!tðz½ l    Zdjm® )r   rQ   rY   rb   rS   rÀ   éG   r¶   rŒ   )r   rY   rN   rQ   rb   rS   N)r   r'   r
   r   r   r   r$   )r[   r:   r;   Úx0rÇ   ÚnrÑ   s          r+   Útest_rational_laurent_seriesrà   †  s(  € õ& 	�Q�‰T�A•a‘C‰Z˜!‰^�Q¨$Ð/Ñ/Ô/Ý�Q�‰T•A‰X•q DÐ)Ñ)Ô)Ý	ˆ!‰Œˆa�Ø�"˜! ¨°Ð3Ð3ð	õ 	ˆR•�1‘‰W�t�A‘vÑ Ñ$¥a°4Ð8Ñ8Ô8ÝˆR•�1‘‰W�r�!˜Q™$‘wÑ ¥Q¨¡T¡Ñ)¨Dµ©FÑ2°SÑ8½!ÀtÐLÑLÔLÝ	ˆ!‰ŒˆQ‰��1Ýˆh‰KŒK˜Ñ ¥Q t¡W¤W¨S¡[µa¸±n´nÀ[Ñ6PÝˆV‰9Œ9�U‰?ð	ð 	ð	õ 	ˆQ•˜TÐ"Ñ"Ô"Ý�Q�‰T�R�˜Q™œ‘Z !‘^¥Q¨¡TÑ)Ñ)¨Q­t°A©w¬w©Y¸©^½QÀ¹TÑ,AÑAÀSÈ1ÍTÐRSÉWÌWÉ9Á_ÕVWÐYZÑVZÑDZÑZØˆq•�a‘”‰y‰=�!Ñ
ñØñ Ý!"¨dð	4ñ 	4ô 	4åˆQ‰Œ��AØ•�Q‘”‰K˜B ¥4¨¡7¤7¡™N­s°2°r¸A½dÀ1¹g¼g¹I±~ÐPUÐ/VÑ/VÔ/VÐXZÝ
ˆq‰'Œ'ñYñ 0Ø˜Q�t A™wœw™Y™¨­d°1©g¬g©¸Ñ(9Ñ9½cÀ"ÀbÈ1ÍTÐRSÉWÌWÉ9ÁnÐ_dð ?
ñ ?
ô ?
Ø•�Q‘”‰<˜!Ñ
ñ?Ø"$ q­¨a©¬¡y¡.°2½¸Q¹¼±<À!Ñ2CÑ!Cð	Eð 	Eðõ 	�Q�‰T�A•a˜‘d‘F‰]˜Q�q !™t™VÑ# b­¡dÑ*¨RÑ/µ¸dÐCÑCÔCÝ�Q�‰T�A‰X•q DÐ)Ñ)Ô)Ý
ˆAˆqØ�!˜˜a R¨RÐ0Ð0ð	õ 	ˆQ�q�!‰t‰V�a�˜1™‘f‰_˜q¥™sÑ" QÑ&­°TÐ:Ñ:Ô:ÝˆQ�q�!‰t‰V•a˜‘d‰]˜Q�q !™t™VÑ# a­¡cÑ)¨AÑ-­q¸DÐAÑAÔAÝ	ˆ!‰ŒˆQ‰��1Ýˆd‰GŒG�D‰L�a ™iœi¨Ñ/µQ°z±]´]À:Ñ5MÝˆnÑÔ˜mÑ+µÐ3DÑ1EÔ1EÐFVÑ1Vð	Xð 	Xð	õ 	ˆR•�1‘‰W�q�‘s‰]˜QÑ¥¨TÐ2Ñ2Ô2ÝˆQ�q�!‰t‰V�a�˜1™‘f‰_˜q¥ A¡™vÑ%¨­!¨Q©$©Ñ.°µ1±Ñ4°qÑ8½!ÀtÐLÑLÔLÝ
ˆAˆqØ�1�1˜R™5œ5˜& ™)¨°½¸"¹¼¸a¹Ð@Ð@ð	ðS.€Eð^ &+ð Gð GÑ!ˆˆS�"�c˜1˜cØÕ-¨c°3½¸2¸sÀAÑFÔFÒFÐFÐFÐFÐFðGð Gr-   c                 ó¼  ‡‡— t          | t          ¦  «        r| j        | j        z
  } t	          | t
          t          ¦  «        \  }}t          t          t          ¦  «        t          g|¢R Ž }t          d¦  «        Šˆˆfd„|D ¦   «         }t          d„ t          | |¦  «        D ¦   «         ¦  «        sJ ‚t          ˆfd„t          ||¦  «        D ¦   «         ¦  «        sJ ‚dS )z‚
    Helper function to check if actual solution
    matches expected solution if actual solution
    contains dummy symbols.
    ÚC1c                 ó<   •— g | ]}|                      ‰‰¦  «        ‘ŒS r0   )r    )r1   rI   râ   Ú	dummy_syms     €€r+   r3   z#check_dummy_sol.<locals>.<listcomp>Õ  s'   ø€ Ð4Ð4Ð4¨ˆC�HŠH�R˜Ñ#Ô#Ð4Ð4Ð4r-   c              3   ó&   K  — | ]}|d          V — ŒdS )r   Nr0   )r1   r'   s     r+   ú	<genexpr>z"check_dummy_sol.<locals>.<genexpr>×  s&   è è € Ð3Ð3˜ˆq�ŒtÐ3Ð3Ð3Ð3Ð3Ð3r-   c              3   óJ   •K  — | ]\  }}|                      |‰¦  «        V — Œd S )N)Údummy_eq)r1   Ús1Ús2rä   s      €r+   ræ   z"check_dummy_sol.<locals>.<genexpr>Ø  s5   øè è € ÐIÐI©f¨b°"ˆr�{Š{˜2˜yÑ)Ô)ÐIÐIÐIÐIÐIÐIr-   N)Ú
isinstancer	   ÚlhsÚrhsr   r&   r'   r%   r   Úallr   Úzip)rH   Úsolserä   r2   rˆ   Úsolsrâ   s     `   @r+   Úcheck_dummy_solrò   É  sä   øø€ õ �"•bÑÔð ØŒV�b”f‰_ˆÝ˜R¥¥AÑ&Ô&�H€A€uå��1™œ�qÐ) 5Ð)Ð)Ð)€DÝ	ˆt‰Œ€BØ4Ð4Ð4Ð4Ð4¨tÐ4Ñ4Ô4€DåÐ3Ð3�[¨¨TÑ2Ô2Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3ÝÐIÐIÐIÐI½¸DÀ%Ñ8HÔ8HÐIÑIÔIÑIÔIÐIÐIÐIÐIÐIr-   c                  ó(%  — t          d¦  «        } t          t          t          ¦  «                             t          ¦  «        t          t          ¦  «        dz  z   dz
  d¦  «        t          t          t          ¦  «        t          d¦  «        ¦  «        t          t          t          ¦  «        t          d¦  «         ¦  «        gft          t          ¦  «        dz  t          t          ¦  «                             t          ¦  «        z   dt          t          ¦  «        z  t          z  z   dt          dz  z  z   t          t          t          ¦  «        d| z  t          z
  | t          z  t          dz  z   z  ¦  «        gfdt          dz  z  t          t          ¦  «                             t          ¦  «        z  t          dt          t          ¦  «        z  t          t          ¦  «                             t          ¦  «        z   dz
  z  z
  t          t          ¦  «        dz
  t          t          ¦  «        z  z   t          t          t          ¦  «        | dt          dz  z  z   | t          z   z  ¦  «        gft          t          t          ¦  «                             t          ¦  «        t          t          ¦  «        dz   dt          dz  t          dz  z
  z  z
  ¦  «        t          t          t          ¦  «        dt          dz  t          z
  z  ¦  «        gft          dz  dt          z  dt          z  z   t          t          ¦  «        z  z
  t          t          ¦  «        dz  z   t          t          ¦  «                             t          ¦  «        z   t          t          t          ¦  «        | t          z  t          dz  z   dt          z  z   | t          dz  z   z  ¦  «        t          t          t          ¦  «        t          ¦  «        gft          dz  t          t          ¦  «                             t          ¦  «        z  t          dz  z   t          dt          t          ¦  «        dz  z  t          t          ¦  «                             t          ¦  «        z   z  z
  t          t          ¦  «        z   t          t          t          ¦  «        | t          dz  z  t          z   | t          dz  z   z  ¦  «        t          t          t          ¦  «        t          dz  ¦  «        gft          t          ¦  «        dz   t          t          ¦  «                             t          ¦  «        z   dt          dz  z  d	t          z  z
  d
z   t          dz
  dz  dt          z  dz
  dz  z  z  z   t          t          t          ¦  «        d| z  t          z  d| z  z
  dt          dz  z  z
  dt          dz  z  z   dt          dz  z  z
  dt          dz  z  z   dt          z  z
  dz   d| z  t          dz  z  d| z  t          z  z
  d| z  z   dt          dz  z  z   dt          dz  z  z
  dt          dz  z  z   dt          dz  z  z
  dt          dz  z  z   dt          z  z
  z  ¦  «        t          t          t          ¦  «        dt          z  dz
  dt          dz  z  dt          z  z
  dz   z  ¦  «        gft          t          ¦  «        dz  t          t          ¦  «                             t          ¦  «        z   dt          dz  z  dt          dz  z  z
  dt          dz  z  z   dt          dz  z  z   d
t          dz  z  z   d	t          z  z
  dz   dt          dz  z  z  z
  t          t          t          ¦  «        dt          dz  z  dt          dz  z  z
  t          dz  z
  dt          dz  z  z   dt          z  z   dz
  dt          dz  z  dt          dz  z  z
  z  ¦  «        gft          t          t          ¦  «                             t          ¦  «        t          dz   dt          dz  z  z   dt          dz  z  z
  dt          dz  z  z   dt          z  z
  dz   t          dz  dt          dz  z  z
  dt          dz  z  z   dt          dz  z  z
  dt          dz  z  z   dt          d
z  z  z
  d t          dz  z  z   dt          dz  z  z
  dt          dz  z  z   dt          dz  z  z
  dt          dz  z  z   dt          z  z
  dz   z  t          t          ¦  «        dz  z   t          t          ¦  «        z   ¦  «        t          t          t          ¦  «        dt          dz  dt          dz  z  z
  dt          dz  z  z   d	t          dz  z  z
  dt          dz  z  z   dt          z  z
  dz   z  ¦  «        gft          t          t          ¦  «                             t          ¦  «        t          t          t          ¦  «        z  dt          z  z   dt          z  dz
  t          t          ¦  «        dz  z  dt          z  dz   z  z   dt          dz  z  d
t          z  z
  d!z   d"t          dz  z  dt          dz  z  z
  dz   z  z   t          d¦  «        dz  z
  ¦  «        t          t          t          ¦  «        ddt          z  z
  dt          z  dz
  z  ¦  «        gft          t          t          ¦  «                             t          ¦  «        d#t          dz  z  d$t          z  z
  dz
  dt          dz  z  dt          dz  z  z
  dt          z  z   dz   z  dt          t          ¦  «        dz  z  dt          z  dz   z  z   ¦  «        t          t          t          ¦  «        dt          z  dz   dt          z  dz
  z  ¦  «        gft          t          ¦  «                             t          ¦  «        dt          dz  z  dz   t          t          ¦  «        dz  z  t          z  z   dt          dz  z  t          z
  dz   t          t          ¦  «        z  t          t          dz
  z  z  z   dt          dz  z  dt          z  z
  dz   t          t          dz
  dz  z  z  z   t          t          t          ¦  «        |  t          dz  z
  t          dz  z   dt          z  z
  | t          z  | z
  t          dz  z   t          dz  z
  t          dz  z   t          z
  z  ¦  «        t          t          t          ¦  «        d%t          dz
  z  ¦  «        gft          t          ¦  «                             t          ¦  «        dt          z  t          t          ¦  «        dz  dz   z  t          z  z
  t          t          t          ¦  «        t           | z  t          t          dz  z  z   | t          dz  z   z  ¦  «        t          t          t          ¦  «        t           ¦  «        gft          t          t          ¦  «                             t          ¦  «        t          t          t          ¦  «        z  t          d¦  «        dz  dt          z  z
  z  t          dz  t          d¦  «        dz  z
  t          t          ¦  «        dz  z  dt          z  dz  t          d¦  «        dz  z
  z  z   t          d¦  «        dz  z
  d&t          dz  z  d't          z  z
  d(z   d"t          dz  z  dt          dz  z  z
  z  z   ¦  «        t          t          t          ¦  «        dt          z
  t          z  ¦  «        t          t          t          ¦  «        dt          d)z  z  d*t          d+z  z  z   d,t          dz  z  z   d-t          dz  z  z   d.t          dz  z  z   d/t          dz  z  z   d0t          dz  z  z   d1t          d
z  z  z   d2t          dz  z  z   d3t          dz  z  z   d4t          dz  z  z   d5t          dz  z  z   d6t          dz  z  z   d7t          z  z   d8z   dt          d)z  z  d9t          d+z  z  z   d:t          dz  z  z   d;t          dz  z  z   d<t          dz  z  z   d/t          dz  z  z   d=t          dz  z  z   d>t          d
z  z  z   d?t          dz  z  z   d@t          dz  z  z   dAt          dz  z  z   dBt          dz  z  z   dBt          dz  z  z   dCt          z  z   z  ¦  «        gft          t          t          ¦  «                             t          ¦  «        dDt          dz  z  dDt          dz  z  z   t           dz  t          d¦  «        dz  z
  t          t          ¦  «        dz  z  z   dz   ¦  «        t          t          t          ¦  «        dt          z  ¦  «        gft          t          t          ¦  «                             t          ¦  «        dEt          dz  z  dz  dt          z  dz  z   t          dz  t          d¦  «        dz  z
  t          t          ¦  «        dz  z  z   dz   dt          z
  t          t          ¦  «        z  t          z  z   dt          z  z   ¦  «        t          t          t          ¦  «        dEt          z  dz  dz
  ¦  «        gfg}|D ]\  }}t          ||| ¦  «         ŒdFS )Gaû  
    This function tests the computation of rational
    particular solutions for a Riccati ODE.

    Each test case has 2 values -

    1. eq - Riccati ODE to be solved.
    2. sol - Expected solution to the equation.

    Some examples have been taken from the paper - "Statistical Investigation of
    First-Order Algebraic ODEs and their Rational General Solutions" by
    Georg Grasegger, N. Thieu Vo, Franz Winkler

    https://www3.risc.jku.at/publications/download/risc_5197/RISCReport15-19.pdf
    ÚC0r?   r   rR   rY   r)   r>   rŽ   ro   rL   rV   rW   rM   rt   rn   rj   r˜   é   é9   é:   rT   rU   rƒ   rk   ru   rŒ   rÃ   rv   éÜ   éï  i  iœ  rq   r´   r¤   é0   rQ   i  r¦   r§   r�   rÆ   r‹   r«   r©   i0H  i– iFî i4å" i˜<… iî±i2Ò�i"0Â	iÐ�imë–i…^ÈéŒ   r¨   i  i<Z  i8X iÄ4 iLžB i¾‹¦ i|Mi:£ói�Ñù r–   rb   N)	r   r	   r&   r'   r@   r   r
   r   rò   ©rô   r[   rH   rI   s       r+   Útest_solve_riccatirý   Û  s   € õ  
ˆt‰Œ€Bõ 	�1�Q‰4Œ4�9Š9•Q‰<Œ<�!�A™$œ$ ™'Ñ! AÑ% qÑ)Ô)Ý	�A�a‰DŒD•$�q‘'”'Ñ	Ô	�B�q¥™tœt¥d¨1¡g¤g XÑ.Ô.Ð/ðõ 	
�!‰Œˆa‰•!•A‘$”$—)’)�A‘,”,Ñ ¥1¥Q¡4¤4¡­¡Ñ)¨A­a°©d©FÑ2Ý	�A�a‰DŒD�2�b‘5�1‘9˜r¥!™t¥a¨¡d™{Ñ+Ñ	,Ô	,Ð-ðð 	
�!ˆQ‰$‰�q•‰tŒt�yŠy�‰|Œ|Ñ�a ¥1¥Q¡4¤4¡­!­A©$¬$¯)ª)µA©,¬,Ñ!6¸Ñ!:Ñ;Ñ;½qÅ¹t¼tÀa¹xÍÍ1ÉÌ¹oÑMÝ	�A�a‰DŒD�2˜�!˜Q™$™‘; ¥a¡Ñ(Ñ	)Ô	)Ð*ðõ 	�1�Q‰4Œ4�9Š9•Q‰<Œ<�!�A™$œ$ ™'˜ A¥q¨!¡t­a°©d¡{¡OÑ3Ñ4Ô4Ý	�A�a‰DŒD�!•Q˜‘T�A‘X‘,Ñ	Ô	Ð ðõ 	
ˆ1‰�•!‘�a�‘c‘	�1�Q™4œ4ÑÑ¥!¥A¡$¤$¨¡'Ñ)­A­a©D¬D¯IªIµa©L¬LÑ8Ý	�A�a‰DŒD�2•a‘4�!˜Q™$‘; ¥1¡Ñ$ r­A¨q©D¡yÑ1Ñ	2Ô	2µBµq½±t´t½Q±K´KÐ@ðõ
 	
ˆ1‰�Q�q‰TŒT�YŠY•q‰\Œ\Ñ�A˜q™DÑ ¥1 a­­!©¬¨a©¡iµ!µA±$´$·)²)½A±,´,Ñ&>Ñ#?Ñ?Å!ÅAÁ$Ä$ÑFÝ	�A�a‰DŒD�2•a˜‘d‘7�Q‘; ¥a¨¡d¡Ñ+Ñ	,Ô	,­bµµ1±´µq¸!±t©n¬nÐ=ðõ 
�1‰Œˆq‰ˆ•1•Q‘4”4—9’9�Q‘<”<Ñ 2¥a¨¡d¡7¨Rµ©T¡>°AÑ#5½¸Q¹À¹
ÀAÅaÁCØñEØñDñ 9ñ #ñ 	å	�A�a‰DŒD�1�R‘4�‘6˜A˜b™D‘= 2¥a¨¡d¡7Ñ*¨Rµ°1±©WÑ4°r½!¸Q¹$±wÑ>ÀÅAÀqÁDÁÑHØ
�Q‰$ñØñØ�r‘T�!˜Q™$‘Y  2¡¥a¡Ñ'¨!¨B©$Ñ.°µ1°a±4±Ñ7¸"½QÀ¹T¹'ÑAØ
�1ˆa‰4‰ñØ•Q˜‘T‘'ñØ�q !™t™Gñ$Ø&'­¡cñ*ñ+ñ 
,ô 
,å-/µµ!±´°q½±s¸Q±wÀÅ1ÀaÁ4ÁØ
�A‰#ñBØñBñ 7ñ .ô .ð	ðõ 	
�!‰Œˆa‰•!•A‘$”$—)’)�A‘,”,Ñ !¥A q¡D¡&¨1­Q°©T©6¡/°Bµq¸!±t±GÑ";¸aÅÀ1Á¹fÑ"DØ�a�‰d‰Fñ#Ø�‘Tñ#Øñ#Ø !¥! Q¡$¡ñ"(ñ 	(å	�A�a‰DŒD�1•Q˜‘T‘6˜A�a ™d™F‘?¥Q¨¡TÑ)¨A­a°©d©FÑ2°Qµq±SÑ8¸1Ñ<¸qÅÀAÁ¹vØ•�1‘‰fñ@ñ ñ 
ô 
ð 	ðõ 	�1�Q‰4Œ4�9Š9•Q‰<Œ<�1˜a™4˜% "¥Q¨¡T¡'™/¨B­q°!©t©GÑ3°b½¸A¹±gÑ=ÀÅ1ÁÑDÀqÑHÝ�‰U�R�˜2™‘XÑ ¥1 b¡5¡Ñ(¨3­q°!©t©8Ñ3°c½!¸Q¹$±hÑ>ÀÅQÈÁTÁÑIÈCÕPQÐSTÑPTÉHÑTØ•�1‘‰HñØ�1˜a™4‘xñ Ø"%¥a¨¡d¡(ñ+Ø-/µ°1±©Wñ5Ø79½!±tñ<Ø>?ñ@ñAåCDÅQÁ4Ä4ÈÁ7ñKåMNÍqÉTÌTñRñ 	Sô 	Sõ 
�A�a‰DŒD�!•Q˜‘T˜A�a ™d™F‘] R­¨1©¡WÑ,¨rµ!°Q±$©wÑ6¸½A¸q¹D¹Ñ@À1ÅQÁ3ÑFÈÑJÑKÑ	LÔ	LÐMð	õ 	�1�Q‰4Œ4�9Š9•Q‰<Œ<��1�Q™4œ4™ !¥A¡#™¨­1©¨q©µ!µA±$´$¸±'Ñ(9¸1½Q¹3À¹7Ñ(CÑCØ�q�!‰t‰V�a�‘c‰\˜BÑ ¥A q¡D¡¨2­a°©d©7Ñ!2°QÑ!6Ñ7ñ8Ý:;¸A¹$¼$¸q¹&ñAñ 	Bô 	Bå	�A�a‰DŒD�1�q�‘s‘7˜Q�q™S 1™WÑ%Ñ	&Ô	&Ð'ðõ 	�1�Q‰4Œ4�9Š9•Q‰<Œ<˜#�a ™d™( R­¡T™/¨BÑ.°µA°q±D±¸2½aÀ¹d¹7Ñ1BÀQÅqÁSÑ1HÈ1Ñ1LÑMØ••!‘”�a‘‰i˜�1™˜q™Ñ!ñ"ñ 	#ô 	#å	�A�a‰DŒD�1•Q‘3˜‘7˜Q�q™S 1™WÑ%Ñ	&Ô	&Ð'ðõ 	
�!‰Œ�	Š	•!‰Œ˜�!˜Q™$™ ™
¥A¥a¡D¤D¨!¡GÑ+­AÑ-Ñ-°µ1°a±4±½!±¸a±ÅÅ1ÁÄÑ0EÅqÍ!ØñKñ Hñ 1ñ 	Ø•q˜!‘t‘V˜a¥™c‘\ AÑ%­­1¨q©5°1©*©Ñ5ñ	6å	�A�a‰DŒD�B�3�˜A™‘:¥ 1¡Ñ$ q­¡sÑ*¨Rµ©T°B©Y½¸A¹Ñ-=ÅÀ1ÁÑ-DÅqÈ!ÁtÑ-KÝñ.ñ ñ 
ô 
Ý•a�‘d”d˜B¥ A¡™JÑ'Ô'ð	)ðõ 	
�!‰Œ�	Š	•!‰Œ�q�‘s�A�a™DœD !™G a™KÑ(­Ñ*Ñ*Ý	�A�a‰DŒD•A�2�b‘5�1�Q ™T™6‘> B­¨A©¡IÑ.Ñ	/Ô	/µµAµa±D´D½1¸"±´Ð>ðõ 	�1�Q‰4Œ4�9Š9•Q‰<Œ<��1�Q™4œ4™¥ 1¡¤ a¡¨!­A©#¡Ñ.µ!°A±#½¸!¹¼¸Q¹±,ÅÅ!ÁÄÀaÁÑ1GØ�q‰S�‰U•Q�q‘T”T˜!‘V‰^ñ2ñ Ý  ™tœt A™vñ&Ø),­Q°©T©°D½±FÑ):¸SÑ)@À2ÅaÈÁdÁ7ÈRÕPQÐSTÑPTÉWÑCTÑ(UñVñ 	Wô 	Wå	�A�a‰DŒD�1•q‘5�!‘)Ñ	Ô	�b¥¥1¡¤¨­1¨b©5©°2µa¸±e±8Ñ(;¸cÅ!ÀRÁ%¹iÑ(GÈ$ÍqÐRTÉuÉ*Ñ(TØ•!�R‘%‰Kñ)Ø ¥ A¡™+ñ)&Ø(.­q°!©t©ñ)4Ø6=½aÀ¹d±lñ)CØELÍQÐPQÉTÁ\ñ)RØT\Ýˆq‰DñUñ)à�A˜q™D‘=ñ)!à#,­Q°©T¡>ñ)2à4=½aÀ¹d±Nñ)CàENÍqÁ[ñ)QàS\ñ)]ð •�B‘‰h˜�Q ™U™Ñ" S­¨B©¡YÑ.°µa¸±e±Ñ;¸eÅAÀrÁE¹kÑIÈFÕSTÐVWÑSWÉKÑWØ•1�a‘4‰KñØ!¥! Q¡$™,ñ'Ø)0µ°A±©ñ6Ø8@ÅÀAÁ¹ñFØHPÕQRÐTUÑQUÉñVØX`Ý�‰TñYñà�Q ™T‘Mñ"à$,­Q¡Jñ/ñ(1ñ 2ô 2ð 	3ð	õ 	�1�Q‰4Œ4�9Š9•Q‰<Œ<˜�A˜q™D™ 2¥a¨¡d¡7Ñ*­q¨b°©dµQ°q±T´T¸!±V©m½Q½q¹T¼TÀ1¹WÑ-DÑDÀqÑHÑIÔIÝ	�A�a‰DŒD�!•A‘#‰Œˆðõ 	�1�Q‰4Œ4�9Š9•Q‰<Œ<˜�A˜q™D™ ™ R­¡T¨!¡VÑ+­q°©sµQ°q±T´T¸!±V©|½Q½q¹T¼TÀ1¹WÑ.DÑDØñØ•q‘5�!�A™$œ$‘,�q‘.ñ!Ø#$¥Q¡3ñ'ñ 	(ô 	(å	�A�a‰DŒD�"•Q‘$�q‘&˜1‘*Ñ	Ô	ÐððAd€EðJ ð %ð %‰ˆˆCÝ˜˜C Ñ$Ô$Ð$Ð$ð%ð %r-   c            	      óÆ  — t          d¦  «        } t          t          t          ¦  «                             t          ¦  «        dt          z
  t          t          ¦  «        z  t          dz
  z  ddt          z  z
  t          t          ¦  «        dz  z  dt          z  dz
  z  z   dt          dz  z  dt          dz  z  z
  d	t          z  z   d
z
  dt          dz  z  dt          dz  z  z
  dt          dz  z  z   dt          z  z
  dz   z  z   dz   ¦  «        t          t          t          ¦  «        dt          z  dz   dt          z  dz
  z  ¦  «        gfg}|D ]\  }}t          ||| ¦  «         ŒdS )zß
    This function tests the computation of rational
    particular solutions for a Riccati ODE.

    Each test case has 2 values -

    1. eq - Riccati ODE to be solved.
    2. sol - Expected solution to the equation.
    rô   r)   r>   r?   rU   rV   iŒÖ  i/ i»‹ i-˜ rT   rR   é„   i*  i‹  rù   r–   rW   N)r   r	   r&   r'   r@   rò   rü   s       r+   Útest_solve_riccati_slowr   X  sT  € õ 
ˆt‰Œ€Bõ 	�1�Q‰4Œ4�9Š9•Q‰<Œ<˜!�a™%¥¥1¡¤™¥q¨1¡uÑ-°°R½±T±½1½Q¹4¼4À¹7Ñ0BÀAÅaÁCÈ!ÁGÑ0LÑLØ•1�a‘4‰Z˜&¥ A¡™+Ñ%¨µ©	Ñ1°GÑ;¸aÅÀ1Á¹fÀsÍ1ÈaÉ4ÁxÑ>OÐRUÕVWÐYZÑVZÑRZÑ>ZØ•‰Fñ?Øñ?ñ ñà ñ!ñ 	"ô 	"õ 
�A�a‰DŒD�2•a‘4˜!‘8˜a¥™c A™gÑ&Ñ	'Ô	'Ð(ð	ð€Eð ð %ð %‰ˆˆCÝ˜˜C Ñ$Ô$Ð$Ð$ð%ð %r-   N)JÚsympy.core.randomr   Úsympy.core.functionr   Úsympy.core.mulr   Úsympy.core.numbersr   r   r   Úsympy.core.relationalr	   Úsympy.core.singletonr
   Úsympy.core.symbolr   r   Ú&sympy.functions.elementary.exponentialr   r   Ú%sympy.functions.elementary.hyperbolicr   Ú(sympy.functions.elementary.miscellaneousr   Ú(sympy.functions.elementary.trigonometricr   Úsympy.polys.polytoolsr   Úsympy.simplify.ratsimpr   Úsympy.solvers.ode.subscheckr   Úsympy.testing.pytestr   Úsympy.solvers.ode.riccatir   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r,   r6   r<   rJ   r`   rd   r‰   r‘   r”   r¢   r°   r½   rÈ   rÊ   rÒ   rÕ   rÚ   rà   rò   rý   r   r0   r-   r+   ú<module>r     sp  ðØ %Ð %Ð %Ð %Ð %Ð %Ø (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø $Ð $Ð $Ð $Ð $Ð $Ø "Ð "Ð "Ð "Ð "Ð "Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø &Ð &Ð &Ð &Ð &Ð &Ø *Ð *Ð *Ð *Ð *Ð *Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø %Ð %Ð %Ð %Ð %Ð %ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð €HˆS�M„M€Ø€GˆC�L„L€ð
Bð Bð BðEð Eð Eðð ð ðð ð ð ?Fð ?Fð ?FðD36ð 36ð 36ðl`)ð `)ð `)ðF).ð ).ð ).ðX=ð =ð =ð2ð 2ð 2ð.+0ð +0ð +0ð\#:ð #:ð #:ðL;?ð ;?ð ;?ð|)ð )ð )ð<4ð <4ð <4ð~,ð ,ð ,ðB4ð 4ð 4ð@@Gð @Gð @GðFJð Jð Jð$z%ð z%ð z%ðz ð%ð %ñ „ð%ð %ð %r-   