
    gg             
          d Z ddlmZmZ ddlmZ ddlmZmZm	Z	m
Z
 ddlmZ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mZ dd
lmZmZmZmZ ddlm Z m!Z! ddl"m#Z# ddl$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+ ddl,m-Z-m.Z. ddl/m0Z0 ddl1m2Z2m3Z3 ddl4m5Z5 ddl6m7Z7m8Z8 ddl9m:Z:m;Z;m<Z<m=Z=m>Z> ddl?m@Z@ ddlAmBZBmCZC ddlDmEZEmFZF ddlGmHZHmIZImJZJmKZKmLZL ddlMmNZN ddlOmPZPmQZQ ddlRZR e8d          ZS e8d          ZT ed          ZU e8d          ZV e7d          ZW e7d          ZX ed           \
  ZYZZZ[Z\Z]Z^Z_Z`ZaZb ed!          \  ZcZdZed"Zfd#Zgd$Zhd%Zid&Zjd'Zkd( Zldrd*Zmdrd+Znd, Zod- Zpdrd.Zqg dfd/Zrd0 Zsd1 ZteQd2             ZueQd3             ZveQd4             ZweQd5             Zxd6 ZyeQd7             ZzeQd8             Z{eQd9             Z|eQd:             Z}d; Z~eQd<             Zd= ZeQd>             ZeQd?             ZeQd@             ZdA ZeQdB             ZeQdC             ZeQdD             ZdE ZeQdF             ZeQdG             ZeQdH             ZeQdI             ZdJ ZeQdK             ZeQdL             ZeQdM             ZdN ZeQdO             ZdP ZdQ ZdR ZeQdS             ZdT ZdU ZeQdV             ZeldW             ZeldX             ZeldY             ZeldZ             Zeld[             Zeld\             Zeld]             Zeld^             Zeld_             Zeld`             Zelda             Zeldb             Zeldc             Zeldd             Zelde             Zeldf             Zeldg             Zeldh             Zeldi             Zeldj             Zeldk             Zeldl             Zeldm             Zeldn             Zeldo             Zeldp             Zdq ZdS )sa  
This File contains test functions for the individual hints used for solving ODEs.

Examples of each solver will be returned by _get_examples_ode_sol_name_of_solver.

Examples should have a key 'XFAIL' which stores the list of hints if they are
expected to fail for that hint.

Functions that are for internal use:

1) _ode_solver_test(ode_examples) - It takes a dictionary of examples returned by
   _get_examples method and tests them with their respective hints.

2) _test_particular_example(our_hint, example_name) - It tests the ODE example corresponding
   to the hint provided.

3) _test_all_hints(runxfail=False) - It is used to test all the examples with all the hints
  currently implemented. It calls _test_all_examples_for_one_hint() which outputs whether the
  given hint functions properly if it classifies the ODE example.
  If runxfail flag is set to True then it will only test the examples which are expected to fail.

  Everytime the ODE of a particular solver is added, _test_all_hints() is to be executed to find
  the possible failures of different solver hints.

4) _test_all_examples_for_one_hint(our_hint, all_examples) - It takes hint as argument and checks
   this hint against all the ODE examples and gives output as the number of ODEs matched, number
   of ODEs which were solved correctly, list of ODEs which gives incorrect solution and list of
   ODEs which raises exception.

    )
Derivativediff)Mul)EIRationalpi)EqNe)S)Dummysymbols)imre)LambertWexplog)asinhcoshsinhtanh)cbrtsqrt)	Piecewise)acosasinatancossecsintan)Eierfi)hyper)Integral	integrate)rootof)FunctionSymbol)airyaiairybibesseljbessely
lowergamma)NonElementaryIntegral)classify_odedsolve)allhints_remove_redundant_solutions)FirstLinearODEMatchErrorSingleODEProblemSingleODESolverNthOrderReducible)checkodesol)raisesslowNxuyfgzC1:11a b cz^Hint did not match the example {example}.

The ODE is:
{eq}.

The expected hint was
{our_hint}zDifferent solution found from dsolve for example {example}.

The ODE is:
{eq}

The expected solution was
{sol}

What dsolve returned is:
{dsolve_sol}zFsolution found is not correct for example {example}.

The ODE is:
{eq}a  solution returned by dsolve is incorrect when using {hint}.

The ODE is:
{eq}

The expected solution was
{sol}

what dsolve returned is:
{dsolve_sol}

You can test this with:

eq = {eq}
sol = dsolve(eq, hint='{hint}')
print(sol)
print(checkodesol(eq, sol))

zdsolve raised exception : {e}

when using {hint} for the example {example}

You can test this with:

from sympy.solvers.ode.tests.test_single import _test_an_example

_test_an_example('{hint}', example_name = '{example}')

The ODE is:
{eq}

zTested hint was : {hint}

Total of {matched} examples matched with this hint.

Out of which {solve} gave correct results.

Examples which gave incorrect results are {unsolve}.

Examples which raised exceptions are {exceptions}
c                 "      fd} |            S )Nc                                  } g }| d         D ]6}| d         |         d         | d         |         d         | d         |                              dg           | d         |                              d| d                   || d         |                              dd          | d         |                              dd	          | d         |                              d
d          | d         |                              dd          | d         |                              dd          | d         d}|                    |           8|S )NexampleseqsolXFAILfuncr;   Fsimplify_flagTcheckodesol_XFAILdsolve_too_slowcheckodesol_too_slowhint)rE   rF   rG   rH   example_namer;   rI   rJ   rK   rL   rM   )getappend)solverrD   exampletemprH   s       _/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/solvers/ode/tests/test_single.pyinnerz _add_example_keys.<locals>.inner   sS   tvvj) 	" 	"GZ(1$7j)'259
+G488"EEz*7377vf~NN 'z*7377FF &z 27 ; ? ?PT U U%+J%7%@%D%DEXZ_%`%`"("4W"="A"ABSTY"Z"Z'-j'9''B'F'FG]^c'd'dv D OOD!!!!     )rH   rU   s   ` rT   _add_example_keysrX      s)        & 577NrV   Fc                     | D ]P}|s|d         s
|r	|d         st          |d         |d          }|d         dk    rt          |d                    Qd S )Nr;   rM   T)solver_flag	xpass_msg )_test_particular_exampleprint)ode_examplesrun_slow_testrR   results       rT   _ode_solver_testrb      s     ' ' 	GFO 	 	PWX^P_ 	)'&/7PTUUU+"$$&%&&&' 'rV   c                     t          t                    dgz   }t                      }|D ]-}|                    d          sd|v rt	          |||            .d S )Ndefault	_Integralseries)listr2   _get_all_examplesendswith_test_all_examples_for_one_hint)runxfail	all_hintsall_examplesour_hints       rT   _test_all_hintsro      st    X	{*I$&&L J J[)) 	X-A-A',IIIIJ JrV   c                      t          |          t          k    rt           fd|D                       S                      |          S )Nc              3   B   K   | ]}                     |          V  d S N)dummy_eq).0sub_dsolexpected_sols     rT   	<genexpr>z"_test_dummy_sol.<locals>.<genexpr>   s1      NNx<((22NNNNNNrV   )typerg   anyrs   )rv   
dsolve_sols   ` rT   _test_dummy_solr{      sM    JNNNN:NNNNNN$$Z000rV   c                 d    t                      }|D ]}|d         |k    rt          | |           d S )NrN   )rh   r]   )rn   rN   rm   rR   s       rT   _test_an_exampler}      sG    $&&L 8 8>"l22$Xw7778 8rV   c                    |d         }|d         }|d         }| |d         v }|d         }ddd}|d         }	|d	         }
|d
         }|d         }d}|r>| t          ||          vr,t                              |||           }t          |          | t          ||          v r8||d<   	 |st	          |||	|           }nt          |          dk    r	|d         }n|}n}# t          $ rp}g }||d<   |st          j                     t                              t          |          | ||          |d<   |r|st          |d                     d}Y d }~nd }~ww xY w|rn|g k    rgd}t          |          t          k    r:|D ]6}|                    t                    rt!          ||           }n||v}|r n7n4||v}|D ]-}|                    t                    rt!          ||           }.|r-t"                              ||||          }t          |          d t%          t          |                    D             }t          |          dk    rd}|ss|
sqt'          |||d          |k    rZ||d<   d}t(                              | |||          }|r+t*                              ||          }t          |          d|z   |d<   |r|r|dz   | z   |d<   |S ) NrE   rF   rN   rG   rH   r\   )msgr[   rI   rJ   rK   rL   T)rR   rE   rn   
match_listsimplifyrM      r   exception_list)erM   rR   rE   r   F)rR   rE   rF   rz   c                     g | ]}d S )Tr   rW   rt   is     rT   
<listcomp>z,_test_particular_example.<locals>.<listcomp>  s    #P#P#P!I#P#P#PrV   r   )solve_for_funcunsolve_list)rM   rE   rF   rz   )rR   rE   zAssertionError: zis now passing for the hintr[   )r0   hint_messageformatAssertionErrorr1   len	Exception	traceback	print_excexception_msgstrr^   rx   rg   hasr   r{   expected_sol_messageranger9   dsol_incorrect_msgcheckodesol_msg)rn   ode_examplerZ   rE   rv   rR   xfailrH   ra   rI   rJ   rK   rL   xpassmessagerz   r   expect_sol_checksub_solexpected_checkodesols                       rT   r]   r]      s   	T	Bu%L.)GG,,EvDb))Fo.M#$78!"34O&'=>E *<D1111"))'b8)TTG )))<D))))&|	# .#B}(SSS

|$$a''!-aJJ!-J 		 		 		J'.F#$ &#%%%)003q66RY^`0aaF5M 5 fUm$$$EEEEEE		  "	I:r>>$J%%+  G{{5)) E/>w
/S/S+S((+2*+D('  $.\#A + T TG{{5)) T/>w
/S/S+S( ..55g"R^ku5vv$W---#P#PuS=N=N7O7O#P#P#P <  A%%'0$' 
I( 	I"2z4NNNRfff18~. %"4";";bVbnx";"y"y& I&5&<&<WQS&<&T&TG"0"9"99,>,HF5M 	UU 	U"),I"IH"TF;Ms   +4C   
E*A&EEc                 H   |g k    rt                      }g g g }}}|D ]}| |d         v }|r|s|rt          | |          }||                    dg           z  }||                    dg           z  }||                    dg           z  }|#|d         }	|	dk    rt          |d                    |nt	          |          }
t	          |          t	          |          z
  t	          |          z
  }t
                              | |
|||          }	t          |	           d S d S )NrG   r   r   r   r   r\   )rM   matchedsolveunsolve
exceptions)rh   r]   rO   r^   r   check_hint_msgr   )rn   rm   rk   r   r   r   r   r   ra   r   match_countsolveds               rT   rj   rj   '  sZ   r(**/12rnJ# % %K00 	E 	 	)(K@@fjjb111


>"555&**%5b999-CBwwfUm$$$*ooZ\!2!223~3F3FF##;f^j  xF#  G  Gc




	 rV   c                  &   t          t          t                                        t                    t          t                    t                    } t	          |           t          t          fd           t          t          fd           t          t          fd           t          t          fd           t          t          t                                        t                    t          t                    t          t                    z  z   t          t                    t                    } t          |           t          t          fd           t          |           	                                du sJ t          t          t                                        t                    t          t                    z   t          t                    t                    } | j
        dk    sJ t          t          t                                        t          d          t          t                                        t          d	          z   t          t                                        t          d
          z
  t          t                    t                    } | j
        dk    sJ t          t          t                                        t          d
          t          t                                        t          d	          z   t          t                    d	z  z
  t          t                    t                    } | j        dk    sJ t          t          t                                        t          d
          t          t          t                                        t          d	          z  z   t          t                    d	z  z
  t          t                    t                    } | j        dk    sJ d S )Nc                  ,                                      S rr   )matchesrQ   s   rT   <lambda>z&test_SingleODESolver.<locals>.<lambda>F  s    (8(8 rV   c                  ,                                      S rr   get_general_solutionr   s   rT   r   z&test_SingleODESolver.<locals>.<lambda>G  s    (C(C(E(E rV   c                  ,                                      S rr   )_matchesr   s   rT   r   z&test_SingleODESolver.<locals>.<lambda>H  s    (9(9 rV   c                  ,                                      S rr   )_get_general_solutionr   s   rT   r   z&test_SingleODESolver.<locals>.<lambda>I  s    (D(D(F(F rV   c                  ,                                      S rr   r   r   s   rT   r   z&test_SingleODESolver.<locals>.<lambda>R  s    &"="="?"? rV   Fr            T)r6   r?   r<   r   r7   r:   NotImplementedErrorr4   r5   r   orderis_autonomous)problemrQ   s    @rT   test_SingleODESolverr   A  s    qttyy||QqTT155GW%%F
 8 8 8 8999
 E E E EFFF
 9 9 9 9:::
 F F F FGGG qttyy||add1Q44i71qAAG!!F
=????@@@!!F>>u$$$$ qttyy||add2AaDD!<<G=Aqttyy1~~!		!A>11QOQRSTQUQUWXYYG=AqttyyA11a@1Q447JAaDDRSTTG D((((qttyyA1Q4499Q??1BBQqTT1WLaPQddTUVVG E))))))rV   c                  .    t          t                     d S rr   )rb   )_get_examples_ode_sol_linear_coefficientsrW   rV   rT   test_linear_coefficientsr   f  s    >?????rV   c                  2   t          t                                        t                    t          t                    t          z  z
  } t          | t          t                              }t          t          t                                        t                    z  t          t                    z
  }t          |t          t                              }d}d}||vr||vsJ ||vr||vsJ t	          t
                     t	          t                     d S )N(1st_homogeneous_coeff_subs_dep_div_indep(1st_homogeneous_coeff_subs_indep_div_dep)r?   r<   r   r0   rb   >_get_examples_ode_sol_1st_homogeneous_coeff_subs_dep_div_indep0_get_examples_ode_sol_1st_homogeneous_coeff_best)eq1c1eq2c2sdisids         rT   test_1st_homogeneous_coeff_oder   j  s     A$$))A,,1a
C	c1Q44	 	 B
AaDDIIaLL.1Q44
C	c1Q44	 	 B
4C
4Cb==S]]]]b==S]]]]STTTEFFFFFrV   c                  ^    t          t          d           t          t          d           d S NT)r`   )rb   r   r   rW   rV   rT   ,test_slow_examples_1st_homogeneous_coeff_oder   y  s2    ScghhhhEUYZZZZZZrV   c                  .    t          t                     d S rr   rb   ;_get_examples_ode_sol_nth_linear_constant_coeff_homogeneousrW   rV   rT   *test_nth_linear_constant_coeff_homogeneousr     s    PQQQQQrV   c                  2    t          t          d           d S r   r   rW   rV   rT   8test_slow_examples_nth_linear_constant_coeff_homogeneousr     s    P`deeeeeerV   c                  .    t          t                     d S rr   )rb   %_get_examples_ode_sol_2nd_linear_airyrW   rV   rT   test_Airy_equationr     s    :;;;;;rV   c                  .    t          t                     d S rr   )rb   _get_examples_ode_sol_lie_grouprW   rV   rT   test_lie_groupr         455555rV   c                     t          t                                        t                    } t          t          t                    z  | z  t          t          dz  t          t                    z  t          dz  t          t                    z  dz
  z            z   }t	          |          dk    sJ t          t                     d S )Nr   r   )
factorableseparable_reduced	lie_groupseparable_reduced_Integral)r?   r<   r   r!   r0   rb   '_get_examples_ode_sol_separable_reduced)dfrE   s     rT   test_separable_reducedr     s    	
11B
add(B#ad1Q44i1a4!9q=9::	:B  & & & & &<=====rV   c                  2    t          t          d           d S r   )rb   r   rW   rV   rT   $test_slow_examples_separable_reducedr     s    <DQQQQQQrV   c                  .    t          t                     d S rr   )rb   ,_get_examples_ode_sol_2nd_2F1_hypergeometricrW   rV   rT   test_2nd_2F1_hypergeometricr     s    ABBBBBrV   c                     t           t           dz
  z  t          t                                         t           d          z  dt          d          dz  t           z  z   t          t                                         t                     z  z   t          t                     z   } t	          t          t                     t
          t          t          t          t          dt           dz  z
  t           t           dz
  z  z  t                               dt           dz  z
  dz  z  t                     z  z   t          t          dt           dz
  z  t                     dz            z  t          t          dt           dz
  z  t                      dz            z  t          t          d          dz  dfdt                     z            }|t          | d          k    sJ t          | |          d	k    sJ d S )
Nr   r      r   )r   2nd_hypergeometric_Integral)rM   r   )r<   r?   r   r   r
   C1C2r%   r   r$   r1   r9   rE   rF   s     rT   $test_2nd_2F1_hypergeometric_integralr     s   	
AaC11a	 B!QqL!A$$))A,,#>	>1	EB
QqTTBHS1qs7QAY2G)K)K%L%La
A#ON &   8Aq1uIq11!344558(1a
G D; ; :: 6 61Q4462,a001 2 2C &"?@@@@@@@r39,,,,,,rV   c                  .    t          t                     d S rr   )rb   8_get_examples_ode_sol_2nd_nonlinear_autonomous_conservedrW   rV   rT   'test_2nd_nonlinear_autonomous_conservedr     s    MNNNNNrV   c                  v   t          t                                        t          d          t          t          t                              z   } t	          t          dt          t          dt          t          t                    t                    z  z
            z  t          t          t                    f          t          t          z             t	          t          dt          t          dt          t          t                    t                    z  z
            z  t          t          t                    f          t          t          z
            g}t          | dd          }t          ||          D ]\  }}|                    |          sJ t          | d |D                       ddgk    sJ d S )Nr   r   +2nd_nonlinear_autonomous_conserved_IntegralFrM   r   c                 6    g | ]}|                                 S rW   )doit)rt   ss     rT   r   zDtest_2nd_nonlinear_autonomous_conserved_integral.<locals>.<listcomp>  s     555AFFHH555rV   r   )r?   r<   r   r   r
   r%   r   r   _ur   r1   ziprs   r9   )rE   actualr   ar   s        rT   0test_2nd_nonlinear_autonomous_conserved_integralr     sL   	
11a4!::	%B!Dab2(>(>&>!>???"addLLbSTfUUx$rAhtBxx4444555AaDDzBBBFKKMFBJUZ[[[F66""  !zz!}}r55f555669i:PPPPPPPrV   c                  .    t          t                     d S rr   )rb   '_get_examples_ode_sol_2nd_linear_besselrW   rV   rT   test_2nd_linear_bessel_equationr    s    <=====rV   c            	         t          t                    t          t                    t          t                                        t                    z  z   } t          t          t                    t	          t                              t          t          t                    t
          t	          t          t          z            z            g}t          | |dt                    }|t          t          t                    t
          t	          t          t          z            z            gk    sJ t          t                     d S Nr   )
r?   r<   r   r
   r   r   r   r3   rb   #_get_examples_ode_sol_nth_algebraic)eqnsolnssolns_finals      rT   test_nth_algebraicr
    s    
A$$1addiill"
"C!c!ff!bRTl##%E.sE1a@@K2addBs2a4yyL1122222899999rV   c                  2    t          t          d           d S r   rb   2_get_examples_ode_sol_nth_linear_var_of_parametersrW   rV   rT   >test_slow_examples_nth_linear_constant_coeff_var_of_parametersr    s    GW[\\\\\\rV   c                  .    t          t                     d S rr   r  rW   rV   rT   0test_nth_linear_constant_coeff_var_of_parametersr    s    GHHHHHrV   c                  x   d} t          t                                        t          d          dt          t                                        t          d          z  z   t          t                                        t                    z   dt          z  z
  t          t          t          z            z
  }t          |t          t                    | d          }t          |t          t                    | d          }||k    sJ t          ||dd          d	k    sJ t          ||dd          d	k    sJ d S )
N:nth_linear_constant_coeff_variation_of_parameters_Integral   r   r   Tr   Fr   r   r   )r?   r<   r   r   r   r1   r9   )rn   rE   sol_simp	sol_nsimps       rT   @test_nth_linear_constant_coeff_variation_of_parameters__integralr    s    
 LH	
11a1QqTTYYq!__,	,qttyy||	;ac	AC!HH	LBb!A$$X===Hr1Q44h???Iy    r81UCCCyPPPPr81UCCCyPPPPPPrV   c                  2    t          t          d           d S r   rb   _get_examples_ode_sol_1st_exactrW   rV   rT   test_slow_examples_1st_exactr        4DIIIIIIrV   c                  .    t          t                     d S rr   r  rW   rV   rT   test_1st_exactr    r   rV   c                     t          t          t                              t          t          t          t                              z  t          t                    dz  z
  t          t                                        t                    z  z
  } t          | t          t                    dd          }t          | |dd          sJ d S )Nr   F1st_exact_Integralr   r   r  )r   r?   r<   r    r   r1   r9   )rE   sol_1s     rT   test_1st_exact_integralr"    s    	QqTTaAaDD		kAaDD!G+QqTTYYq\\9	9B2qtte2FGGGEr5%@@@@@@@@rV   c                  2    t          t          d           d S r   )rb   )_get_examples_ode_sol_nth_order_reduciblerW   rV   rT   &test_slow_examples_nth_order_reducibler%    s    >dSSSSSSrV   c                  2    t          t          d           d S r   )rb   :_get_examples_ode_sol_nth_linear_undetermined_coefficientsrW   rV   rT   Ftest_slow_examples_nth_linear_constant_coeff_undetermined_coefficientsr(    s    O_cddddddrV   c                  2    t          t          d           d S r   rb   _get_examples_ode_sol_separablerW   rV   rT   test_slow_examples_separabler,    r  rV   c                      t          t          t          t                    t                    t          t          t                    z  t
          j        z   t          z
            } d}|t          |           v sJ t          t                     d S )N3nth_linear_constant_coeff_undetermined_coefficients)
r
   r   r?   r<   r   r   Halfr0   rb   r'  )rE   rn   s     rT   8test_nth_linear_constant_coeff_undetermined_coefficientsr0    si    
 
