
    wgg             
       *   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( Zldqd)Zmdqd*Znd+ Zod, Zpdqd-Zqg dfd.Zrd/ Zsd0 ZteQd1        ZueQd2        ZveQd3        ZweQd4        Zxd5 ZyeQd6        ZzeQd7        Z{eQd8        Z|eQd9        Z}d: Z~eQd;        Zd< ZeQd=        ZeQd>        ZeQd?        Zd@ ZeQdA        ZeQdB        ZeQdC        ZdD ZeQdE        ZeQdF        ZeQdG        ZeQdH        ZdI ZeQdJ        ZeQdK        ZeQdL        ZdM ZeQdN        ZdO ZdP ZdQ ZeQdR        ZdS ZdT ZeQdU        ZeldV        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        Zdp Zy)ra  
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 ]  }| d   |   d   | d   |   d   | d   |   j                  dg       | d   |   j                  d| d         || d   |   j                  dd      | d   |   j                  dd	      | d   |   j                  d
d      | d   |   j                  dd      | d   |   j                  dd      | d   d}|j                  |        |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       h/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/sympy/solvers/ode/tests/test_single.pyinnerz _add_example_keys.<locals>.inner   s.   vj) 	"GZ(1$7j)'259
+G488"Ez*7377vf~N 'z*7377F &z 27 ; ? ?PT U%+J%7%@%D%DEXZ_%`"("4W"="A"ABSTY"Z'-j'9''B'F'FG]^c'dvD OOD!	"      )rH   rU   s   ` rT   _add_example_keysrX      s    & 7NrV   c                     | D ]9  }|s|d   s|r|d   st        |d   |d      }|d   dk7  s,t        |d          ; y )Nr;   rM   T)solver_flag	xpass_msg )_test_particular_exampleprint)ode_examplesrun_slow_testrR   results       rT   _ode_solver_testrb      sU     'GFOPWX^P_)'&/7PTU+"$&%&'rV   c                     t        t              dgz   }t               }|D ]%  }|j                  d      sd|v rt	        |||        ' y )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      sO    X	{*I$&L J[)X-A',IJrV   c                 r     t        |      t        k(  rt         fd|D              S  j                  |      S )Nc              3   @   K   | ]  }j                  |        y wN)dummy_eq).0sub_dsolexpected_sols     rT   	<genexpr>z"_test_dummy_sol.<locals>.<genexpr>   s     Nx<((2Ns   )typerg   anyrs   )rv   
dsolve_sols   ` rT   _test_dummy_solr{      s2    JN:NNN$$Z00rV   c                 P    t               }|D ]  }|d   |k(  st        | |        y )NrN   )rh   r]   )rn   rN   rm   rR   s       rT   _test_an_exampler}      s0    $&L 8>"l2$Xw78rV   c                    |d   }|d   }|d   }| |d   v }|d   }ddd}|d   }	|d	   }
|d
   }|d   }d}|r1| t        ||      vr#t        j                  |||       }t        |      | t        ||      v rt||d<   	 |st	        |||	|       }nt        |      dk(  r|d   }n|}|r4|g k7  r.d}t        |      t        k(  r3|D ]-  }|j                  t              rt!        ||       }n||v}|s- n0 n.||v}|D ]%  }|j                  t              st!        ||       }' |r$t"        j                  ||||      }t        |      t%        t        |            D cg c]  }d }}t        |      dk(  rd}|s`|
s^t'        |||d      |k7  rL||d<   d}t(        j                  | |||      }|r"t*        j                  ||      }t        |      d|z   |d<   |r|r|dz   | z   |d<   |S # t        $ rb}g }||d<   |st        j                          t        j                  t        |      | ||      |d<   |r|st        |d           d}Y d }~d }~ww xY wc c}w )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   Tr   )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i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"))'b8)TG ))<D))&|	##B}(S
|$a'!-aJ!-J :r>$J%+ G{{5)/>w
/S+S(+2*+D(' $.\#A + TG{{5)/>w
/S+S(T  .55g"R^ku5v$W--7<S=N7O#P!I#P #P< A%'0$'("2z4NRff18~. %"4";";bVbnx";"y&&5&<&<WQS&<&TG"0"99,>,HF5MU"),I"IH"TF;Mc  		J'.F#$##%)003q6RY^`0aF5M5fUm$E		> $Qs   ?(G/ !	I/	I8AIIc                    |g k(  r
t               }g g g }}}|D ]x  }| |d   v }|r|s|rt        | |      }||j                  dg       z  }||j                  dg       z  }||j                  dg       z  }|`|d   }	|	dk7  skt        |d          z |Tt	        |      }
t	        |      t	        |      z
  t	        |      z
  }t
        j                  | |
|||      }	t        |	       y y )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   '  s   r(*/12rnJ# %K00E)(K@fjjb11


>"55&**%5b99-CBwfUm$% *oZ\!223~3FF##;f^j  xF#  Gc
	 rV   c                  ~   t        t        t              j                  t              t        t              t              } t	        |       t        t        fd       t        t        fd       t        t        fd       t        t        fd       t        t        t              j                  t              t        t              t        t              z  z   t        t              t              } t        |       t        t        fd       t        |       j                         du sJ t        t        t              j                  t              t        t              z   t        t              t              } | j                  dk(  sJ t        t        t              j                  t        d      t        t              j                  t        d	      z   t        t              j                  t        d
      z
  t        t              t              } | j                  dk(  sJ t        t        t              j                  t        d
      t        t              j                  t        d	      z   t        t              d	z  z
  t        t              t              } | j                  dk(  sJ t        t        t              j                  t        d
      t        t        t              j                  t        d	      z  z   t        t              d	z  z
  t        t              t              } | j                  dk(  sJ y )Nc                  $     j                         S rr   )matchesrQ   s   rT   <lambda>z&test_SingleODESolver.<locals>.<lambda>F  s    (8 rV   c                  $     j                         S rr   get_general_solutionr   s   rT   r   z&test_SingleODESolver.<locals>.<lambda>G  s    (C(C(E rV   c                  $     j                         S rr   )_matchesr   s   rT   r   z&test_SingleODESolver.<locals>.<lambda>H  s    (9 rV   c                  $     j                         S rr   )_get_general_solutionr   s   rT   r   z&test_SingleODESolver.<locals>.<lambda>I  s    (D(D(F rV   c                  $     j                         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tyy|QqT15GW%F
 89
 EF
 9:
 FG qtyy|ad1Q4i71qAG!F
=?@!F>>u$$$ qtyy|ad2AaD!<G==Aqtyy1~!		!A>11QOQRSTQUWXYG==AqtyyA11a@1Q47JAaDRSTG  D(((qtyyA1Q499Q?1BBQqT1WLaPQdTUVG  E)))rV   c                  "    t        t               y rr   )rb   )_get_examples_ode_sol_linear_coefficientsrW   rV   rT   test_linear_coefficientsr   f  s    >?rV   c                     t        t              j                  t              t        t              t        z  z
  } t        | t        t                    }t        t        t              j                  t              z  t        t              z
  }t        |t        t                    }d}d}||vr||vsJ ||vr||vsJ t	        t
               t	        t               y )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	c1Q4	 B
AaDIIaL.1Q4
C	c1Q4	 B
4C
4Cb=S]**b=S]**STEFrV   c                  H    t        t        d       t        t        d       y NT)r`   )rb   r   r   rW   rV   rT   ,test_slow_examples_1st_homogeneous_coeff_oder   y  s    ScghEUYZrV   c                  "    t        t               y rr   rb   ;_get_examples_ode_sol_nth_linear_constant_coeff_homogeneousrW   rV   rT   *test_nth_linear_constant_coeff_homogeneousr     s    PQrV   c                  &    t        t        d       y r   r   rW   rV   rT   8test_slow_examples_nth_linear_constant_coeff_homogeneousr     s    P`derV   c                  "    t        t               y rr   )rb   %_get_examples_ode_sol_2nd_linear_airyrW   rV   rT   test_Airy_equationr     s    :;rV   c                  "    t        t               y rr   )rb   _get_examples_ode_sol_lie_grouprW   rV   rT   test_lie_groupr         45rV   c                  8   t        t              j                  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               y )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     st    	
11B
ad(B#ad1Q4i1a4!9q=9:	:B  & & & &<=rV   c                  &    t        t        d       y r   )rb   r   rW   rV   rT   $test_slow_examples_separable_reducedr     s    <DQrV   c                  "    t        t               y rr   )rb   ,_get_examples_ode_sol_2nd_2F1_hypergeometricrW   rV   rT   test_2nd_2F1_hypergeometricr     s    ABrV   c                     t         t         dz
  z  t        t               j                  t         d      z  dt        d      dz  t         z  z   t        t               j                  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 y )
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
QqTBHS1qs7QAY2G)K%La
A#ON &  8Aq1uIq1!34558(1a
G D; :: 61Q462,a01 2C &"?@@@@r39,,,rV   c                  "    t        t               y rr   )rb   8_get_examples_ode_sol_2nd_nonlinear_autonomous_conservedrW   rV   rT   'test_2nd_nonlinear_autonomous_conservedr     s    MNrV   c                     t        t              j                  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 ]  \  }}|j                  |      rJ  t        | |D cg c]  }|j                          c}      ddgk(  sJ y c c}w )Nr   r   +2nd_nonlinear_autonomous_conserved_IntegralFrM   r   r   )r?   r<   r   r   r
   r%   r   r   _ur   r1   ziprs   r9   doit)rE   actualr   ass        rT   0test_2nd_nonlinear_autonomous_conserved_integralr     s   	
