+
    i@'                         R t ^ RIHtHt ^ RIHt ^ RIHt ^ RIH	t	H
t
 ^ RIHtHtHt ^ RIHt ^ RIHtHt ^ RIHtHt ^ R	IHtHtHt ^ R
IHt ^ RIHt R tR t R t!R t"R t#R# )aO  
This module contains the implementation of the 2nd_hypergeometric hint for
dsolve. This is an incomplete implementation of the algorithm described in [1].
The algorithm solves 2nd order linear ODEs of the form

.. math:: y'' + A(x) y' + B(x) y = 0\text{,}

where `A` and `B` are rational functions. The algorithm should find any
solution of the form

.. math:: y = P(x) _pF_q(..; ..;\frac{\alpha x^k + \beta}{\gamma x^k + \delta})\text{,}

where pFq is any of 2F1, 1F1 or 0F1 and `P` is an "arbitrary function".
Currently only the 2F1 case is implemented in SymPy but the other cases are
described in the paper and could be implemented in future (contributions
welcome!).

References
==========

.. [1] L. Chan, E.S. Cheb-Terrab, Non-Liouvillian solutions for second order
       linear ODEs, (2004).
       https://arxiv.org/abs/math-ph/0402063
)SPow)expand)Eq)SymbolWild)expsqrthyper)Integral)rootsgcd)cancelfactor)collectsimplify
logcombine)	powdenest)get_numbered_constantsc           	      V   VP                   ^ ,          pVP                  V4      p\        RWP                  V4      VP                  V^4      .R7      p\        RWP                  V4      VP                  V^4      .R7      p\        RWP                  V4      VP                  V^4      .R7      pWAP                  V^4      ,          WS,          ,           Wa,          ,           p\        V VP                  V^4      VP                  V4      V.4      P	                  V4      pV'       d   \
        ;QJ d*    R VP                  4        4       F  '       d   K   RM	  RM! R VP                  4        4       4      '       gZ   V P                  4       w  r\        V	4      p \        WP                  V^4      VP                  V4      V.4      P	                  V4      pV'       dM   W,          ^ 8w  d@   \        W,          W,          ,          4      p\        W,          W,          ,          4      pW.# . # )    a3)excludeb3c3c              3   @   "   T F  qP                  4       x  K  	  R # 5i)N)is_polynomial).0vals   & ڀ/Users/tonyclaw/.openclaw/workspace/skills/math-calculator/venv/lib/python3.14/site-packages/sympy/solvers/ode/hypergeometric.py	<genexpr>+match_2nd_hypergeometric.<locals>.<genexpr>1   s     =*3$$&&*s   FT)
argsdiffr   r   matchallvaluesas_numer_denomr   r   )eqfuncxdfr   r   r   deqrndABs   &&           r   match_2nd_hypergeometricr2   '   s   		!A	1B	dT99Q<1aA	BB	dT99Q<1aA	BB	dT99Q<1aA	BB
ii1o

&
0C	1a$))A,-	//4uSz s=!((*=sss=!((*===$$&DABYYq!_diilDABHHMAQUAX15;15;v	    c                 X  aa VP                   ^ ,          o\        \        V P                  S4      ^,          V ^,          ^,          ,           V,
          4      4      p\        \        S^,          V,          \	        ^4      ^,          ,           4      4      pVP                  4       w  rV\        \        V4      4      p\        \        V4      4      pVV3R loS! V34      pS! V34      pVP                  V4       Tp	\        V	4      p
\        \        \        WJ^,          ,          \	        ^4      ^,          ,
          SV