D1qMM1QqTT6AF?Q.	/	/BDH|B''''''OPPPPPrV   c            	      4   d } t           } |  |t          t          t                    z  t          t                     |t          t                    t                    z             dk    sJ  |  |t          t          t                    z  t          t                     |t          t                    t                    z             dk    sJ  | t          t                     |t          t                    t                    z   |t          t                    t          d          z             dk    sJ  |  |t          t          t                    z  t          d           |t          t          z  t          t                    z  t          d          z             dk    sJ  |  |t          t                    t          d           |t          t                    t          d          z    |t          t                    t          d          z             dk    sJ  |  |t          t                    t          d           |t          t                    t          d          z             dk    sJ t          t                     d S )Nc                     t          t          | t          t                    t                                                              S rr   )r8   r6   r?   r<   r   )rE   s    rT   r   z*test_nth_order_reducible.<locals>.<lambda>  s.    $%5b!A$$%B%BCCLLNN rV   Fr   r   r   T)r   r>   r?   r<   r=   rb   r$  )FDs     rT   test_nth_order_reducibler5    s   NNAA1QQq1vq!__qq1qzz)**e33331QQq1vq!__qq1qzz)**e33331QqTT!!AaDD!**_qq1q!}},--55551QQq1vq!__qq1QqTT1a00011U::::1QQqttQ]]QQqttQ]]*QQqttQ]]:;;uDDDD1QQqttQ]]QQqttQ]]*++t3333>?????rV   c                  .    t          t                     d S rr   r*  rW   rV   rT   test_separabler7    r   rV   c            
      6   t          t          t          dt          z            t          z              t                    t          t          t          t          dt          z            z             t                     k    sJ t          t                     d S r  )r&   r   r?   r<   r	   r%   rb    _get_examples_ode_sol_factorablerW   rV   rT   test_factorabler:     sl    d1QqS66"9oo%q))htB1Q3K7H7H!.L.L-LLLLL566666rV   c                  2    t          t          d           d S r   )rb   r9  rW   rV   rT   test_slow_examples_factorabler<  &  s    5TJJJJJJrV   c                  .    t          t                     d S rr   )rb   _get_examples_ode_sol_riccatirW   rV   rT   test_Riccati_special_minus2r?  +  s    233333rV   c                  .    t          t                     d S rr   )rb   *_get_examples_ode_sol_1st_rational_riccatirW   rV   rT   test_1st_rational_riccatirB  /  s    ?@@@@@rV   c                  .    t          t                     d S rr   )rb   _get_examples_ode_sol_bernoullirW   rV   rT   test_BernoullirE  4  s    455555rV   c                  .    t          t                     d S rr   )rb    _get_examples_ode_sol_1st_linearrW   rV   rT   test_1st_linearrH  8  s    566666rV   c                  .    t          t                     d S rr   )rb   #_get_examples_ode_sol_almost_linearrW   rV   rT   test_almost_linearrK  <  s    788888rV   c            	      `   d} t          t          t          t                    t                    t          z  t          t                    t          t          t                    t          t                    z  dz  z   t          t          t                    t                    dz  dz  z
  t          t                              }t          t          t          t                    t                    t          z  t          t          t                    t          t                    dz  z   t          t          t          t                    t                    dz  z  dz  z
  t          t                              }| |vsJ | |vsJ | dz   |vsJ | dz   |vsJ t	          t
                     d S )N	Liouviller   re   )r0   r   r?   r<   rb   _get_examples_ode_sol_liouville)rM   not_Liouville1not_Liouville2s      rT   test_Liouville_ODErQ  @  sJ   D!$qttQ--/AaDDaddAq9I9I4I!4K"KQqTT1q#aDD" "N!$qttQ--/D1q!4D4DQ4F"F	$qttQ--