11a4!:	%B!Dab2(>&>!>??"adLbSTfUx$rAhtBx44455AaDzBBFKMFBJUZ[F66" !zz!}} rf5AFFH569i:PPPP5s   E,
c                  "    t        t               y 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              j                  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               y 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diil"
"C!c!f!bRTl#%E.sE1a@K2adBs2a4yL1222289rV   c                  &    t        t        d       y 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               y rr   r  rW   rV   rT   0test_nth_linear_constant_coeff_var_of_parametersr    s    GHrV   c                     d} t        t              j                  t        d      dt        t              j                  t        d      z  z   t        t              j                  t              z   dt        z  z
  t        t        t        z        z
  }t        |t        t              | d      }t        |t        t              | d      }||k7  sJ t        ||dd      d	k(  sJ t        ||dd      d	k(  sJ y )
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1QqTYYq!_,	,qtyy|	;ac	AC!H	LBb!A$X=Hr1Q4h?Iy   r81UCyPPPr81UCyPPPrV   c                  &    t        t        d       y r   rb   _get_examples_ode_sol_1st_exactrW   rV   rT   test_slow_examples_1st_exactr        4DIrV   c                  "    t        t               y 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              j	                  t              z  z
  } t        | t        t              dd      }t        | |dd      sJ y )Nr   F1st_exact_Integralr   r   r  )r   r?   r<   r    r   r1   r9   )rE   sol_1s     rT   test_1st_exact_integralr    sg    	QqTaAaD	kAaD!G+QqTYYq\9	9B2qte2FGEr5%@@@rV   c                  &    t        t        d       y r   )rb   )_get_examples_ode_sol_nth_order_reduciblerW   rV   rT   &test_slow_examples_nth_order_reducibler!    s    >dSrV   c                  &    t        t        d       y r   )rb   :_get_examples_ode_sol_nth_linear_undetermined_coefficientsrW   rV   rT   Ftest_slow_examples_nth_linear_constant_coeff_undetermined_coefficientsr$    s    O_cdrV   c                  &    t        t        d       y 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               y )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_coefficientsr,    sP    
 
D1qM1QqT6AFF?Q.	/BDH|B''''OPrV   c            	         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               y )Nc                 l    t        t        | t        t              t                    j	                         S rr   )r8   r6   r?   r<   r   )rE   s    rT   r   z*test_nth_order_reducible.<locals>.<lambda>  s#    $%5b!A$%BCLLN rV   Fr   r   r   T)r   r>   r?   r<   r=   rb   r   )FDs     rT   test_nth_order_reducibler1    s]   NAAQq1vq!_q1qz)*e333Qq1vq!_q1qz)*e333QqT!AaD!*_q1q!},-555Qq1vq!_q1QqT1a001U:::QqtQ]QqtQ]*QqtQ]:;uDDDQqtQ]QqtQ]*+t333>?rV   c                  "    t        t               y rr   r&  rW   rV   rT   test_separabler3    r   rV   c            
          t        t        t        dt        z        t        z          t              t        t        t        t        dt        z        z         t               k(  sJ t        t               y r  )r&   r   r?   r<   r	   r%   rb    _get_examples_ode_sol_factorablerW   rV   rT   test_factorabler6     sN    d1QqS6"9o%q)htB1Q3K7H!.L-LLLL56rV   c                  &    t        t        d       y r   )rb   r5  rW   rV   rT   test_slow_examples_factorabler8  &  s    5TJrV   c                  "    t        t               y rr   )rb   _get_examples_ode_sol_riccatirW   rV   rT   test_Riccati_special_minus2r;  +  s    23rV   c                  "    t        t               y rr   )rb   *_get_examples_ode_sol_1st_rational_riccatirW   rV   rT   test_1st_rational_riccatir>  /  s    ?@rV   c                  "    t        t               y rr   )rb   _get_examples_ode_sol_bernoullirW   rV   rT   test_BernoullirA  4  s    45rV   c                  "    t        t               y rr   )rb    _get_examples_ode_sol_1st_linearrW   rV   rT   test_1st_linearrD  8  s    56rV   c                  "    t        t               y rr   )rb   #_get_examples_ode_sol_almost_linearrW   rV   rT   test_almost_linearrG  <  s    7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
               y )N	Liouviller   re   )r0   r   r?   r<   rb   _get_examples_ode_sol_liouville)rM   not_Liouville1not_Liouville2s      rT   test_Liouville_ODErM  @  s   D!$qtQ-/AaDadAq9I4I!4K"KQqT1q#aD"N!$qtQ-/D1q!4DQ4F"F	$qtQ-
1#d$N~%%%~%%%+^333+^3334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               y )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_homogeneousrV  O  s    K(MAq!QA0H	adAq	!Q$	D1q!$4!4QT!9	9BqtG	CB|B''''	
1Q4!A#d1Q4m#	#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               y )
Nzx tza b c dTinteger<nth_linear_euler_eq_nonhomogeneous_undetermined_coefficientsr   rP  r   rQ  )r   r   r?   r0   r   rb   ._get_examples_ode_sol_euler_undetermined_coeffr<   rS  r   rT  rU  drn   rE   s           rT   Gtest_nth_order_linear_euler_eq_nonhomogeneous_undetermined_coefficientsr^  ]  s    5>DAqD1JAq!QMH	
Ad1Q4A	AqDadAq)9!9	9BqtG	Ca	GB|B!----	
1a4QqT1a 	 1Q3tAaD!}#4	4q1v	=#a&	HB|B!----CDrV   c            	      r   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               y )
Nzx, tz
a, b, c, dTrX  :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_parametersrd  k  s%   6?DAqt4JAq!QKH	AqDad1Q!A#d1Q4l"22R!W<ad	CB|B!----	AadF4!Qq>!AadF4!Qq>$99AaCQqT!<LLqQRSTQUvUWXY\]^Y_W_	`B|B!----9:rV   c                  v   t        d      D  cg c]I  } 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
  |       K c} \  }}}}}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              j                  t        d      z  t        t              t        z  t        t              j                  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              j                  t        d      z  t        t        t              j                  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 c c} w )Nr     r   G   r      r   x   r   rO  r   r      i=   rb  	   2nd_power_series_regularrZ  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   r   C3r    r   C4C5C6r   )nr1r2r3r4r5s         rT   rR  rR  z  s   ^cde^fgYZ&A1a4"QT'!9C1H!Ds1u!Lq!PRSTgBBB5aD D1qM!!#a1fT!A$1-=&==qA1Q4bHQN!22234 1Q4!D1qM/!++a1fT!A$15E.EEqI1Q4DGbAg-./ 1Q4!D1qM/!++ad4!a3C.CCQG1Q4"r#a&y.!Q$./0 1Q4!D1qM/!++a1fT!A$15E.EE1TRSTURVXY[\^_M`H``bcd1Q4AqD2a4"QT'123 adRQqT1-a//"QT'$qtQ:J2JJQPQTRVWXYZW[]^`acdReMeeghi1Q4ArBs1vI~3q619<=>? d4!a##aQqT1o5!A$>1Q4ArEBq!tG+,- !fQTk!A$))Aq/)CF1HQqTYYq\,AACF1Q4KO1Q4CAK"SQ[.89:,-kl dQqTYYq!_$q11~5!<1Q4A1b52ae83bBh>ArEIBqRTuHTUV  1Q4Aq)1Q4bdRT)*+[15 5 hs   A\6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              j                  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              j                  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 )NrZ  r   r   r   r   r   ra         @   r      rk     rQ  r  )euler_undet_01euler_undet_02euler_undet_03euler_undet_04euler_undet_05euler_undet_06euler_undet_07rz  )r?   r<   r
   r   r   r   r   r   r{  r   r    r   rW   rV   rT   r[  r[    s
    SaD Ad1Q4A&&4!a=8!<1Q4bQi#a&!)A+567 Ad1Q4A&&1T!A$])::QqtVCQTJ1Q4BAIAq!t(;;<=> Ad1Q4A&&4!a=81QqT6A3q6!8L1Q4"r!Q$w,Q14s1vby@!CDE Ad1Q4A&&1T!A$])::QqtVCSVQYQTUVQWEWX1Q4AqD2ad7*Xa]3q619-DDxPQRT~VYZ[V\^_V_G__bjklmobpqtuvqwbww  {C  DE  GJ  {K  K  L  M Ad1Q4Aq))AadF4!a3C,CCac$qQRtUV-FWWZ[\]^_\`Z``befgbhi1Q4A1a4"QT'1HQN3q64IIHUWY[L\\]^ 1fQqTYYq!_$qt+d1Q3iC!HQJ.GG1Q4a"SQ]"2RCF1H5E"EQPSTUPVWZ[^_`ab_b[cde[eWfHfghHh"hijk 1fQqTYYq!_$qt+c#ac(1*o=1Q4DGCAqM1BtAwJs3q6!8}4LLqQTUXYZ[\Y\U]^_U_Q`O`abObbefgjknopqrorkstukugvevwxexxyzA$( (rV   c                  x
   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              j                  t        d      z  t        t        t              j                  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 )Nr`  r   r   r   rk  r   ra  r   r  )euler_var_01euler_var_02euler_var_03euler_var_04euler_var_05euler_var_06rz  )r?   r<   r
   r   r   r   r   r   r   r   r"   r    r   rW   rV   rT   rc  rc    s    QaD Aj1q!,,qs:adA3F/FF1Q4OQRTUQUV1Q4BAI1Q./01 1a4QqT1a((1Q3tAaD!}+<<q1vEq!tCPQF{S1Q4AqD2a4!CF(1*4qQxzAAc!fHaPQcNRUVWZ[\W]U]_`abdeae_eUffgh Aj1q!,,qs:adA3F/FF1Q4OQRTUQUVYZ[V\Q\]AaD!R"Q$Y3q61Ac!fH<=>? d:adAq))AaC
1Q40C,CCa!fLsSTvU1Q4A1a4#a&(2Xa^CDE 1vg:adQF33j1q6II1LL1Q4bQi#a&02a589: dQqTYYq!_$q1Q499Q<'77!ad(BQqSH1Q4C#a&M)Bs1SV8},<<q!A#wFGH5" "rV   c                  8   dt        t              t        t        t        t              j                  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              j                  t              t
        t        t              z  z
  t        t        t              t        t        t        t
        z        z        gdt        t              t        t              j                  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   ro  r   )bernoulli_01bernoulli_02bernoulli_03rz  )r?   r<   r
   r   r   r>   r   r   rW   rV   rT   r@  r@  	  s     aD 1Q499Q<!A$&1q0!41Q4BqD1H&'%& diilQqtV#1Q4C!H%& d1Q499Q<!#1Q4$rAaCx.)2adDacN+CD rV   c                     dt        t              ddt        t              j                  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   rz  )r?   r<   r   r
   r   r!   r   r   rW   rV   rT   r:  r:  #  s     -aD!		!nqtQw&1a/!AG);1Q447(3rDGCFN1,<'<#==AAaCHIJ	 	rV   c                  B   dt        t              t        t        t              j                  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              j                  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   rk  r  r         r   rm  <   ^   H   !   ra     9   :      i  i  i  r  rb  (   rf  rP  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_10rz  )