,          ^,          ,          4      4      RR7      p\        \        \        VP                  SS\	        ^4      V
,          ,          4      RR7      4      4      pVP                  S4      '       g   R# VP                  4       w  rV\        S! V34      4      pVP                   p. p. pV EF  pVP                  S4      '       g   K  \        V\         4      '       dw   VP#                  VP%                  4       ^,          4       VP#                  \'        \)        VP%                  4       ^ ,          S4      P+                  4       4      ^ ,          4       K  VP#                  VP%                  4       ^,          4       VP#                  \'        \)        VS4      P+                  4       4      ^ ,          4       EK  	  VP-                  4        \/        W4      R8X  d   RVRV
RVR	R/# R# )
r   c                   < ^ 0pV  F  pVP                  S4      '       g   K  \        V\        4      '       dE   VP                  4       ^ ,          S8X  d)   VP	                  VP                  4       ^,          4       Kv  VS8X  d)   VP	                  VP                  4       ^,          4       K  VP                  S! VP                  4      4       K  	  V# )r   )has
isinstancer   as_base_expaddupdater"   )num_powr   _power_countingr*   s   &  r   r=   3equivalence_hypergeometric.<locals>._power_countingN   s    sCwwqzzc3''COO,=a,@A,EHHS__.q12AXHHS__.q12KK 9:  r3   TforceN2F1I0k
sing_pointtype)r"   r   r   r#   r   r'   r   r   r:   r   r   subsis_rational_functionmaxr6   r7   r   appendr8   listr   keyssortequivalence)r0   r1   r)   I1J1r;   dempow_numpow_demr<   rC   rB   max_num_powdem_argsrD   dem_powargr=   r*   s   &&&              @@r   equivalence_hypergeometricrW   >   s`    			!A 
qvvay{QT!V+a/0	1B 
q!tBw1a'(	)B  "HC
F3K
 C
F3K
 C
 sg&Gsg&GNN7DD	A 
8FR1W!Q$6!Q$#CDET	RB	yA!QK!8EF	GB ""1%%  "HCosg./KxxHJG771::#s##s034!!$uS__->q-A1'E'J'J'L"Ma"PQ s034!!$uS!}'9'9';"<Q"?@  LLN ;(E1RQZFFr3   c                 
   VP                   ^ ,          p\        R4      p\        R4      p\        R4      p\        R4      p\        R4      p	\        R4      p
\        R4      p\        R4      p\        R	4      p\        R
4      pWV,
          ^,           WV,
          ^,
          ,          V^,          ,          ^^V,
          V,
          V,          ^V,          V,          ,           ,          V,          ,           Ww^,
          ,          ,           ^V^,          ,          V^,
          ^,          ,          ,          pV^ ^.8w  Ed   . pV) V,          V) V,          W,
          W,
          ,          .p\        ^4       Fg  pV\        V4      8  d,   VP	                  \        VV,          VV,          4      4       K>  VP	                  \        ^VV,          ,          ^ 4      4       Ki  	  V) V^ ,          ,          pV) V^,          ,          pTp\        V4      ^8X  d4   VV^,          V,          ,           V^,          V^,          ,
          ,          pW,          V,           W,          V,           ,          pVP                  VV4      pVP                  VV4      pVP                  VV4      p\        V4      pWV,          ,
          W,          V,
          ,          p\        VP                  VV4      P                  VV4      P                  VV4      4      pMTpTpV P                  WH4      p WP                  V4      ^,          ,          p \        V 4      p V^,          ^ V^ ^^ /pVP                  4       w  ppV^,          V	^,          ^,
          V^^V
,
          ,          V,          W,           W,
          ,          ,           ^Ww^,
          ,          /pVP                  \        \        \        V V,          4      4      V^,          V.RR7      4       . pV^,          V^3 F,  pVP	                  \        VV,          VV,          4      4       K.  	  ^\        \        ^V^,          P                  ,           4      4      ,
          pVP!                  \"        4      '       g&   \%        \'        \)        V^,          V4      4      4      p\        \        V^ ,          P                  ^,           4      4      pV\        \        V^,          V^,          ,           V^,          P                  ,           ^V,          ,
          4      4      ,
          pVV,           ^,          pVV,
          ^,          p R\+        V4      R\+        V 4      R\+        V4      RVRVRR/p!V!# )r   abctsr-   alphabetagammadeltaF)evaluaterC   mobiusrE   rA   )r"   r   rangelenrI   r   rF   r   r#   r   r'   r:   r   r   r	   lhsr6   r   minrJ   r   r   )"IrC   rD   r)   r*   rY   rZ   r[   r\   r]   r-   r^   r_   r`   ra   rB   eqssing_eqsi_beta_delta_gammamobdict_II0_numI0_demdict_I0key_c_s_r_a_brns"   &&&&                              r   match_2nd_2F1_hypergeometricr{      s&   		!AS	AS	AS	AS	AS	AS	AME<DMEME3q513q5/!Q$