1#dd$ $N~%%%%~%%%%+^3333+^3333455555rV   c                  (   t          d          \  } }}}}t          d          }d}t          t          |          |d          |dz  z  dt          t          |          |d          z  |dz  z  z
  dt          |          z  z   }|t	          |          v sJ | ||          z  ||z  t           ||          |          z  z   ||dz  z  t           ||          |d          z  z   }|t	          |          v sJ t          t                     d S )Nz	x t a b cr>   nth_linear_euler_eq_homogeneousr      r   $   )r   r(   r   r?   r0   rb   '_get_examples_ode_sol_euler_homogeneous)r<   tr   bcr>   rn   rE   s           rT   *test_nth_order_linear_euler_eq_homogeneousrZ  O  s   K((MAq!QA0H	addAq		!Q$	D1q!$4$4!4QT!9	9BqttG	CB|B''''''	
11Q44!A#d11Q44mm#	#a1fT!!A$$1-=-=&=	=B|B''''''<=====rV   c                     t          d          \  } }t          dd          \  }}}}d}| dz  t          t          |           | d          z  d| dz  z  t          t          |           | d          z  z
  d	t          |           z  z   | z   }|t          |t          |                     v sJ || dz  z  t          t          |           | d          z  || z  t          t          |           |           z  z   |t          |           z  z   |t	          |           z  z   }|t          |t          |                     v sJ t          t                     d S )
Nzx tza b c dTinteger<nth_linear_euler_eq_nonhomogeneous_undetermined_coefficientsr   rT  r   rU  )r   r   r?   r0   r   rb   ._get_examples_ode_sol_euler_undetermined_coeffr<   rW  r   rX  rY  drn   rE   s           rT   Gtest_nth_order_linear_euler_eq_nonhomogeneous_undetermined_coefficientsrb  ]  s=   5>>DAqD111JAq!QMH	
Ad1Q44A	AqDaddAq)9)9!9	9BqttG	Ca	GB|B!------	
1a4QqTT1a  	 1Q3tAaDD!}}#4	4q1v	=#a&&	HB|B!------CDDDDDrV   c            	      &   t          d          \  } }t          dd          \  }}}}d}t          | dz  t          t          |           | d          z  d| z  t          t          |           |           z  z
  dt          |           z  z   | dz            }|t	          |t          |                     v sJ t          || d	z  z  t          t          |           | d	          z  || dz  z  t          t          |           | d          z  z   || z  t          t          |           |           z  z   |t          |           z  z   | t          |           z            }|t	          |t          |                     v sJ t          t                     d S )
Nzx, tz
a, b, c, dTr\  :nth_linear_euler_eq_nonhomogeneous_variation_of_parametersr         r   )r   r
   r   r?   r0   r   rb   $_get_examples_ode_sol_euler_var_parar`  s           rT   Etest_nth_order_linear_euler_eq_nonhomogeneous_variation_of_parametersrh  k  sk   6??DAqt444JAq!QKH	AqDadd1Q!A#d1Q44ll"22R!W<ad	C	CB|B!------	AadF4!Qq>>!AadF4!Qq>>$99AaCQqTT!<LLqQRSTQUQUvUWXY\]^Y_Y_W_	`	`B|B!------9:::::rV   c                  z   d t          d          D             \  } }}}}dt          t                    t          dt	          t          t                    t                    z  t          z  dt          dz  z  t	          t          t                    t          t                    z  z   d          t          t          t                    t
          t          t          t          dd          z  z  z             gdt          dt          t                    z  dt	          t          t                    t                    z  t          z  z
  dt          dz  z  t	          t          t                    t          t                    z  z   d          t          t          t                    t
          t          t                    z  t          t          dz  z  z             gdt          d	t          t                    z  dt	          t          t                    t                    z  t          z  z   t          dz  t	          t          t                    t          t                    z  z   d          t          t          t                    t
          t          t          t                    z  z   t          dz  z            gdt          d
t          t                    z  d
t	          t          t                    t                    z  t          z  z
  dt          dz  z  t	          t          t                    t          t                    z  z   t          dz  t	          t          t                    t          t          t                    z  z   d          t          t          t                    t
          t          dz  z  t          t          z  z   t          t          dz  z  z             gdt          dt          t                    z  dt	          t          t                    t                    z  t          z  z   dt          dz  z  t	          t          t                    t          t                    z  z
  t          dz  t	          t          t                    t          t          t                    z  z   d          t          t          t                    t          dz  t
          t          t          t                    z  z   t          t          t                    dz  z  z   z            gdt          dz  t	          t          t                    t          d          z  t          t	          t          t                    t                    z  z   dt          t                    z  z
  t          t          t                    t
          t          dz  z  t          t          dz  z  z             gdt          t                    t          dz  z  t          t                                        t          d          z  t          t                    t          z  t          t                                        t                    z  z   t          t                    t          t                    z  z   t          t          t                    t
          t          t          t                              z  t          t          t          t                              z  z             gddgdt          d
z  t          t                                        t          d
          z  t          t          t                                        t                    z  z
  t          t                    z   t          t          t                    t
          t          z  t          t          | z  z  z   t          t          |z  z  z   t          t          |z  z  z   t          t          |z  z  z   t          t          |z  z  z             gddt!          t          t          t                    z  t          t          t                    t          t          t                    t
          t          t          z  z   t          t          z  z             gdd	dS )Nc                     g | ]R}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
  |          SS )	r     r   G   r      r   x   r   r'   r<   rt   ns     rT   r   z;_get_examples_ode_sol_euler_homogeneous.<locals>.<listcomp>|  s\    gggYZ&A1a4"QT'!9C1H!Ds1u!Lq!PRSTTgggrV   r  rS  r   r   r   r   r      r   i=   rf  	   2nd_power_series_regularr^  rE   rF   rG   TrE   rF   rJ   )	euler_hom_01euler_hom_02euler_hom_03euler_hom_04euler_hom_05euler_hom_06euler_hom_07euler_hom_08euler_hom_09rM   rH   rD   )r   r?   r<   r
   r   r   r   r   r   r   C3r    r   C4C5C6r   )r1r2r3r4r5s        rT   rV  rV  z  s   gg^cde^f^fgggBBB5aDD D1qMM!!#a1fT!A$$1-=-=&==qAA1Q44bHQNN!222334  1Q44!D1qMM/!++a1fT!A$$15E5E.EEqII1Q44DGGbAg-../  1Q44!D1qMM/!++ad4!a3C3C.CCQGG1Q44"r#a&&y.!Q$.//0  1Q44!D1qMM/!++a1fT!A$$15E5E.EE1TRSTURVRVXY[\^_M`M`H``bcdd1Q44AqD2a4"QT'1223  addRQqTT1-a//"QT'$qttQ:J:J2JJQPQTRVWXYZW[W[]^`acdReReMeeghii1Q44ArBs1vvI~3q6619<=>>?  d4!a###aQqTT1o5!A$$>1Q44ArEBq!tG+,,-  !ffQTk!A$$))Aq//)CFF1HQqTTYYq\\,AACFF1Q44KO1Q44CAKK"SQ[[.899:,-kl  dQqTTYYq!__$q11~5!<1Q44A1b52ae83bBh>ArEIBqRTuHTUUV   1Q44Aq))1Q44bdRT)**+ [1 15 5 5rV   c                     dt          t                    t          t          dz  t          t          t                    t          t                    z  t          t          t          t                    t                    z  z   d          t          t          t                    t          t
          t          t                    z  z   t          t                    dz  dz  z             gdt          t          dz  t          t          t                    t          t                    z  dt          z  t          t          t                    t                    z  z
  dt          t                    z  z   t          dz            t          t          t                    t          t          t
          t          z  z   t          dd          t          dz  z  z   z            gdt          t          dz  t          t          t                    t          t                    z  t          t          t          t                    t                    z  z
  dt          t                    z  z
  t          t                    t          z            t          t          t                    t          t
          t          dz  z  z   t          t                    dz  dz  z
  t          t                    dz  z
  t          z            gdt          t          dz  t          t          t                    t          t                    z  dt          z  t          t          t                    t                    z  z   dt          t                    z  z
  t          t                    dz  t          t                    z
            t          t          t                    t          t          dz  z  t
          t          dz  z  z   t          dd          t          t                    dz  z  z
  t          dd	          t          t                    dz  z  z
  t          dd
          t          t                    z  z
  t          dd          z
            gdt          t          dz  t          t          t                    t          t          t                    z  dt          dz  z  t          t          t                    t          t                    z  z
  dt          z  t          t          t                    t                    z  z   dt          t                    z  z
  t          t                              t          t          t                    t          t          z  t
          t          dz  z  z   t          t          dz  z  z   t          dd          t          t                    z  z
  t          dd          z
            gddt          dz  z  t          t                                        t          d          z  t          t                    z   t          dt          z            t          t          dt          z            dz            z  z   t          t          t                    t          t                    t          t          t          t                    dz            z  t
          t          t          t                    dz            z  z   t          d          t          t                    z  t          t          dt          z            dz            z  dz  z   z            gddt          dz  z  t          t                                        t          d          z  t          t                    z   t          t          dt          z            dz            z   t          t          t                    t          t          t                    z  t          t          t                    dz            z  t
          t          t                    z  t          t          t                    dz            z  z   dt          t          dt          z            dz            z  dz  z
  dt          t          dt          z            dz            z  dz  z
            gdddS )Nr^  r   r   r   r   r   re         @   r      rs     rU  r  )euler_undet_01euler_undet_02euler_undet_03euler_undet_04euler_undet_05euler_undet_06euler_undet_07r  )r?   r<   r
   r   r   r   r   r   r  r   r    r   rW   rV   rT   r_  r_    s    SaDD Ad1Q44A&&&4!a==8!<<1Q44bQi#a&&!)A+5667  Ad1Q44A&&&1T!A$$]])::QqttVCQTJJ1Q44BAIAq!t(;;<==>  Ad1Q44A&&&4!a==81QqTT6A3q66!8LL1Q44"r!Q$w,Q14s1vvby@!CDDE  Ad1Q44A&&&1T!A$$]])::QqttVCSVVQYQTUVQWQWEWXX1Q44AqD2ad7*Xa]]3q6619-DDxPQRT~~VYZ[V\V\^_V_G__bjklmobpbpqtuvqwqwbww  {C  DE  GJ  {K  {K  K  L  L  M  Ad1Q44Aq)))AadF4!a3C3C,CCac$qQRttUV--FWWZ[\]^_\`\`Z``befgbhbhii1Q44A1a4"QT'1HQNN3q664IIHUWY[L\L\\]]^  1fQqTTYYq!__$qtt+d1Q3iiC!HHQJ.GG1Q44a"SQ]]"2RCFF1H5E"EQPSTUPVPVWZ[^_`ab_b[c[cde[eWfWfHfghHh"hijjk  1fQqTTYYq!__$qtt+c#ac((1*oo=1Q44DGGCAqMM1BtAwwJs3q66!8}}4LLqQTUXYZ[\Y\U]U]^_U_Q`Q`O`abObbefgjknopqrorkskstukugvgvevwxexxyyz A$ $( ( (rV   c                  <   dt          t                    t          t          dz  t          t          t                    t          t                    z  dt          z  t          t          t                    t                    z  z
  dt          t                    z  z   t          dz            t          t          t                    t          t          t
          t          z  z   t          dz  dz  z   z            gdt          dt          dz  z  t          t          t                    t          t                    z  dt          z  t          t          t                    t                    z  z   dt          t                    z  z
  t          dz  t          t                    z            t          t          t                    t          t          dz  z  t
          t          z  z   t          t          t                    z  dz  z   dt          t                    z  dz  z
  dt          t                    z  dt          z  z  z   dt          t                    z  dt          dz  z  z  z
            gdt          t          dz  t          t          t                    t          t                    z  dt          z  t          t          t                    t                    z  z
  dt          t                    z  z   t          dz  t          t                    z            t          t          t                    t          t          t
          t          z  z   t          t          t                    z  z   dt          t                    z  z
  z            gdt          dz  t          t          t                    t          t                    z  dt          z  t          t          t                    t                    z  z
  dt          t                    z  z   t          t                    z
  t          t          t                    t          t          z  t
          t          dz  z  z   t          t                    dz  z   t          dd          z             gdt          t                     t          t          t          t                    t          df          z  t          t          t                    t                    z   t          z  z   t          t          t                    t          t
          t          t                    z  z   t          t                    z   t          t                    z
            gdt          dz  t          t                                        t          d          z  t          t          t                                        t                    z  z   dt          t                    z  z   dt          z  z
  t          t          t                    t          t          dt          t                    z            z  t
          t          dt          t                    z            z  z   dd	t          z  z  z             gdd
dS )Nrd  r   r   r   rs  r   re  r   r  )euler_var_01euler_var_02euler_var_03euler_var_04euler_var_05euler_var_06r  )r?   r<   r
   r   r   r   r   r   r   r   r"   r    r   rW   rV   rT   rg  rg    sS    QaDD Aj1q!,,,qs:addA3F3F/FF1Q44OQRTUQUVV1Q44BAI1Q./001  1a4QqTT1a(((1Q3tAaDD!}}+<<q1vEq!tCPQFF{SS1Q44AqD2a4!CFF(1*4qQxzAAc!ffHaPQcNRUVWZ[\W]W]U]_`abdeae_eUffggh  Aj1q!,,,qs:addA3F3F/FF1Q44OQRTUQUVYZ[V\V\Q\]]AaDD!R"Q$Y3q661Ac!ffH<=>>?  d:addAq)))AaC
1Q440C0C,CCa!fLsSTvvU1Q44A1a4#a&&(2Xa^^CDDE  1vvg:addQF333j1q6I6II1LL1Q44bQi#a&&02a55899:  dQqTTYYq!__$q1Q4499Q<<'77!add(BQqSH1Q44C#a&&MM)Bs1SVV8}},<<q!A#wFGGH 5 " " "rV   c                  $   dt          t                    t          t          t          t                                        t                    z  t          t                    z   t          t                    dz  z
  d          t          t          t                    dt          t          z  dz   z            gdgdt          t                                        t                    t
          t          t                    z  z
  t          t          t                    t          t          t          t
          z            z            gdt          t                    t          t                                        t                    z  dz
  t          t          t                    t          t          dt          z  z                        t          t          t                    t          t          dt          z  z                       gddd	S )
N	Bernoullir   r   r   r   rw  r   )bernoulli_01bernoulli_02bernoulli_03r  )r?   r<   r
   r   r   r>   r   r   rW   rV   rT   rD  rD  	  s_     aDD 1Q4499Q<<!A$$&1q0!441Q44BqD1H&&'%&  ddiillQqttV#1Q44C!HH%%&  dd1Q4499Q<<!#1Q44$rAaCx..))2addDacNN+C+CD    rV   c                     dt          t                    ddt          t                                        t                    z  t          t                    dz  z   t          t                    t          z  z
  dt          dz  z  z   t          t          t                    t	          d           t          t          t	          d          t          t                    z  dz  z             z  dz   dt          z  z            gdidS )	NRiccati_special_minus2
riccati_01r   r   r   r   r  )r?   r<   r   r
   r   r!   r   r   rW   rV   rT   r>  r>  #  s     -aDD!		!nqttQw&1a/!AG);1Q44477(3rDGGCFFN1,<'<#=#==AAaCHIIJ 	 	 	rV   c                  d   dt          t                    t          t          t                                        t                    t          t                    dz  z   dz
  d          t          t          t                    t	          d          t
           t          dt	          d          z  t          z            z
  z  t
          t          dt	          d          z  t          z            z
  z            gdt          t                    dz  t          t          t                    t                    z   dt          t                    z  t          z  z   dt          dz  z  z   t          t          t                    dt
          z  t          z
  t          t
          t          z   z  z            gddt          dz  z  t          t          t                    t                    z  t          dt          t                    z  t          t          t                    t                    z   dz
  z  z
  t          t                    dz
  t          t                    z  z   t          t          t                    t
          dt          dz  z  z   t
          t          z   z            gdt          t                                        t                    dz
  d	t          t                    z  z
  t          t                    dz  z
  t          t          t                    dt
          z  d
t          t                    z  z   t
          t          t                    z
  z            gdt          dz  dt          z  dt          z  z   t          t                    z  z
  t          t                    dz  z   t          t          t                    t                    z   t          t          t                    t          t
          t          dz  z   dz   z  t
          t          dz  z   dz
  z            gdt          dz  t          t          t                    t                    z  t          dz  z   t          dt          t                    dz  z  t          t          t                    t                    z   z  z
  t          t                    z   t          t          t                    t          t
          t          z  t          z
  dz   z  t
          t          dz  z   dz
  z            gdt          t                    dz   t          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t
          z  t          z  dt
          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
          z  t          dz  z  dt
          z  t          z  z
  d
t
          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t          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
           t          d
z  z
  t          dz  z   dt          z  z
  dz   t
          t          z  t
          z
  t          dz  z   t          d
z  z
  t          dz  z   dt          z  z
  dz   z            gdt          t          t                    t                    dt          z  t          t                    dz  dz   z  t          z  z
  t          t          t                    t           t
          z  t          t          dz  z  z   t          z   t
          t          dz  z   dz
  z            gdt          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          dz  z  dt
          z  t          dz  z  z   d t
          z  t          dz  z  z   d!t
          z  t          d"z  z  z   d#t
          z  t          d$z  z  z   d%t
          z  t          dz  z  z   d&t
          z  t          dz  z  z   d't
          z  t          dz  z  z   d(t
          z  t          dz  z  z   d)t
          z  t          d	z  z  z   d*t
          z  t          dz  z  z   d+t
          z  t          d
z  z  z   d,t
          z  t          dz  z  z   d-t
          z  t          z  z   d.t
          z  z   t          t          dt          z            z  z   dt          dt          z            z  z
  t          d/t
          z  t          dz  z  d0t
          z  t          dz  z  z   d1t
          z  t          d"z  z  z   d2t
          z  t          d$z  z  z   d3t
          z  t          dz  z  z   d%t
          z  t          dz  z  z   d4t
          z  t          dz  z  z   d5t
          z  t          dz  z  z   d6t
          z  t          d	z  z  z   d7t
          z  t          dz  z  z   d8t
          z  t          d
z  z  z   d9t
          z  t          dz  z  z   d9t
          z  t          z  z   d:t
          z  z   t          dt          z            z
  z  z            gdd;
d<S )=N1st_rational_riccatir   r   r   r   r  r   rs  r  r         r   ru  <   ^   H   !   re     9   :      i  i  i  r  rf  (   rk  rT  i  i|  r  i0H  
   i iF i4" i< ii2ҍi"0	iimi^      iH  i  i<Z  i8X i4 iLB i i|Mi:i )
rational_riccati_01rational_riccati_02rational_riccati_03rational_riccati_04rational_riccati_05rational_riccati_06rational_riccati_07rational_riccati_08rational_riccati_09rational_riccati_10r  )
r?   r<   r
   r   r   r   r   r   r   r   rW   rV   rT   rA  rA  2  sA
   
 +aDD 11!a'!+Q//1Q44a2#Ad1ggIaK(8(8"892Ad1ggIaK@P@P;PQRRS  ddAg
1Q44+++a!fQh61a4?1Q44"R%!)aaj1223  1fZ!a(((1a!fz!A$$7J7J.JQ.N+OOSTUVSWSWZ[S[]^_`]a]aRaa1Q44"qAv+Q/001  ddiillQ1Q44'!A$$'11Q44"R%!CFF(*R#a&&[9::;  dacAaCi1%%!a/*QqTT12E2EE1Q44BAIM*BAIM:;;<  d:addA&&&A-1QqTT1W9z!A$$PQ?R?R3R0SSVWXYVZVZZ1Q44BqD1HqL)219q=9::;  ttQwhAaDD!,,,1a4"Q$0Ba!eaZQRSTQTRQ F 0 1Q44!B$q&1R4-"QT'1Bq!tG;bAgE1a4OqDtAqDy1R46)AbD01QT69Bq!tGCbAgMq!tGAg !!$&'() * * +  1q!!Qq!tVaZ1q$8$::a1fqj1naPQdd=RTUWXX U > q!tVac\A%1q51*561Q442#1*q!t+ac1A51r	AqD8H1a48ORSUVRV8VaC99      1q!!AaC1q1$5a$771Q441"R%!AqD&.1,rAqDy1}=>>?  AaDD!$$a!fadd1fqsl&;qsQqTT!V|QqTTSTW>TqSUQqTT!V^? ' ttAv'&),QTDF):S)@2ad7RPQSTPTWCT(U'V W W1Q44"R%2+2ae3c"fQUlBT"WQPRU]R"HQUN#BYq!t^,.4Ri1n=?Frz!Q$OBJq!tO&rk!Q$./19"QT1ABDMbLQRTUQUDUV l1a4  #,B,q.1 4=R<@ CDC!HH*M PQQTUVWXUXQYQYzZ "R%2+Bq"u,s2vae|;d2gaemKeTVhWXZ[W[m[Ri1n%byA~.07
1a4@BI"*QPQT/RRK1'{1a4/02:2+ad2BCEMb[QR]S RK ac((# $	% & & ' kA AE E ErV   c                  `   dt          t                    dt          t          t                                        t                    t          t          t                    z  z   t          dz            t          t          t                    t          t          t          t          dz  dz            z  z   t          d          t          t                    z  t          t          d          t          z  dz            z  dz  z
  t          t          dz   dz            z            gdidS )N
1st_linear	linear_01r   r   r  )	r?   r<   r
   r   r   r   r   r	   r#   rW   rV   rT   rG  rG    s     !aDD11!A$$&1--1Q44"qQT!V},d1ggd2hh.>tDGGAIaK?P?P.PQR.RRTWYZ\]Y]X]^_X_T`T``aab 	 	 	rV   c                  D0   t          d          } t          d          \  }}}}}dt          t                    i dt          t                    t          t                    t          t                                        t                    z  z   t          t          t                    d          t          t          t                    t          t          z
            gg dddt          t                    t          t                                        t                    t          t                    t          z  z   d	z   z  t          t          t                    t          t          d	          t          t                    z  t          t          d	          t          z  d	z            z  z
  t          t          d	z   d	z            z            t          t          t                    d          gg d
ddt          t                                        t                    t          t                    t          d	z  z  z   t          t                                        t          d	          t          t          t                    z  z   z  t          t          t                    t          t          t                     z  t          t          t                     z  z             t          t          t                    t          t          t          dz   dz            z            gddt          t                                        t                    t          t                    t          d	z  z  z   t          t                                        t          d	          t          t                    z   z  t          t          t                    t          t          t          dz   dz            z            t          t          t                    t          t          t                    z  t          t          t                    z  z             gddt          t                                        t                    d	z  dz
  t          t                                        t                    d	z  dz
  z  t          t          t                    t          t          z
            t          t          t                    t          t          z             t          t          t                    t          d	t          z  z             t          t          t                    t          d	t          z  z
            gddt          t                                        t          d	          t          t          t                              z
  t          t                                        t                    z  t          t          t                    t!          t           t          t          t                     t          t          z   z            dz   z                      t          t          t                    t!          t           t          t          t                     t          t          z
  z            dz   z                      t          t          t                    t                    gdddt          t                                        t                    d	z  dz
  t          t                    t          t                                        t                    z  dz
  z  t          t          t                    t          t          z
            t          t          t                    t          t          d	t          z  z                        t          t          t                    t          t          d	t          z  z                       t          t          t                    t          t          z             gddt#          t          t                    t                    dz  d	t#          t          t                    t                    d	z  z  z
  dz   t          t          t                    t          t          z
            t          t          t                    t          t          z             gddt          t                    d	z  t#          t          t                    t                    dz  z  d	t          t                    d	z  z  t#          t          t                    t                    dz  z  z
  t          t                    d	z  t#          t          t                    t                    d	z  z  z   d	t          t                    z  t#          t          t                    t                    dz  z  z
  dt          t                    z  t#          t          t                    t                    dz  z  z   d	t          t                    z  t#          t          t                    t                    z  z
  t#          t          t                    t                    dz  z   d	t#          t          t                    t                    d	z  z  z
  dz   t          t          t                    t          t          z
            t          t          t                    t          t          d	t          z  z                        t          t          t                    t          t          d	t          z  z                       t          t          t                    t          t          z             gddt          dz  t          t                    d	z  z  d	t          dz  z  t          t                    z  t#          t          t                    t          d	f          z  z   t          dz  t#          t          t                    t          d	f          d	z  z  z   d	t          dz  z  t          t                    z  t#          t          t                    t                    z  z   d	t          dz  z  t#          t          t                    t                    z  t#          t          t                    t          d	f          z  z   dt          d	z  z  t          t                    d	z  z  z
  dt          d	z  z  t          t                    z  t#          t          t                    t          d	f          z  z
  t          d	z  t#          t          t                    t                    d	z  z  z   dt          z  t          t                    z  t#          t          t                    t                    z  z
  dt          t                    d	z  z  z   t          t          t                    t          t%          d	t                    z  t          t'          d	t                    z  z             t          t          t                    t          t%          t          d          t                    z  t          t'          t          d          t                    z  z             gdddt          t                                        t          d	          t          t          t                              z
  t          t                                        t          d	          t          t          t                              z   z  t          t          t                    t!          t          t          t          t          dt          z            z  t          t          z   z            dz
  z                      t          t          t                    t!          t          t          t          t          dt          z            z  t          t          z
  z            dz
  z                      t          t          t                    t!          t          dt          t          t          dt          z            z  t          t          z   z            z
  z                      t          t          t                    t!          t          dt          t          t          dt          z            z  t          t          z
  z            z
  z                      gddd t          t          t                                        t                              t          t                    d	z  z
  t          t)          dt!          | d	z            z  | t          t                    f          t          t          z             gd!gdd"t          t                                        t                    d	z  t          t                    dz  z
  t          t          t                    dt          d	z  d	t          z  t          z  z
  t          d	z  z   z            gd!gdd#t          t                                        t                    d	z  t          t                    z
  t          t          t                    t          d	z  dz  t          t          z  d	z  z
  t          d	z  dz  z             gdd$t          t                                        t                    d	z  t          t                    d	z  z
  t          t          t                    t          t          t                    z            t          t          t                    t          t          t                     z            gdd%t          t                                        t                    d	z  t          t                    dz  z
  t          t          t                    dt          d	z  d	t          z  t          z  z
  t          d	z  z   z            gdd&t          t                                        t                    |t          dz  z  |t          dz  z  z   |t          d	z  z  z   |t          z  z   |z   d'z  z
  t          t          t                    t          t+          dt          ||t          z  z   |t          d	z  z  z   |t          dz  z  z   |t          dz  z  z             z  t                    z             gddt          t          d	t          z            t          t#          t          t                                                  t          t          t                    t          t+          t          t-          t          d	t          z                      z
  t                    z             t          t          t                    t          t+          t-          t          d	t          z                      t                    z             gdd(t#          t          t                    t                    d	z  t          dz  z
  t          t          t                    t          d	t          t/          dd	          z  z  dz  z
            t          t          t                    t          d	t          t/          dd	          z  z  dz  z             gdt          t          t                                        t          d	          z  t          t          t                    z  z
  t          t          t                    t          t          t                     z  t          t          t                    z  z             gdd)d*S )+z some hints are marked as xfail for examples because they missed additional algebraic solution
    which could be found by Factorable hint. Fact_01 raise exception for
    nth_linear_constant_coeff_undetermined_coefficientsr>   za0, a1, a2, a3, a4r   fact_01r   )	separable	1st_exactr  r  1st_homogeneous_coeff_bestr   r   r   r^  1nth_linear_constant_coeff_variation_of_parametersrd  r.  rw  fact_02r   )r  r  r   fact_03r   r   fact_04fact_05r   r   fact_06TrE   rF   r;   fact_07fact_08fact_09rs  r  fact_10r   rf  fact_11r   rE   rF   rK   fact_12r   fact_13fact_14fact_15fact_16fact_17g      rx  )fact_18fact_19fact_20r  )r   r   r?   r<   r   r
   r   r   r	   r#   r   r*   r   r+   r    r   r   r   r,   r-   r/   r%   r   r   )r>   a0a1a2a3a4s         rT   r9  r9    s    	c

A122NBr"R aDDKddQqTT!A$$))A,,&&1Q44R!b1f--.? ? ?	 	K ddAaDDIIaLL1a')*1Q44"tAwwtBxx/T!WWQYq[0A0AAA31uQw<<OPPRTUVWXUYUY[\R]R]^999 K$ ttyy||AaDDAI%!		!Q!AaDD&(@AAaDD"VQBZZ-"VQBZZ-788AaDD"S!Q$q\\/9R9RS %K. ttyy||AaDDAI%!		!Q!A$$(>?1Q44CAaLL))2addBs1vvI3q66	4I+J+JK /K8 ttyy||Qq 1Q4499Q<<?1#451Q44a  "QqTT26"2"2BqttR!A#X4F4F1Q44QSVWXYVYQYHZHZ[ 9KB ttyyAs1Q44yy(!A$$))A,,6qttS"c$s))R!V"4559:;;<<qttS"c$s))R!V"4559:;;<<qttRLL

  CKV ttyy||Qq 1Q44!		!#4Q#671Q44a  "QqTTDacNN?";";BqttT"qQRs(^^<T<TVXYZ[\Y]Y]_ade_eVfVfg WK` 1q!!1$qAaDD!)<)<a)?'??!C1Q44a  "QqTT26"2"23 aKj ddAgj1q))1,,q1qyAaDD	
: :: 0 1qAaDD!,,a//023AaDD&AaDD	
: :: 31Q44
1Q44++Q../121Q44
1Q44	
9 9 2 1q!!1$% ()AaDD!)<)<a)?'?@ CDD
 qttR!Vb1R!A#X77qttT"qs(^^$$b1rAv&6&6
	 	kK@ d1Q447lQq!tVAaDD[AaDD1a&)A)AAAAqDTUVWTXTX
QJ JJ E Avadd{:addA#6#6679:1a4
1Q44	
A A :qttaV$$:%%'(AvaddAg~689!Q$qttJqQRtt
QE E 9 a4
1Q44++Q../ 231QqTT*QqTT1:M:M1MN QSSTUVSWSWYZSZPZ[
 qttR1%71a==(8899qttRQ+++ba!1D1D.DDEE
 
 
AKX ttyyAs1Q44yy(1Q4499Q??3qtt99+DEqttSSDBKKa!899A=>??@@qttSSDBKKa!899A=>??@@qttSQRRU^R!V%<!=!==>??@@qttSQRRU^R!V%<!=!==>??@@	
  	 	YKp !A$$))A,,!a'(3q!t99q!A$$i@@"q&IIJ qK| ddiillAo!a'1Q44BEAbDFNQT12334 }KH ddiillAo!$1Q44Qq2a46)AqDF2334 IKR ddiillAo!a'1Q44CFF##R!baRj%9%9: SK\ ddiillAo!a'1Q44BEAbDFNQT12334 ]Kh ddiillBq!tGbAg-1a47"Q$>CtLL1Q44hqb2a4i"QT'.ABq!tG.KbQRTUQUg.U)V)V'VXYZZZ[[\ iKx 1q53z!A$$//00111Q44hrD1Q3LL'8!<<<==r!A$$XVZ[\]^_`]`[a[aVbVbdeMfMfHf?g?gh   1q!!1$q!t+1Q44a8Aa== 002233R!b1QQRSTEUCUVWCW>W5X5XY  !		!Q!AaDD&(1Q44CGGbQi/001 OK K KO O OrV   c                  	   ddl m}  t          dd          }t          d          } |t                                        t                    }d |t                    t          dz   |t                    dz  z  |z   |t                    d	z  z   d
z   t           |t                    t          t          d	t          z            z  d
z
  t          d
d	          z            t           |t                    dt          d	          t          z  z
  t          t          d	t          z            z  d
z
  t          d
d	          z  z  dz            t           |t                    dt          d	          t          z  z   t          t          d	t          z            z  d
z
  t          d
d	          z  z  dz            gdt           |t                    z  |z  dt          z   |t                    dz  z  z   d
z   t           |t                    t          t          d | dt          z            z  z
  t          dt          z            z                       t           |t                    t          t          d | dt          z            z  z
  t          dt          z            z                      gdt          |z  t           |t                    z  z   d
z   t           |t                    t           | t                    z
  t          t                     z            gdt          t           |t                              z  |z  t           |t                              z   d	t          z  z   t           |t                    t          t          t          z  t          t          d	d          z  z
                      gdt          |t          t           |t                    t                    z    |t                    z   z  z   t           |t                    t                    z    |t                    z   dz   t           |t                    t          t          t          t          |d
z   d          f| t          z  |z   t          z
  d
z
  t          t                    z  |d
z   z  df          z   t          t                     z            gdddS )Nr   )r"   ATpositiver?   almost_linearr   r   r   r   r   r   )almost_lin_01almost_lin_02almost_lin_03almost_lin_04almost_lin_05r  )'sympy.functions.special.error_functionsr"   r)   r(   r<   r   r
   r   r   r   r   r   r   r   )r"   r  r?   ra  s       rT   rJ  rJ  )  s   ::::::sT"""AA	!		!A $AaDD d11Q447l1nqqttQw&*11Q44"S1XX+/HQNN:;;
11Q44"tAwwqy.2c!A#hh;?Xa^^"CCAEFF
11Q44"tAwwqy.2c!A#hh;?Xa^^"CCAEFFH  !fQh1QQqTT1W$q(11Q44$Qrr!A#wwYBqD		9:::;;R!dBQRSUSUVWXYVYSZSZQZN\_`bcd`d\e\eKeFfFf=g=gh  sQqqttV|a11Q44"rr!uu*c1"gg-../  AAaDD		k!mc!!A$$ii'!A#-11Q44RTAhq!nn$4455667  !QaaddA&1-..aaddA>1EI11Q44"y	
Bq1uaLLaRTAX\A-s1vv5q1u=tD F  F FGJA2wwO P P Q 1 ! ! !rV   c                     t          d          } t          d          }dt          t                    t	          t          t                    t                    t          z  t	          t          t                    t          t                    dz  z   t	          t          t                    t                    dz  dz  z
  t          t          t                    t          t          t          t          t          z  z   z                      gdt	          t          t          t          t                               z  t          t                    t          t          t                    t          t          t          t          t          z  z   z                      gdt	          t          t                    t                    t          z  t	          t          t                    t          t                    dz  z   t	          t          t                    t                    dz  dz  z
  t          t          t                               z  t          t          t                              z  
                                t          t          t                    t          t          t          t          t          z  z   z                      gdt	          t          t                    t          t                    dt          t                    z  t	          t          t                    t                    dz  z  z   dt          z  t	          t          t                    t                    z  z   t          t          t                    t          t          t          t          t                    z  z                        t          t          t                    t          t          t          t          t                    z  z                       gdt          t	          t          t                    t          t                    z  t          t          t                    z  t	          t          t                    t                    dz  z  z   t          t	          t          t                    t                    z  z   t          t          t                    t          t          t          t          t                     z  z                        t          t          t                    t          t          t          t          t                     z  z                       gdt          t          t          t          t                              z                      t          t                    d          t          t          t                    t          t          t          t          z  z                       gdt	          t          t                    t                    t          z  t	          t          t                    t          t                    dz  z   t	          t          t                    t                    dz  dz  z
  t          t          t                               z  t          t          t                              z  t          t          t                    t          t          t          t          t          z  z   z                      gdt          dz  t	          t          t                    t                    z  | t          t                    z  t          t                    dz  z   t	          t          t                    t                    dz  z  z   t	          t          t                    t          df          z   t          t          t          t          t          dd          t          dz  dz            z  z   t          t          |dz  dz            t          |dz  | z  dz            z  |t          t                    f          z   d          gdd	d
S )Nrq  r>   rM  r   r   r   r   r   )liouville_01liouville_02liouville_03liouville_04liouville_05liouville_06liouville_07liouville_08r  )r)   r   r?   r<   r   r
   r   r   r   r   expandr   r.   r   r/   )rq  _ys     rT   rN  rN  T  sp   sA	sBaDD 1Q44mmAoQqTT1a 0 0 22T!A$$]]A5Ea5GG1Q44QRT	]++,,-  1S!A$$ZZ<A&&1Q44QRT	]++,,-  addAq4!a#3#3A#55QqTT1q8H8JJCQRSTQUQUPUJJVWZ[\]^[_[_W`W``hhjj1Q44QRT	]++,,-  1Q44A1Q44addA(:!::QqSaddA=NN1Q44$rBs1vvI~...//AaDD$rBs1vvI~:N:N1O1OP  QqTT1a   1QqTT6$qttQ--*:#::QtAaDD!}}_L1Q44$rBsA2wwJ///00"QqTT4RQBZ;P;P2Q2QR  !C!II+##Aq))1--1Q44R"Q$Y(()  AaDD!}}QaddAq!1!1!!33d1Q44mmQ6Fq6HH#qQRtte**TUXYZ[\Y]Y]U^U^^1Q44QRT	]++,,-  d4!Q<<1QqTT6AaDD!G#3T!A$$q\\1_"DDtAaDDSTVWRXGYGYY2:hqmmQT!V<<<<?TUXY[]^Y^_`Y`UaUabefhjkfklmfmnofobpbpUpsuwxyzw{w{r|?}?}}  @A  B  B  C K) )- - -rV   c                  F   t          d          \  } }}}t          d          }t          d          }dt          t                    i dt          t                    t          t                                        t                    z  t          t                                        t          t                    z  t          t                    dz
  z  t          t                                        t                    t          z
  z  t          t          t                    t          t          dz  dz  z             t          t          t                    t          t          t          z  z             gdd	t          t                    t          t                                        t                    z  t          t                                        t          t                    z  t          t                    dz
  z  t          t          t                    t          t          t          z  z             gdd
t          t                    t          t                                        t                    z  t          t                                        t          t                    z  t          t          t                    t          t          t          z  z             gddt          |   ||                              |          z  t          dd          |z  |dz  z   ||                              |          z   ||                              ||          z            t           ||          t                    t           ||          t          t          |z  z   | |dz  z  d|z  |dz  z  z  z
            g ||          dddt          t          t                              z
  t          t                                        t                    z  t          t          t                    t                    gdgddt          t          t                              t          z
  t          t          t                              t          z   z  t          t          t                    t          t          dz  dz  z
            t          t          t                    t          t          dz  dz  z             gddt          t          t          t                    t                    t          t          t                    t                              t          t          t                    t          t          t                    z             gddt          t                                        t                    t          z
  t          t          t                    t          t          z  t          z             gddt          t                    t          t                                        t                    z  t          t          t                    t                    gddt          t          t                              t          z
  t          t          t                              t          z   z  t          t          t                    t          t          dz  dz  z
            t          t          t                    t          t          dz  dz  z             gddt          t                    t          t                    t          t                                        t                    z  z   t          t          t                    d          t          t          t                    t          t          z
            gg dddt          t          t          t                    z  t          t          t                    t          t          t                    t          t          t          z  z   t          t          dz  z  z   t          z            gdgddt          t          t          t          t          t                    t                    z  t                    t          z  t          t                              t          t          t                    t          t          t          t                    z  z   t          t                    z   t!          t                    z
            gdgddt          t          t                                        t                    d          t          t          t                    t                    gddt          dt          t                                        t                    z  dz
  d          t          t          t                    t          t          t          dd          z  z             gddt          dt          t                                        t                    z  d          t          t          t                    t          t          t          dd          z  z             gddt          dt          t                                        t                    z  dz
  d          t          t          t                    t          t          dz  z             gdt          t          t          t                                        t                    z  dz
  d          t          t          t                    t          t          t                    z             gdt          t                                        t                    t          t          | t          z            z  z
  t          t          t                    t          t#          | t          z  dz
  t          | t          z            z  |dz  z  t%          |dz  d          ft          dz  dz  d f          z             gdt          t                                        t                     t          t          | t          z            z  z   t          t          t                    t          t#          | t          z  dz
  t          | t          z            z  |dz  z  t%          |dz  d          ft          dz  dz  d f          z             gdt          t          t                                        t                                        t                    t          dz
  dz  t          dz
  dz  z             t          t          t                    t          t          t          z  z   t          dz  d!z  z   dt          d"z  z  dz  z
  d#t          dz  z  d$z  z   d#t          dz  z  dz  z
            gt          t                    dt          t                                        t                    t          t          t                                        t                    z  z
  t          t          t                    t          t          t          t                    z  z             gt          t                    dt          t                                        t                    dt          z  z
  dt          dz  z  z
  t          t          t                    t          dt          z  t          z  z   t          dz  z             gdd%d&S )'NzM m r tphiknth_algebraicalgeb_01r   r   r   algeb_02algeb_03algeb_04r   rE   rF   rH   algeb_05r  rw  algeb_06algeb_07algeb_08algeb_09algeb_10algeb_11r   )r  r  r  r  r  r   r   r   r.  r^  r  rd  algeb_12algeb_13algeb_14algeb_15r  algeb_16algeb_17Tr  r      rs  )algeb_18algeb_19algeb_20algeb_21algeb_22algeb_23r  )r   r(   r)   r?   r<   r   r
   r   r   r   r    r   r@   r  r   r   r"   r   r   )MmrrW  r  r  s         rT   r  r    s
   ##JAq!Q
5//CsA $aDDGddQqTTYYq\\!AaDDIIaOO3qttax@AaDDIIaLLSTDTU1Q44ad1f%%r!A$$RT	':':; G ddQqTTYYq\\!AaDDIIaOO3qttax@1Q44bd##$ G ddQqTTYYq\\!AaDDIIaOO31Q44bd##$ G  !cc!ffkk!nn$	!Q!	ad	"SSVV[[^^	3cc!ffkk!A6F6F	FH H33q66233q66219qAvqs1a4x7H+H I IJA	 !G. 3qtt99}!		!,1Q44~ /G: AaDDzzA~QqTT

Q/1Q44ad1f%%r!A$$QT!V'<'<= ;GD AaDD!$$j1q&9&9::1Q44add##$ EGN ddiillR1Q44A##$ OGX dd1Q4499Q<<1Q44~ YGb AaDDzzA~QqTT

Q/1Q44ad1f%%r!A$$QT!V'<'<= cGl ddQqTT!A$$))A,,&&1Q44R!b1f--.G G G
 
mGD 1Q44Aq))1Q44"r!t)bAg-2334!" EGP Aj1q111155a7Q@@1Q44bQi#a&&02a55899:!" QG^ 11q!!1Q44~ _Gh 1Q4499Q<<!#Q''1Q44aA..//0 iGr 1Q4499Q<<##1Q44aA..//0 sG~ 1Q4499Q<<!#Q''1Q44ac""# GJ 1Q4499Q<<!#Q''1Q44c!ff%%&  ddiillQsA2a4yy[(1Q44i1"Q$(C1II)=ad)BBq!tQKK(PRSUVRVWXRXZ^Q_```aab  ttyy||maQBqD		k)1Q44i1"Q$(C1II)=ad)BBq!tQKK(PRSUVRVWXRXZ^Q_```aab  11""1%%!ax1Q3(':;;1Q44bdQT"W,qAvax7"QT'!)CbAgaiOPPQ!  ddiillR!		!_,1Q44b1g&&'!  ddiillQrT!AadF*1Q44ad1fq!t+,,- GG G GK K KrV   c                     dt          t                    t          t          t          t          t                    t                    dz  z  t          t          t                    t          d          z   d          t          t          t                    t          t          dt          z            t          t           t          dt          z            z  t          z             z  z
  t          dt          z            t          t          t          dt          z            z  t          z             z  z             gddt          t                     t          t          t          t                    t          df          z  t          t          t                    t                    z   t          z  z   t          t          t                    t          t          t          t                    z  z   t          t                    z   t          t                    z
            gddt          t          d          t          t                    
                    t          t          t                    z  t          t                    
                    t                    z   d          t          t          t                    t          t          t          dt          dd          z  t          z  dz            z  z   t          t          dt          dd          z  t          z  dz            z  z             gddt          t                    
                    t          d          dt          t                    
                    t                    z  z   t          t          t                    t          t          t          d	t          z            z  z             gd
t          t                    
                    t          d          t          t                    
                    t          d          z   dt          t                    
                    t                    z  z
  t          t          t                    t          t          t          dt          z            z  z   t          t          dt          z            z  z             gddt          t                    
                    t          d          t          t                    
                    t          d          z
  dt          t                    
                    t          d          z  z
  dt          t                    
                    t                    z  z   t          t          t                    t          t          t          d	t          z            z  z   t          t          t                    z  z   t          t          dt          z            z  z             gddt          t                    
                    t          d          dt          t                    
                    t          d          z  z   t          t          t                    t          t          t          z  z   t          t          dz  z  z   t          t          dt          z            z  z             gddt          t                    
                    t          d          dt          t                    
                    t          d          z  z
  t          t          t                    t          t          t          z  z   t          t          t          d           t          z            z  z   t          t          t          d          t          z            z  z             gddt          t                    
                    t          d          dt          t                    
                    t          d          z  z   t          t          t                    t          t          t          z  z   t          t          dt          z            z  z   t          t          dt          z            z  z             gddt          t                    
                    t          d          dt          t                    
                    t          d          z  z   t          t                    
                    t                    z   t          t          t                    t          t          t          z  t          t                    z  z   t          t          t                    z  z   t          t          z  t          t                    z  z
  t          t          t                    z  z   t          t          t                    z  z   t           t          t                    z  z             gddt          t                    
                    t          d          t          t                    
                    t                    dz  z
  t          t          t                    t          t          d          t          dt          t          z   z            z  t          t          z   z  z
            t          t          t                    t          t          d          t          dt          t          z   z            z  t          t          z   z  z             gddt          t          t          t                    z  t          t          t                    t          t          t                    t          t          t                    z   t          t          t                    t          t          t#          dt          dz  dt          z  z   dz   d          z  z   t          t          t          t#          dt          dz  dt          z  z   dz   d          z  z   z  z             gddddS )Nnth_order_reducibler   r   r   Tr  r   r   r  r   rs  rr  r  r   F)evaluate)reducible_01reducible_02reducible_03reducible_04reducible_05reducible_06reducible_07reducible_08reducible_09reducible_10reducible_11reducible_12r  )r?   r<   r
   r   r   r   r   r   r   r"   r   r    r   r  r   r  r  r   rW   rV   rT   r$  r$     s    *aDD :addA&&))JqttQ,B,BBAFF1Q44T"R%[[bSbe_q-@)A)AAARUC42;;*+++, - - .	  1vvg:addQF333j1q6I6II1LL1Q44bQi#a&&02a55899:  a1Q4499Qq+++addiill:A>>1Q44bQA%6q%8%:!;!;;;bQQRTUEVWXEXYZEZA[A[>[[\\]  ddii1oo!A$$))A,,.1Q44bRTl*++,  ddii1oo!		!Q/!AaDDIIaLL.@1Q44bRTl*RAaC[899:  ddii1oo!		!Q/!AaDDIIaOO2CC	!A$$))A,,1Q44bRTl*RAY6C!HHDEEF	  ddii1oo!A$$))Aq// 111Q44bdR1W,r#bd))|;<<=  ddii1oo!A$$))Aq// 111Q44bdRT!WWHQJ%77"Sa^^:KKLLM  ddii1oo!A$$))Aq// 111Q44bdRAaC[02c!A#hh;>??@  ddii1oo!A$$))Aq// 11AaDDIIaLL@1Q44bd3q66k)Bs1vvI51SVVCbQiORTUXYZU[U[R[[^`adefagag^gghhi  ddii1oo!		!a/1Q44d1ggd2rAv;&7&77a@@AA
1Q44d1ggd2rAv;///a8899;	  1Q44Aq))JqttQ1,E,EE1Q44bQA!a5!I!I!III	23q1a4!A#:>U;;;;;<= > > ?	 ML LP P PrV   c                  VN   t          t                     } t          t                                        t          d          }dt          t                                        t          d          z  d|z  z   t          t                                        t                    z   t          t                    z
  t          z
  }t	          d          }t	          dt
                    }t	          dd	          \  }}}}}	t          d
          }
dt          t                    i d|t          | z  z
  t          t          t                    t          t          t          dz            z  t          z
  t          t          t          t          dz  dz  z
  dt          z  dz  z
  z  z   t          t                     z  z   dz
            gddd|| z
  t          t          t                    t          t          t          dz            z  t          z
  t          t          t          t          dz  z
  z  z   t          t                     z  z   dz
            gddd|dt          t                                        t                    z  z   dt          t                    z  z   dz
  t          t          t                    t          t          dt          z            z  t          t          t                     z  z   dz             gddd|dt          t                                        t                    z  z   dt          t                    z  z   dt          t                    z  z
  t          t          t                    t          t          dt          z            z  t          t          t                     z  z   dt          t                    z  z             gddd|dt          t                                        t                    z  z   dt          t                    z  z   t          t          t          z            z
  t          t          t                    t          d          dz  t          dz  z   t          t          dt          z            z  t          t          t                     z  z   t          t          t          t          z            z  z
  z            gddd|dt          t                                        t                    z  z   dt          t                    z  z   t          t                    z
  t          t          t                    t          t          dt          z            z  t          t          t                     z  z   t          t                    dz  z   dt          t                    z  dz  z
            gddd|dt          t                                        t                    z  z   dt          t                    z  z   t          t                    z
  t          t          t                    t          t          dt          z            z  t          t          t                     z  z   dt          t                    z  dz  z   t          t                    dz  z             gddd|dt          t                                        t                    z  z   dt          t                    z  z   ddt          t                    z  z   dt          t                    z  z   z
  t          t          t                    t          t          dt          z            z  t          t          t                     z  z   t          t                    z   t          t                    dz  z   dt          t                    z  dz  z
  dz             gddd|t          t                                        t                    z   t          t                    z   t          dz  z
  t          t          t                    dt          z  t          dz  z   t          t          t          t          d          z  dz            z  t          t          t          t          d          z  dz            z  z   t          t           dz            z  z             gddd|dt          t                                        t                    z  z
  dt          t                    z  z
  d t          z  t          t                    z  z
  dt          t                     z  z
  t          t          t                    t           t          t                    z  dt          t                     z  z
  t          t          dt          z            z  z   t          t          dt          z            z  z             gddd!|dt          t                                        t                    z  z
  dt          dt          z            z  t          t                    z  z
  t          t          t                    t          t          t          dt          z            z  z   dt          dt          z            z  t          t                    z  dz  z
  t          dt          z            t          t                    z  dz  z
            gddd"t          t                                        t          d          d|z  z
  t          t                    z   t          z
  t          t                    z   t          t          t                    t          t          t                    dz  z
  t          t          t          z  z   t          t                     z  z   t          t           t          z  z   t          t                    z  z             gddd#|t          t                                        t                    z   t          dz  z
  dt          z  z
  t          t          t                    t          t          dz  dz  z   t          t          t                     z  z             gddd$|t          t                                        t                    z   t          z
  t          dt          z            z
  t          t          t                    t          t          z
  t          dt          z            dz  z
  t          dt          z            dz  z
  t          dz  dz  z   t          t          t                     z  z             gddd%|t          t                    z   dt          z  t          t                    z  z
  t          t          t                    t          t          dz  z
  t          t                    z  t          t          z   t          t                    z  z             gddd&|dt          t                    z  z   t          t          dt          z            z  z
  t          t          t                    t          t          dz  dz  z
  t          dt          z            z  t          t          d'z  z   t          dt          z            z  z             gddd(|dt          t                                        t                    z  z   t          t                    z   t          dz  t          t                     z  z
  t          t          t                    t          t          t          t          dz  dz  z   z  z   t          t                     z            gddi d)t          t                                        t          d          d|z  z   dt          t                                        t                    z  z   t          t                    z   dt          t                     z  z
  t          dz  t          t                     z  z   t          t          t                    t          t          t          t          t          t          dz  d*z  z
  t          dz  z   z  z   z  z   t          t                     z            gddd+|dt          t                                        t                    z  z   dt          t                    z  z   t          dt          z            z
  t          dz  z
  t          t          t                    t          t          t                     z  t          dz  dz  z   t          t#          dd          z  z
  t          t          z
  t          dt          z            z  z   t#          d,d          z             gddd-|dt          t                                        t                    z  z
  dt          t                    z  z   t          t          t                     z  z
  t          t          t                    t          t          t                    z  t          t          dt          z            z  z   dt          z  dz   t          t                     z  d.z  z             gddd/|t          t                                        t                    z   dt          t                    z  z
  t          z
  t          dt          z            z
  t          t          t                    t#          d0d.          t          dz  z
  t          t          d1t          z            z  z   t          t          dz  z   t          dt          z            z  z             gddd2|t          t                    z   t          t                    z
  t          t                     z
  t          t          t                    t          t          t                    z  t          t          dz  z
  t          t                    z  z   t          t                     dz  z             gddd3t          t                                        t          d          d|z  z
  dt          t                                        t                    z  z   t          t                    z
  t          t                    z
  t          t          t                    t          t          t          t          t          t          dz  z   z  z   z  z   t          t                    z            gddd4|t          t                    z   t          j        z
  t          dt          z            dz  z
  t          t          t                    t          j        t          dt          z            dz  z
  t          t          t                    z  z   t          t          t                    z  z             gddd5t          t                                        t          d          t          t                                        t                    z
  t          dt          z            t          j        t          dt          z            dz  z
  z  z
  t          t          t                    t          t          t          t                     z  z   t          t          t                    z  z   d6t          dt          z            z  d7t          dt          z            z  z   d8z   t          dt          z            z  d9z  z             gddd:t          t                                        t          d          dt          t                                        t          d          z  z   t          t                                        t                    z   dt          z  z
  t          t                    z
  t          t                    z
  t          t          t                    t          t          dz  z   t          t          t          t          dz  z
  z  z   t          t                    z  z   t           t          t&          t          dz  z   z  z   t          t                    z  z             gddd;|t          t                    z   t          t                    dz  z
  t          dt          z            dz  z   t          t          t                    t          dt          z            d'z  t          t          t                    z  z   t          t          dz  z   t          t                    z  z             gddd<t          t                                        t                    dz
  t          t          t                    t          t          z             gddd=|t          t                                        t                    z   t          t          t          z
            z   t          t          t                    t          t          t          t                     z  z   t          t           t          z             dz  z
            gddd>t          t                                        t          d          t          t                                        t                    z
  t)          t                    z
  t          t          t                    t          t          t          t                     z  z   t          t          t                    z  z   t          t)          t                    z  dz  z             gd?d@t          t                                        t          d          dAt          t                    z  z
  t)          dt          z            z
  t          t          t                    t          t          dBt          z            z  t          t          d,t          z            z  z   t)          dt          z            dCz  z
            gd?dDt          t                                        t          d          t          t                                        t                    z
  t)          t                    z
  t          t                    z
  t          t          t                    t          t          t          t                     z  z   t          t)          t                    z  dz  z   t          t          dz  z   t          t                    z  z             gd?dEt          t                                        t          t                    t          t                    z   t          t          t          dz
            z  z
  t          t          t                    t          t          t                    z  t          t          t                    z  z   t          dz  t          t          dz
            z  dz  z
  t          t          t          dz
            z  dz  z             gd?dFt          t                                        t          d          t          t                    z   t          dz  t          t          dz
            z  z
  t          t          t                    t          t          t                    z  t          t          t                    z  z   t          dz  t          t          dz
            z  dz  z
  t          dz  t          t          dz
            z  dz  z   t          dz  t          t          dz
            z  dz  z   dt          dz  z  t          t          dz
            z  dz  z
  dt          z  t          t          dz
            z  dz  z
            gd?t          t                                        t          d          t          t                    z
  t          t          dz
            z
  t          t          t                    t          t          t                     z  t          t          t          d0          z  dz  z   t          t                    z  z             gd?t          t                                        t          d          t          t                    z   t          t          dz
            dz   z
  t          t          t                    t          t          t                    z  t          t          t                    z  z   t          t          t          dz
            z  dz  z
  dz             gd?t          t                                        t          d          dt          t                                        t          d          z  z   t          t                                        t                    z   dt          z  z
  t          t          t          z            z
  t          t          t                    t          t          dz  t          t          t          t          z            z  dz  dz   z  z   t          t          t          z  z   t          t                    z  z   t           t&          t          z  z   t          t                    z  z             gd?t           ||                              ||          ||z   ||                              |          z  z   d||z  z   ||          z  z   |	          t           ||          ||z  |	z  t          t          | |t          ||dz  z  d|z  z
            t          |          z  z   z  d|z  z            z  z   t          t          || t          ||dz  z  d|z  z
            t          |          z  z   z  d|z  z            z  z             g ||          dGt          ||z   ||                              ||          z  ||z   ||                              |          z  z    ||          z   |t          t          |
z  |z            z            t           ||          t          t          | |t          ||dz  z  d|z  z
            t          |          z  z   z  d|z  z            z  t          t          || t          ||dz  z  d|z  z
            t          |          z  z   z  d|z  z            z  z   |t          t          |
z  |z            z  ||z  |
dz  z  t          |z  |z  |
z  z
  dz
  z  z
            g ||          dGt          t+          t          t                    t          d          dt+          t          t                    t                    z  z
  t          t                    z   t          t                              t          t          t                    t          t          t          z  z   t          t                    z  t          t                    dz  z             gd?dHdIS )JNr   r   r  rW  r=   )clszR L C E_0 alphaTr  omegar.  undet_01r  r  r   r  undet_02re  undet_03r   r  undet_04rf  undet_05r  undet_06undet_07undet_08rs  undet_09undet_10ru  undet_11undet_12undet_13undet_14undet_15undet_16r  undet_17undet_18r  undet_19r   undet_20rU  undet_21r   rr  undet_22undet_23undet_24undet_25i      i  undet_26undet_27undet_28undet_29undet_30r   undet_311   ir  undet_32undet_33undet_34r  )undet_35undet_36undet_37undet_38undet_39undet_40r  )r   r<   r?   r   r   r(   r)   r
   r  r   r   r   r   r    r   r   r  r   r/  r  r   r   )r@   f2rY  rW  r=   RLCE_0alphar.  s              rT   r'  r'  v  sc    	QBA	
11aB	!A$$))Aq//AbD 1Q4499Q<</!A$$6:AA!!!A!"3TBBBAq!S%7OOEIaDDv!A#g1Q44C!HHqBBAbL1Q3r64I1J,JCQRPRGG+SSVWWXXY v !e1Q44C!HHqBB1H,=sA2ww+FFJKKL v 1QqTTYYq\\>!AaddF*Q.1Q44C1II3r77
2Q6778 v& 1QqTTYYq\\>!AaddF*RAY61Q44C1II3r77
2Qs1vvX=>>? 'v2 1QqTTYYq\\>!AaddF*S1XX51Q44!A$$r'AbD.2c"Q$ii<"S!WW*+DqQqSz+QRSST 3v> 1QqTTYYq\\>!AaddF*SVV31Q44C1II3r77
2SVVBY>3q66"LMMN ?vJ 1QqTTYYq\\>!AaddF*SVV31Q44C1II3r77
2Qs1vvXb[@3q66"9LMMN KvV 1QqTTYYq\\>!AaddF*a!CFF(lQs1vvX.EF1Q44C1II3r77
2SVV;c!ffQhF3q66RSSVWWXXY Wvb 1Q4499Q<<!A$$&A-1Q44A13qay{+;+;(;bQtAwwYq[AQAQ>Q(QSVXYWYZ[W[S\S\'\\]]^ cvn 1QqTTYYq\\>!AaddF*QqSQZ7"S!WW*D1Q44!CFFQsA2wwY.C1II=3qs88KLLM ovz 1QqTTYYq\\>!Ac!A#hhJs1vv$551Q44bQqSk)Ac!A#hhJs1vv,=a,??#ac((3q66/RSBSSTTU {vF ddii1oo"$qtt+a/#a&&81Q44SVVAXbdCGG(;;rBqDy#a&&>PPQQR GvR 1Q4499Q<<!Q$&1,1Q44ad1fr#qb''z1223 Sv^ 1Q4499Q<<!#c!A#hh.1Q44a#ac((1*,s1Q3xx{:QT!VCbaRjPQQR _vj 1Q44i!A#c!ff*$1Q44"q!t)SVV+rAvs1vvo=>>? kvv 1QqTT6kAc!A#hhJ&1Q44"q!tAv+s1Q3xx/2"9c!A#hh2FFGGH wvB 1QqTTYYq\\>!AaDD(1a4QB<71Q44"q"q!tBw,//aR899: Cv vN ddii1oo"$q11~5!<qaRyH	1S!WW1Q44"q"q"q!tBw,1*<'="=>>QBGHHI	 Ov\ 1QqTTYYq\\>!AaddF*SAYY6A=1Q44CGGad1f,q!A>"q&#bQRd))ASSV^_`abVcVccdde ]vh 1QqTTYYq\\>!AaddF*QsA2wwY61Q44CFFRAaC[0AaC!GS!WW3DR3GGHHI ivt 1Q4499Q<<!AaDD&(1,s1Q3xx71Q44"b))AaC/"SAYY,>"qs(CPQRSPSHHATTUUV uv@ 1Q44i#a&& 3r77*1Q44CFFb1Q3hA%66aRBCCD AvL ddii1oo"$q11~5!<s1vvE1Q44"q"q"qs(|"344c!ff<==> MvX 1Q44i!& 3qs88A:-1Q44#ac((1*,r#a&&y82c!ff9DEEF Yvd ddii1oo!		!,s1Q3xx#ac((1*9L/MM1Q44baRj2c!ff94C!HHr#aPQc(({8RUX8XZ]^_`a^aZbZb7bcg7gghhi evr ttyyA1Q4499Q??!22QqTTYYq\\AAaCGAQ1Q44adb1b1Q3h<&7Q%??22PQRSPS8CTVYZ[V\V\B\\]]^	 sv@ 1Q44i#a&&("S1XXaZ/1Q44QqS"r#a&&y0B1Hc!ff3DDEEF AvL ddiillQ1Q44a  ! MvZ 1Q4499Q<<#ad))+1Q44baRj3sQw<<>9::; [vh ddii1oo!		!,tAww61Q44baRj2c!ff94qay{BCCD ivr ddii1oo1Q44'$qs))31Q44C1II3qs883d1Q3iilBCCD sv| ddii1oo!		!,tAww6Q?1Q44baRj1T!WW9Q;6"qs(CFF9JJKKL }vH ddii1oo!$qQU|31Q44CFFRAY.Ac!a%jj1BBQs1q5zz\RS^STTU IvR ddii1oo!$q!tC!HH}4AaDD"SVV)bQi/!Q$s1q5zz/"2DDq!tCPQTUPUJJWXGXX[\^_[_`cdehidi`j`j[jkl[llopqrtuquouvyz{~z  wA  wA  pA  BC  pC  C  FG  HI  FI  JM  NO  RS  NS  JT  JT  FT  UV  FV  V  W  W  X Sv v^ ddii1oo!$s1q5zz11Q44CGGrAc"ggIaK'7Q&??@@A  ddii1ooadd"C!HHQJ/1Q44CFFRAY.3q1u::a?!CDDE  ddii1oo!A$$))Aq// 11AaDDIIaLL@1Q3FQqSQ1Q44adAc!A#hhJqL1$455bdCFF8JJbSUVWSWiY\]^Y_Y_M__``a  !!A$$))Aa..1a4!		!#44q!A#wqqtt|CUKK11Q441URQBD1a4!A#4F4FtAww4N0N,OQRSTQT,U(V(V%VV
SQBa1fqsl++DGG334ac:;;
;< = = >!	  !A#aaddii!nn$qs11Q4499Q<<'77!!A$$>C%PQ	NN@RTT11Q44CAQq!tVac\(:(:477(B$B CQqS IJJJ
SQBa1fqsl++DGG334ac:;;
;<
c!E'!)nn
ac%(lQqSU5[81<
=> ? ? @ !  AaDD!Q''!JqttQ,?,?*??!A$$FAOO1Q44"r!t)SVV+c!ffQh6778 ev v vz z zrV   c                  -   t          d          \  } }d}d}d}||z  }t          d          }dt          t                    i dt          t                                        t                    t          t                    z
  t          t          t                    t          t          t                    z            gdd	t          t          t                                        t                    z  t          t                    z
  t          t          t                    t          t          z            gdd
t          t                                        t                    t          t                    z   t          t          t                    t          t          t                    z             gddt          t                    dz  dz   t          dz  dz   t          t                                        t                    z  z
  t          t          t                    t          t          t          t                    z                       gddt          t                                        t                    t          t                    z  t          t                    z
  dz
  t          t          t                    t          t          t                    z  dz
            gddt          t                                        t                    dt          t          t                              z
  z  dz
  t          t           t          t                    z   t          t          t                              z   t                    gddt          t                    t          dz  z  t          t                                        t                    z  t          t                    dz  z
  dt          dz  z  t          t                                        t                    z  z
  t          t          t                    t           t          t          dt          z  t          z  t          z   dz
  z            z
  t          t          z  dz
  z  dz            t          t          t                    t           t          t          dt          z  t          z  t          z   dz
  z            z   t          t          z  dz
  z  dz            gdddt          t                    dz  dz
  dt          t                    z  t          t          t                    z  z   t          t                                        t                    z  z
  t          t          t                    t          t          t          dz  z  dt          z  t          z  z   dt          z  z   dz                        t          t          t                    t          t          t          dz  z  dt          z  t          z  z   dt          z  z   dz                       gdddt          t          t                    z  t          t                                        t                    z  t          dt          t                    dz  z             z   t          t          t                    t          t          t          t          t                              z
                      gddddt          t          dz             t          t          t                              z  t          t          t                              t          t                                        t                    z  z   t          t          t          t                    z  t          t          t          t                              dz
            dz  z   t          t          t          t                              dz             dz  z
  t          t          t                              z   t                    gdddt          t          t          t                              z  t          dz  t          t          t                              z  t          t                                        t                    z  z   |dz  t          t          t                              z  t          t                                        t                    z  z
  t          t          t                    t!          t          t          |dz   t          dz  z             z             dt"          z  z             t          t          t                    t!          t          t          |dz   t          dz  z             z                      gdddt          t                                        t                    t          t                    t          t                    z  z
  t          t          t                    t          t          t                    z            gddt          dz
  t          t          t                              z  t          t                                        t                    z  dt          z  t          t          t                              z  z
  t          t          t                    t"          t%          t          t          dz  dt          z  z
  dz   z  t          dt          z            z            z
            t          t          t                    t%          t          t          dz  dt          z  z
  dz   z  t          dt          z            z                      gddt          t                                        t                    t          t                    t          t          t                              z  t          t                    z  z
  t          t          t                    t          t          t          t                    z                      gddt          t          t                                        t                    z  dt          t                    dz  z   t          t          t                              z  z   t          t          t                    t          t          t          z                      gddddt          t                                        t                    t          t          t                    dz   z  z   t          t          t                    dt          t          t          dz   dz            z  z             gdd t          t          t                    dz            t          dz  dt          z  z   dz   z  t          t          t                    z  t          t                    z   t          t                                        t                    z  z   t          t          t                    t          t          dt          t          dz  z   dt          z  z   z                                 t          t          t                    t          t          dt          t          dz  z   dt          z  z   z                                gdt          t                                        t                    t          t                    z   t          t          t                    t          t          t                     z            gdt          t                    t          dt          t                    z            z  t          t                    t          dt          t                    z            z  t          t                                        t                    z  z   t          t          t                    t"          t!          t          t          t                    dz  z            dz  z
            t          t          t                    t!          t          t          t                    dz  z            dz            gddt          z
  t          t                                        t                    z  t          t          t                    dz   z  z
  t          t          t                    t          t          t                     z  t          z
  dz   t          dz
  z            gdt          t                    t	          t          t                    t                    z  t          z   dt          z  t          t                    dz  z  z
  t          t          t                    t          d           t          t          t          dt          dz  z            z  dz             z  dz            t          t          t                    t          d          t          t          t          dt          dz  z            z  dz             z  dz            gdt          t                                        t                    t          t          t          t                    z             z
  t          t          t                    t          dt          t          t                    z   z                      gd!gd"t          t          t                                        t                    z  dz   t          t                    dz  z
  t          t          t                    t           t          dz  z
  t           t          dz  z   z            gdt          |                               |           dd#t&          z  t          |           z  z
  z
  t          t          |           d$t          t&          t          d#| z  z
  z            z  d$z   t&          z            gt          |           d%t          t                                        t                    t          t          t                    z  z
  t          t          t                    t(          t          t          t          z            z            gd|| ||           dz  z  z
  |t+           ||                     z  z
  t           ||           d&t-          t          d'| z  z
            z            g ||           dd(t          t                                        t                    t          t          t                    t          z
            z
  t          t          t                    t          t          t                     t          t          t                    z  dz
  z                      gdd)
d*S )+Nza,t`   g#@g?vr  separable_01r   separable_02separable_03separable_04r   r   separable_05separable_06separable_07r   r   Tr  separable_08separable_09)rE   rF   r;   rJ   separable_10separable_11separable_12separable_13separable_14separable_15separable_16r   separable_17r   rw  gfffffI@gXvH?r  g	Q|%Qg+R4J?)rE   rF   rH   rJ   )
separable_18separable_19separable_20separable_21separable_22separable_23separable_24separable_25separable_26separable_27r  )r   r(   r?   r<   r   r
   r   r   r    r   r!   r   r   r   r   r   r   r	   r   r>   r   r   r   )rW  r   r  r@   r  f1rb  s          rT   r+  r+  ~  sK    %..CAa
AA
A	
QBAaDDcddiillQqTT!1Q44CFF##$ c !		!nqtt#1Q44A c ddiillSVV#1Q44c!ff%%& c  ddAgkQTAXqttyy||331Q44R$q''\**++, !c* ddiill3q66!AaDD(1,1Q44CFFQ''( +c4 ddiilla#add))m,q0A2!9s1Q44yy("--. 5c> dd1a4i!		!$qttQw.1a4!		!1DD1Q441"tAqtAvzA~$6777"Q$(CAEFF1Q441"tAqtAvzA~$6777"Q$(CAEFFH	 ?cL ddAgkQqttVa!f_addiill::1Q44$r!Q$w2a/!B$6:;;;<<
1Q44bAg"Q&2-122335	 McZ Ahqttyy||#d1qttQw;&7&771Q44b3s1vv;;.//001!	 [ch !a%jjQqTT"S1YYqttyy||%;;1SVV8c#add))a-0022SQqTTQ5G5G5IICPQRSPTPTIIUWYZZ[ ict QqTT{QT#add))^AaDDIIaLL881a4AaDD		>!A$$))TU,,;VVqttd2dAqD51a4<000111AbD899qttT"T1a4%!Q$,///0011
  ucF ddiillQqTT#a&&[(1Q44CFF##$ GcP 1uc!A$$ii!		!,qs3qtt99}<qttR$r1a4!A#:>23qs88;<<<==qttT"adQqSj1n-c!A#hh67788
 Qc` ddiillQqTT#add))^CFF221Q44RAY(() acj !		!nAaDD!GT!A$$ZZ771Q44RT##$!	 kcx ddiillQ!q\)1Q44badU1Wo-../ ycB !A$$'llAqD1Q3JN+q1v!}addiill.JJqttd3q"q!t)ac/23344455qttT#aadQqS1223344
 CcT ddiillQqTT!1Q44CGG$$%  !ffS1Q44[[ 3q66#a!f++#5addiill#BB1Q44d2c!ffai<002233R!d2c!ffai<>P>PQR>R5S5ST  1uaddiill"Q!q\11Q44"S!WW*q.1,q1u5667  dd4!a== 1$qs1Q447{21Q44$q''$r#a1f++~'9":"::1<==
1Q44abQq!tVnq0111!3446  ddiillSQqTT]]*1Q44Rc!ff-..//0  11"QqTT1W,1Q442#1*sQTz2334  ddiillAeAgaddlN+1Q44.s1b;Ma;O6O3P/Q/QQThhjkkllm!  ddiillR!W$1Q44C1II&&'  1!	?"QAAaDD)9)9%9911Q44,T"7J17L2L-M-MMNNO!!	  ddiillS1]]*1Q44c!ffWbQi!m455667 c c cg g grV   c                  l   dt          t                    t          t                    t          t          t                              z  t          t                    t          t          t                              z  t          t                                        t                    z  z   t          t          t                    t          t          t          t                    z             dt          z  z             t          t          t                    t          t          t          t                    z                      gdddt          z  t          t                    z  dz   t          t                    z  t          t                    t          z
  t          t                    dz  z  t          t                                        t                    z  z   t          t          t                    t          t          t          dz  z
  t          t           t          t           t          dz  z             z            z                       gdgddddt          z  t          t                    t          t                    z  z   dt          t                    z  t          t                    z   t          t          t                              z
  t          t                                        t                    z  z   t          t          t                    t          t                    z  t          t          t                              z   t          dz  z   t          t                    dz  z   t                    gdgddt          t          t                              t          t          t          t                              z  t          t                    dz  z
  t          t                                        t                    z  z
  t          t          t          t          t                              z  t          t                    d	z  d	z  z   t                    gdddt          z  t          t                    z  t          dz  t          t                    dz  z   t          t                                        t                    z  z   t          t          dz  t          t                    z  t          t                    d	z  d	z  z   t                    gdd
dt          t          t                              t          t          t          t                              z  t          t                    dz  z
  t          t                                        t                    z  z
  t          t          t          t          t                              z  t          t                    d	z  d	z  z   t                    gd
dt          t          t          dz  t          t                    dz  z             z  t          dz  t          t                    z  t          t                    t          t          dz  t          t                    dz  z             z
  z  t          t                                        t                    z  z
  t          t          t                    t          dt          dt          t                    dz  t          dz  z  z             z  t          t          t                    t          z            z  dt          t                    z  t          z  dt          dt          t                    dz  t          dz  z  z             z  z   z  z
  dt          dt          t                    dz  t          dz  z  z             z  t          dt          dt          t                    dz  t          dz  z  z             t          t                    z  t          z  z
  dt          t                    dz  z  t          dz  z  z             z  dt          t                    z  t          z  dt          dt          t                    dz  t          dz  z  z             z  z   z  z
  dt          t          t                    t          z            z  t          t                    z  t          dt          t                    z  t          z  dt          dt          t                    dz  t          dz  z  z             z  z   z  z  z   dt          t                    z  t          dt          dt          t                    dz  t          dz  z  z             t          t                    z  t          z  z
  dt          t                    dz  z  t          dz  z  z             z  t          dt          t                    z  t          z  dt          dt          t                    dz  t          dz  z  z             z  z   z  z  z             gdddt          t          dz  t          t                                        t                    z  d	t          z  t          t                    z  z   t          t                    t          z  z
  d          t          t          t                    t          t          t                    z
  t          d	z  z            gdt          t                    t          dz  z  t          t                    t          z  dz
  t          z  t          t                                        t                    z  z   d dD             dt          t          t                    z  dz
  t          t                                        t                    t          dz  t          t          t                    z  z
  z  z   t          t          t                    t          t          t          t          dz  z   dt          t                    z  z
            z
            t          t          t                    t          t          t          t          dz  z   dt          t                    z  z
            z             gdt          dz   t          t          t                              z  t          t                                        t                    t          z  t          t          t                              z  z   t          t          t                    t          t          t          t                     z  t          dz  z             t          z             t          t          t                    t          t          t          t                     z  t          dz  z                      gdddS )a  
    Example 7 is an exact equation that fails under the exact engine. It is caught
    by first order homogeneous albeit with a much contorted solution.  The
    exact engine fails because of a poorly simplified integral of q(0,y)dy,
    where q is the function multiplying f'.  The solutions should be
    Eq(sqrt(x**2+f(x)**2)**3+y**3, C1).  The equation below is
    equivalent, but it is so complex that checkodesol fails, and takes a long
    time to do so.
    r  r   Tr  r   r   )rE   rF   rG   r;   rJ   )rE   rF   rG   r;   r   F)rE   rF   r;   rI   rE   rF   rI   ru  irH  )rE   rF   r;   rK   r   r   c                     g | ]R}t          t          t                    |t          t          t          d z  z  dz             z  dz   t          z            SS )r   r   )r
   r?   r<   r   r   r   s     rT   r   z3_get_examples_ode_sol_1st_exact.<locals>.<listcomp>  sK    GGG!1Q44!DAqD1---11455GGGrV   )r   r   )1st_exact_011st_exact_021st_exact_031st_exact_041st_exact_051st_exact_061st_exact_071st_exact_081st_exact_091st_exact_101st_exact_11r  )r?   r<   r    r   r   r
   r   r   r	   r   r   r   r   r   r   rW   rV   rT   r  r  2  sH	     aDD !ffS1YYQAaDD		!1!A$$))A,,!>>1Q44$r#a&&y//)AbD0112addDCFFOO3L3LM  s1Q44x!|QqTT!QqTTAXqttQw$6qttyy||$CC1Q44R!Q$Y1"S"q!t__2D)E)EEFFGGH   cAaDDQK1QqTT6CFF?S1YY#>!		!"LL1Q44A;QqTT*QT1AaDD!G;R@@A	  !A$$ii1S1YY;1q0!A$$))A,,>>1S1YY;1q*B//0  c!A$$h!Q$1q.!A$$))A,,661a4!9qttQwqy("--.	  !A$$ii1S1YY;1q0!A$$))A,,>>1S1YY;1q*B//0  QTAaDD!G^$$$1QqTT	1Q44$q!taddAg~:N:N3N(OQRSTQUQUQZQZ[\Q]Q]']]3q66
QtA!a1$%%%eAaDDFmm3S1XaZ
4AaDD!GAqDL !!!6" # 	#%&tA!a1,<'='=%=AQ1qA%&&qtt+A--!A$$'	!Q$>??&@	QqTT!ba!A$$'!Q$,.///	/&1	1 	
%!Q--!aQqTT!ba!A$$'!Q$,6F1G1G.G!GHI		J
 	
!A$$s1tA!a1,--add2144q1qyA~EFFF	
C!HQJDQqTT1WQT\!12222	3	5	56 6 7    Aaddiill"QqS1X-Aq8!<<1Q44"s1vv+q!t+,,-  dd1a4iAaDDFQJ>1Q4499Q<<77GGwGGG  1vzQqTTYYq\\1a4!AaDD&=991Q44T"q!t)aAh"677788"QqTT1tBQRTUQUIXYZ]^_Z`Z`X`L`GaGaCa:b:bc  1uc!A$$ii!A$$))A,,q.QqTT"::1Q44$r#qb''z!Q$///"455r!A$$RQBZPQSTPT_@U@U7V7VW SM MQ Q QrV   c                  !   t          t                     } t          t                                        t          d          }dt          t                                        t          d          z  d|z  z   t          t                                        t                    z   t          t                    z
  t          z
  }dt          t                    |t          | z  z
  t	          t          t                    t
          t          t          dz            z  t          z
  t          t          t          t          dz  dz  z
  dt          z  dz  z
  z  z   t          t                     z  z   dz
            gdd	|| z
  t	          t          t                    t
          t          t          dz            z  t          z
  t          t          t          t          d
z  z
  z  z   t          t                     z  z   dz
            gdd	t          t                                        t                    dz
  t	          t          t                    t          t          z             gdd	|dt          t                                        t                    z  z   dt          t                    z  z   dz
  t	          t          t                    t          t          dt          z            z  t          t          t                     z  z   dz             gdd	|dt          t                                        t                    z  z   dt          t                    z  z   dt          t                    z  z
  t	          t          t                    t          t          dt          z            z  t          t          t                     z  z   dt          t                    z  z             gdd	|dt          t                                        t                    z  z
  d
t          t                    z  z
  dt          z  t          t                    z  z
  dt          t                     z  z
  t	          t          t                    t           t          t                    z  dt          t                     z  z
  t          t          dt          z            z  z   t          t          dt          z            z  z             gdd	|dt          t                                        t                    z  z   t          t                    z   t          dz  t          t                     z  z
  t	          t          t                    t          t          t          t          dz  dz  z   z  z   t          t                     z            gdd	|dt          t                                        t                    z  z
  dt          t                    z  z   t          t          t                     z  z
  t	          t          t                    t          t          t                    z  t          t          dt          z            z  z   dt          z  dz   t          t                     z  dz  z             gdd	t          t                                        t          d          d|z  z
  dt          t                                        t                    z  z   t          t                    z
  t          t                    z
  t	          t          t                    t          t          t          t          t
          t          dz  z   z  z   z  z   t          t                    z            gdd	|dt          t                                        t                    z  z   t          t                    z   t          t                     t          z  z
  t	          t          t                    t          t          t          t          t                    z   z  z   t          t                     z            gdd	|t          t                    z   dt          t                    z  dz  t          t                    z  z
  t	          t          t                    t          t          t          t                    dz
            dz  z   t          t          t                    dz             dz  z
  t          t                    z  t          t          t          t                    dz
            dz  z   t          t          t                    dz             dz  z
  t          t                    z  z             gdd	t          t                                        t          d          dt          z  z
  t	          t          t                    t          t          t          z  z   t
          t          dz  z  z   t          dz  t          t          t                    dz  z   z  z             gdd	t          t                                        t          d          dt          t                                        t          d          z  z   t          t                                        t                    z   dt          z  z
  t          t          t          z            z
  t	          t          t                    t          t          dz  z   t          t          t
          t          d
z  z
  dt          t          t          z            z  dz  z   dt          t           t          z            z  dz  z   z  z   dt          dt          z  t          z            z  dz  z   dt          z  t          t          t          z            z  z   dt          z  t          t           t          z            z  z
  t          t                    z  z   t          t          t          t          t          z  d
z  z   dt          z  t          t          t          z            z  dz  z   dt          z  t          t           t          z            z  dz  z
  z  z   dt          z  t          dt          z  t          z            z  dz  z   dt          t          t          z            z  z
  dt          t           t          z            z  z
  t          t                    z  z   t          t          t          t          z            z  z
            gdt          t                                        t          d          dt          t                                        t          d          z  z   t          t                                        t                    z   t          t          t          z            z
  t	          t          t                    t          t          t          t
          t          d
z  z
  z  z   dt          dt          z  t          z            z  dz  z   t          t                    z  z   t          t          t          t          t          z  d
z  z   z  z   dt          z  t          dt          z  t          z            z  dz  z   t          t                    z  z   t          t          t          t          z            z  z
            gdt          t          t                    t          t                    dt          t                    z  z   t          t                    z
  t	          t          t                    t          t          dz  z
  t          dt          z            dz  z   t          dt          z            z  t          t          t          t                              z   dt          t          t                    dz            z  dz  z
  dt          t                    dz  z  dz  z   t          dt          z            z  z             gdd	ddS )Nr   r   r  r  r  r  r   Tr  re  r   r  rf  ru  r  rs  rU  r  r   )var_of_parameters_01var_of_parameters_02var_of_parameters_03var_of_parameters_04var_of_parameters_05var_of_parameters_06var_of_parameters_07var_of_parameters_08var_of_parameters_09var_of_parameters_10var_of_parameters_11var_of_parameters_12var_of_parameters_13var_of_parameters_14var_of_parameters_15r  )r   r<   r?   r   r
   r  r   r   r   r    r   r  r   r  r   r   )r@   rZ  rY  s      rT   r  r    se   QBA	
11aB	!A$$))Aq//AbD 1Q4499Q<</!A$$6:AGaDD !A#g1Q44C!HHqBBAbL1Q3r64I1J,JCQRPRGG+SSVWWXXY  !e1Q44C!HHqBB1H,=sA2ww+FFJKKL  ddiillQ1Q44a  !  1QqTTYYq\\>!AaddF*Q.1Q44C1II3r77
2Q6778  1QqTTYYq\\>!AaddF*RAY61Q44C1II3r77
2Qs1vvX=>>?  1QqTTYYq\\>!AaddF*QqSQZ7"S!WW*D1Q44!CFFQsA2wwY.C1II=3qs88KLLM  1QqTTYYq\\>!AaDD(1a4QB<71Q44"q"q!tBw,//aR899:  1QqTTYYq\\>!AaddF*QsA2wwY61Q44CFFRAaC[0AaC!GS!WW3DR3GGHHI  ddii1oo"$q11~5!<s1vvE1Q44"q"q"qs(|"344c!ff<==>  1QqTTYYq\\>!AaDD(3r771941Q44"q"s1vv+.QB7889  1Q44i!CFF(1*SVV++1Q44"s3q66A:q003s1vvz??13DD
a&&SVVaZ**SQ!__Q->>AFG H H I	  ddii1oo!#1Q44bdR1W,q!tR#a&&(]/CCDDE  ddii1oo!A$$))Aq// 11AaDDIIaLL@1Q3FQqSQ1Q44adb1b1Q3h3qs88A.E#qbQRd))TU.U+V&VYZ[^_`ab_bcd_d[e[eYefhYh&hklmnknorstuvsvowowkw&wz{|}z}  B  DE  CE  FG  CG  H  H  {H  'H  JM  NO  JP  JP  &P  P  TV  YZ  \^  ab  cd  ad  ef  af  \f  ij  kl  il  mp  qr  st  qt  mu  mu  iu  vw  iw  \w  z{  |}  z}  ~A  CD  BD  EF  BF  ~G  ~G  zG  HI  zI  \I  YJ  TJ
A#c!A#a%jj.
TAaCjT)+,S!AYY;T78;AS? ?AB3qs88L M M N  ddii1oo!A$$))Aq// 11AaDDIIaLL@3qs88K1Q44rArAaCxL01S1QZZ<?BCFFJJbSTVX[\]^[^_`[`V`SaNadefgdghklmnolopqlqhrhrdrsuduNuwz{|w}w}M}}  AB  CF  GH  IJ  GJ  CK  CK  AK  K  L  L  M  1q!$$q1v-A61Q44"qs(S1XXaZ/QqS9R#c!ff++=M
CA	NN
1
> Q{1}>-.1!A#hh=7 7 8 8 9	 o] ]a a arV   c                  &   dt          t                    t          dz  t          t                                        t          d          z  t          t          t                                        t                    z  z   t          dz  dz
  t          t                    z  z   t          t          t                    t          t          dt                    z  t          t          dt                    z  z             gdt          dz  t          t                                        t          d          z  t          t          t                                        t                    z  z   t          dz  dz   t          t                    z  z   t          t          t                    t          t          dt          z  t                    z  t          t          dt          z  t                    z  z             gdt          dz  t          t                                        t          d          z  t          t          t                                        t                    z  z   t          dz  t          t                    z  z   t          t          t                    t          t          dt                    z  t          t          dt                    z  z             gdt          dz  t          t                                        t          d          z  t          t          t                                        t                    z  z   dt          dz  z  t          d	          d
z  z
  t          t                    z  z   t          t          t                    t          t          t          d	          dz  d
t          z            z  t          t          t          d	          dz  d
t          z            z  z             gdt          dz  t          t                                        t          d          z  t          t          t                                        t                    z  z   t          dz  dz
  t          t                    z  z   t          t          t                    t          t          d	t          dz  dz            z  t          t          d	t          dz  dz            z  z             gdt          dz  t          t                                        t          d          z  dt          z  t          t                                        t                    z  z   t          dz  dz
  t          t                    z  z   t          t          t                    t          t          t          d          dz  t          dz  dz            z  t          t          t          d          dz  t          dz  dz            z  z   t          t                    z            gdt          dz  t          t                                        t          d          z  t          t          t                                        t                    z  z   t          dz  t          d	          dz  z
  t          t                    z  z   t          t          t                    t          t          t          d	          dz  t                    z  t          t          t          d	          dz  t                    z  z             g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  t          t          ddt          t                    z            z  t          t          ddt          t                    z            z  z   z            gdt          t          t                                        t          d          z  t          t                                        t                    z
  dt          dz  z  t          t                    z  z   t          t          t                    t          t          t          t          d	          dz  t          dz            z  t          t          t          d	          dz  t          dz            z  z   z            gdt          dz
  dz  t          t                                        t          d          z  t          dz
  t          t                                        t                    z  z
  dt          dz
  dz  z  t          t                    z  z   t          t          t                    t          dz
  t          t          d	dt          z  dz
            z  t          t          d	dt          z  dz
            z  z   z            gdt          t                                        t          t                    dt          z  t          t                                        t                    z  z   t          t                    z   t          t          t                    t          t          t          d	          dz  t                    z  t          t          t          d	          dz  t                    z  z   t          t                    z            gdt          dz  t          t                                        t          d          z  t          t          t                                        t                    z  z   t          dz  t          dz  z  t          dz  z  t          dz  z
  t          t                    z  z   t          t          t                    t          t          t          t          dz            t          t          t          dz  t          dz  z            z            z  t          t          t          t          dz            t          t          t          dz  t          dz  z            z            z  z             gdddS )N2nd_linear_besselr   r   r      r  r   Q   r   ru  r      )2nd_lin_bessel_012nd_lin_bessel_022nd_lin_bessel_032nd_lin_bessel_042nd_lin_bessel_052nd_lin_bessel_062nd_lin_bessel_072nd_lin_bessel_082nd_lin_bessel_092nd_lin_bessel_102nd_lin_bessel_112nd_lin_bessel_12r  )r?   r<   r   r
   r   r,   r   r-   r   r   r   r   rY  rX  rW   rV   rT   r  r    s    (aDD dAaDDIIaOO$q!A$$))A,,'771a4!8QqTT/I1Q44GAqMM)Bwq!}},<<==>  dAaDDIIaOO$q!A$$))A,,'771a48QqTT/I1Q44GAaCOO+b1a.@@AAB  dAaDDIIaOO$q!A$$))A,,'771a41+E1Q44GAqMM)Bwq!}},<<==>  dAaDDIIaOO$q!A$$))A,,'772ad7AaDDF?AaDD:PP1Q44GAaDDFAaC0002gadd1fac6J6J3JJKKL  dAaDDIIaOO$q!A$$))A,,'771a4!8QqTT/I1Q44GAq!tAv...GAq!tAv4F4F1FFGGH  dAaDDIIaOO$qsAaDDIIaLL'99QTAXqttOK1Q44"WT"XXaZAa8882gd2hhqjRSUVRVWXRX>Y>Y;YY[_`a[b[bbccd  dAaDDIIaOO$q!A$$))A,,'771a4!A$$q&=!A$$:NN1Q44GAaDDFA...GAaDDFA4F4F1FFGGH  dAaDDIIaOO$qsAaDDIIaLL'99QqS1WaddNJ1Q44Ar'!QtAwwY"7"77"WQ$q''	=R=R:RRSTTU  11a!AaDDIIaLL01QT6!A$$;>1Q44BwqttAvq!t444r'!A$$q&!Q$:O:O7OOPQQR  sQh!		!Q(AaC11+==1Q3(
1Q44O1Q44!a%"WQ!a%8%8"82ga1q>Q>Q;Q"QRSST  ddii1oo!AaDDIIaLL 001Q4471Q44"WQqTT!VQ///"WQqTT!VQ5G5G2GGaPQQR 
 d1Q4499Q??"Qqttyy||^3q!tAqDyA~17LaPQdd6RR1Q44GDAJJ$q!tAqDy//0ABBBRPTUVXYUYPZPZ\]^bcdfgcghiklhlcl^m^m\mHnHnEnnoop q< <@ @ @rV   c                     dt          t                    t          t          dz
  z  t          t                                        t          d          z  t          d          dz  dt          z  z
  t          t                                        t                    z  z   dt          t                    z  z   t	          t          t                    t
          t          t          d          dz  z  z  t          t          d          dz  t          d          dz  ft          d          dz  ft                    z  t          t          dt          d           dz  ft                    z  z             gdt          t          dz
  z  t          t                                        t          d          z  t          d          dz  t          z  t          t                                        t                    z  z   t          t                    z   t	          t          t                    t
          dt          z
  t          d          dz  z  z  t          t          d          dz  dft          d          dz  fdt          z
            z  t          t          t          d           dz  d	ft          d           dz  fdt          z
            z  z   t          dz
  t          d          dz  z  z            gdt          t          dz
  z  t          t                                        t          d          z  t          d          t          d          dz  t          z  z   t          t                                        t                    z  z   t          t                    z   t	          t          t                    t
          dt          z
  t          d
          dz  z  z  t          t          d          dz  dft          d          dz  fdt          z
            z  t          t          t          d           dz  dft          d           dz  fdt          z
            z  z   t          dz
  t          d
          dz  z  z            gdt          t          d          dz  z   dt          t          d          dz  z  z  dz  dt          t          d          dz  z  z  dz  z
  t          d          t          z  dz  z   z  t          t                    z  dt          t          d          dz  z   t          z   dz  z  t          t          d          dz  z  t          z   dz  z  z  t          t          t                    t          df          z   t	          t          t                    t          t          d          dz  z  t
          t          t          d          dz  z  z  t          t          d          dz  t          d           dz  ft          d          dz  ft          t          d          dz  z            z  t          t          t          d          dz  t          d
           dz  ft          d          dz  ft          t          d          dz  z            z  z   z  t          t          d          dz  z  dz
  t          d          dz  z  z            gddddS )N2nd_hypergeometricr   r   r   r  r   )r   r  r   r  r  rT  ru  i`iQ	  rP  i*     rs  -   b   r      rk     T   Trx  )2nd_2F1_hyper_012nd_2F1_hyper_022nd_2F1_hyper_032nd_2F1_hyper_04r  )	r?   r<   r   r   r
   r   r$   r   r   rW   rV   rT   r   r   A  s{    )aDD 1gaddii1oo%1a1addiill(BBQqttVK1Q44A!QKqttAvqttAv.>1a	1(M(MMPRSXYaefgheieidijkdkcmopSqSqPqqrrs  1gaddii1oo%1a1Q4499Q<<(??!A$$F1Q44"a!eqttAv..uadd1fa[1Q446)QQRU/S/SS
UQqTTE!GR=AaDD57*a!e44
45781u!Q6GH I I J  1gaddii1oo%1qttAvax11(EE!L1Q44"a!equuQw//qttAvqkAbEE!G:qSTu0U0UU
UQqTTE!GR=AaDD57*a!e44
45781u"a6HI J J K  1Q446{lDQqTT!V,Q.a!A$$q&k1A"1DDqvvaxPQzQRSTUVSWSWWY\_`cdefcgcghici_j^j	
_^ ZAaDDFa!#Z$ %'1!A$$A'?'?@1Q44QrUU2X1qttBw<qttAv!uQw>ORSTURVRVWXRXQZ\]`abc`d`def`f\g8h8h(h
UAaDDGaeeVBY'!A$$q&A!QK@@
@)A BCDqttAv;QR?VWXZV[V[\^V^B_` a a b  %   rV   c                     dt          t                    t          t                                        t          d          t          t          t                              z   t	          t          t                              z   t          t          dt          t          dt          z  t	          t                    z  z
  dt          z  z   dt          t                    z  z
            z  t          t          t                    f          t          t          z             t          t          dt          t          dt          z  t	          t                    z  z
  dt          z  z   dt          t                    z  z
            z  t          t          t                    f          t          t          z
            gddt          t                                        t          d          t          t          t                              z   dt          t                    z  z   t          t          d          t          dt          dt          z  dt          t          dd          z  z  z
  dt	          t                    z  z
            z  t          t          t                    f          z  t          t          z             t          t          d          t          dt          dt          z  dt          t          dd          z  z  z
  dt	          t                    z  z
            z  t          t          t                    f          z  t          t          z
            gddt          t                                        t          d          t          t          t                              z   t          t          dt          t          dt          t                    z  z             z  t          t          t                    f          t          t          z             t          t          dt          t          dt          t                    z  z             z  t          t          t                    f          t          t          z
            gddt          t                                        t          d          t          t          t                              z   t          t          dt          t          dt!          t                    z  z
            z  t          t          t                    f          t          t          z             t          t          dt          t          dt!          t                    z  z
            z  t          t          t                    f          t          t          z
            gddt          t                                        t          d          t#          t          t                              z   t          t          dt          t          dt          z  t#          t                    z  z
  dt          dt          dz  z
            z  z
            z  t          t          t                    f          t          t          z             t          t          dt          t          dt          z  t#          t                    z  z
  dt          dt          dz  z
            z  z
            z  t          t          t                    f          t          t          z
            gddgd	d
dS )N"2nd_nonlinear_autonomous_conservedr   r   Fr  r   r   r   rE   rF   rI   rG   )%2nd_nonlinear_autonomous_conserved_01%2nd_nonlinear_autonomous_conserved_02%2nd_nonlinear_autonomous_conserved_03%2nd_nonlinear_autonomous_conserved_04%2nd_nonlinear_autonomous_conserved_05r  )r?   r<   r   r   r   r
   r%   r   r   r   r   r   r   r    r   r   r   r   rW   rV   rT   r   r   b  s    9aDD ddii1ooAaDD		)C!II5x$rAbDRL01R47!CGG)CDDDr1Q44jQQSUXYSYZZx$rAbDRL01R47!CGG)CDDDr1Q44jQQSUXYSYZZ
 . . ddii1ooQqTT

*QqttV3tAwwx$qtaHQNN0B.B'BQs2wwY'N"O"O ORTVWXYVZVZQ[\\\^`cd^deetAwwx$qtaHQNN0B.B'BQs2wwY'N"O"O ORTVWXYVZVZQ[\\\^`cd^dee
 . . ddii1ooAaDD		)x$rAc"ggI~...QqTT
;;R!VDDx$rAc"ggI~...QqTT
;;R!VDD
 . . ddii1ooQqTT

*x$rAd2hhJ///"add<<b1fEEx$rAd2hhJ///"add<<b1fEE
 . . ddii1ooQqTT

*x$rAbDbM1Ad1r1u9oo4EEFFFQqTT
SSUWZ[U[\\x$rAbDbM1Ad1r1u9oo4EEFFFQqTT
SSUWZ[U[\\
 ?@. .C* *. . .rV   c            %      ;   t          t                                        t                    } dt          t                    t          | z  t          t                    dt          dz  t          t                    z  dz
  z  z  z   t          t	          t          dz  t          t                    z            dz  t	          t          dz  t          t                    z  t          dd          z
            dz  z   t          t	          t                    z             gddgdt          t                                        t                    t          t                    t          d	z  t          t                    z  t          z
  z  z   t          t	          t          dz  t          t                    z            d	z  t	          t          dz  t          t                    z  t          d	d          z
            d
z  z   t          t	          t                    z             gdddt          | z  t          t                    t          dz  t          t                    z  z  z   t          t	          t          dz  t          t                    z            dz  t	          t          dz  t          t                    z  dz
            dz  z
  t          t	          t                    z             gddt          t          t                                        t                    t          t                    t          z  dt          t          d          dz  z  t          t                    z  dz  z   z  z   d          t          dt	          t          t          d          dz  z  t          t                    z            z  dt	          dt          t          d	          dz  z  z  t          t                    dz  z  dz             z  dz  z   t          t	          t                    z             gddt          t          t                                        t                    t          t                    t          z  dt          t          t                    z  dz  z   z  z   d          t          t          t                    t          d           t          dt          t	          t                    z   z            z  dt          z  z            t          t          t                    t          d          t          dt          t	          t                    z   z            z  dt          z  z            gdt          t          t                                        t                    t          d	z  t          t                    dz  z  t          dz  t          t                    z  z   t          t                    z  t          t          dz  t          t                    dz  z  t          d	z  t          t                    dz  z  z   z  z  z   d          t          t          t                    t          ddt          dz  z  z  z             gdt          t          t                                        t                    t          t                    dz  t          t                    z  t          z  z   d          t          t          t                    t          d           t          dt          t	          t                    z   z            z  dz            t          t          t                    t          d          t          dt          t	          t                    z   z            z  dz            gdt          t          t                                        t                    t          t                    dz   t          t                    z  t          t          t                    dz   z  z  z   d          t          t	          t          t                    dz              dz  dt	          t          t                              z  dz  z
  t          t	          t                    z             gddgdt          t          t                                        t                    t          t                    dz   t          t                    z  t          z  z   d          t          t          t                    dt          t          dz  z  dz
  z            gdt          t          t                                        t                    t          t                    dz  t          t                    z   t          t                    z  t          z  z   d          t          t	          t                     t	          t          t                    dz             z
  t	          t          t                              z   dt          t                    z  z   t                    gdgdt          t                                        t                    t          t                    t          d	z  t          t                    z  t          z
  z  z   t          t          t                    t          d           t          ddt          dd          z  z  t          dt          d
t          z            z  t          dz  z   t          dt          z            z            t          d
t          z            t          dz  z  z
  t          dd          z  z  ddt          dd          z  z  t          d
t          z            z  t          dt          d
t          z            z  t          dz  z   t          dt          z            z            t          d
t          z            t          dz  z  z
  t          dd          z  z  z
  dt          dz  z  z             z  dz  t          d          t          ddt          dd          z  z  t          dt          d
t          z            z  t          dz  z   t          dt          z            z            t          d
t          z            t          dz  z  z
  t          dd          z  z  ddt          dd          z  z  t          d
t          z            z  t          dt          d
t          z            z  t          dz  z   t          dt          z            z            t          d
t          z            t          dz  z  z
  t          dd          z  z  z   d	t          dz  z  z   d	t          d          z  t          dz  t          ddt          dd          z  z  t          dt          d
t          z            z  t          dz  z   t          dt          z            z            t          d
t          z            t          dz  z  z
  t          dd          z  z  ddt          dd          z  z  t          d
t          z            z  t          dt          d
t          z            z  t          dz  z   t          dt          z            z            t          d
t          z            t          dz  z  z
  t          dd          z  z  z
  dt          dz  z  z             z  z  z
            z  dz  z
  ddt          dz  z  z  z             t          t          t                    t          d           t          ddt          dd          z  z  t          dt          d
t          z            z  t          dz  z   t          dt          z            z            t          d
t          z            t          dz  z  z
  t          dd          z  z  ddt          dd          z  z  t          d
t          z            z  t          dt          d
t          z            z  t          dz  z   t          dt          z            z            t          d
t          z            t          dz  z  z
  t          dd          z  z  z
  dt          dz  z  z             z  dz  t          d          t          ddt          dd          z  z  t          dt          d
t          z            z  t          dz  z   t          dt          z            z            t          d
t          z            t          dz  z  z
  t          dd          z  z  ddt          dd          z  z  t          d
t          z            z  t          dt          d
t          z            z  t          dz  z   t          dt          z            z            t          d
t          z            t          dz  z  z
  t          dd          z  z  z   d	t          dz  z  z   d	t          d          z  t          dz  t          ddt          dd          z  z  t          dt          d
t          z            z  t          dz  z   t          dt          z            z            t          d
t          z            t          dz  z  z
  t          dd          z  z  ddt          dd          z  z  t          d
t          z            z  t          dt          d
t          z            z  t          dz  z   t          dt          z            z            t          d
t          z            t          dz  z  z
  t          dd          z  z  z
  dt          dz  z  z             z  z  z
            z  dz  z   ddt          dz  z  z  z             t          t          t                    t          d          t          ddt          dd          z  z  t          dt          d
t          z            z  t          dz  z   t          dt          z            z            t          d
t          z            t          dz  z  z
  t          dd          z  z  ddt          dd          z  z  t          d
t          z            z  t          dt          d
t          z            z  t          dz  z   t          dt          z            z            t          d
t          z            t          dz  z  z
  t          dd          z  z  z
  dt          dz  z  z             z  dz  t          d          t          ddt          dd          z  z  t          dt          d
t          z            z  t          dz  z   t          dt          z            z            t          d
t          z            t          dz  z  z
  t          dd          z  z  ddt          dd          z  z  t          d
t          z            z  t          dt          d
t          z            z  t          dz  z   t          dt          z            z            t          d
t          z            t          dz  z  z
  t          dd          z  z  z   d	t          dz  z  z   d	t          d          z  t          dz  t          ddt          dd          z  z  t          dt          d
t          z            z  t          dz  z   t          dt          z            z            t          d
t          z            t          dz  z  z
  t          dd          z  z  ddt          dd          z  z  t          d
t          z            z  t          dt          d
t          z            z  t          dz  z   t          dt          z            z            t          d
t          z            t          dz  z  z
  t          dd          z  z  z
  dt          dz  z  z             z  z  z             z  dz  z
  ddt          dz  z  z  z             t          t          t                    t          d          t          ddt          dd          z  z  t          dt          d
t          z            z  t          dz  z   t          dt          z            z            t          d
t          z            t          dz  z  z
  t          dd          z  z  ddt          dd          z  z  t          d
t          z            z  t          dt          d
t          z            z  t          dz  z   t          dt          z            z            t          d
t          z            t          dz  z  z
  t          dd          z  z  z
  dt          dz  z  z             z  dz  t          d          t          ddt          dd          z  z  t          dt          d
t          z            z  t          dz  z   t          dt          z            z            t          d
t          z            t          dz  z  z
  t          dd          z  z  ddt          dd          z  z  t          d
t          z            z  t          dt          d
t          z            z  t          dz  z   t          dt          z            z            t          d
t          z            t          dz  z  z
  t          dd          z  z  z   d	t          dz  z  z   d	t          d          z  t          dz  t          ddt          dd          z  z  t          dt          d
t          z            z  t          dz  z   t          dt          z            z            t          d
t          z            t          dz  z  z
  t          dd          z  z  ddt          dd          z  z  t          d
t          z            z  t          dt          d
t          z            z  t          dz  z   t          dt          z            z            t          d
t          z            t          dz  z  z
  t          dd          z  z  z
  dt          dz  z  z             z  z  z             z  dz  z   ddt          dz  z  z  z             gdddt          dz  t          t                    dz  z  t          t          t          t                    t                    z  z   t          t          t                    dt          z  t          t          dz  z  dz
  z            gdddS )Nr   r   r   r   rs  Fr   r  r   rf  T)rE   rF   rI   rJ   r  r   rr  r   rw  ir  ru  )rE   rF   rJ   r;   )separable_reduced_01separable_reduced_02separable_reduced_03separable_reduced_04separable_reduced_05separable_reduced_06separable_reduced_07separable_reduced_08separable_reduced_09separable_reduced_10separable_reduced_11separable_reduced_12r  )r?   r<   r   r
   r   r   r   r   r   r   r   )r   s    rT   r   r     s   	
11B'aDD eqtta1a4!9q=1223q!tAaDDy>>!#c!Q$qtt)hq!nn*D&E&Ea&GGcRSffUUV	  ddiilladdad1Q44i!m453q!tAaDDy>>!#c!Q$qtt)hqmm*C&D&DR&GGcRSffUUV 	  dQqTT1a4!9%%3q!tAaDDy>>!#c!Q$qtt)a-&8&8&::BQKHHI  11!Q!q1Q446{1Q44/?!.C*C DDaHH2c!add1f+add*+++aAa!A$$q&kM!A$$'4IA4M0N0N.Nq.PPRTWZ[\W]W]R]^^_  11!Q!q1vk/ ::A>>1Q44$q''$q"s1vv+"7"771=>>addDGGDBQK$9$991Q3?@@B  11AaddAg1QqTT	!91Q44 ?AqD1qLSTVWSWXYZ[X\X\^_X_S_D_A` aacdee1Q44a1a4j))*  111q!A$$ 22A66qttd1ggXd1b3q66k?333A566qttT!WWT!R#a&&[/2221455
  111a1q!A$$q&z ::A>>C!qMM>!#aAaDD		k!m3R#a&&[AAB	  111a1a/331Q44Bq!tGaK))*  111q1qtt 3Q 77;;SVV8c!A$$(mm+c!A$$ii7!AaDD&@"EEF  ddiilladdad1Q44i!m451Q44$q''$qHQqMM)9'943r"u::PQTWPXAXZ]^`ac^cZdZd@d;e;ehklnoqlqhrhrstvwswhw;w  {C  DE  FG  {H  {H  ;H  (HAx!}}SBZZqRU|a#h'>BrE

&J!K!KcRTUWRWjjYZ\]Y]o!]`hijkl`m`m mm(npqrsuvrvpv(w #x #x xxyzq''$r!Xa]]""D!C2JJ,S*A3r"u::)M$N$NQTUWXZUZQ[Q[\]_`\`Q`$`cklmnocpcp#ppAx!}}SBZZqRU|a#h'>BrE

&J!K!KcRTUWRWjjYZ\]Y]o!]`hijkl`m`m mmnpqrsuvrvpvwDGG)QT$qHQqMM))43r"u::C1H#bQSe**0T+U+UX[\^_a\aXbXbcdfgcgXg+gjrstuvjwjw*wwAx!}}SBZZqRU|a#h'>BrE

&J!K!KcRTUWRWjjYZ\]Y]o!]`hijkl`m`m mmnpqrsuvrvpvw x x x yy z z z {|||
 @  BC  DE  GH  DH  BH  II J J 1Q44$q''$qHQqMM))43r"u::C1H#bQSe**0T+U+UX[\^_a\aXbXbcdfgcgXg+gjrstuvjwjw*wwAx!}}SBZZqRU|a#h'>BrE

&J!K!KcRTUWRWjjYZ\]Y]o!]`hijkl`m`m mmnpqrsuvrvpvw x x 
xxy
zq''$r!Xa]]""D!C2JJ,S*A3r"u::)M$N$NQTUWXZUZQ[Q[\]_`\`Q`$`cklmnocpcp#ppAx!}}SBZZqRU|a#h'>BrE

&J!K!KcRTUWRWjjYZ\]Y]o!]`hijkl`m`m mmnpqrsuvrvpvwDGG)QT$qHQqMM))43r"u::C1H#bQSe**0T+U+UX[\^_a\aXbXbcdfgcgXg+gjrstuvjwjw*wwAx!}}SBZZqRU|a#h'>BrE

&J!K!KcRTUWRWjjYZ\]Y]o!]`hijkl`m`m mmnpqrsuvrvpvw x x x yy z z z {||
|
 @  BC  DE  GH  DH  BH  I
I J J 1Q44aa8Aa==(($#be**q3x0GRPRU/S*T*TWZ[]^`[`WaWabcefbfWf*fiqrstuiviv)vvAx!}}SBZZqRU|a#h'>BrE

&J!K!KcRTUWRWjjYZ\]Y]o!]`hijkl`m`m mmnpqrsuvrvpvw x x 
xxy
zq''$r!Xa]]""D!C2JJ,S*A3r"u::)M$N$NQTUWXZUZQ[Q[\]_`\`Q`$`cklmnocpcp#ppAx!}}SBZZqRU|a#h'>BrE

&J!K!KcRTUWRWjjYZ\]Y]o!]`hijkl`m`m mmnAqD&	T!WW9ad4!Xa]]"2 2D!C2JJ,S:QSVWYZ\W\S]S]9]4^4^adeghjejakaklmoplpap4ps{|}~  tA  tA  4A  !AAx!}}SBZZqRU|a#h'>BrE

&J!K!KcRTUWRWjjYZ\]Y]o!]`hijkl`m`m mm!npqrsuvrvpv!w x x x yy z z z {||
|
 @  BC  DE  GH  DH  BH  I
I J J 1Q44aa8Aa==(($#be**q3x0GRPRU/S*T*TWZ[]^`[`WaWabcefbfWf*fiqrstuiviv)vvAx!}}SBZZqRU|a#h'>BrE

&J!K!KcRTUWRWjjYZ\]Y]o!]`hijkl`m`m mmnpqrsuvrvpvw x x 
xxy
zq''$r!Xa]]""D!C2JJ,S*A3r"u::)M$N$NQTUWXZUZQ[Q[\]_`\`Q`$`cklmnocpcp#ppstuv  yA  BC  DE  yF  yF  vF  tF  GJ  KM  NP  KP  GQ  GQ  tQ  SW  YZ  [^  _a  bd  _d  [e  [e  Yec(Y2JJX S Sbe**QT/S*,4QqMMR: t: :<=adFCEFtAwwYPQSTPTUYZ[\]_ghijk_l_l\lZlnrtuvyz|}z  wA  wA  uA  DE  HK  DL  uL  NQ  RT  UW  RW  NX  NX  tX  oY  oYbe**QT/oQqMMn" ["$%a!A&6$6s2b5zz$A43rRTu::XY\_X`I`befhikfkblblHlCmCmpstvwytypzpz{|~{pC  CK  LM  NO  CP  CP  CP  %P[P ST  UV  XY  UY  SY[Y VZ VZ QZ F[[ \ \ \ ]^^
^ ab  de  fg  ij  fj  dj  ak	
k l l%m. !5 > d1Q447lQz!A$$22221Q442r!Q$w{+,,- Ce ei i irV   c                     t          d          \  } }}dt          t                    i dt          t          t                                        t                    z  t          t                    dz   z  t          t                    dz  z   dt          t                    z  z
  dt          z  z
  g ddddt          t          t                                        t                    z  t          t                    dz   z  t          t                    dz  z   dt          t                    z  z
  dt          z  z
  g dd	d
t	          t          dz  t          t          t                    t                    z  dt          dz  z  t          t                    dz  z  z   dt          dz  z  dz   t          t                    dz  z  z
  d          g dd	dt          t                                        t                    t          t                    t          t          t                    z  z
  dz  t          dz  z  z
  t          t                    z   g dgddt          t                                        t                    dz  t	          t          t                    t                    gdgddt	          t          t                                        t                    t          dz  t          t                    z            t	          t          t                    t          t          t          dz            t          dd          z  z            gddt          t                                        t                    | t          t                    z  z   |t          |t          z            z  z
  t	          t          t                    t          t           | |z   z  |t          t          | |z   z            z  z   t          |  t          z            z  | |z   z  t          | |           ft           |t          z  z   t          |  t          z            z  df                    gddt          t                                        t                    dt          z  t          t                    z  z   t          t          t          dz             z  z
  t	          t          t                    t          t          dz  dz  z   t          t          dz             z            gddddt          z  z   t          t                                        t                    z  dz   dt          t          t                               z  z
  t	          t          t                    t          t          dt          z  dz   z  dz                       gddt          dz  t          t                                        t                    z  t          t                    z
  t          dz  t          t          dt          z  z
            z  z   t	          t          t                    t          t          t                    z
  t          dt          z            z            gdgddt          dz  t          t                    dz  z  t          t          t          t                    t                    z  z   t	          t          t                    dt          t          dz  z   z            gddt          t          t                    t                    dt          z  t          t                    z  z   t          t          t          dz             z  z
  t	          t          t                    t          t          dz             t          t          dz  dz  z   z            gddt          t          t                    t                    t          t                    t          t                    z  z   t          dt          z            z
  t	          t          t                    t          t          t                               t          t          t          dt          z            t          t          t                              z  t                    z   z            gddt          t          t                    t                    t          t                    t          t                    z  z   t          dt          z            dz  z
  t	          t          t                    t          t          t          t                               z  t          t                    z   dz
            gddt          t          t          t                    t                    z  t          t                    z   t          t          t                    z  z
  t	          t          t                    t          t          t          t                    z  z
  t          t                    z   t          z            gdd t          t          t          t                    t                    z  t          t                    z
  t          t          t                    z  z
  t	          t          t                    t          t          t          t          t                              z   z            gdd!t          t                                        t                    t          t                    z
  t          t                                        t                    t          t                    z   z  t	          t          t                    t          t          t                    z            t	          t          t                    t          t          t                     z            gdt          t                                        t                    t          t                                        t                    t          t                    z
  z  t	          t          t                    t          t          t                    z            t	          t          t                    t                    gdt          t                                        t                    t          t                    z
  t          t                                        t                    t          t                    z   z  t	          t          t                    t          t          t                     z            t	          t          t                    t          t          t                    z            gdt          t                                        t                    t          t                                        t                    t          t                    z   z  t	          t          t                    t                    t	          t          t                    t          t          t                     z            gdd"d#S )$NrA   r   lie_group_01r   r   T)rE   rF   rK   rL   lie_group_02r  lie_group_03r   r  r   r   lie_group_04rw  lie_group_05r   lie_group_06r   r   lie_group_07lie_group_08lie_group_09lie_group_10r   lie_group_11lie_group_12lie_group_13lie_group_14lie_group_15lie_group_16lie_group_17)lie_group_18lie_group_19lie_group_20r  )r   r?   r<   r   r
   r   r   r   r   r   r   r   r   r    r%   )r   rX  rY  s      rT   r   r   	  s,
   gGAq!aDDm!		!nadd1f%1q11QqTT69!A#= $	 m !		!nadd1f%1q11QqTT69!A#= m Aj1q)))AadF1Q447N:a1fqj!A$$PQ'=QQSTUU m* ddiilladdQs1vvXo1!Q$66Q? +m6 ddiillAo1Q44~ 7mB 11q!tAaDDy))1Q44C1IIx1~~55667 CmL ddiillQqttV#aAaCj01Q44bS!a%[1SAE^^3C%CS!AYY$NPQTUPU$V
1qb		$cAaCiaRT*D13 3 4 4 5 MmX ddiillQqS1X%#q!te**41Q44"q!tAv+sAqD5zz1223 Ymb 1Q3w11&*QsAaDD5zz\91Q44R1q\A-..//0 cml dAaDDIIaLL!AaDD(1a4A1I+>>1Q44"s1vv+s2a4yy0112 mmx d1Q447lQz!A$$22221Q44BAI''( ymB 1Q44llQqS1X%#q!te**41Q44adUR!Q$q&[1223 CmL 1Q44llQqTT#a&&[(3qs8831Q44c!ffWrHS1XXc#a&&kk5I1,M,M'MNOOP MmV 1Q44llQqTT#a&&[(3qs88A:51Q44CQLL3q661A5667 Wm` QqTT!nqtt#aAh.1Q44"qQx-#a&&0!3445 amj QqTT!nqtt#aAh.1Q44BSVV,-../ kmt ttyy||AaDD QqTTYYq\\!A$$%671Q44CFF##R!baRj%9%9: um@ ddiilladdiillQqTT121Q44CFF##R!b\\2  ttyy||AaDD QqTTYYq\\!A$$%671Q44CGG$$b1r#a&&y&9&9:  ddiillAaDDIIaLL1-.1Q44b1r#qb''z223 Sm m mq q qrV   c                  &   dt          t                    t          t                                        t          d          t          t          t                    z  z
  t          t          t                    t          t          t                    z  t          t          t                    z  z             gdt          t                                        t          d          dt          z  t          t                    z  z   t          t          t                    t          t          dt          d          dz  z   t          z            z  t          t          dt          d          dz  z   t          z            z  z             gdddS )N2nd_linear_airyr   r   r   r   )2nd_lin_airy_012nd_lin_airy_02r  )	r?   r<   r   r
   r   r*   r   r+   r   rW   rV   rT   r   r   {	  s    &aDD ddii1oo!A$$&1Q44F1II6!994556  ddii1oo!AaDD(1Q44FA!QK<>222RAaDDF|A~8N8N5NNOOP 
 
  rV   c                  4j   t          dd          } t          dd          }d t          d          D             \  }}}}}d t          d          D             \  }}}	}
}d	 t          d          D             \  }}}}}d
 t          d          D             \  }}}}}d t          d          D             \  }}}}}t          d          }dt          t                    i dt          t                                        t          d          dt          t                                        t                    z  z   t          t          t                    t          t          t          dt          z            z  z             gddt          t                                        t          d          dt          t                                        t                    z  z
  dt          t                    z  z   t          t          t                    t          t          t          t                    z  z   t          t                    z            gddt          t                                        t          d          t          t                    z
  t          t          t                    t          t          t                     z  t          t          t                    z  z             gddt          t                                        t          d          t          t                                        t          d          z   dt          t                                        t                    z  z
  t          t          t                    t          t          t          dt          z            z  z   t          t          dt          z            z  z             gddddt          t                                        t          d          z  dt          t                                        t                    z  z
  dt          t                    z  z   t          t          t                    t          t          t          dz            z  t          t          t          t          dd          z            z  z             gdddt          t          t                                        t          d          dt          t                                        t                    z  z   t          t                    z
  d          t          t          t                    t          t          t          dt          d          z   z            z  t          t          t           t          d          dz   z            z  z             gdddt          t          t                    t          d          t          t          t                    t          d          z   d t          t          t                    t                    z  z
  dt          t                    z  z
  t          t          t                    t          t          dt          z            z  t          t          t           dt          d          z   z            z  z   t          t          t          dt          d          z   z            z  z             gddd!t          t                                        t          d          t          t                                        t          d          z
  dt          t                                        t          d          z  z
  dt          t                                        t                    z  z   t          t          t                    t          t          t          dt          z            z  z   t          t          t                    z  z   t          t          dt          z            z  z             gddd"t          t                                        t          d          dt          t                                        t          d          z  z   t          t                                        t          d          z   dt          t                                        t                    z  z
  dt          t                    z  z
  t          t          t                    t          t          t                     z  t          t          t                    z  z   t          t          t          d           t          z            z  t          t          t          d          t          z            z  z   t          dt          z            z  z             gddd#t          t                                        t          d          | dz  t          t                    z  z
  t          t          t                    t          t          t          |            t          z            z  t          t          t          |           t          z            z  z   t          t          t          |           t          z            z  z   t          t          t          |           t          z            z  z             gddd$t          t                                        t          d          d|z  t          t                                        t                    z  z
  dt          t                    z  z
  t          t          t                    t          t          t          |t          |dz  dz             z
  z            z  t          t          t          |t          |dz  dz             z   z            z  z             gddd%t          t                                        t          d          d|z  t          t                                        t                    z  z   d&|dz  z  t          t                    z  z
  t          t          t                    t          t          d'|z  t          z            z  t          t          d|z  t          z            z  z             gddd(t          t                                        t          d          t          t          t                    t          t          t          z  z   t          t          dz  z  z   t          t          dz  z  z             gddd)t          t                                        t          d          dt          t                                        t                    z  z   dt          t                    z  z   t          t          t                    t          t          t          z  z   t          dt          z            z            gddd*dt          t                                        t          d          z  dt          t                                        t          d          z  z   t          t                                        t                    z   t          t                    z
  t          t          t                    t          t          t          z  z   t          t                     z  t          t          t          dz            z  z             gddd+t          t                                        t          d          dt          t                                        t          d          z  z
  d&t          t                                        t                    z  z   d,t          t                    z  z
  t          t          t                    t          t          t          t          t          z  z   z  z   t          dt          z            z            gddd-t          t                                        t          d          d| z  t          t                                        t                    z  z
  | dz  t          t                    z  z   t          t          t                    t          t          t          z  z   t          | t          z            z            gddi d.t          t                                        t          d          dt          t                                        t          d          z  z   t          t          t                    t          t          t          z  z   t          t          dz  z  z   t          t          dt          z            z  z             gddd/t          t                                        t          d          dt          t                                        t          d          z  z
  t          t          t                    t          t          t          z  z   t          t          t          d           t          z            z  z   t          t          t          d          t          z            z  z             gddd0t          t                                        t          d          dt          t                                        t          d          z  z   dt          t                                        t          d          z  z
  d&t          t                                        t                    z  z
  d1t          t                    z  z   t          t          t                    t          t          t          z  z   t          dt          z            z  t          t          t          z  z   t          dt          z            z  z             gddd2d1t          t                                        t          d          z  d3t          t                                        t          d          z  z
  dt          t                                        t                    z  z   dt          t                    z  z   t          t          t                    t          t          t                     z  t          t          t           dz            z  z   t          t          t          dz            z  z   t          t          t          t          dd          z            z  z             gddd4t          t                                        t          d          d,t          t                                        t          d          z  z
  d5t          t                    z  z   t          t          t                    t          t          t          z  z   t          dt          z            z  t          t          t          z  z   t          dt          z            z  z             gddd6t          t                                        t          d          dt          t                                        t                    z  z
  dt          t                    z  z   t          t          t                    t          t          dt          z            z  t          t          dt          z            z  z   t          t                    z            gddd7t          t                                        t          d          t          t                                        t                    z
  t          t                    z   t          t          t                    t          t          t          t          d          z  dz            z  t          t          t          t          d          z  dz            z  z   t          t          dz            z            gddd8t          t                                        t          d          dt          t                                        t          d          z  z   dt          t                    z  z   t          t          t                    t          t          t          d          t          z            z  t          t          t          d          t          z            z  z   t          t          t          d          t          z            z  z   t          t          t          d          t          z            z  z             gddd9t          t                                        t          d          dt          t                                        t                    z  z
  d:t          t                    z  z   t          t          t                    t          t          dt          z            z  t          t          dt          z            z  z   t          dt          z            z            gddd;t          t                                        t          d          dt          t                                        t          d          z  z   dt          t                    z  z   t          t          t                    t          t          t          z  z   t          t          t          d          z            z  t          t          t          z  z   t          t          t          d          z            z  z             gddd<t          t                                        t          d          d,t          t                    z  z   t          t          t                    t          t          t          t          d          z            z  t          t          t          t          d          z            z  z   t          t                    z  t          t          dt          z            z  z             gddd=t          t                                        t          d          dt          t                                        t          d          z  z   t          t          t                    t          t          t          z  z   t          t          dt          z            z  z   t          t          dt          z            z  z             gddd>t          t                                        t          d          dt          t                                        t          d          z  z   t          t                                        t                    z   t          t          t                    t          t          t          t          z  z   t          t                    z  z   t          t          t          z  z   t          t                    z  z             gddd?t          t                                        t          d          t          t                                        t          d          z   t          t                    z   t          t          t                    t          t          t          d          t          z  dz            z  t          t          t          d          t          z  dz            z  z   t          t           dz            z  t          t          t          d          t          z  dz            z  t          t          t          d          t          z  dz            z  z   t          t          dz            z  z             gddd@t          t                                        t          d          dt          t                                        t          d          z  z   t          t                    z   t          t          t                    t          t          t          t          t          d           dz             z            z  t          t          t          t          t          d          dz             z            z  z   t          t          t          t          t          d           dz             z            z  z   t          t          t          t          t          d          dz             z            z  z             gdddAt          t                                        t          d          dt          t                                        t                    z  z   dt          t                    z  z
  t          t          t                    t          t          |t          z            z  t          t!          |          t          z            t          t          t#          |          t          z            z  t          t          t#          |          t          z            z  z   z  z   t          t!          |          t          z            t          t          t#          |          t          z            z  t          t          t#          |          t          z            z  z   z  z             gddBdCt          t                                        t          d          dt          t                                        t                    z  z
  t          t                    z   t          t          t                    t          t          |t          z            z  t          t          |t          z            z  z   t          t          |	t          z            z  z   t          t!          |
          t          z            t          t          t#          |
          t          z            z  t          t          t#          |
          t          z            z  z   z  z             gddBt          t                                        t          d          dDt          t                                        t          d          z  z
  dEt          t                                        t                    z  z   t          t                    z   t          t          t                    t          t          |t          z            z  t          t          |t          z            z  z   t          t          |t          z            z  z   t          t          |t          z            z  z   t          t          |t          z            z  z             gddBt          t                                        t          d          dt          t                                        t          d          z  z
  dt          t                                        t          d          z  z   d t          t                                        t                    z  z   dFt          t                    z  z
  t          t          t                    t          t          dt          z            z  t$          t          t          |z            z  z   t          t!          |          t          z            t          t          t#          |          t          z            z  t          t          t#          |          t          z            z  z   z  z   t          t!          |          t          z            t          t          t#          |          t          z            z  t          t          t#          |          t          z            z  z   z  z             gddBt          t                                        t          d           dt          t                                        t          d          z  z
  dt          t                                        t          d          z  z   t          t                                        t          d          z   dt          t                                        t          d          z  z
  t          t                    z   t          t          t                    t          t          t          z  z   t          t          |z            z  t          t          t          z  z   t          t          t#          |          z            z   t          t$          t          z  z   t          t          t#          |          z            z  z   t          t          t!          |          z            z  z   t&          t(          t          z  z   t          t          t#          |          z            z   t*          t          z  t,          z   t          t          t#          |          z            z  z   t          t          t!          |          z            z  z             gddBt          t          d          t          t                                        t          t          t                    z  t          t                                        t                    z   d          t          t          t                    t          t          t          dt          dd          z  t          z  dz            z  z   t          t          dt          dd          z  t          z  dz            z  z             gdt          |t          t                                        t          t          t                    z  t          t                                        t                    z   d          t          t          t                    t          t          t          t          t          |          z            z  z   t          t          t          t          |          z            z  z             gdt          t.          t          t                                        t          t          t                    z  t          t                                        t                    z   d          t          t          t                    t          t          t          t          t          t.                    z            z  z   t          t          t          t          t.                    z            z  z             gdt          t0          t          t                                        t          t          t                    z  t          t                                        t                    z   d          t          t          t                    t          t          t          t          t0                     t          z            z  z   t          t          t          t0                    t          z            z  z             gdt          t                                        t          t                    t2          t          t                    z  z   t          t          t                    t          t          t           t          t2                     z            z  t          t          t          t          t2                     z            z  z             gdt          dGt          t                                        t          t                    z  t          t                    z   d          t          t          t                    t          t          t          dz            z  t          t          t          dz            z  z             gdt          dGt          t                                        t          t                    z  t          t                              t          t          t                    t          t          t           dz            z  t          t          t          dz            z  z             gdt          t          t                                        t          t                    dt          t          t                    t                    z  z
  dt          t                    z  z   d          t          t          t                    t          t          t          t                    z  z   t          t                    z            gdt          t          t                                        t          t                    dt          t          t                    t                    z  z
  dt          t                    z  z   d          t          t          t                    t          t          t          z  z   t          dt          z            z            gdt          t          t                                        t          t                    dt          t          t                    t                    z  z   dt          t                    z  z   d          t          t          t                    t          t          t          t          d          z            z  t          t          t          t          d          z            z  z   t          t                     z            gdt          t                                        t          t                    dt          t                    z  z   t          t          t                    t          t          dt          z            z  t          t          dt          z            z  z             gddHdIS )JNr   Tr  r  )realc                 Z    g | ](}t          t          d z  dt          z  z   dz
  |          )S )r  r  r   ro  rp  s     rT   r   zO_get_examples_ode_sol_nth_linear_constant_coeff_homogeneous.<locals>.<listcomp>	  s2    GGG&A1q!44GGGrV   r  c                 Z    g | ](}t          t          d z  dt          z  z
  dz   |          )S )r  r   r   ro  rp  s     rT   r   zO_get_examples_ode_sol_nth_linear_constant_coeff_homogeneous.<locals>.<listcomp>	  s2    GGG6!Q$1*q.!44GGGrV   c                 v    g | ]6}t          t          d z  dt          dz  z  z
  dt          z  z   dz   |          7S )r  d   r     r   ro  rp  s     rT   r   zO_get_examples_ode_sol_nth_linear_constant_coeff_homogeneous.<locals>.<listcomp>	  s@    YYY1vadSAXoQ&>&BAFFYYYrV   c                 Z    g | ](}t          t          d z  t          dz  z
  dz   |          )S )r  r   r  ro  rp  s     rT   r   zO_get_examples_ode_sol_nth_linear_constant_coeff_homogeneous.<locals>.<listcomp>	  s3    MMMqvadQTkB&6::MMMrV   c                 T    g | ]%}t          t          d z  t          z
  dz   |          &S )r  r   ro  rp  s     rT   r   zO_get_examples_ode_sol_nth_linear_constant_coeff_homogeneous.<locals>.<listcomp>	  s.    III1vadQhlA66IIIrV   r   %nth_linear_constant_coeff_homogeneouslin_const_coeff_hom_01r   r  r   lin_const_coeff_hom_02r   lin_const_coeff_hom_03lin_const_coeff_hom_04rs  rr  r  lin_const_coeff_hom_05r  r   lin_const_coeff_hom_06r   r   lin_const_coeff_hom_07r  lin_const_coeff_hom_08lin_const_coeff_hom_09lin_const_coeff_hom_10lin_const_coeff_hom_11lin_const_coeff_hom_12rf  ilin_const_coeff_hom_13lin_const_coeff_hom_14lin_const_coeff_hom_15lin_const_coeff_hom_16re  lin_const_coeff_hom_17lin_const_coeff_hom_18lin_const_coeff_hom_19lin_const_coeff_hom_20rU  lin_const_coeff_hom_21%   lin_const_coeff_hom_22r  lin_const_coeff_hom_23lin_const_coeff_hom_24lin_const_coeff_hom_25lin_const_coeff_hom_26r  lin_const_coeff_hom_27lin_const_coeff_hom_28lin_const_coeff_hom_29lin_const_coeff_hom_30lin_const_coeff_hom_31lin_const_coeff_hom_32lin_const_coeff_hom_33rx  lin_const_coeff_hom_34r  r  2   ru  )lin_const_coeff_hom_35lin_const_coeff_hom_36lin_const_coeff_hom_37lin_const_coeff_hom_38lin_const_coeff_hom_39lin_const_coeff_hom_40lin_const_coeff_hom_41lin_const_coeff_hom_42lin_const_coeff_hom_43lin_const_coeff_hom_44lin_const_coeff_hom_45lin_const_coeff_hom_46lin_const_coeff_hom_47lin_const_coeff_hom_48r  )r)   r   r   r?   r<   r   r
   r   r   r  r   r   r  r    r   r  r   r   r  C7C8C10C9r	   r   r>   )r   r  r  r  r  r  r  r6r7r8r9r10r11r12r13r14r15r16r17r18r19r20r21r22r23r24r25r   s                               rT   r   r   	  s"    	sT"""AsAGGeAhhGGGBBBGGeAhhGGGBBCYYPUVWPXPXYYYCc3MME!HHMMMCc3IIaIIICc3AA;aDDjddii1oo!A$$))A,,.1Q44bRTl*++, j ddii1oo!A$$))A,,.1Q4471Q44"r#a&&y.#a&&0112 j ddii1oo!$1Q44CGGbQi/001 j  ddii1oo!		!Q/!AaDDIIaLL.@1Q44bRTl*RAaC[899: !j, !		!Q"QqTTYYq\\/1AaddF:1Q44C!HHr#aA.>*?*?'??@@A -j8 11a1QqTTYYq\\>1AaDD8!<<1Q44C2Q< 0111BsA2tAww{;K7L7L4LLMMN 9jD 1Q44AaddAq!1!11BtAaDD!}}4DDq1vM1Q44C!HHr#qb!d1gg+.>*?*?'??"SBQUVWQXQXLIYEZEZBZZ[[\ EjP ddii1oo!		!Q/!AaDDIIaOO2CC	!A$$))A,,1Q44bRTl*RAY6C!HHDEEF	 Qj^ ddii1oo!A$$))Aq// 11AaDDIIaOOC	!A$$))A,,1Q44 1Q44CGGbQi/2c477(1*oo3E3tTUwwWXy>>HY3Y[^_abc_c[d[d2ddeef	 _jl ddii1oo1QqTT	)1Q44Ca
OO+bT!WWQY.??"SaQR^^BSSVXY\]abc]d]def]fYgYgVgghhi mjx ddii1oo!AaDDIIaLL 001QqTT691Q44C1tAqD1H~~#5 6777"SAQPQTTUXDVAW=X=X:XXYYZ yjD ddii1oo!AaDDIIaLL 002ad71Q44<?1Q44C1QKK"S1QZZ-7889 EjP ddii1oo1Q44bdR1W,r!Q$w6778 Qj\ ddii1oo!A$$))A,,.1Q4471Q44"r!t)SAYY.//0 ]jh !		!Q!AaDDIIaOO"33addiillBQqTTI1Q44"r!t)S!WW,r#ac(({:;;< ijt ddii1oo!A$$))Aq// 11Bqttyy||OCa!fL1Q44"q"r!t)},c!A#hh6778 uj@ ddii1oo!AaDDIIaLL 001a4!9<1Q44"r!t)S1XX-../ Aj jL ddii1oo!A$$))Aq// 111Q44bdR1W,r#bd))|;<<= MjX ddii1oo!A$$))Aq// 111Q44bdRT!WWHQJ%77"Sa^^:KKLLM Yjd ddii1oo!A$$))Aq// 11BqttyyA4FF
1Q4499Q<<QqTT'"1Q44"r!t)SAYY."r!t)S1XX1EEFFG	 ejr 11a 2addii1oo#55!A$$))A,,F1Q44O1Q44CGGbaRTl2RAaC[@2c!HUVXYNNJZF[F[C[[\\] sj~ ddii1oo!A$$))Aq// 11BqttG;1Q44"r!t)SAYY."r!t)S1XX1EEFFG jJ ddii1oo!A$$))A,,.1Q4471Q44"S1XX+3qs883SVV;<<= KjV ddii1oo!		!,qtt31Q44"S4771---3qay{3C3C0CCS1XXMNNO Wjb ddii1oo!A$$))Aq// 11AaddF:1Q44
3tAwwqy>>Bs47719~~--3tAwwqy>>0AABs4PQ77ST9~~DUUW W X	 cjp ddii1oo!A$$))A,,.AaDD81Q44"S1XX+3qs883S1XX=>>? qj| ddii1oo!A$$))Aq// 11AaddF:1Q44"r!t)S477^^3rBqDy#aQi..6PPQQR }jH ddii1oo!A$$&1Q44"S477^^+bQtAwwY.??QG"SQSTUQUYY,VWWX IjT ddii1oo!A$$))Aq// 111Q44bdRAaC[02c!A#hh;>??@ Uj` ddii1oo!A$$))Aq// 11AaDDIIaLL@1Q44rBqDy#a&&00BAIs1vv3EEFFG ajl ddii1oo!		!Q/!A$$61Q44"Sa1---3tAwwqy{3C3C0CCS!AYYNc$q''!)A+CQ	!$4$4!44c!A#hh
>? @ @ A	 mjz ddii1oo!A$$))Aq// 11AaDD81Q44C$Qx!|"4"4 45553qd1ggPQkARAR?R;S;S8SS
S4a1%%%&&
&')+C$tAww{2C2C0C,D,D)DE F F G	 {jJ ddii1oo1Q4499Q<</!AaDD&81Q44
3r!t99s2b66!8}}3r"vvax==(82c"R&&(mm;K(KLL
bffQh--2c"R&&(mm+bRVVAX.>>
?	@A A B ! Kj\ ddii!nnq11~-!41Q44
3r!t99r#bd))|#bRTl2
bffQh--2c"R&&(mm+bRVVAX.>>
?	@A A B ! ]j jp ddii!nns1Q4499Qq>>11D114EE!L1Q44CAJJCAJJ6CAJJFCPSTUPUJJVY[\_`cde`e\f\fYffggh   ddii1oo!A$$))Aq// 11Aaddii1oo4EE1Q4499UV<<WZ\_`ab_c_cZcc1Q44
3qs88
S3ZZ-	
bggai..Bs2c7719~~-3r#wwqy>>0AA
B	C bggai..Bs2c7719~~-3r#wwqy>>0AA
B	CD D E
 !  ddii21Q4499Q??!22QqttyyA5FF
A$$))Aq//addii1oo-.01!51Q44"r!t)S3ZZ/b2a4iQr#wwY5O3P19c!BsGG)nn
$4%&)!BsGG)nn35 5;=19c!BsGG)nn:T8Uq52:s1RWW9~~
%9&'*1RWW9~~866 7 7 8 !  a1Q4499Qq+++addiill:A>>1Q44bQA%6q%8%:!;!;;;bQQRTUEVWXEXYZEZA[A[>[[\\]  QqTTYYq1%%%!		!4a881Q44bQtAwwY//"S477^^2CCDDE  addii!A&&&115q991Q44bQtBxxZ002c!DHH*oo3EEFFG  QqTTYYq1%%%!		!4a881Q44bd1ggXaZ002c$q''!)nn3DDEEF  ddii1oo!A$$&1Q44C488,,,r#aaRj///AABBC  1Q4499Q??"QqTT)1--1Q44C!HHr#ac(({2334  1Q4499Q??"AaDD))1Q44C1II3qs883445  11a1T!A$$]]?2QqttV;Q??1Q44"r#a&&y.#a&&0112  11a1T!A$$]]?2QqttV;Q??1Q44"r!t)S1XX-../  11a1T!A$$]]?2QqttV;Q??1Q44"S477^^+bQtAwwY.??aRHIIJ  ddii1oo!A$$&1Q44C!HHr#ac(({2334 M	j j jn n nrV   c                     dt          t                    t          t                    t          z  t          t          t                    t          z            z  t          t          t                    z  t          t          t                    t          z            z  t          t          t                    t          z            z   t          t                                        t                    z  z
  t          t          t                    t          t          t          t                    t          t          t                    t          z            z  t          z            z
            gddt          t          t                                        t                    z  t          t                    z
  t          t          t          t                    t          z            z  z
  t          t          t                    t          t                    t          t          t          t                    t          z            dz
            dz  z   t          t          t          t                    t          z            dz             dz  z
            gddt          t          t          t                    t          z            z  t          t                    t          t          t                    t          z            z  z
  t          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  dz  z   t          t          t                     t          z            t          t          t                    t          z            z  dz  z             gddt          t                                        t                    t          t                    t          z  z
  dt          t          t                    t          z            z  z   t          t          t                    t          t          t          t          t                    z              dt          z  z   z            t          t          t                    t          t          t          t          t                    z             z            gddt          t          t          t                    t          z            z  t          t                    z   t          t          t                                        t                    z  z
  t          t          t                    t          dt          t          t                    z
  z  t          z                      gddd	d
S )Nr   Tr  r   r   Fr  rx  )dep_div_indep_01dep_div_indep_02dep_div_indep_03dep_div_indep_04dep_div_indep_05r  )r?   r<   r   r    r   r
   r   r   r   r   r	   rW   rV   rT   r   r   
  s    ?aDD dd1fS1a[[ AaddF3qttAv;;$6QqTT!V$DaddiiPQll#RR3q662AaDDQqTT!V$4Q$6 7 77889  !		!nqtt#aAaDDFm33q663r77SQqTT!Vq%9%9!%;;c#add1f++PQ/>R>RST>TTUUV  AaDDFmadd3qttAv;;..3qttAv;;qttyy||1KK3q662QqTTE!GS1a[[ 8 ::S!A$$q\\#aPQddSTf++=UVW=WWXXY  ddiillQqTT!V#aAaDDFm31Q44T"s1vv+...25677AaDD!DcRSffDUDUBU9V9VW  AaDDFmadd"Qqttyy||^31Q44ac!ffo122334  9! !% % %rV   c                  |   dt          t                    dt          t                                        t                    ddt          t                    z  z   t          dz   z  z   t          t          t                    t          t          dz  dt          z  z   dz   z  t          dd          z
            gdidS )	Nlinear_coefficientslinear_coeff_01r   r   rs  ru  r   r  )r?   r<   r   r
   r   r   rW   rV   rT   r   r   
  s     *aDDddiilla!AaDD&j1q5111Q44QTAaCZ!^,x1~~=>>? 	 	 	rV   c                  X   dt          t                    t          t                    t          t          t          t                    t          z            z  dt          z  z
  t          t          t                    t                    z  z   t	          t          t                    t          t                     t          t           t          t           dz             z            z            gdddt          t                    z  t          t          t          t                    z            z  t          t                    t          t                                        t                    z  z   dt          z  t          t          t          t                    z            z  t          t                                        t                    z  z
  t	          t          t          t                              t          dt          t          t          t                    z            z  z
            gddt          dz  z  t          t                    z  t          t                    dz  z   t          t          t                    dz  z  dt          dz  z  z
  t          t                                        t                    z  z   t	          t          t                    t          dt          z  t          dt          d	z  z  t          d
t          z            z            dz  z             t          z            gddt          t          t          t                    dz  t          t          t                    z  z
            z   t          t                                        t                    z  t          t                    z
  t	          t          t          t                              t          dt          t           t          t                    z  dz             z  z
            gddt          t          t                    z   t          t          t                    z
  t          t                                        t                    z  z
  t	          t          t                    t          t          t          dt          t                    dz  t          dz  z  z                       z
  t          t          t                    t          z            z             gdt          t          t                                        t                    z  t          t                    z
  t          t          t          t                    t          z            z  z
  t	          t          t                    dt          z  t          t          t          z            z            gdt          dz  t          t                    dz  z   dt          z  t          t                    z  t          t                                        t                    z  z
  t	          t          t                    t          t          t          t          z   z                       t	          t          t                    t          t          t          t          z   z                      gdt          t                    dz  t          t          t          t                    dz  t          dz  z
            z  t          t          t                    z  z
  t          t                                        t                    z  z   t	          t          t                    t           t          t           t          dt          z  z
  z            z            t	          t          t                    t          t          t           t          dt          z  z
  z            z            gddddS )Nr  r   r   Trx  r   r   r  r   r  r  )1st_homogeneous_coeff_best_011st_homogeneous_coeff_best_021st_homogeneous_coeff_best_031st_homogeneous_coeff_best_041st_homogeneous_coeff_best_051st_homogeneous_coeff_best_061st_homogeneous_coeff_best_071st_homogeneous_coeff_best_08r  )r?   r<   r   r   r
   r   r   r   r   r   r    rW   rV   rT   r   r     s    1aDD
 ddaAaDDFmac)4!a==881Q44#b''(A2c2#'ll?";";;<<= & & !fS1Q44[[ 1Q44!		!#44qs3q1v;;qttyyQR||7SS3qtt99b1S1Q44[[=0112& & 1fQqTTkAaDD!G#q1qy1QT6'91Q4499Q<<&GG1Q44QrTHR1WSBZZ-?$@$@$BBCCAEFFG & & 4!a!AaDD&()))1Q4499Q<<7!A$$>3qtt99b1T1"QqTT'A+%6%6#66778& & !A$$h!add(AaDDIIaLL003q662DQqTT1WQT\)9$:$: ; ;;d1Q446llJKKL& & !		!nqtt#aAaDDFm31Q441T"Q$ZZ(()& & dQqTT1Wnqs1Q44x!		!441Q44$q"q&z***++R!d1b1f:6F6F-G-GH& & ddAg4!a!Q$///!AaDD&8!A$$))A,,FF1Q44"T1"a!B$h-000112addBtQBAbDM?R?R<R3S3ST!& &W0 04 4 4rV   c                     t           t          z   t          z   t          z   t          z   t
          z   t          z   t          z   t          z   t          z   t          z   t          z   t          z   t          z   t          z   t          z   t           z   t"          z   t$          z   t&          z   t(          z   t*          z   t,          z   t.          z   t0          z   t2          z   } | S rr   )rV  r_  rg  r9  rD  r  r>  rG  r  rJ  r$  r'  rN  r+  rA  r  r  r   r   r   r   r   r   r   r   r   )rm   s    rT   rh   rh   :  s	   :23() %% $	$
 (( "" %% $$ (	( .
. ?? $$ $$ // 77  ,!," 1#1$ =%=& ,',( $)$* *+*, @-@. 5/50 C1C2 .3.L6 rV   )F)__doc__sympy.core.functionr   r   sympy.core.mulr   sympy.core.numbersr   r   r   r	   sympy.core.relationalr
   r   sympy.core.singletonr   sympy.core.symbolr   r   $sympy.functions.elementary.complexesr   r   &sympy.functions.elementary.exponentialr   r   r   %sympy.functions.elementary.hyperbolicr   r   r   r   (sympy.functions.elementary.miscellaneousr   r   $sympy.functions.elementary.piecewiser   (sympy.functions.elementary.trigonometricr   r   r   r   r   r    r!   r  r"   r#   sympy.functions.special.hyperr$   sympy.integrals.integralsr%   r&   sympy.polys.rootoftoolsr'   
sympy.corer(   r)   sympy.functionsr*   r+   r,   r-   r.   sympy.integrals.rischr/   sympy.solvers.oder0   r1   sympy.solvers.ode.oder2   r3   sympy.solvers.ode.singler4   r5   r6   r7   r8   sympy.solvers.ode.subscheckr9   sympy.testing.pytestr:   r;   r   r<   r=   r   r>   r?   r@   r   r   r  r  r  r  r%  r&  r(  r'  r   rX  rY  r   r   r   r   r   r   rX   rb   ro   r{   r}   r]   rj   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r
  r  r  r  r  r  r"  r%  r(  r,  r0  r5  r7  r:  r<  r?  rB  rE  rH  rK  rQ  rZ  rb  rh  rV  r_  rg  rD  r>  rA  rG  r9  rJ  rN  r  r$  r'  r+  r  r  r  r   r   r   r   r   r   r   r   r   rh   rW   rV   rT   <module>rh     s
  
 < 3 2 2 2 2 2 2 2       3 3 3 3 3 3 3 3 3 3 3 3 * * * * * * * * " " " " " " . . . . . . . . 9 9 9 9 9 9 9 9 G G G G G G G G G G K K K K K K K K K K K K A A A A A A A A : : : : : : [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ > > > > > > > > / / / / / / ; ; ; ; ; ; ; ; * * * * * * ' ' ' ' ' ' ' ' H H H H H H H H H H H H H H 7 7 7 7 7 7 2 2 2 2 2 2 2 2 G G G G G G G G: : : : : : : : : : : : : : 4 3 3 3 3 3 - - - - - - - -     F3KK
F3KK
U3ZZ
F3KKHSMMHSMM+277+;+; 'BBBBC
''

1a  *"  .' ' ' 'J J J J1 1 18 8 8M M M M` <>    4"* "* "*J@ @ @ G G G [ [ [
 R R R f f f< < < 6 6 6 > > > R R R C C C- - - O O OQ Q Q > > > : : : ] ] ]I I I 
Q 
Q 
Q J J J 6 6 6A A A T T T e e e J J J Q Q Q	@ 	@ 	@ 6 6 6 7 7 7
 K K K4 4 4 A A A6 6 67 7 79 9 9 6 6 6> > >E E E ; ; ; 7 7 7t ) ) )X # # #L   2    H H HX    V V Vt ' ' 'T 0 0 0f T T Tn Q Q Qj D D DN p p pf ] ] ]@ e e eP A A AH   @ / / /d k k k\ s s sl   $ y y yx	 & & &P 
 
 
 5 5 5p    rV   