r?   r<   r
   r   r   r   r   r   r   r   rW   rV   rT   r=  r=  2  s@	   
 +aD 11!a'!+Q/1Q4a2#Ad1gIaK(8"892Ad1gIaK@P;PQRS dAg
1Q4++a!fQh61a4?1Q4"R%!)aaj123 1fZ!a((1a!fz!A$7J.JQ.N+OOSTUVSWZ[S[]^_`]aRaa1Q4"qAv+Q/01 diilQ1Q4'!A$'11Q4"R%!CF(*R#a&[9:; dacAaCi1%%!a/*QqT12EE1Q4BAIM*BAIM:;< d:adA&&A-1QqT1W9z!A$PQ?R3R0SSVWXYVZZ1Q4BqD1HqL)219q=9:; tQwhAaD!,,1a4"Q$0Ba!eaZQRSTQTRQ F 0 1Q4!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fqj1naPQd=RTUWXX U > q!tVac\A%1q51*561Q42#1*q!t+ac1A51r	AqD8H1a48ORSUVRV8VaC99    1q!AaC1q1$5a$771Q41"R%!AqD&.1,rAqDy1}=>? AaD!$a!fad1fqsl&;qsQqT!V|QqTSTW>TqSUQqT!V^? ' tAv'&),QTDF):S)@2ad7RPQSTPTWCT(U'V W1Q4"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!H*M PQQTUVWXUXQYz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E ErV   c                     dt        t              dt        t        t              j                  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   rz  )	r?   r<   r
   r   r   r   r   r	   r#   rW   rV   rT   rC  rC    s     !aD11!A$&1-1Q4"qQT!V},d1gd2h.>tDGAIaK?P.PQR.RRTWYZ\]Y]X]^_X_T``ab	 	rV   c                  %   t        d      } t        d      \  }}}}}dt        t              i dt        t              t        t              t        t              j	                  t              z  z   t        t        t              d      t        t        t              t        t        z
        gg dddt        t              t        t              j	                  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              j	                  t              t        t              t        d	z  z  z   t        t              j	                  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              j	                  t              t        t              t        d	z  z  z   t        t              j	                  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              j	                  t              d	z  dz
  t        t              j	                  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              j	                  t        d	      t        t        t                    z
  t        t              j	                  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              j	                  t              d	z  dz
  t        t              t        t              j	                  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              j	                  t        d	      t        t        t                    z
  t        t              j	                  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              j	                  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              j	                  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              j	                  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              j	                  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              j	                  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              j	                  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              j	                  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   rZ  1nth_linear_constant_coeff_variation_of_parametersr`  r*  ro  fact_02r   )r  r  r   fact_03r   r   fact_04fact_05r   r   fact_06TrE   rF   r;   fact_07fact_08fact_09rk  r  fact_10r   rb  fact_11r   rE   rF   rK   fact_12r   fact_13fact_14fact_15fact_16fact_17g      rp  )fact_18fact_19fact_20rz  )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   r5  r5    s    	c
A12NBr"R aDKdQqT!A$))A,&&1Q4R!b1f-.?	K dAaDIIaL1a')*1Q4"tAwtBx/T!WQYq[0AAA31uQw<OPRTUVWXUY[\R]^9K$ tyy|AaDAI%!		!Q!AaD&(@AAaD"VQBZ-"VQBZ-78AaD"S!Q$q\/9RS%K. tyy|AaDAI%!		!Q!A$(>?1Q4CAaL)2adBs1vI3q6	4I+JK/K8 tyy|Qq 1Q499Q<?1#451Q4a "QqT26"2BqtR!A#X4F1Q4QSVWXYVYQYHZ[9KB tyyAs1Q4y(!A$))A,6qtS"c$s)R!V"459:;<qtS"c$s)R!V"459:;<qtRL

 CKV tyy|Qq 1Q4!		!#4Q#671Q4a "QqTDacN?";BqtT"qQRs(^<TVXYZ[\Y]_ade_eVfgWK` 1q!1$qAaD!)<a)?'??!C1Q4a "QqT26"23aKj dAgj1q)1,,q1qyAaD	
:: 0 1qAaD!,a//023AaD&AaD	
:: 31Q4
1Q4+Q../121Q4
1Q4	
9 2 1q!1$% ()AaD!)<a)?'?@ CDD
 qtR!Vb1R!A#X7qtT"qs(^$b1rAv&6
	kK@ d1Q47lQq!tVAaD[AaD1a&)AAAAqDTUVWTX
QJJ E Avad{:adA#6679:1a4
1Q4	
A :qtaV$:%%'(AvadAg~689!Q$qtJqQRt
QE 9 a4
1Q4+Q../ 231QqT*QqT1:M1MN QSSTUVSWYZSZPZ[
 qtR1%71a=(889qtRQ++ba!1D.DDE
 
AKX tyyAs1Q4y(1Q499Q?3qt9+DEqtSSDBKa!89A=>?@qtSSDBKa!89A=>?@qtSQRRU^R!V%<!==>?@qtSQRRU^R!V%<!==>?@	
  	YKp !A$))A,!a'(3q!t9q!A$i@"q&IJqK| diilAo!a'1Q4BEAbDFNQT1234}KH diilAo!$1Q4Qq2a46)AqDF234IKR diilAo!a'1Q4CF#R!baRj%9:SK\ diilAo!a'1Q4BEAbDFNQT1234]Kh diilBq!tGbAg-1a47"Q$>CtLL1Q4hqb2a4i"QT'.ABq!tG.KbQRTUQUg.U)V'VXYZZ[\iKx 1q53z!A$/011Q4hrD1Q3L'8!<<=r!A$XVZ[\]^_`]`[aVbdeMfHf?gh  1q!1$q!t+1Q4a8Aa= 00223R!b1QQRSTEUCUVWCW>W5XY !		!Q!AaD&(1Q4CGbQi/01OKO OrV   c                     ddl m}  t        dd      }t        d      } |t              j                  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_05rz  )'sympy.functions.special.error_functionsr"   r)   r(   r<   r   r
   r   r   r   r   r   r   r   )r"   r  r?   r]  s       rT   rF  rF  )  s   :sT"AA	!		!A $aD d1Q47l1nqtQw&*1Q4"S1X+/HQN:;
1Q4"tAwqy.2c!A#h;?Xa^"CCAEF
1Q4"tAwqy.2c!A#h;?Xa^"CCAEFH !fQh1QqT1W$q(1Q4$Qr!A#wYBqD	9::;R!dBQRSUVWXYVYSZQZN\_`bcd`d\eKeFf=gh sQqtV|a1Q4"r!u*c1"g-./ AaD	k!mc!A$i'!A#-1Q4RTAhq!n$44567 !QadA&1-..adA>1EI1Q4"y	
Bq1uaLaRTAX\A-s1v5q1u=tD F FGJA2wO 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  j                         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  j	                  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 )Nr  r>   rI  r   r   r   r   r   )liouville_01liouville_02liouville_03liouville_04liouville_05liouville_06liouville_07liouville_08rz  )r)   r   r?   r<   r   r
   r   r   r   r   expandr   r.   r   r/   )r  _ys     rT   rJ  rJ  T  sS   sA	sBaD 1Q4mAoQqT1a 0 22T!A$]A5Ea5GG1Q4QRT	]+,- 1S!A$Z<A&1Q4QRT	]+,- adAq4!a#3A#55QqT1q8H8JJCQRSTQUPUJVWZ[\]^[_W``hhj1Q4QRT	]+,- 1Q4A1Q4adA(:!::QqSadA=NN1Q4$rBs1vI~../AaD$rBs1vI~:N1OP QqT1a  1QqT6$qtQ-*:#::QtAaD!}_L1Q4$rBsA2wJ//0"QqT4RQBZ;P2QR !C!I+##Aq)1-1Q4R"Q$Y() AaD!}QadAq!1!!33d1Q4mQ6Fq6HH#qQRte*TUXYZ[\Y]U^^1Q4QRT	]+,- d4!Q<1QqT6AaD!G#3T!A$q\1_"DDtAaDSTVWRXGYY2:hqmQT!V<<<?TUXY[]^Y^_`Y`UabefhjkfklmfmnofobpUpsuwxyzw{r|?}}  @A  B  CK)- -rV   c                     t        d      \  } }}}t        d      }t        d      }dt        t              i dt        t              t        t              j                  t              z  t        t              j                  t        t              z  t        t              dz
  z  t        t              j                  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              j                  t              z  t        t              j                  t        t              z  t        t              dz
  z  t        t        t              t        t        t        z  z         gdd