QqSUAI!A$5!6q!8
81c7
BQq!tVQqSSTH_	UBaVE%K%
U[/IJqAZ 

2hqk:a=9:

2amQ/0	  z!}$
1%z?ajmE11JqMJqM4QRFw~%0hhtU#hhuf%hhuf%Sk!G^ego.QVVD%(..uf=CCE6RS 	
qA	66!9q.Aq	Ad1a1QF&&(NFF !tAqD1HaAaCacAC[!81Q!WEG
MM'&&!12QT1INO
C 1a|

2fSk73<01  
VD3q6::&'	'B66&>>eCFA&'(	SVZZ!^$	%B	fT"a%"a%-#a&**4qt;<=	=B
r'1B
r'1B
hrlCc(2,AxPSU[\a	bBIr3   c           	          V ^8X  d   V^^.. RO39   d   R#  R# V ^8X  d   V. RO. RO^^.^^.39   d   R#  R# V ^ 8X  d   V. RO^^.. RO^^.^.^^.^^.39   d   R# R# )   rA   N)r}   r}   r}   )   r}   r}   )r~   r~   r}    )rS   rU   s   &&r   rM   rM      s     a1vy)) *  
	y)aVaV<< = 	 
	y1a&)aVaS1a&1a&QQr3   c                    VP                   ^ ,          p^ RIHp ^ RIHp \        V ^R7      w  rgVR,          pVR,          p	VR,          p
VR,          pRpV
P                  R	8X  dk   V\        W.V
.V4      ,          V\        W,
          ^,           W,
          ^,           .^V
,
          .V4      ,          V^V
,
          ,          ,          ,           pEMfV
^8X  d   \        \        \        W,           ^,           ) V,          V
,           V^,          V,
          ,          V4      4      V! \        W.V
.V4      4      ^,          ,          V4      \        W.V
.V4      ,          pV\        W.V
.V4      ,          W},          ,           pMW,
          V	,
          P                  R	8X  d   V\        W.^V,           V	,           V
,
          .^V,
          4      ,          V\        W,
          W,
          .^V
,           V,
          V	,
          .^V,
          4      ,          ^V,
          W,
          V	,
          ,          ,          ,           pV'       Ed+   VR
,          p\        ^VP                  V4      ,          4      pW,           ^,           V,          V
,
          P                  W>4      V,          pV! VV^,          V,
          P                  W>4      VP                  V4      V,          ,          ,           4      pV! V^,          V,
          P                  W>4      V^,          ,          4      p\        \        \        \        V^V,          ,          4      V4      RR7      4      pVP                  W2R
,          4      pVP                  W3VR,          ,          4      pVP                  W3VR,          ,          4      pVP                  '       gs   \        V^,          V4      p\        \        VRR7      4      p\        VV,          W2R,          ) ^,           ^,          ,          ,          4      V,          p\!        W4      pV# \        VW2R,          ) ^,           ^,          ,          ,          4      V,          p\!        W4      pV# )r   )hyperexpand)r   )r;   rY   rZ   r[   r0   NFrc   Tr?   rC   )r"   sympy.simplify.hyperexpandr   sympy.polys.polytoolsr   r   
is_integerr
   r   r   r   r#   rF   r   r   is_zeror   )r(   r)   match_objectr*   r   r   C0C1rY   rZ   r[   r0   soly2rF   dtdx_B_Aee1s   &&&                 r   get_sol_2F1_hypergeometricr      sv   		!A6,#BA.FBSASASASA
C||uvsA&&E13q5!#a%.1Q3%,K)KAPQRSPSH)TT	
ac(ac!eHQJNQT!V#<a@A;uVWU[^_]`bcOdCeghChiklmnsuvtz}~|  BC  oD  DvsA&&.
#a%		u	$v!Aay!A#..E13*qs1uQwiQRSTQT4U1UWXYZWZ^_^abc^cVd1dd
sH%499Q<()uqy!ma%%a.t3B1a47..1DIIaL4EFFGQTAXOOA,dAg67
8F2qt9$5q9FGhhqx01hhq\#../FF1c**+yyy!A#q!BZ$/0B!B$3&7%7%91$< ==>sBCT-CJaC002A5667;mJr3   N)$__doc__
sympy.corer   r   sympy.core.functionr   sympy.core.relationalr   sympy.core.symbolr   r   sympy.functionsr   r	   r
   sympy.integralsr   sympy.polysr   r   r   r   r   sympy.simplifyr   r   r   sympy.simplify.powsimpr   sympy.solvers.ode.oder   r2   rW   r{   rM   r   r   r3   r   <module>r      sP   2  & $ * , , $ " 0 8 8 , 8.FRHV*)r3   