t        t              t        t              j                  t              z  t        t              j                  t        t              z  t        t        t              t        t        t        z  z         gddt        |   ||      j                  |      z  t        dd      |z  |dz  z   ||      j                  |      z   ||      j                  ||      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              j                  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              j                  t              t        z
  t        t        t              t        t        z  t        z         gddt        t              t        t              j                  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              j                  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              j                  t              d      t        t        t              t              gddt        dt        t              j                  t              z  dz
  d      t        t        t              t        t        t        dd      z  z         gddt        dt        t              j                  t              z  d      t        t        t              t        t        t        dd      z  z         gddt        dt        t              j                  t              z  dz
  d      t        t        t              t        t        dz  z         gdt        t        t        t              j                  t              z  dz
  d      t        t        t              t        t        t              z         gdt        t              j                  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              j                  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              j                  t              j                  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              j                  t              t        t        t              j                  t              z  z
  t        t        t              t        t        t        t              z  z         gt        t              dt        t              j                  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  ro  algeb_06algeb_07algeb_08algeb_09algeb_10algeb_11r   )r  r  r  r  r  r   r   r   r*  rZ  r  r`  algeb_12algeb_13algeb_14algeb_15r  algeb_16algeb_17Tr  r      rk  )algeb_18algeb_19algeb_20algeb_21algeb_22algeb_23rz  )r   r(   r)   r?   r<   r   r
   r   r   r   r    r   r@   r{  r   r   r"   r   r   )MmrrS  r  r  s         rT   r  r    s   #JAq!Q
5/CsA $aDGdQqTYYq\!AaDIIaO3qtax@AaDIIaLSTDTU1Q4ad1f%r!A$RT	':;G dQqTYYq\!AaDIIaO3qtax@1Q4bd#$G dQqTYYq\!AaDIIaO31Q4bd#$G  !c!fkk!n$	!Q!	ad	"SV[[^	3c!fkk!A6F	FH3q623q6219qAvqs1a4x7H+H IJA	!G. 3qt9}!		!,1Q4~/G: AaDzA~QqT
Q/1Q4ad1f%r!A$QT!V'<=;GD AaD!$j1q&9:1Q4ad#$EGN diilR1Q4A#$OGX d1Q499Q<1Q4~YGb AaDzA~QqT
Q/1Q4ad1f%r!A$QT!V'<=cGl dQqT!A$))A,&&1Q4R!b1f-.G
mGD 1Q4Aq)1Q4"r!t)bAg-234!"EGP Aj1q1115a7Q@1Q4bQi#a&02a589:!"QG^ 11q!1Q4~_Gh 1Q499Q<!#Q'1Q4aA../0iGr 1Q499Q<#1Q4aA../0sG~ 1Q499Q<!#Q'1Q4ac"#GJ 1Q499Q<!#Q'1Q4c!f%& diilQsA2a4y[(1Q4i1"Q$(C1I)=ad)BBq!tQK(PRSUVRVWXRXZ^Q_``ab tyy|maQBqD	k)1Q4i1"Q$(C1I)=ad)BBq!tQK(PRSUVRVWXRXZ^Q_``ab 11""1%!ax1Q3(':;1Q4bdQT"W,qAvax7"QT'!)CbAgaiOPQ! diilR!		!_,1Q4b1g&'! diilQrT!AadF*1Q4ad1fq!t+,-GGK KrV   c                  t   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              j                  t        t        t              z  t        t              j                  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              j                  t        d      dt        t              j                  t              z  z   t        t        t              t        t        t        d	t        z        z  z         gd
t        t              j                  t        d      t        t              j                  t        d      z   dt        t              j                  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              j                  t        d      t        t              j                  t        d      z
  dt        t              j                  t        d      z  z
  dt        t              j                  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              j                  t        d      dt        t              j                  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              j                  t        d      dt        t              j                  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              j                  t        d      dt        t              j                  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              j                  t        d      dt        t              j                  t        d      z  z   t        t              j                  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              j                  t        d      t        t              j                  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   rk  rj  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_12rz  )r?   r<   r
   r   r   r   r   r   r   r"   r   r    r   r{  r   r|  r}  r   rW   rV   rT   r   r      sq    *aD :adA&))JqtQ,BBAF1Q4T"R%[bSbe_q-@)AAARUC42;*++, - .	 1vg:adQF33j1q6II1LL1Q4bQi#a&02a589: a1Q499Qq++adiil:A>1Q4bQA%6q%8%:!;;;bQQRTUEVWXEXYZEZA[>[[\] dii1o!A$))A,.1Q4bRTl*+, dii1o!		!Q/!AaDIIaL.@1Q4bRTl*RAaC[89: dii1o!		!Q/!AaDIIaO2CC	!A$))A,1Q4bRTl*RAY6C!HDEF	 dii1o!A$))Aq/ 111Q4bdR1W,r#bd)|;<= dii1o!A$))Aq/ 111Q4bdRT!WHQJ%77"Sa^:KKLM dii1o!A$))Aq/ 111Q4bdRAaC[02c!A#h;>?@ dii1o!A$))Aq/ 11AaDIIaL@1Q4bd3q6k)Bs1vI51SVCbQiORTUXYZU[R[[^`adefag^gghi dii1o!		!a/1Q4d1gd2rAv;&77a@@A
1Q4d1gd2rAv;//a889;	 1Q4Aq)JqtQ1,EE1Q4bQA!a5!III	23q1a4!A#:>U;;;<= > ?	MLP PrV   c                  >   t        t               } t        t              j                  t        d      }dt        t              j                  t        d      z  d|z  z   t        t              j                  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              j                  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              j                  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              j                  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              j                  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              j                  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              j                  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              j                  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              j                  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              j                  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              j                  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              j                  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              j                  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              j                  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              j                  t        d      d|z  z   dt        t              j                  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              j                  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              j                  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              j                  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              j                  t        d      d|z  z
  dt        t              j                  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              j                  t        d      t        t              j                  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              j                  t        d      dt        t              j                  t        d      z  z   t        t              j                  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              j                  t              dz
  t        t        t              t        t        z         gddd=|t        t              j                  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              j                  t        d      t        t              j                  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              j                  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              j                  t        d      t        t              j                  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              j                  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              j                  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              j                  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              j                  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              j                  t        d      dt        t              j                  t        d      z  z   t        t              j                  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         ||      j                  ||      ||z   ||      j                  |      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   ||      j                  ||      z  ||z   ||      j                  |      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  rS  r=   )clszR L C E_0 alphaTr  omegar*  undet_01r  r  r   r  undet_02ra  undet_03r   r  undet_04rb  undet_05r  undet_06undet_07undet_08rk  undet_09undet_10rm  undet_11undet_12undet_13undet_14undet_15undet_16r  undet_17undet_18r  undet_19r   undet_20rQ  undet_21r   rj  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_40rz  )r   r<   r?   r   r   r(   r)   r
   r{  r   r   r   r   r    r   r   r|  r   r+  r}  r   r   )r@   f2rU  rS  r=   RLCE_0alphar'  s              rT   r#  r#  v  s    	QBA	
11aB	!A$))Aq/AbD 1Q499Q</!A$6:AA!A!"3TBAq!S%7OEIaDv!A#g1Q4C!HqBBAbL1Q3r64I1J,JCQRPRG+SSVWWXYv !e1Q4C!HqBB1H,=sA2w+FFJKLv 1QqTYYq\>!AadF*Q.1Q4C1I3r7
2Q678v& 1QqTYYq\>!AadF*RAY61Q4C1I3r7
2Qs1vX=>?'v2 1QqTYYq\>!AadF*S1X51Q4!A$r'AbD.2c"Q$i<"S!W*+DqQqSz+QRST3v> 1QqTYYq\>!AadF*SV31Q4C1I3r7
2SVBY>3q6"LMN?vJ 1QqTYYq\>!AadF*SV31Q4C1I3r7
2Qs1vXb[@3q6"9LMNKvV 1QqTYYq\>!AadF*a!CF(lQs1vX.EF1Q4C1I3r7
2SV;c!fQhF3q6RSSVWWXYWvb 1Q499Q<!A$&A-1Q4A13qay{+;(;bQtAwYq[AQ>Q(QSVXYWYZ[W[S\'\\]^cvn 1QqTYYq\>!AadF*QqSQZ7"S!W*D1Q4!CFQsA2wY.C1I=3qs8KLMovz 1QqTYYq\>!Ac!A#hJs1v$551Q4bQqSk)Ac!A#hJs1v,=a,??#ac(3q6/RSBSSTU{vF dii1o"$qt+a/#a&81Q4SVAXbdCG(;;rBqDy#a&>PPQRGvR 1Q499Q<!Q$&1,1Q4ad1fr#qb'z123Sv^ 1Q499Q<!#c!A#h.1Q4a#ac(1*,s1Q3x{:QT!VCbaRjPQR_vj 1Q4i!A#c!f*$1Q4"q!t)SV+rAvs1vo=>?kvv 1QqT6kAc!A#hJ&1Q4"q!tAv+s1Q3x/2"9c!A#h2FFGHwvB 1QqTYYq\>!AaD(1a4QB<71Q4"q"q!tBw,//aR89:CvN dii1o"$q11~5!<qaRyH	1S!W1Q4"q"q"q!tBw,1*<'="=>>QBGHI	Ov\ 1QqTYYq\>!AadF*SAY6A=1Q4CGad1f,q!A>"q&#bQRd)ASSV^_`abVccde]vh 1QqTYYq\>!AadF*QsA2wY61Q4CFRAaC[0AaC!GS!W3DR3GGHIivt 1Q499Q<!AaD&(1,s1Q3x71Q4"b)AaC/"SAY,>"qs(CPQRSPSHATTUVuv@ 1Q4i#a& 3r7*1Q4CFb1Q3hA%66aRBCDAvL dii1o"$q11~5!<s1vE1Q4"q"q"qs(|"344c!f<=>MvX 1Q4i!&& 3qs8A:-1Q4#ac(1*,r#a&y82c!f9DEFYvd dii1o!		!,s1Q3x#ac(1*9L/MM1Q4baRj2c!f94C!Hr#aPQc({8RUX8XZ]^_`a^aZb7bcg7gghievr tyyA1Q499Q?!22QqTYYq\AAaCGAQ1Q4adb1b1Q3h<&7Q%??22PQRSPS8CTVYZ[V\B\\]^	sv@ 1Q4i#a&("S1XaZ/1Q4QqS"r#a&y0B1Hc!f3DDEFAvL diilQ1Q4a !MvZ 1Q499Q<#ad)+1Q4baRj3sQw<>9:;[vh dii1o!		!,tAw61Q4baRj2c!f94qay{BCDivr dii1o1Q4'$qs)31Q4C1I3qs83d1Q3ilBCDsv| dii1o!		!,tAw6Q?1Q4baRj1T!W9Q;6"qs(CF9JJKL}vH dii1o!$qQU|31Q4CFRAY.Ac!a%j1BBQs1q5z\RS^STUIvR dii1o!$q!tC!H}4AaD"SV)bQi/!Q$s1q5z/"2DDq!tCPQTUPUJWXGXX[\^_[_`cdehidi`j[jkl[llopqrtuquouvyz{~z  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  FT  UV  FV  V  W  XSv^ dii1o!$s1q5z11Q4CGrAc"gIaK'7Q&??@A dii1oad"C!HQJ/1Q4CFRAY.3q1u:a?!CDE dii1o!A$))Aq/ 11AaDIIaL@1Q3FQqSQ1Q4adAc!A#hJqL1$455bdCF8JJbSUVWSWiY\]^Y_M__`a !A$))Aa.1a4!		!#44q!A#wqt|CUK1Q41URQBD1a4!A#4FtAw4N0N,OQRSTQT,U(V%VV
SQBa1fqsl+DG334ac:;
;< = >!	 !A#adii!n$qs1Q499Q<'77!A$>C%PQ	N@RT1Q4CAQq!tVac\(:47(B$B CQqS IJJ
SQBa1fqsl+DG334ac:;
;<
c!E'!)n
ac%(lQqSU5[81<
=> ? @ ! AaD!Q'!JqtQ,?*??!A$FAO1Q4"r!t)SV+c!fQh678evz zrV   c                  *#   t        d      \  } }d}d}d}||z  }t        d      }dt        t              i dt        t              j	                  t              t        t              z
  t        t        t              t        t        t              z        gdd	t        t        t              j	                  t              z  t        t              z
  t        t        t              t        t        z        gdd
t        t              j	                  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              j	                  t              z  z
  t        t        t              t        t        t        t              z               gddt        t              j	                  t              t        t              z  t        t              z
  dz
  t        t        t              t        t        t              z  dz
        gddt        t              j	                  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              j	                  t              z  t        t              dz  z
  dt        dz  z  t        t              j	                  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              j	                  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              j	                  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              j	                  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              j	                  t              z  z   |dz  t        t        t                    z  t        t              j	                  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              j	                  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              j	                  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              j	                  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              j	                  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              j	                  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              j	                  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              j	                  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              j	                  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              j	                  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              j	                  t              t        t        t        t              z         z
  t        t        t              t        dt        t        t              z   z              gd!gd"t        t        t              j	                  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        |       j	                  |       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              j	                  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              j	                  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   ro  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_27rz  )r   r(   r?   r<   r   r
   r   r   r    r   r!   r   r   r   r   r   r   r	   r   r>   r   r   r   )rS  r   r  r@   r  f1r[  s          rT   r'  r'  ~  sr    %.CAa
AA
A	
QBAaDcdiilQqT!1Q4CF#$c !		!nqt#1Q4Ac diilSV#1Q4c!f%&c  dAgkQTAXqtyy|331Q4R$q'\*+,!c* diil3q6!AaD(1,1Q4CFQ'(+c4 diila#ad)m,q0A2!9s1Q4y("-.5c> d1a4i!		!$qtQw.1a4!		!1DD1Q41"tAqtAvzA~$677"Q$(CAEF1Q41"tAqtAvzA~$677"Q$(CAEFH	?cL dAgkQqtVa!f_adiil::1Q4$r!Q$w2a/!B$6:;;<
1Q4bAg"Q&2-1235	McZ Ahqtyy|#d1qtQw;&771Q4b3s1v;./01!	[ch !a%jQqT"S1Yqtyy|%;;1SV8c#ad)a-022SQqTQ5G5IICPQRSPTIUWYZ[ict QqT{QT#ad)^AaDIIaL881a4AaD	>!A$))TU,;VVqtd2dAqD51a4<0011AbD89qtT"T1a4%!Q$,//01
 ucF diilQqT#a&[(1Q4CF#$GcP 1uc!A$i!		!,qs3qt9}<qtR$r1a4!A#:>23qs8;<<=qtT"adQqSj1n-c!A#h678
Qc` diilQqT#ad)^CF221Q4RAY()acj !		!nAaD!GT!A$Z771Q4RT#$!	kcx diilQ!q\)1Q4badU1Wo-./ycB !A$'lAqD1Q3JN+q1v!}adiil.JJqtd3q"q!t)ac/23445qtT#aadQqS1234
CcT diilQqT!1Q4CG$% !fS1Q4[ 3q6#a!f+#5adiil#BB1Q4d2c!fai<0223R!d2c!fai<>PQR>R5ST 1uadiil"Q!q\11Q4"S!W*q.1,q1u567 d4!a= 1$qs1Q47{21Q4$q'$r#a1f+~'9"::1<=
1Q4abQq!tVnq011!346 diilSQqT]*1Q4Rc!f-./0 11"QqT1W,1Q42#1*sQTz234 diilAeAgadlN+1Q4.s1b;Ma;O6O3P/QQThhjkklm! diilR!W$1Q4C1I&' 1!	?"QAaD)9%991Q4,T"7J17L2L-MMNO!!	 diilS1]*1Q4c!fWbQi!m4567cg grV   c                     dt        t              t        t              t        t        t                    z  t        t              t        t        t                    z  t        t              j	                  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              j	                  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              j	                  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              j	                  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              j	                  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              j	                  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              j	                  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              j	                  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              j	                  t              z  z   dD  cg c]B  } t        t        t              | t        t        t        dz  z  dz         z  dz   t        z        D c} dt        t        t              z  dz
  t        t              j	                  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              j	                  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 c c} w )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   rm  irA  )rE   rF   r;   rK   r   r   )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_11rz  )r?   r<   r    r   r   r
   r   r   r	   r   r   r   r   r   r   )r   s    rT   r  r  2  s     aD !fS1YQAaD	!1!A$))A,!>>1Q4$r#a&y/)AbD012adDCFO3LM s1Q4x!|QqT!QqTAXqtQw$6qtyy|$CC1Q4R!Q$Y1"S"q!t_2D)EEFGH  cAaDQK1QqT6CF?S1Y#>!		!"LL1Q4A;QqT*QT1AaD!G;R@A	 !A$i1S1Y;1q0!A$))A,>>1S1Y;1q*B/0 c!A$h!Q$1q.!A$))A,661a4!9qtQwqy("-.	 !A$i1S1Y;1q0!A$))A,>>1S1Y;1q*B/0 QTAaD!G^$$1QqT	1Q4$q!tadAg~:N3N(OQRSTQUQZQZ[\Q]']]3q6
QtA!a1$%%eAaDFm3S1XaZ
4AaD!GAqDL !!6" # 	#%&tA!a1,<'=%=AQ1qA%&qt+A--!A$'	!Q$>?&@	QqT!ba!A$'!Q$,.//	/&1	1 	
%!Q-!aQqT!ba!A$'!Q$,6F1G.G!GHI		J
 	
!A$s1tA!a1,-ad2144q1qyA~EFF	
C!HQJDQqT1WQT\!1222	3	5	56 7   Aadiil"QqS1X-Aq8!<1Q4"s1v+q!t+,- d1a4iAaDFQJ>1Q499Q<77?FG!1Q4!DAqD1--1145G 1vzQqTYYq\1a4!AaD&=991Q4T"q!t)aAh"6778"QqT1tBQRTUQUIXYZ]^_Z`X`L`GaCa:bc 1uc!A$i!A$))A,q.QqT"::1Q4$r#qb'z!Q$//"45r!A$RQBZPQSTPT_@U7VWSMQ QH Hs   >Am.c                  x   t        t               } t        t              j                  t        d      }dt        t              j                  t        d      z  d|z  z   t        t              j                  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              j                  t              dz
  t	        t        t              t        t        z         gdd	|dt        t              j                  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              j                  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              j                  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              j                  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              j                  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              j                  t        d      d|z  z
  dt        t              j                  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              j                  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              j                  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              j                  t        d      dt        t              j                  t        d      z  z   t        t              j                  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              j                  t        d      dt        t              j                  t        d      z  z   t        t              j                  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  ra  r   r  rb  rm  r  rk  rQ  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_15rz  )r   r<   r?   r   r
   r{  r   r   r   r    r   r|  r   r}  r   r   )r@   rS  rU  s      rT   r	  r	    s
   QBA	
11aB	!A$))Aq/AbD 1Q499Q</!A$6:AGaD !A#g1Q4C!HqBBAbL1Q3r64I1J,JCQRPRG+SSVWWXY !e1Q4C!HqBB1H,=sA2w+FFJKL diilQ1Q4a ! 1QqTYYq\>!AadF*Q.1Q4C1I3r7
2Q678 1QqTYYq\>!AadF*RAY61Q4C1I3r7
2Qs1vX=>? 1QqTYYq\>!AadF*QqSQZ7"S!W*D1Q4!CFQsA2wY.C1I=3qs8KLM 1QqTYYq\>!AaD(1a4QB<71Q4"q"q!tBw,//aR89: 1QqTYYq\>!AadF*QsA2wY61Q4CFRAaC[0AaC!GS!W3DR3GGHI dii1o"$q11~5!<s1vE1Q4"q"q"qs(|"344c!f<=> 1QqTYYq\>!AaD(3r71941Q4"q"s1v+.QB789 1Q4i!CF(1*SV++1Q4"s3q6A:q003s1vz?13DD
a&SVaZ**SQ!_Q->>AFG H I	 dii1o!#1Q4bdR1W,q!tR#a&(]/CCDE dii1o!A$))Aq/ 11AaDIIaL@1Q3FQqSQ1Q4adb1b1Q3h3qs8A.E#qbQRd)TU.U+V&VYZ[^_`ab_bcd_d[eYefhYh&hklmnknorstuvsvowkw&wz{|}z}  B  DE  CE  FG  CG  H  {H  'H  JM  NO  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  iu  vw  iw  \w  z{  |}  z}  ~A  CD  BD  EF  BF  ~G  zG  HI  zI  \I  YJ  TJ
A#c!A#a%j.
TAaCjT)+,S!AY;T78;AS? ?AB3qs8L M N dii1o!A$))Aq/ 11AaDIIaL@3qs8K1Q4rArAaCxL01S1QZ<?BCFJJbSTVX[\]^[^_`[`V`SaNadefgdghklmnolopqlqhrdrsuduNuwz{|w}M}}  AB  CF  GH  IJ  GJ  CK  AK  K  L  M 1q!$q1v-A61Q4"qs(S1XaZ/QqS9R#c!f+=M
CA	N
1
> Q{1}>-.1!A#h=7 7 8 9	o]a arV   c                     dt        t              t        dz  t        t              j                  t        d      z  t        t        t              j                  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              j                  t        d      z  t        t        t              j                  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              j                  t        d      z  t        t        t              j                  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              j                  t        d      z  t        t        t              j                  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              j                  t        d      z  t        t        t              j                  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              j                  t        d      z  dt        z  t        t              j                  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              j                  t        d      z  t        t        t              j                  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              j                  t        d      z  dt        z  t        t              j                  t              z  z
  dt        z  dz   t        t              z  z   t        t        t              t        dz  t        t        ddt        t              z        z  t        t        ddt        t              z        z  z   z        gdt        t        t              j                  t        d      z  t        t              j                  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              j                  t        d      z  t        dz
  t        t              j                  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              j                  t        t              dt        z  t        t              j                  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              j                  t        d      z  t        t        t              j                  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   rm  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_12rz  )r?   r<   r   r
   r   r,   r   r-   r   r   r   r   rU  rT  rW   rV   rT   r   r     s    (aD dAaDIIaO$q!A$))A,'771a4!8QqT/I1Q4GAqM)Bwq!},<<=> dAaDIIaO$q!A$))A,'771a48QqT/I1Q4GAaCO+b1a.@@AB dAaDIIaO$q!A$))A,'771a41+E1Q4GAqM)Bwq!},<<=> dAaDIIaO$q!A$))A,'772ad7AaDF?AaD:PP1Q4GAaDFAaC002gad1fac6J3JJKL dAaDIIaO$q!A$))A,'771a4!8QqT/I1Q4GAq!tAv..GAq!tAv4F1FFGH dAaDIIaO$qsAaDIIaL'99QTAXqtOK1Q4"WT"XaZAa882gd2hqjRSUVRVWXRX>Y;YY[_`a[bbcd dAaDIIaO$q!A$))A,'771a4!A$q&=!A$:NN1Q4GAaDFA..GAaDFA4F1FFGH dAaDIIaO$qsAaDIIaL'99QqS1WadNJ1Q4Ar'!QtAwY"77"WQ$q'	=R:RRSTU 11a!AaDIIaL01QT6!A$;>1Q4BwqtAvq!t44r'!A$q&!Q$:O7OOPQR sQh!		!Q(AaC11+==1Q3(
1Q4O1Q4!a%"WQ!a%8"82ga1q>Q;Q"QRST dii1o!AaDIIaL 001Q471Q4"WQqT!VQ//"WQqT!VQ5G2GGaPQR
 d1Q499Q?"Qqtyy|^3q!tAqDyA~17LaPQd6RR1Q4GDAJ$q!tAqDy/0ABBRPTUVXYUYPZ\]^bcdfgcghiklhlcl^m\mHnEnnopq<@ @rV   c                     dt        t              t        t        dz
  z  t        t              j                  t        d      z  t        d      dz  dt        z  z
  t        t              j                  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              j                  t        d      z  t        d      dz  t        z  t        t              j                  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              j                  t        d      z  t        d      t        d      dz  t        z  z   t        t              j                  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  rP  rm  i`iQ	  rI  i*     rk  -   b   r      rf     T   Trp  )2nd_2F1_hyper_012nd_2F1_hyper_022nd_2F1_hyper_032nd_2F1_hyper_04rz  )	r?   r<   r   r   r
   r   r$   r   r   rW   rV   rT   r   r   A  s    )aD 1gadii1o%1a1adiil(BBQqtVK1Q4A!QKqtAvqtAv.>1a	1(MMPRSXYaefgheidijkdkcmopSqPqqrs 1gadii1o%1a1Q499Q<(??!A$F1Q4"a!eqtAv..uad1fa[1Q46)QQRU/SS
UQqTE!GR=AaD57*a!e4
45781u!Q6GH I J 1gadii1o%1qtAvax11(EE!L1Q4"a!equQw//qtAvqkAbE!G:qSTu0UU
UQqTE!GR=AaD57*a!e4
45781u"a6HI J K 1Q46{lDQqT!V,Q.a!A$q&k1A"1DDqvaxPQzQRSTUVSWWY\_`cdefcghici_j^j	
_^ ZAaDFa!#Z$ %'1!A$A'?@1Q4QrU2X1qtBw<qtAv!uQw>ORSTURVWXRXQZ\]`abc`def`f\g8h(h
UAaDGaeVBY'!A$q&A!QK@
@)A BCDqtAv;QR?VWXZV[\^V^B_` a b % rV   c                  \   dt        t              t        t              j                  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              j                  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              j                  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              j                  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              j                  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   Fry  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_05rz  )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aD dii1oAaD	)C!I5x$rAbDRL01R47!CG)CDDr1Q4jQSUXYSYZx$rAbDRL01R47!CG)CDDr1Q4jQSUXYSYZ
 . dii1oQqT
*QqtV3tAwx$qtaHQN0B.B'BQs2wY'N"O ORTVWXYVZQ[\\^`cd^detAwx$qtaHQN0B.B'BQs2wY'N"O ORTVWXYVZQ[\\^`cd^de
 . dii1oAaD	)x$rAc"gI~..QqT
;R!VDx$rAc"gI~..QqT
;R!VD
 . dii1oQqT
*x$rAd2hJ//"ad<b1fEx$rAd2hJ//"ad<b1fE
 . dii1oQqT
*x$rAbDbM1Ad1r1u9o4EEFFQqT
SUWZ[U[\x$rAbDbM1Ad1r1u9o4EEFFQqT
SUWZ[U[\
 ?@.C*. .rV   c            %      x/   t        t              j                  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              j                  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              j                  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              j                  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              j                  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              j                  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              j                  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              j                  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              j                  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              j                  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   rk  Fr   r  r   rb  T)rE   rF   rI   rJ   ry  r   rj  r   ro  ir  rm  )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_12rz  )r?   r<   r   r
   r   r   r   r   r   r   r   )r   s    rT   r   r     s)   	
11B'aD eqta1a4!9q=1223q!tAaDy>!#c!Q$qt)hq!n*D&Ea&GGcRSfUV	 diiladad1Q4i!m453q!tAaDy>!#c!Q$qt)hqm*C&DR&GGcRSfUV 	 dQqT1a4!9%%3q!tAaDy>!#c!Q$qt)a-&8&::BQKHI 11!Q!q1Q46{1Q4/?!.C*C DDaH2c!ad1f+ad*++aAa!A$q&kM!A$'4IA4M0N.Nq.PPRTWZ[\W]R]^_ 11!Q!q1vk/ ::A>1Q4$q'$q"s1v+"771=>adDGDBQK$991Q3?@B 11AadAg1QqT	!91Q4 ?AqD1qLSTVWSWXYZ[X\^_X_S_D_A` aacde1Q4a1a4j)* 111q!A$ 22A6qtd1gXd1b3q6k?33A56qtT!WT!R#a&[/22145
 111a1q!A$q&z ::A>C!qM>!#aAaD	k!m3R#a&[AB	 111a1a/31Q4Bq!tGaK)* 111q1qt 3Q 77;SV8c!A$(m+c!A$i7!AaD&@"EF diiladad1Q4i!m451Q4$q'$qHQqM)9'943r"u:PQTWPXAXZ]^`ac^cZd@d;ehklnoqlqhrstvwswhw;w  {C  DE  FG  {H  ;H  (HAx!}SBZqRU|a#h'>BrE
&J!KcRTUWRWjYZ\]Y]o!]`hijkl`m mm(npqrsuvrvpv(w #x xxyzq'$r!Xa]""D!C2J,S*A3r"u:)M$NQTUWXZUZQ[\]_`\`Q`$`cklmnocp#ppAx!}SBZqRU|a#h'>BrE
&J!KcRTUWRWjYZ\]Y]o!]`hijkl`m mmnpqrsuvrvpvwDG)QT$qHQqM))43r"u:C1H#bQSe*0T+UX[\^_a\aXbcdfgcgXg+gjrstuvjw*wwAx!}SBZqRU|a#h'>BrE
&J!KcRTUWRWjYZ\]Y]o!]`hijkl`m mmnpqrsuvrvpvw x x yy z z {|||
 @  BC  DE  GH  DH  BH  II J 1Q4$q'$qHQqM))43r"u:C1H#bQSe*0T+UX[\^_a\aXbcdfgcgXg+gjrstuvjw*wwAx!}SBZqRU|a#h'>BrE
&J!KcRTUWRWjYZ\]Y]o!]`hijkl`m mmnpqrsuvrvpvw x 
xxy
zq'$r!Xa]""D!C2J,S*A3r"u:)M$NQTUWXZUZQ[\]_`\`Q`$`cklmnocp#ppAx!}SBZqRU|a#h'>BrE
&J!KcRTUWRWjYZ\]Y]o!]`hijkl`m mmnpqrsuvrvpvwDG)QT$qHQqM))43r"u:C1H#bQSe*0T+UX[\^_a\aXbcdfgcgXg+gjrstuvjw*wwAx!}SBZqRU|a#h'>BrE
&J!KcRTUWRWjYZ\]Y]o!]`hijkl`m mmnpqrsuvrvpvw x x yy z z {||
|
 @  BC  DE  GH  DH  BH  I
I J 1Q4aa8Aa=(($#be*q3x0GRPRU/S*TWZ[]^`[`WabcefbfWf*fiqrstuiv)vvAx!}SBZqRU|a#h'>BrE
&J!KcRTUWRWjYZ\]Y]o!]`hijkl`m mmnpqrsuvrvpvw x 
xxy
zq'$r!Xa]""D!C2J,S*A3r"u:)M$NQTUWXZUZQ[\]_`\`Q`$`cklmnocp#ppAx!}SBZqRU|a#h'>BrE
&J!KcRTUWRWjYZ\]Y]o!]`hijkl`m mmnAqD&	T!W9ad4!Xa]"2 2D!C2J,S:QSVWYZ\W\S]9]4^adeghjejaklmoplpap4ps{|}~  tA  4A  !AAx!}SBZqRU|a#h'>BrE
&J!KcRTUWRWjYZ\]Y]o!]`hijkl`m mm!npqrsuvrvpv!w x x yy z z {||
|
 @  BC  DE  GH  DH  BH  I
I J 1Q4aa8Aa=(($#be*q3x0GRPRU/S*TWZ[]^`[`WabcefbfWf*fiqrstuiv)vvAx!}SBZqRU|a#h'>BrE
&J!KcRTUWRWjYZ\]Y]o!]`hijkl`m mmnpqrsuvrvpvw x 
xxy
zq'$r!Xa]""D!C2J,S*A3r"u:)M$NQTUWXZUZQ[\]_`\`Q`$`cklmnocp#ppstuv  yA  BC  DE  yF  vF  tF  GJ  KM  NP  KP  GQ  tQ  SW  YZ  [^  _a  bd  _d  [e  Yec(Y2JX Sbe*QT/S*,4QqMR: t: :<=adFCEFtAwYPQSTPTUYZ[\]_ghijk_l\lZlnrtuvyz|}z  wA  uA  DE  HK  DL  uL  NQ  RT  UW  RW  NX  tX  oYbe*QT/oQqMn" ["$%a!A&6$6s2b5z$A43rRTu:XY\_X`I`befhikfkblHlCmpstvwytypz{|~{pC  CK  LM  NO  CP  CP  %P[P ST  UV  XY  UY  SY[Y VZ QZ F[[ \ \ ]^^
^ ab  de  fg  ij  fj  dj  ak	
k l%m. !5> d1Q47lQz!A$2221Q42r!Q$w{+,-Cei irV   c                  P   t        d      \  } }}dt        t              i dt        t        t              j                  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              j                  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              j                  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              j                  t              dz  t	        t        t              t              gdgddt	        t        t              j                  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              j                  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              j                  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              j                  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              j                  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              j                  t              t        t              z
  t        t              j                  t              t        t              z   z  t	        t        t              t        t        t              z        t	        t        t              t        t        t               z        gdt        t              j                  t              t        t              j                  t              t        t              z
  z  t	        t        t              t        t        t              z        t	        t        t              t              gdt        t              j                  t              t        t              z
  t        t              j                  t              t        t              z   z  t	        t        t              t        t        t               z        t	        t        t              t        t        t              z        gdt        t              j                  t              t        t              j                  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_04ro  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_20rz  )r   r?   r<   r   r
   r   r   r   r   r   r   r   r   r    r%   )r   rT  rU  s      rT   r   r   	  sU   gGAq!aDm!		!nad1f%1q11QqT69!A#= $	m !		!nad1f%1q11QqT69!A#=m Aj1q))AadF1Q47N:a1fqj!A$PQ'=QQSTUm* diiladQs1vXo1!Q$66Q?+m6 diilAo1Q4~7mB 11q!tAaDy)1Q4C1Ix1~5567CmL diilQqtV#aAaCj01Q4bS!a%[1SAE^3C%CS!AY$NPQTUPU$V
1qb	$cAaCiaRT*D13 4 5MmX diilQqS1X%#q!te*41Q4"q!tAv+sAqD5z123Ymb 1Q3w11&*QsAaD5z\91Q4R1q\A-./0cml dAaDIIaL!AaD(1a4A1I+>>1Q4"s1v+s2a4y012mmx d1Q47lQz!A$2221Q4BAI'(ymB 1Q4lQqS1X%#q!te*41Q4adUR!Q$q&[123CmL 1Q4lQqT#a&[(3qs831Q4c!fWrHS1Xc#a&k5I1,M'MNOPMmV 1Q4lQqT#a&[(3qs8A:51Q4CQL3q61A567Wm` QqT!nqt#aAh.1Q4"qQx-#a&0!345amj QqT!nqt#aAh.1Q4BSV,-./kmt tyy|AaD QqTYYq\!A$%671Q4CF#R!baRj%9:um@ diiladiilQqT121Q4CF#R!b\2 tyy|AaD QqTYYq\!A$%671Q4CG$b1r#a&y&9: diilAaDIIaL1-.1Q4b1r#qb'z23Smq qrV   c                  x   dt        t              t        t              j                  t        d      t        t        t              z  z
  t        t        t              t        t        t              z  t        t        t              z  z         gdt        t              j                  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_02rz  )	r?   r<   r   r
   r   r*   r   r+   r   rW   rV   rT   r   r   {	  s     &aD dii1o!A$&1Q4F1I6!9456 dii1o!AaD(1Q4FA!QK<>22RAaDF|A~8N5NNOP
 rV   c                  
U   t        dd      } t        dd      }t        d      D cg c]"  }t        t        dz  dt        z  z   dz
  |      $ c}\  }}}}}t        d      D cg c]"  }t        t        dz  d	t        z  z
  d
z   |      $ c}\  }}	}
}}t        d      D cg c]/  }t        t        dz  dt        d	z  z  z
  dt        z  z   d
z   |      1 c}\  }}}}}t        d      D cg c]"  }t        t        dz  t        dz  z
  dz   |      $ c}\  }}}}}t        d      D cg c]  }t        t        dz  t        z
  d
z   |      ! c}\  }}}}}t	        d
      }dt        t              i dt        t              j                  t        d      dt        t              j                  t              z  z   t        t        t              t        t        t	        dt        z        z  z         gddt        t              j                  t        d      d	t        t              j                  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              j                  t        d      t        t              z
  t        t        t              t        t	        t               z  t        t	        t              z  z         gddt        t              j                  t        d	      t        t              j                  t        d      z   dt        t              j                  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              j                  t        d      z  dt        t              j                  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              j                  t        d      dt        t              j                  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              j                  t        d      t        t              j                  t        d	      z
  dt        t              j                  t        d      z  z
  dt        t              j                  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              j                  t        d      dt        t              j                  t        d	      z  z   t        t              j                  t        d      z   dt        t              j                  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              j                  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              j                  t        d      d|z  t        t              j                  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              j                  t        d      d|z  t        t              j                  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              j                  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              j                  t        d      dt        t              j                  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              j                  t        d	      z  dt        t              j                  t        d      z  z   t        t              j                  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              j                  t        d	      dt        t              j                  t        d      z  z
  d#t        t              j                  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              j                  t        d      d| z  t        t              j                  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              j                  t        d      d	t        t              j                  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              j                  t        d      dt        t              j                  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d-t        t              j                  t        d      dt        t              j                  t        d	      z  z   dt        t              j                  t        d      z  z
  d#t        t              j                  t              z  z
  d.t        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d/d.t        t              j                  t        d      z  d0t        t              j                  t        d      z  z
  dt        t              j                  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d1t        t              j                  t        d      d)t        t              j                  t        d      z  z
  d2t        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d3t        t              j                  t        d      dt        t              j                  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d4t        t              j                  t        d      t        t              j                  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d5t        t              j                  t        d      dt        t              j                  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d6t        t              j                  t        d      dt        t              j                  t              z  z
  d7t        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d8t        t              j                  t        d      dt        t              j                  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d9t        t              j                  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              j                  t        d      dt        t              j                  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              j                  t        d      dt        t              j                  t        d	      z  z   t        t              j                  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              j                  t        d      t        t              j                  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              j                  t        d      dt        t              j                  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d>t        t              j                  t        d      dt        t              j                  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d?d@t        t              j                  t        d      d	t        t              j                  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d?t        t              j                  t        d      dt        t              j                  t        d	      z  z
  dt        t              j                  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d?t        t              j                  t        d      dt        t              j                  t        d      z  z
  dt        t              j                  t        d      z  z   dt        t              j                  t              z  z   dAt        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d?t        t              j                  t        d      dt        t              j                  t        d      z  z
  dt        t              j                  t        d      z  z   t        t              j                  t        d      z   dt        t              j                  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d?t        t        d      t        t              j                  t        t        t              z  t        t              j                  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              j                  t        t        t              z  t        t              j                  t              z   d      t        t        t              t        t        t        t        t        |      z        z  z   t        t        t        t        |      z        z  z         gdt        t0        t        t              j                  t        t        t              z  t        t              j                  t              z   d      t        t        t              t        t        t        t        t        t0              z        z  z   t        t        t        t        t0              z        z  z         gdt        t2        t        t              j                  t        t        t              z  t        t              j                  t              z   d      t        t        t              t        t        t	        t        t2               t        z        z  z   t        t	        t        t2              t        z        z  z         gdt        t              j                  t        t              t4        t        t              z  z   t        t        t              t        t	        t         t        t4               z        z  t        t	        t        t        t4               z        z  z         gdt        dBt        t              j                  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        dBt        t              j                  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              j                  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              j                  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              j                  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              j                  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dCdDS c c}w c c}w c c}w c c}w c c}w )ENr   Tr  r  )realr  r  r   r   r   d   i  r   r  %nth_linear_constant_coeff_homogeneouslin_const_coeff_hom_01r  r   lin_const_coeff_hom_02lin_const_coeff_hom_03lin_const_coeff_hom_04rk  rj  r  lin_const_coeff_hom_05lin_const_coeff_hom_06r   r   lin_const_coeff_hom_07lin_const_coeff_hom_08lin_const_coeff_hom_09lin_const_coeff_hom_10lin_const_coeff_hom_11lin_const_coeff_hom_12rb  ilin_const_coeff_hom_13lin_const_coeff_hom_14lin_const_coeff_hom_15lin_const_coeff_hom_16ra  lin_const_coeff_hom_17lin_const_coeff_hom_18lin_const_coeff_hom_19lin_const_coeff_hom_20rQ  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_33rp  lin_const_coeff_hom_342   rm  )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_48rz  )r)   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  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>CAhG&A1q!4GBBB>CAhG6!Q$1*q.!4GBBCPUVWPXY1vadSAXoQ&>&BAFYCc3DI!HMqvadQTkB&6:MCc3@EaI1vadQhlA6ICc3AA;aDjdii1o!A$))A,.1Q4bRTl*+,j dii1o!A$))A,.1Q471Q4"r#a&y.#a&012j dii1o!$1Q4CGbQi/01j  dii1o!		!Q/!AaDIIaL.@1Q4bRTl*RAaC[89:!j, !		!Q"QqTYYq\/1AadF:1Q4C!Hr#aA.>*?'??@A-j8 11a1QqTYYq\>1AaD8!<1Q4C2Q< 011BsA2tAw{;K7L4LLMN9jD 1Q4AadAq!11BtAaD!}4DDq1vM1Q4C!Hr#qb!d1g+.>*?'??"SBQUVWQXLIYEZBZZ[\EjP dii1o!		!Q/!AaDIIaO2CC	!A$))A,1Q4bRTl*RAY6C!HDEF	Qj^ dii1o!A$))Aq/ 11AaDIIaOC	!A$))A,1Q4 1Q4CGbQi/2c47(1*o3E3tTUwWXy>HY3Y[^_abc_c[d2ddef	_jl dii1o1QqT	)1Q4Ca
O+bT!WQY.??"SaQR^BSSVXY\]abc]def]fYgVgghimjx dii1o!AaDIIaL 001QqT691Q4C1tAqD1H~#5 677"SAQPQTTUXDVAW=X:XXYZyjD dii1o!AaDIIaL 002ad71Q4<?1Q4C1QK"S1QZ-789EjP dii1o1Q4bdR1W,r!Q$w678Qj\ dii1o!A$))A,.1Q471Q4"r!t)SAY./0]jh !		!Q!AaDIIaO"33adiilBQqTI1Q4"r!t)S!W,r#ac({:;<ijt dii1o!A$))Aq/ 11Bqtyy|OCa!fL1Q4"q"r!t)},c!A#h678uj@ dii1o!AaDIIaL 001a4!9<1Q4"r!t)S1X-./AjL dii1o!A$))Aq/ 111Q4bdR1W,r#bd)|;<=MjX dii1o!A$))Aq/ 111Q4bdRT!WHQJ%77"Sa^:KKLMYjd dii1o!A$))Aq/ 11BqtyyA4FF
1Q499Q<QqT'"1Q4"r!t)SAY."r!t)S1X1EEFG	ejr 11a 2adii1o#55!A$))A,F1Q4O1Q4CGbaRTl2RAaC[@2c!HUVXYNJZF[C[[\]sj~ dii1o!A$))Aq/ 11BqtG;1Q4"r!t)SAY."r!t)S1X1EEFGjJ dii1o!A$))A,.1Q471Q4"S1X+3qs83SV;<=KjV dii1o!		!,qt31Q4"S471--3qay{3C0CCS1XMNOWjb dii1o!A$))Aq/ 11AadF:1Q4
3tAwqy>Bs4719~--3tAwqy>0AABs4PQ7ST9~DUUW X	cjp dii1o!A$))A,.AaD81Q4"S1X+3qs83S1X=>?qj| dii1o!A$))Aq/ 11AadF:1Q4"r!t)S47^3rBqDy#aQi.6PPQR}jH dii1o!A$&1Q4"S47^+bQtAwY.??QG"SQSTUQUY,VWXIjT dii1o!A$))Aq/ 111Q4bdRAaC[02c!A#h;>?@Uj` dii1o!A$))Aq/ 11AaDIIaL@1Q4rBqDy#a&00BAIs1v3EEFGajl dii1o!		!Q/!A$61Q4"Sa1--3tAwqy{3C0CCS!AYNc$q'!)A+CQ	!$4!44c!A#h
>? @ A	mjz dii1o!A$))Aq/ 11AaD81Q4C$Qx!|"4 4553qd1gPQkAR?R;S8SS
S4a1%%&
&')+C$tAw{2C0C,D)DE F G	{jJ dii1o1Q499Q</!AaD&81Q4
3r!t9s2b6!8}3r"vax=(82c"R&(m;K(KLL
bfQh-2c"R&(m+bRVAX.>>
?	@A B !Kj\ dii!nq11~-!41Q4
3r!t9r#bd)|#bRTl2
bfQh-2c"R&(m+bRVAX.>>
?	@A B !]jp dii!ns1Q499Qq>11D114EE!L1Q4CAJCAJ6CAJFCPSTUPUJVY[\_`cde`e\fYffgh  dii1o!A$))Aq/ 11Aadii1o4EE1Q499UV<WZ\_`ab_cZcc1Q4
3qs8
S3Z-	
bgai.Bs2c719~-3r#wqy>0AA
B	C bgai.Bs2c719~-3r#wqy>0AA
B	CD E
 ! dii21Q499Q?!22QqtyyA5FF
A$))Aq/adii1o-.01!51Q4"r!t)S3Z/b2a4iQr#wY5O3P19c!BsG)n
$4%&)!BsG)n35 5;=19c!BsG)n:T8Uq52:s1RW9~
%9&'*1RW9~866 7 8 ! a1Q499Qq++adiil:A>1Q4bQA%6q%8%:!;;;bQQRTUEVWXEXYZEZA[>[[\] QqTYYq1%%!		!4a81Q4bQtAwY//"S47^2CCDE adii!A&&115q91Q4bQtBxZ002c!DH*o3EEFG QqTYYq1%%!		!4a81Q4bd1gXaZ002c$q'!)n3DDEF dii1o!A$&1Q4C48,,r#aaRj//AABC 1Q499Q?"QqT)1-1Q4C!Hr#ac({234 1Q499Q?"AaD)1Q4C1I3qs8345 11a1T!A$]?2QqtV;Q?1Q4"r#a&y.#a&012 11a1T!A$]?2QqtV;Q?1Q4"r!t)S1X-./ 11a1T!A$]?2QqtV;Q?1Q4"S47^+bQtAwY.??aRHIJ dii1o!A$&1Q4C!Hr#ac({234M	jn n HGYMIs"   'Bi,%'Bi1"4Bi6,'Bi;)$Bj 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              j	                  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              j	                  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              j	                  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              j	                  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              j	                  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   Fry  rp  )dep_div_indep_01dep_div_indep_02dep_div_indep_03dep_div_indep_04dep_div_indep_05rz  )r?   r<   r   r    r   r
   r   r   r   r   r	   rW   rV   rT   r   r   
  s    ?aD d1fS1a[ AadF3qtAv;$6QqT!V$DadiiPQl#RR3q62AaDQqT!V$4Q$6 7789 !		!nqt#aAaDFm33q63r7SQqT!Vq%9!%;;c#ad1f+PQ/>RST>TTUV AaDFmad3qtAv;..3qtAv;qtyy|1KK3q62QqTE!GS1a[ 8 ::S!A$q\#aPQdSTf+=UVW=WWXY diilQqT!V#aAaDFm31Q4T"s1v+..2567AaD!DcRSfDUBU9VW AaDFmad"Qqtyy|^31Q4ac!fo1234 9!% %rV   c                  2   dt        t              dt        t              j                  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   rk  rm  r   rz  )r?   r<   r   r
   r   r   rW   rV   rT   r   r   
  s     *aDdiila!AaD&j1q5111Q4QTAaCZ!^,x1~=>?	 	rV   c                     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              j                  t              z  z   dt        z  t        t        t        t              z        z  t        t              j                  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              j                  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              j                  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              j                  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              j                  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              j                  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              j                  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   Trp  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_08rz  )r?   r<   r   r   r
   r   r   r   r   r   r    rW   rV   rT   r   r     s    1aD
 daAaDFmac)4!a=881Q4#b'(A2c2#'l?";;<= & !fS1Q4[ 1Q4!		!#44qs3q1v;qtyyQR|7SS3qt9b1S1Q4[=012& 1fQqTkAaD!G#q1qy1QT6'91Q499Q<&GG1Q4QrTHR1WSBZ-?$@$BBCAEFG & 4!a!AaD&())1Q499Q<7!A$>3qt9b1T1"QqT'A+%6#6678& !A$h!ad(AaDIIaL003q62DQqT1WQT\)9$: ;;d1Q46lJKL& !		!nqt#aAaDFm31Q41T"Q$Z()& dQqT1Wnqs1Q4x!		!441Q4$q"q&z**+R!d1b1f:6F-GH& dAg4!a!Q$//!AaD&8!A$))A,FF1Q4"T1"a!B$h-0012adBtQBAbDM?R<R3ST!&W04 4rV   c                  p   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   )rR  r[  rc  r5  r@  r  r:  rC  r  rF  r   r#  rJ  r'  r=  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   rT  rU  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(  r,  r1  r3  r6  r8  r;  r>  rA  rD  rG  rM  rV  r^  rd  rR  r[  rc  r@  r:  r=  rC  r5  rF  rJ  r  r   r#  r'  r  r	  r   r   r   r   r   r   r   r   r   r   rh   rW   rV   rT   <module>rZ     s  
< 3  3 3 * " . 9 G G K K A : [ [ [ > / ; * ' H H 7 2 G: : 4 -  3K
3K
3Z
3KSMSM+27+; 'BBBBC
'
1a  *".'J18M` <> 4"*J@ G G [ [
 R R f f< 6 6 > > R R C C- O OQ > > : : ] ]I 
Q 
Q J J 6 6A T T e e J J Q Q	@ 6 6 7 7
 K K4 A A679 6 6>E ; ; 7 7t ) )X # #L  2   H HX   V Vt ' 'T 0 0f T Tn Q Qj D DN p pf ] ]@ e eP A AH  @ / /d k k\ s sl  $ y yx	 & &P 
 
 5 5prV   